/**
  *
  *Edita la informacion de una clasificacion de proveedor
  *
  * @param id_clasificacion_proveedor int Id de la clasificacion del proveedor a editar
  * @param retenciones json Ids de las retenciones de la clasificacion de  proveedor
  * @param impuestos json Ids de los impuestos de la clasificacion del proveedor
  * @param descripcion string Descripcion de la clasificacion del proveedor
  * @param nombre string Nombre de la clasificacion del proveedor
  **/
 public static function EditarClasificacion($id_clasificacion_proveedor, $descripcion = null, $id_tarifa_compra = null, $id_tarifa_venta = null, $impuestos = null, $nombre = null, $retenciones = null)
 {
     Logger::log("Editando la clasificacion de proveedor " . $id_clasificacion_proveedor);
     //valida los parametros recibidos
     $validar = self::validarParametrosClasificacionProveedor($id_clasificacion_proveedor, $nombre, $descripcion, null, $id_tarifa_compra, $id_tarifa_venta);
     if (is_string($validar)) {
         Logger::error($validar);
         throw new Exception($validar);
     }
     //Los parametros que no sean nulos seran tomados como actualizacion
     $clasificacion_proveedor = ClasificacionProveedorDAO::getByPK($id_clasificacion_proveedor);
     if (!is_null($descripcion)) {
         $clasificacion_proveedor->setDescripcion($descripcion);
     }
     if (!is_null($nombre)) {
         $clasificacion_proveedor->setNombre($nombre);
     }
     $cambio_tarifa_compra = false;
     $cambio_tarifa_venta = false;
     if (!is_null($id_tarifa_compra)) {
         if ($id_tarifa_compra != $clasificacion_proveedor->getIdTarifaCompra()) {
             $cambio_tarifa_compra = true;
             $clasificacion_proveedor->setIdTarifaCompra($id_tarifa_compra);
         }
     }
     if (!is_null($id_tarifa_venta)) {
         if ($id_tarifa_venta != $clasificacion_proveedor->getIdTarifaVenta()) {
             $cambio_tarifa_venta = true;
             $clasificacion_proveedor->setIdTarifaVenta($id_tarifa_venta);
         }
     }
     //Se actualiza el registro. Si se reciben listas de impuestos y/o registros se guardan los
     //que estan en la lista, despues se recorren los registros de la base de datos y aquellos que no
     //se encuentren en la lista nueva seran eliminados.
     DAO::transBegin();
     try {
         ClasificacionProveedorDAO::save($clasificacion_proveedor);
         //Si se cambia la tarifa de compra o de venta, se actualizan aquellos proveedores
         //con etsa clasificacion de proveedor y cuya tarifa haya sido obtenida por el rol
         //o por la clasificacion de proveedor.
         if ($cambio_tarifa_compra || $cambio_tarifa_venta) {
             $proveedores = UsuarioDAO::search(new Usuario(array("id_clasificacion_proveedor" => $id_clasificacion_proveedor)));
             foreach ($proveedores as $proveedor) {
                 if ($cambio_tarifa_compra) {
                     if ($proveedor->getTarifaCompraObtenida() == "rol" || $proveedor->getTarifaCompraObtenida() == "proveedor") {
                         $proveedor->setIdTarifaCompra($id_tarifa_compra);
                         $proveedor->setTarifaCompraObtenida("proveedor");
                     }
                 }
                 if ($cambio_tarifa_venta) {
                     if ($proveedor->getTarifaVentaObtenida() == "rol" || $proveedor->getTarifaVentaObtenida() == "proveedor") {
                         $proveedor->setIdTarifaVenta($id_tarifa_venta);
                         $proveedor->setTarifaVentaObtenida("proveedor");
                     }
                 }
                 UsuarioDAO::save($proveedor);
             }
         }
         if (!is_null($impuestos)) {
             $impuestos = object_to_array($impuestos);
             if (!is_array($impuestos)) {
                 throw new Exception("Los impuestos son invalidos");
             }
             $impuesto_clasificacion_proveedor = new ImpuestoClasificacionProveedor(array("id_clasificacion_proveedor" => $clasificacion_proveedor->getIdClasificacionProveedor()));
             foreach ($impuestos as $impuesto) {
                 if (is_null(ImpuestoDAO::getByPK($impuesto))) {
                     throw new Exception("El impuesto " . $impuesto . " no existe", 901);
                 }
                 $impuesto_clasificacion_proveedor->setIdImpuesto($impuesto);
                 ImpuestoClasificacionProveedorDAO::save($impuesto_clasificacion_proveedor);
             }
             $impuestos_clasificacion_proveedor = ImpuestoClasificacionProveedorDAO::search(new ImpuestoClasificacionProveedor(array("id_clasificacion_proveedor" => $id_clasificacion_proveedor)));
             foreach ($impuestos_clasificacion_proveedor as $impuesto_clasificacion_proveedor) {
                 $encontrado = false;
                 foreach ($impuestos as $impuesto) {
                     if ($impuesto == $impuesto_clasificacion_proveedor->getIdImpuesto()) {
                         $encontrado = true;
                     }
                 }
                 if (!$encontrado) {
                     ImpuestoClasificacionProveedorDAO::delete($impuesto_clasificacion_proveedor);
                 }
             }
         }
         /* 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_proveedor = new RetencionClasificacionProveedor(array("id_clasificacion_proveedor" => $clasificacion_proveedor->getIdClasificacionProveedor()));
             foreach ($retenciones as $retencion) {
                 if (is_null(RetencionDAO::getByPK($retencion))) {
                     throw new Exception("La retencion " . $retencion . " no existe", 901);
                 }
                 $retencion_clasificacion_proveedor->setIdRetencion($retencion);
                 RetencionClasificacionProveedorDAO::save($retencion_clasificacion_proveedor);
             }
             $retenciones_clasificacion_proveedor = RetencionClasificacionProveedorDAO::search(new RetencionClasificacionProveedor(array("id_clasificacion_proveedor" => $id_clasificacion_proveedor)));
             foreach ($retenciones_clasificacion_proveedor as $retencion_clasificacion_proveedor) {
                 $encontrado = false;
                 foreach ($retenciones as $retencion) {
                     if ($retencion == $retencion_clasificacion_proveedor->getIdRetencion()) {
                         $encontrado = true;
                     }
                 }
                 if (!$encontrado) {
                     RetencionClasificacionProveedorDAO::delete($retencion_clasificacion_proveedor);
                 }
             }
         }
         /* Fin if de retenciones */
     } catch (Exception $e) {
         DAO::transRollback();
         Logger::error("La clasificacion de proveedor no ha podido ser editada: " . $e);
         if ($e->getCode() == 901) {
             throw new Exception("La clasificacion de proveedor no ha podido ser editada: " . $e->getCode(), 901);
         }
         throw new Exception("La clasificacion de proveedor no ha podido ser editada", 901);
     }
     DAO::transEnd();
     Logger::log("La clasificacion de proveedor ha sido eeditada exitosamente ");
 }
 public static function validarParametrosUsuario($id_usuario = null, $id_direccion = null, $id_sucursal = null, $id_rol = null, $id_clasificacion_cliente = null, $id_clasificacion_proveedor = null, $id_moneda = null, $activo = null, $nombre = null, $rfc = null, $curp = null, $comision_ventas = null, $telefono_personal1 = null, $telefono_personal2 = null, $limite_credito = null, $descuento = null, $password = null, $salario = null, $correo_electronico = null, $pagina_web = null, $saldo_del_ejercicio = null, $ventas_a_credito = null, $representante_legal = null, $facturar_a_terceros = null, $dia_de_pago = null, $mensajeria = null, $intereses_moratorios = null, $denominacion_comercial = null, $dias_de_credito = null, $cuenta_de_mensajeria = null, $dia_de_revision = null, $codigo_usuario = null, $dias_de_embarque = null, $tiempo_entrega = null, $cuenta_bancaria = null, $id_tarifa_compra = null, $id_tarifa_venta = null, $id_usuario_padre = null)
 {
     //valida que el id del usuario exista en la base de datos
     if (!is_null($id_usuario)) {
         if (is_null(UsuarioDAO::getByPK($id_usuario))) {
             return "El usuario con id: " . $id_usuario . " no existe";
         }
     }
     //valida que el id de la direccion exista en la base de datos
     if (!is_null($id_direccion)) {
         if (is_null(DireccionDAO::getByPK($id_direccion))) {
             return "La direccion con id: " . $id_direccion . " no existe";
         }
     }
     //valida el id de la sucursal exista en la base de datos
     if (!is_null($id_sucursal)) {
         if (is_null(SucursalDAO::getByPK($id_sucursal))) {
             return "La sucursal con id: " . $id_sucursal . " no existe";
         }
     }
     //valida que el id del rol exista en la base de datos
     if (!is_null($id_rol)) {
         if (is_null(RolDAO::getByPK($id_rol))) {
             return "El rol con id: " . $id_rol . " no existe";
         }
     }
     //valida que la clasificacion del cliente exista en la base de datos
     if (!is_null($id_clasificacion_cliente)) {
         if (is_null(ClasificacionClienteDAO::getByPK($id_clasificacion_cliente))) {
             return "La clasificacion cliente con id: " . $id_clasificacion_cliente . " no existe";
         }
     }
     //valida que la clasificacion del proveedor exista en la base de datos
     if (!is_null($id_clasificacion_proveedor)) {
         if (is_null(ClasificacionProveedorDAO::getByPK($id_clasificacion_proveedor))) {
             return "La clasficiacion proveedor con id: " . $id_clasificacion_proveedor . " no existe";
         }
     }
     //valida que la moneda exista en la base de datos
     if (!is_null($id_moneda)) {
         Logger::log("Editando a moneda:" . $id_moneda);
         if (is_null(MonedaDAO::getByPK($id_moneda))) {
             return "La moneda con id: " . $id_moneda . " no existe";
         }
     }
     //valida el nombre
     if (!is_null($nombre)) {
         $e = ValidacionesController::validarLongitudDeCadena($nombre, 1, 100);
         if (!$e) {
             return "El numero de caracteres del nombre (" . $nombre . ") no esta entre 1 y 100";
         }
     }
     //valida el rfc, el rfc solo puede estar compuesto por Letras mayusculas y numeros
     if (!is_null($rfc)) {
         $e = ValidacionesController::validarLongitudDeCadena($rfc, 1, 30);
         if (!$e) {
             return "El numero de caracteres del rfc (" . $rfc . ") no esta entre 1 y 30";
         }
         if (preg_match('/[^A-Z0-9]/', $rfc)) {
             return "El rfc " . $rfc . " contiene caracteres fuera del rango A-Z y 0-9";
         }
     }
     //valida el curp, el curp solo puede tener letras mayusculas y numeros
     if (!is_null($curp)) {
         $e = ValidacionesController::validarLongitudDeCadena($curp, 1, 30);
         if (!$e) {
             return "El numero de caracteres de la curp (" . $curp . ") no esta entre 1 y 30";
         }
         if (preg_match('/[^A-Z0-9]/', $curp)) {
             return "El curp " . $curp . " contiene caracteres fuera del rango A-Z y 0-9";
         }
     }
     //valida la comision por ventas
     if (!is_null($comision_ventas)) {
         $e = ValidacionesController::validarNumero($comision_ventas, 0, 100);
         if (!$e) {
             return "La comision de ventas (" . $comision_ventas . ") no esta entre 0 y 100";
         }
     }
     //valida el telefono. Los telefonos solo pueden tener numeros, guiones,parentesis,asteriscos y espacios en blanco
     if (!is_null($telefono_personal1)) {
         $e = ValidacionesController::validarLongitudDeCadena($telefono_personal1, 1, 20);
         if (!$e) {
             return "El numero de caracteres del telefono personal (" . $telefono_personal1 . ") no esta entre 1 y 20";
         }
         if (preg_match('/[^0-9\\- \\(\\)\\*]/', $telefono_personal1)) {
             return "El telefono " . $telefono_personal1 . " tiene caracteres fuera del rango 0-9,-,(,),* o espacio vacío";
         }
     }
     //valida el telefono. Los telefonos solo pueden tener numeros, guiones,parentesis,asteriscos y espacios en blanco
     if (!is_null($telefono_personal2)) {
         $e = ValidacionesController::validarLongitudDeCadena($telefono_personal2, 1, 20);
         if (!$e) {
             return "El numero de caracteres del telefono personal alterno (" . $telefono_personal2 . ") no esta entre 1 y 20";
         }
         if (preg_match('/[^0-9\\- \\(\\)\\*]/', $telefono_personal2)) {
             return "El telefono " . $telefono_personal2 . " tiene caracteres fuera del rango 0-9,-,(,),* o espacio vacío";
         }
     }
     //valida el activo. Activo es una variable booleana.
     if (!is_null($activo)) {
         $e = ValidacionesController::validarEntero($activo, 0, 1);
         if (!$e) {
             return "La variable activo (" . $activo . ") no esta entre 0 y 1";
         }
     }
     //valida el limite de credito
     if (!is_null($limite_credito)) {
         $e = ValidacionesController::validarNumero($limite_credito, 0, 1.8E+200);
         if (!$e) {
             return "El limite de credito (" . $limite_credito . ") no esta entre 0 y 1.8e200";
         }
     }
     //valida el descuento. El descuento es un porcentaje y no puede ser mayor a 100
     if (!is_null($descuento)) {
         $e = ValidacionesController::validarNumero($descuento, 0, 100);
         if (!$e) {
             return "El descuento (" . $descuento . ") no esta entre 0 y 100";
         }
     }
     //valida el password, El pasword tiene que tener una longitud mayor o igual a 4
     if (!is_null($password)) {
         $e = ValidacionesController::validarLongitudDeCadena($password, 4, 32);
         if (!$e) {
             return "El numero de caracteres del password (" . $password . ") no esta entre 4 y 32";
         }
     }
     //valida el salario
     if (!is_null($salario)) {
         $e = ValidacionesController::validarNumero($salario, 0, 1.8E+200);
         if (!$e) {
             return "El salario (" . $salario . ") no esta entre 0 y 1.8e200";
         }
     }
     //valida el correo electronico segun las especificaciones de php
     if (!is_null($correo_electronico)) {
         $e = ValidacionesController::validarLongitudDeCadena($correo_electronico, 3, 30);
         if (!$e) {
             return "El numero de caracteres del correo electronico (" . $correo_electronico . ") no esta entre 3 y 30";
         }
         if (!is_string(filter_var($correo_electronico, FILTER_VALIDATE_EMAIL))) {
             return "El correo electronico " . $correo_electronico . " no es valido";
         }
     }
     //valida que una pagina web tenga un formato valido.
     if (!is_null($pagina_web)) {
         $e = ValidacionesController::validarLongitudDeCadena($pagina_web, 2, 30);
         if (!$e) {
             return $e;
         }
         if (!preg_match('/^(http|https|ftp):\\/\\/[a-z0-9]+([\\-\\.]{1}[a-z0-9]+)*\\.[a-z]{2,6}' . '((:[0-9]{1,5})?\\/.*)?$/i', $pagina_web) && !preg_match('/^[a-z0-9]+([\\-\\.]{1}[a-z0-9]+)*\\.[a-z]{2,6}' . '((:[0-9]{1,5})?\\/.*)?$/i', $pagina_web)) {
             return "La direccion web " . $pagina_web . " no cumple el formato valido";
         }
     }
     //valida el saldo del ejercicio
     if (!is_null($saldo_del_ejercicio)) {
         $e = ValidacionesController::validarNumero($saldo_del_ejercicio, -1.8E+200, 1.8E+200);
         if (!$e) {
             return "El saldo del ejercicio (" . $saldo_del_ejercicio . ") no esta entre -1.8e200 y 1.8e200";
         }
     }
     //valida las ventas a credito
     if (!is_null($ventas_a_credito)) {
         $e = ValidacionesController::validarEntero($ventas_a_credito, 0, PHP_INT_MAX);
         if (!$e) {
             return "Las venta a credito no estan entre 0 y " . PHP_INT_MAX;
         }
     }
     //valida el represnetante legal
     if (!is_null($representante_legal)) {
         $e = ValidacionesController::validarLongitudDeCadena($representante_legal, 0, 100);
         if (!$e) {
             return "El numero de caracteres del representante legal (" . $representante_legal . ") no esta entre 0 y 100";
         }
     }
     //valida la facturacion a terceros. Es un boleano
     if (!is_null($facturar_a_terceros)) {
         $e = ValidacionesController::validarEntero($facturar_a_terceros, 0, 1);
         if (!$e) {
             return "La variable facturar a terceros (" . $facturar_a_terceros . ") no esta entre 0 y 1";
         }
     }
     //valida los dias de pago
     if (!is_null($dia_de_pago)) {
         $e = ValidacionesController::validarLongitudDeCadena($dia_de_pago, 19, 19);
         if (!$e) {
             return "La fecha de dia de pago (" . $dia_de_pago . ") es invalida, el formato valido es YYYY-MM-dd HH:mm:ss";
         }
     }
     //valida el boleano mensajeria
     if (!is_null($mensajeria)) {
         $e = ValidacionesController::validarEntero($mensajeria, 0, 1);
         if (!$e) {
             return "La variable mensajeria (" . $mensajeria . ") no esta entre 0 y 1";
         }
     }
     //valida los intereses moratorios
     if (!is_null($intereses_moratorios)) {
         $e = ValidacionesController::validarNumero($intereses_moratorios, 0, 1.8E+200);
         if (!$e) {
             return "Los intereses moratorios (" . $intereses_moratorios . ") no estan entre 0 y 1.8e200";
         }
     }
     //valida la denominacion comercial
     if (!is_null($denominacion_comercial)) {
         $e = ValidacionesController::validarLongitudDeCadena($denominacion_comercial, 0, 100);
         if (!$e) {
             return "El numero de caracteres de la denominacion comercial (" . $denominacion_comercial . ") no esta entre 0 y 100";
         }
     }
     //valida los dias de credito
     if (!is_null($dias_de_credito)) {
         $e = ValidacionesController::validarEntero($dias_de_credito, 0, PHP_INT_MAX);
         if (!$e) {
             return "Los dias de credito (" . $dias_de_credito . ") no estan en el rango de 0 a " . PHP_INT_MAX;
         }
     }
     //valida la cuenta de mensajeria
     if (!is_null($cuenta_de_mensajeria)) {
         $e = ValidacionesController::validarLongitudDeCadena($cuenta_de_mensajeria, 0, 50);
         if (!$e) {
             return "El numero de caracteres de la cuenta de mensajeria (" . $cuenta_de_mensajeria . ") no etsa entre 0 y 50";
         }
     }
     //valida lso dias de revision
     if (!is_null($dia_de_revision)) {
         $e = ValidacionesController::validarLongitudDeCadena($dia_de_revision, 19, 19);
         if (!$e) {
             return "El dia de revision (" . $dia_de_revision . ") no tiene el formato apropiado, el formato valido es YYYY-MM-dd HH:mm:ss";
         }
     }
     //valida el codigo de usuario
     if (!is_null($codigo_usuario)) {
         $e = ValidacionesController::validarLongitudDeCadena($codigo_usuario, 1, 50);
         if (!$e) {
             return "El numero de caracteres del codigo de usuario no esta entre 1 y 50";
         }
         if (preg_match('/[^a-zA-Z0-9]/', $codigo_usuario)) {
             return "El codigo de usuario (" . $codigo_usuario . ") no tiene solo caracteres alfanumericos";
         }
     }
     //valida los dias de embarque
     if (!is_null($dias_de_embarque)) {
         $e = ValidacionesController::validarEntero($dias_de_embarque, 0, PHP_INT_MAX);
         if (!$e) {
             return "Los dias de embarque (" . $dias_de_embarque . ") no esta entre 0 y " . PHP_INT_MAX;
         }
     }
     //valida el tiempo de entrega
     if (!is_null($tiempo_entrega)) {
         $e = ValidacionesController::validarEntero($tiempo_entrega, 0, PHP_INT_MAX);
         if (!$e) {
             return "El tiempo de entrega (" . $tiempo_entrega . ") no esta entre 0 y " . PHP_INT_MAX;
         }
     }
     //valida la cuenta bancaria
     if (!is_null($cuenta_bancaria)) {
         $e = ValidacionesController::validarLongitudDeCadena($cuenta_bancaria, 0, 50);
         if (!$e) {
             return "El numero de caracteres de la cuenta bancaria (" . $cuenta_bancaria . ") no esta entre 0 y 50";
         }
     }
     //valida que la tarifa de compra sea valida
     if (!is_null($id_tarifa_compra)) {
         $tarifa = TarifaDAO::getByPK($id_tarifa_compra);
         if (is_null($tarifa)) {
             return "La tarifa " . $id_tarifa_compra . " no existe";
         }
         if (!$tarifa->getActiva()) {
             return "La tarifa " . $id_tarifa_compra . " no esta activa";
         }
         if ($tarifa->getTipoTarifa() != "compra") {
             return "La tarifa " . $id_tarifa_compra . " no es una tarifa de compra";
         }
     }
     //valida que la tarifa de venta sea valida
     if (!is_null($id_tarifa_venta)) {
         $tarifa = TarifaDAO::getByPK($id_tarifa_venta);
         if (is_null($tarifa)) {
             return "La tarifa " . $id_tarifa_venta . " no existe";
         }
         if (!$tarifa->getActiva()) {
             return "La tarifa " . $id_tarifa_venta . " no esta activa";
         }
         if ($tarifa->getTipoTarifa() != "venta") {
             return "La tarifa " . $id_tarifa_venta . " no es una tarifa de venta";
         }
     }
     //valida que el usuario padre exista y este activo
     if (!is_null($id_usuario_padre)) {
         $usuario_padre = UsuarioDAO::getByPK($id_usuario_padre);
         if (is_null($usuario_padre)) {
             return "El usuario padre " . $id_usuario_padre . " no existe";
         }
         if ($usuario_padre->getActivo()) {
             return "El usuario padre " . $usuario_padre->getNombre() . " no esta activo";
         }
     }
     return true;
 }
