public function testNuevaClasificacionCliente() { $c = ClasificacionClienteDAO::getByPK(1); if (!is_null($c)) { ClasificacionClienteDAO::delete($c); } $n_c = new ClasificacionCliente(); $n_c->setIdClasificacionCliente(1); $n_c->setClaveInterna('Default'); $n_c->setNombre('Default'); $n_c->setIdTarifaVenta(1); $n_c->setIdTarifaCompra(1); ClasificacionClienteDAO::save($n_c); }
/** * *Edita la informacion de la clasificacion de cliente * * @param id_clasificacion_cliente int Id de la clasificacion del cliente a modificar * @param impuestos json Ids de los impuestos que afectan a esta clasificacion * @param descuento float Descuento que se le aplicara a los productos * @param retenciones json Ids de las retenciones que afectan esta clasificacion * @param clave_interna string Clave interna de la clasificacion * @param nombre string Nombre de la clasificacion * @param descripcion string Descripcion larga de la clasificacion * @param margen_de_utilidad float Margen de utilidad que se le obtendra a todos los productos al venderle a este tipo de cliente **/ public static function EditarClasificacion($id_clasificacion_cliente, $clave_interna = null, $descripcion = null, $nombre = null) { Logger::log("Editando clasificacion de cliente " . $id_clasificacion_cliente); //Se validan los parametros recibidos $validar = self::validarParametrosClasificacionCliente($id_clasificacion_cliente, $clave_interna, $nombre, $descripcion); if (is_string($validar)) { Logger::error($validar); throw new Exception($validar, 901); } // $cambio_tarifa_compra = false; // $cambio_tarifa_venta = false; //Los parametros que no sean nulos seran tomados como actualizacion $clasificacion_cliente = ClasificacionClienteDAO::getByPK($id_clasificacion_cliente); if (!is_null($clave_interna)) { $clasificacion_cliente->setClaveInterna($clave_interna); } if (!is_null($nombre)) { $clasificacion_cliente->setNombre(trim($nombre)); } if (!is_null($descripcion)) { $clasificacion_cliente->setDescripcion($descripcion); } // if(!is_null($id_tarifa_compra)) // { // if($id_tarifa_compra!=$clasificacion_cliente->getIdTarifaCompra()) // { // $cambio_tarifa_compra=true; // $clasificacion_cliente->setIdTarifaCompra($id_tarifa_compra); // } // } // if(!is_null($id_tarifa_venta)) // { // if($id_tarifa_venta!=$clasificacion_cliente->getIdTarifaVenta()) // { // $cambio_tarifa_venta=true; // $clasificacion_cliente->setIdTarifaVenta($id_tarifa_venta); // } // } //Se actualiza el registro. Si se recibe una lista de impuestos y/o retenciones, se almacenan los //registros recibidos, despues, se recorren los registro de la base de datos y se buscan en la lista recibida. //Aquellos que no sean encontrados seran eliminados DAO::transBegin(); try { ClasificacionClienteDAO::save($clasificacion_cliente); //Si cambia la tarifa de compra o venta de una clasificacion de cliente, todos los clientes //que tengan esta clasificacion y que hayan obtenido su tarifa de compra o venta de otro que no sea //de usuario debe actualizar su tarifa de compra o venta // if($cambio_tarifa_compra || $cambio_tarifa_venta) // { // $clientes = UsuarioDAO::getByPK(new Usuario( array( "id_clasificacion_cliente" => $id_clasificacion_cliente ) )); // foreach($clientes as $c) // { // if($cambio_tarifa_compra) // { // if($c->getTarifaCompraObtenida()!="usuario") // { // $c->setIdTarifaCompra($id_tarifa_compra); // $c->setTarifaCompraObtenida("cliente"); // } // } // if($cambio_tarifa_venta) // { // if($c->getTarifaVentaObtenida()!="usuario") // { // $c->setIdTarifaVenta($id_tarifa_venta); // $c->setTarifaVentaObtenida("cliente"); // } // } // UsuarioDAO::save($c); // } // } // if(!is_null($impuestos)) // { // // $impuestos = object_to_array($impuestos); // // if(!is_array($impuestos)) // { // throw new Exception("Los impuestos son invalidos",901); // } // // $impuesto_clasificacion_cliente = new ImpuestoClasificacionCliente( // array( "id_clasificacion_cliente" => $clasificacion_cliente->getIdClasificacionCliente() )); // foreach ($impuestos as $impuesto) // { // if(is_null(ImpuestoDAO::getByPK($impuesto))) // throw new Exception ("El impuesto ".$impuesto." no existe",901); // // $impuesto_clasificacion_cliente->setIdImpuesto($impuesto); // ImpuestoClasificacionClienteDAO::save($impuesto_clasificacion_cliente); // } // // $impuestos_clasificacion_cliente = ImpuestoClasificacionClienteDAO::search( // new ImpuestoClasificacionCliente( array( "id_clasificacion_cliente" => $id_clasificacion_cliente ) ) ); // foreach($impuestos_clasificacion_cliente as $impuesto_clasificacion_cliente) // { // $encontrado = false; // foreach($impuestos as $impuesto) // { // if($impuesto == $impuesto_clasificacion_cliente->getIdImpuesto()) // $encontrado = true; // } // if(!$encontrado) // ImpuestoClasificacionClienteDAO::delete ($impuesto_clasificacion_cliente); // } // }/* Fin if de impuestos */ // if(!is_null($retenciones)) // { // // $retenciones = object_to_array($retenciones); // // if(!is_array($retenciones)) // { // throw new Exception("Las retenciones son invalidas",901); // } // // $retencion_clasificacion_cliente = new RetencionClasificacionCliente( // array ( "id_clasificacion_cliente" => $clasificacion_cliente->getIdClasificacionCliente() ) ); // foreach( $retenciones as $retencion ) // { // if(is_null(RetencionDAO::getByPK($retencion))) // throw new Exception("La retencion ".$retencion." no existe",901); // // $retencion_clasificacion_cliente->setIdRetencion($retencion); // RetencionClasificacionClienteDAO::save($retencion_clasificacion_cliente); // } // // $retenciones_clasificacion_cliente = RetencionClasificacionClienteDAO::search( // new RetencionClasificacionCliente( array( "id_clasificacion_cliente" => $id_clasificacion_cliente ) ) ); // foreach($retenciones_clasificacion_cliente as $retencion_clasificacion_cliente) // { // $encontrado = false; // foreach($retenciones as $retencion) // { // if($retencion == $retencion_clasificacion_cliente->getIdRetencion()) // $encontrado = true; // } // if(!$encontrado) // RetencionClasificacionClienteDAO::delete ($retencion_clasificacion_cliente); // } // }/* Fin if de retenciones */ } catch (Exception $e) { DAO::transRollback(); Logger::error("No se ha podido editar la clasificacion de cliente " . $id_clasificacion_cliente . " : " . $e); if ($e->getCode() == 901) { throw new Exception("No se ha podido editar la clasificacion de cliente: " . $e->getMessage()); } throw new Exception("No se ha podido editar la clasificacion de cliente, consulte a su administrador de sistema"); } DAO::transEnd(); }