<?php

define("BYPASS_INSTANCE_CHECK", false);
require_once "../../../server/bootstrap.php";
$page = new GerenciaComponentPage();
//
// Parametros necesarios
//
$page->requireParam("cid", "GET", "Esta clasificacion de proveedor no existe.");
$esta_clasificacion = ClasificacionProveedorDAO::getByPK($_GET["cid"]);
//titulos
$page->addComponent(new TitleComponent("Editar clasificacion de proveedor: " . $esta_clasificacion->getNombre()));
//forma de nuevo paquete
$form = new DAOFormComponent($esta_clasificacion);
$form->hideField(array("id_clasificacion_proveedor"));
//	$form->renameField( array(
//			"nombre" 			=> "razon_social",
//			"codigo_usuario"	=> "codigo_cliente"
//		));
$form->addApiCall("api/proveedor/clasificacion/editar/", "GET");
//	$form->makeObligatory(array(
//			"nombre"
//		));
//	$form->createComboBoxJoin( "id_ciudad", "nombre", CiudadDAO::getAll( ) );
//	$form->createComboBoxJoin( "id_clasificacion_cliente", "nombre", ClasificacionClienteDAO::getAll( ) );
$page->addComponent($form);
//render the page
$page->render();
Beispiel #4
0
function funcion_clasificacion_proveedor($id_clasificacion_proveedor)
{
    return ClasificacionProveedorDAO::getByPK($id_clasificacion_proveedor) ? ClasificacionProveedorDAO::getByPK($id_clasificacion_proveedor)->getNombre() : "----";
}