/** * *Edita los datos de una sucursal * * @author Juan Manuel García Carmona <*****@*****.**> * @param id_sucursal int Id de la sucursal a modificar * @param id_tarifa int Id de la tarifa por default de la sucursal * @param activo bool Indica si esta sucursal estar activa * @param descripcion string Descripcion de la sucursal * @param direccion json Objeto que contiene la informacin sobre al direccion * @param id_gerente int Id del gerente de la sucursal **/ public static function Editar($id_sucursal, $activo = null, $descripcion = null, $direccion = null, $id_gerente = null, $id_tarifa = null) { DAO::transBegin(); //Se obtiene la sucursal a editar y se valida que exista if (!($sucursal = SucursalDAO::getByPK($id_sucursal))) { Logger::error("La sucursal con id : {$id_sucursal} no existe"); throw new InvalidDataException("La sucursal con id : {$id_sucursal} no existe"); } //verificamos si la sucursal esta activa en caso de no estarlo solo permitira activarla if ($activo !== NULL) { $val = null; if ($activo == 1) { $val = true; } elseif ($activo == "") { $val = false; } $sucursal->setActiva($val); } //editamos solo la direccion if (!is_null($direccion)) { if (!is_array($direccion)) { $direccion = object_to_array($direccion); } //varificamos si la direccion que tiene la sucursal existe si no creamos una if (!($_direccion = DireccionDAO::getByPK($sucursal->getIdDireccion()))) { //no existe, etonces creamos una nueva direccion DireccionController::NuevaDireccion(isset($direccion['calle']) ? $direccion['calle'] : "", isset($direccion['numero_exterior']) ? $direccion['numero_exterior'] : "", isset($direccion['colonia']) ? $direccion['colonia'] : "", isset($direccion['id_ciudad']) ? $direccion['id_ciudad'] : "", isset($direccion['codigo_postal']) ? $direccion['codigo_postal'] : "", isset($direccion['numero_interior']) ? $direccion['numero_interior'] : "", isset($direccion['referencia']) ? $direccion['referencia'] : "", isset($direccion['telefono1']) ? $direccion['telefono1'] : "", isset($direccion['telefono2']) ? $direccion['telefono2'] : ""); } else { //la direccion existe, hay que editarla $_direccion->setCalle(isset($direccion['calle']) ? $direccion['calle'] : ""); $_direccion->setNumeroExterior(isset($direccion['numero_exterior']) ? $direccion['numero_exterior'] : ""); $_direccion->setNumeroInterior(isset($direccion['numero_interior']) ? $direccion['numero_interior'] : ""); $_direccion->setReferencia(isset($direccion['referencia']) ? $direccion['referencia'] : ""); $_direccion->setColonia(isset($direccion['colonia']) ? $direccion['colonia'] : ""); $_direccion->setIdCiudad(isset($direccion['id_ciudad']) ? $direccion['id_ciudad'] : ""); $_direccion->setCodigoPostal(isset($direccion['codigo_postal']) ? $direccion['codigo_postal'] : ""); $_direccion->setTelefono(isset($direccion['telefono1']) ? $direccion['telefono1'] : ""); $_direccion->setTelefono2(isset($direccion['telefono2']) ? $direccion['telefono2'] : ""); try { DireccionDAO::save($_direccion); } catch (Exception $e) { DAO::transRollback(); Logger::error("Error al modificar la direccion : {$e}"); throw new Exception("Ocurrio un error al modificar la direccion"); } } } //verificamos si cambio el gerente if (!is_null($id_gerente)) { $usuario_gerente = UsuarioDAO::getByPK($id_gerente); if (!$usuario_gerente) { Logger::error("No se tiene registro del gerente con id : {$id_gerente}"); throw new Exception("No se tiene registro del gerente con id : {$id_gerente}"); } else { $sucursal->setIdGerente($usuario_gerente->getIdUsuario()); } } // if (!is_null($id_tarifa) && !($tarifa = TarifaDAO::getByPK($id_tarifa))) { Logger::error("No se tiene registro de la tarifa con id : {$id_gerente}"); throw new Exception("No se tiene registro de la tarifa indicada"); } else { $sucursal->setIdTarifa($id_tarifa); } //verificamos si cambio la descripcion $descripcion = trim($descripcion); if ($descripcion !== $sucursal->getDescripcion()) { //verificamos si hay una sucursal con esa misma descripcion $sucursales = SucursalDAO::search(new Sucursal(array("descripcion" => $descripcion))); if (!empty($sucursales)) { DAO::transRollback(); Logger::error("Ya existe una sucursal con esa descripcion"); throw new Exception("Ya existe una sucursal con esa descripcion"); } else { $sucursal->setDescripcion($descripcion); } } try { SucursalDAO::save($sucursal); } catch (Exception $e) { DAO::transRollback(); Logger::error("No se pudo actualizar la sucursal: " . $e); if ($e->getCode() == 901) { throw new Exception("No se pudo actualizar la sucursal: " . $e->getMessage(), 901); } throw new Exception("No se pudo actualizar la sucursal", 901); } DAO::transEnd(); Logger::log("Sucursal actualizada exitosamente"); }
/** * *Insertar un nuevo usuario. El usuario que lo crea sera tomado de la sesion actual y la fecha sera tomada del servidor. Un usuario no puede tener mas de un rol en una misma sucursal de una misma empresa. * * @param password string Password del usuario * @param id_rol int Id del rol del usuario en la instnacia * @param nombre string Nombre del usuario * @param codigo_usuario string Codigo interno del usuario * @param facturar_a_terceros bool Si el usuario puede facturar a terceros * @param id_sucursal int Id de la sucursal donde fue creado el usuario o donde labora * @param mensajeria bool Si el cliente tiene una cuenta de mensajeria * @param mpuestos json Objeto que contendra los impuestos que afectan a este usuario * @param dia_de_pago string Fecha de pago del cliente * @param cuenta_bancaria string Cuenta bancaria del usuario * @param representante_legal string Nombre del representante legal del usuario * @param saldo_del_ejercicio float Saldo del ejercicio del cliente * @param salario float Si el usuario contara con un salario especial no especificado por el rol * @param intereses_moratorios float Intereses moratorios del cliente * @param ventas_a_credito int Ventas a credito del cliente * @param telefono_personal1 string Telefono personal del usuario * @param descuento float El porcentaje de descuento que se le hara al usuario al venderle * @param pagina_web string Pagina web del usuario * @param limite_credito float El limite de credito del usuario * @param telefno_personal2 string Telefono personal del usuario * @param telefono1_2 string Telefono de la direccion alterna del usuario * @param codigo_postal string Codigo postal del Agente * @param telefono2_2 string Telefono 2 de la direccion al terna del usuario * @param codigo_postal_2 string Codigo postal de la direccion alterna del usuario * @param texto_extra_2 string Texto extra para ubicar la direccion alterna del usuario * @param numero_interior_2 string Numero interior de la direccion alterna del usuario * @param id_ciudad int ID de la ciudad donde vive el agente * @param colonia_2 string Colonia de la direccion alterna del usuario * @param calle string Calle donde vive el agente * @param numero_interior string Numero interior del agente * @param id_ciudad_2 int Id de la ciudad de la direccion alterna del usuario * @param correo_electronico string Correo Electronico del agente * @param texto_extra string Comentario sobre la direccion del agente * @param telefono2 string Otro telefono del agente * @param denominacion_comercial string Denominacion comercial del cliente * @param dias_de_credito int Dias de credito del cliente * @param calle_2 string Calle de la direccion alterna del usuario * @param numero_exterior_2 string Numero exterior de la direccion alterna del usuario * @param telefono1 string Telefono principal del agente * @param dias_de_embarque int Dias de embarque del proveedor ( Lunes, Miercoles, Viernes, etc) * @param numero_exterior string Numero exterior del agente * @param id_clasificacion_cliente int Id de la clasificacion del cliente * @param curp string CURP del agente * @param dia_de_revision string Fecha de revision del cliente * @param cuenta_mensajeria string Cuenta de mensajeria del usuario * @param comision_ventas float El porcentaje de la comision que ganara este usuario especificamente por ventas * @param rfc string RFC del agente * @param id_clasificacion_proveedor int Id de la clasificacion del proveedor * @param colonia string Colonia donde vive el agente * @param retenciones json Ids de las retenciones que afectan a este usuario * @return id_usuario int Id generado por la inserci�n del usuario **/ public static function NuevoUsuario($codigo_usuario, $id_rol, $nombre, $password, $comision_ventas = 0, $correo_electronico = null, $cuenta_bancaria = null, $cuenta_mensajeria = null, $curp = null, $denominacion_comercial = null, $descuento = null, $dias_de_credito = null, $dias_de_embarque = null, $dia_de_pago = null, $dia_de_revision = null, $direcciones = null, $facturar_a_terceros = null, $id_clasificacion_cliente = null, $id_clasificacion_proveedor = null, $id_moneda = null, $id_sucursal = null, $id_tarifa_compra = null, $id_tarifa_venta = null, $id_usuario_padre = null, $impuestos = null, $intereses_moratorios = null, $limite_credito = 0, $mensajeria = null, $pagina_web = null, $representante_legal = null, $retenciones = null, $rfc = null, $salario = null, $saldo_del_ejercicio = null, $telefono_personal1 = null, $telefono_personal2 = null, $tiempo_entrega = null, $ventas_a_credito = null) { Logger::log("Creando nuevo usuario `{$nombre}` ..."); /* $validar = self::validarParametrosUsuario( null, null, $id_sucursal, $id_rol, $id_clasificacion_cliente, $id_clasificacion_proveedor, $id_moneda, null, $nombre, $rfc, $curp, $comision_ventas, $telefono_personal1, $telefono_personal2, $limite_credito, $descuento, $password, $salario, $correo_electronico, $pagina_web, $saldo_del_ejercicio, $ventas_a_credito, $representante_legal, $facturar_a_terceros, $dia_de_pago, $mensajeria, $intereses_moratorios, $denominacion_comercial, $dias_de_credito, $cuenta_mensajeria, $dia_de_revision, $codigo_usuario, $dias_de_embarque, $tiempo_entrega, $cuenta_bancaria, $id_tarifa_compra, $id_tarifa_venta, $id_usuario_padre); //se verifica que la validacion haya sido correcta if(is_string($validar)) { Logger::error("Imposible crear a nuevo usuario: " . $validar); throw new Exception($validar, 901); } */ //Se verifica que las direcciones recibidas sean un arreglo if (!is_null($direcciones)) { if (!is_array($direcciones)) { Logger::error("Las direcciones recibidas no son un arreglo"); throw new Exception("Las direcciones recibidas no son un arreglo", 901); } } //se verifica que el codigo de usuario no sea repetido if (!is_null($codigo_usuario)) { $usuarioscod = UsuarioDAO::search(new Usuario(array("codigo_usuario" => $codigo_usuario))); if (sizeof($usuarioscod) > 0) { throw new Exception("El codigo de usuario " . $codigo_usuario . " ya esta en uso", 901); } } //se verifica que el rfc no sea repetido if (!is_null($rfc)) { $usuariosrfc = UsuarioDAO::search(new Usuario(array("rfc" => $rfc, "activo" => 1))); if (sizeof($usuariosrfc) > 0) { $rfc = null; Logger::error("El rfc " . $rfc . " ya existe"); //throw new BusinessLogicException("El rfc ".$rfc." ya existe"); } } //se verifica que la curp no sea repetida if (!is_null($curp)) { $usuarios = UsuarioDAO::search(new Usuario(array("curp" => $curp, "activo" => 1))); if (sizeof($usuarios) > 0) { Logger::error("La curp " . $curp . " ya existe"); } } //se verifica que los telefonos no sean iguales if (!is_null($telefono_personal1) && $telefono_personal1 == $telefono_personal2) { Logger::error("El telefono personal es igual al telefno personal alterno: " . $telefono_personal1 . " " . $telefono_personal2); //throw new Exception("El telefono personal es igual al telefno personal alterno: ".$telefono_personal1." ".$telefono_personal2,901); } //se verifica que el correo electronico no se repita y que sea valido if (!is_null($correo_electronico)) { if (!filter_var($correo_electronico, FILTER_VALIDATE_EMAIL)) { $correo_electronico = null; Logger::error("El correo electronico " . $correo_electronico . " es invalido"); throw new InvalidDatabaseOperationException("El correo electronico es invalido"); } else { $usuariose = UsuarioDAO::search(new Usuario(array("correo_electronico" => $correo_electronico, "activo" => 1))); if (sizeof($usuariose) > 0) { throw new BusinessLogicException("El correo " . $correo_electronico . " ya esta en uso"); $correo_electronico = null; } } } //se verifica como medida de seguridad que el password no sea igual al codigo de usaurio ni al correo electronico if (!is_null($password)) { if ($password == $codigo_usuario || $password == $correo_electronico) { Logger::error("El password (" . $password . ") no puede ser igual al codigo de usuario (" . $codigo_usuario . ") ni al correo electronico (" . $correo_electronico . ")"); throw new BusinessLogicException("El password (" . $password . ") no puede ser igual al codigo de usuario (" . $codigo_usuario . ") ni al correo electronico (" . $correo_electronico . ")", 901); } } else { $password = "******" . rand(1, 9) . rand(1, 9); } //se ponen los valores por default en limite de credito y saldo del ejercicio if (is_null($limite_credito)) { $limite_credito = 0; } if (is_null($saldo_del_ejercicio)) { $saldo_del_ejercicio = 0; } //Si la tarifa de compra o de venta es nula, entonces se tomaran las del clasificaciond el cliente, del proveedor o del rol // segun esten disponibles $origen_compra = "usuario"; $origen_venta = "usuario"; //Si la tarifa de venta sigue siendo nula, se toma la default if (is_null($id_tarifa_venta)) { $id_tarifa_venta = 1; } //Si la tarifa de compra sigue siendo nula, se toma la default if (is_null($id_tarifa_compra)) { $id_tarifa_compra = 2; } if (is_null($id_clasificacion_cliente)) { $id_categoria_contacto = $id_clasificacion_proveedor; } else { $id_categoria_contacto = $id_clasificacion_cliente; } //se crea el objeto usuario con todos los parametros $usuario = new Usuario(array("id_sucursal" => $id_sucursal, "id_rol" => $id_rol, "id_perfil" => 1, "id_clasificacion_cliente" => $id_clasificacion_cliente, "id_clasificacion_proveedor" => $id_clasificacion_proveedor, "id_categoria_contacto" => $id_categoria_contacto, "id_moneda" => $id_moneda, "fecha_asignacion_rol" => time(), "nombre" => $nombre, "rfc" => $rfc, "curp" => $curp, "comision_ventas" => $comision_ventas, "telefono_personal1" => $telefono_personal1, "telefono_personal2" => $telefono_personal2, "fecha_alta" => time(), "activo" => 1, "limite_credito" => $limite_credito, "descuento" => $descuento, "password" => hash("md5", $password), "salario" => $salario, "correo_electronico" => $correo_electronico, "pagina_web" => $pagina_web, "saldo_del_ejercicio" => $saldo_del_ejercicio, "ventas_a_credito" => $ventas_a_credito, "representante_legal" => $representante_legal, "facturar_a_terceros" => $facturar_a_terceros, "mensajeria" => $mensajeria, "intereses_moratorios" => $intereses_moratorios, "denominacion_comercial" => $denominacion_comercial, "dias_de_credito" => $dias_de_credito, "cuenta_de_mensajeria" => $cuenta_mensajeria, "codigo_usuario" => $codigo_usuario, "dias_de_embarque" => $dias_de_embarque, "tiempo_entrega" => $tiempo_entrega, "cuenta_bancaria" => $cuenta_bancaria, "consignatario" => 0, "id_tarifa_compra" => $id_tarifa_compra, "id_tarifa_venta" => $id_tarifa_venta, "tarifa_compra_obtenida" => $origen_compra, "tarifa_venta_obtenida" => $origen_venta, "id_usuario_padre" => $id_usuario_padre)); DAO::transBegin(); try { //Se crean las direcciones recibidas if (!is_null($direcciones)) { foreach ($direcciones as $d) { if (!is_array($d)) { $d = object_to_array($d); } if (!is_array($d)) { throw new InvalidDataException("Las direcciones deben ser un arreglo de arreglos."); } $address_id = DireccionController::NuevaDireccion($calle = isset($d["calle"]) ? $d["calle"] : null, $numero_exterior = isset($d["numero_exterior"]) ? $d["numero_exterior"] : null, $colonia = isset($d["colonia"]) ? $d["colonia"] : null, $id_ciudad = isset($d["id_ciudad"]) ? $d["id_ciudad"] : null, $codigo_postal = isset($d["codigo_postal"]) ? $d["codigo_postal"] : null, $numero_interior = isset($d["numero_interior"]) ? $d["numero_interior"] : null, $referencia = isset($d["referencia"]) ? $d["referencia"] : null, $telefono = isset($d["telefono1"]) ? $d["telefono1"] : null, $telefono2 = isset($d["telefono2"]) ? $d["telefono2"] : null); $usuario->setIdDireccion($address_id); } } //Se guarda el usuario creado. UsuarioDAO::save($usuario); //si se pasaron impuestos, se validan y se agregan a la tabla impuesto_usuario if (!is_null($impuestos)) { $impuestos = object_to_array($impuestos); if (!is_array($impuestos)) { throw new Exception("Los impuestos no fueron recibidos correctamente", 901); } foreach ($impuestos as $id_impuesto) { $validar = self::validarParametrosImpuestoUsuario($id_impuesto); if (is_string($validar)) { throw new Exception($validar, 901); } ImpuestoUsuarioDAO::save(new ImpuestoUsuario(array("id_impuesto" => $id_impuesto, "id_usuario" => $usuario->getIdUsuario()))); } } //si se pasaron retenciones, se validan y se agregan a la tabla retencion_usuario if (!is_null($retenciones)) { $retenciones = object_to_array($retenciones); if (!is_array($retenciones)) { throw new Exception("Las retenciones no fueron recibidas correctamente", 901); } foreach ($retenciones as $id_retencion) { $validar = self::validarParametrosRetencionUsuario($id_retencion); if (is_string($validar)) { throw new Exception($validar, 901); } RetencionUsuarioDAO::save(new RetencionUsuario(array("id_retencion" => $id_retencion, "id_usuario" => $usuario->getIdUsuario()))); } } //Se buscan los permisos de este rol y se le asignan a este usuario $permisos_rol = PermisoRolDAO::search(new PermisoRol(array("id_rol" => $id_rol))); foreach ($permisos_rol as $permiso_rol) { PermisoUsuarioDAO::save(new PermisoUsuario(array("id_usuario" => $usuario->getIdUsuario(), "id_permiso" => $permiso_rol->getIdPermiso()))); } } catch (BusinessLogicExceptoin $ble) { throw $ble; } catch (Exception $e) { DAO::transRollback(); Logger::error("No se pudo crear al usuario: " . $e); if ($e->getCode() == 901) { throw new Exception("No se pudo crear al usuario: " . $e->getMessage(), 901); } throw new Exception("No se pudo crear al usuario, consulte a su administrador de sistema", 901); } DAO::transEnd(); Logger::log("Usuario creado exitosamente con id" . $usuario->getIdUsuario()); return array("id_usuario" => $usuario->getIdUsuario()); }
/** * * Un administrador puede editar una sucursal, incuso si hay puntos de venta con sesiones activas que pertenecen a esa empresa. * * @author Juan Manuel García Carmona <*****@*****.**> * @param id_empresa int Id de la empresa a modificar * @param cuentas_bancarias json Arreglo que contiene los id de las cuentas bancarias * @param direccion json { "tipo": "fiscal", "calle": "Francisco I Madero", "numero_exterior": "1009A", "numero_interior": 12, "colonia": "centro", "codigo_postal": "38000", "telefono1": "4611223312", "telefono2": "", "id_ciudad": 3, "referencia": "El local naranja"} * @param direccion_web string Direccion del sitio de la empresa * @param email string Correo electronico de la empresa * @param id_moneda string Id de la moneda base que manejaran las sucursales * @param impuestos_compra json Impuestos de compra por default que se heredan a las sucursales y estas a su vez a los productos * @param impuestos_venta json Impuestos de venta por default que se heredan a las sucursales y estas a su vez a los productos * @param mensaje_morosos string mensaje enviado a los clientes (email) cuando un pago es demorado * @param razon_social string El nombre de la nueva empresa. * @param representante_legal string El nombre del representante legal de la nueva empresa. * @param rfc string RFC de la empresa * @param uri_logo string url del logo de la empresa **/ public static function Editar($id_empresa, $cuentas_bancarias = null, $direccion = null, $direccion_web = null, $email = null, $id_moneda = "0", $impuestos_compra = null, $impuestos_venta = null, $mensaje_morosos = null, $razon_social = null, $representante_legal = null, $rfc = null, $uri_logo = null) { //se guarda el registro de la empresa y se verifica que este activa $empresa = EmpresaDAO::getByPK($id_empresa); if (!$empresa->getActivo()) { Logger::error("La empresa no esta activa, no se puede editar una empresa desactivada"); throw new Exception("La empresa no esta activa, no se puede editar una empresa desactivada", 901); } $empresa->setDireccionWeb($direccion_web); //TODO : Por que carajos no esta el campo email!! //$empresa->setEmail($email); //TODO : No se debe de editar //$empresa->setIdMoneda($id_moneda); $empresa->setMensajeMorosos($mensaje_morosos); $empresa->setRazonSocial($razon_social); $empresa->setRepresentanteLegal($representante_legal); $empresa->setRfc($rfc); //editamos el id del logo if (!empty($uri_logo)) { //varificamos si cambio el logo $_logo = LogoDAO::getByPK($empresa->getIdLogo()); if ($uri_logo !== $_logo->getImagen()) { $logo = new Logo(array("imagen" => $uri_logo, "tipo" => "-")); try { LogoDAO::save($logo); } catch (Exception $e) { DAO::transRollback(); Logger::error("No se pudo crear la empresa, error al crear el logo: " . $e->getMessage()); throw new Exception("No se pudo crear la empresa, consulte a su administrador de sistema", 901); } $id_logo = $logo->getIdLogo(); $empresa->setIdLogo($id_logo); } } //lógica para manejar la edicion o agregado de una direccion verificamos si se cambiaron las direcciones if (!is_null($direccion)) { if (!is_array($direccion)) { //Logger::error("Verifique el formato de los datos de las direcciones, se esperaba un array "); //throw new Exception("Verifique el formato de los datos de las empresas, se esperaba un array "); $direccion = object_to_array($direccion); } $_direccion = new Direccion($direccion); $d = DireccionDAO::getByPK($empresa->getIdDireccion()); //verificamos si se va a editar una direccion o se va a crear una nueva if (isset($d->id_direccion)) { //se edita la direccion if (!($_direccion = DireccionDAO::getByPK($d->id_direccion))) { DAO::transRollback(); Logger::error("No se tiene registro de la dirección con id : {$direccion->id_direccion}"); throw new InvalidDataException("No se tiene registro de la dirección con id : {$direccion->id_direccion}"); } $_direccion->setIdDireccion($d->id_direccion); //bandera que indica si cambia algun parametro de la direccion $cambio_direccion = false; //calle if (isset($d->calle)) { $cambio_direccion = true; $_direccion->setCalle($direccion['calle']); } //numero_exterior if (isset($d->numero_exterior)) { $cambio_direccion = true; $_direccion->setNumeroExterior($direccion['numero_exterior']); } //numero_interior if (isset($d->numero_interior)) { $cambio_direccion = true; $_direccion->setNumeroInterior($direccion['numero_interior']); } //referencia if (isset($d->referencia)) { $cambio_direccion = true; $_direccion->setReferencia($direccion['referencia']); } //colonia if (isset($d->colonia)) { $cambio_direccion = true; $_direccion->setColonia($direccion['colonia']); } //id_ciudad if (isset($d->id_ciudad)) { $cambio_direccion = true; $_direccion->setIdCiudad($direccion['id_ciudad']); } //codigo_postal if (isset($d->codigo_postal)) { $cambio_direccion = true; $_direccion->setCodigoPostal($direccion['codigo_postal']); } //telefono if (isset($d->telefono)) { $cambio_direccion = true; $_direccion->setTelefono($direccion['telefono1']); } //telefono2 if (isset($d->telefono2)) { $cambio_direccion = true; $_direccion->setTelefono2($direccion['telefono2']); } //Si cambio algun parametro de direccion, se actualiza el usuario que modifica y la fecha if ($cambio_direccion) { DireccionController::EditarDireccion($_direccion); } else { DireccionController::NuevaDireccion($calle = isset($d->calle) ? $d->calle : "", $numero_exterior = isset($d->numero_exterior) ? $d->numero_exterior : "", $colonia = isset($d->colonia) ? $d->colonia : "", $id_ciudad = isset($d->id_ciudad) ? $d->id_ciudad : "", $codigo_postal = isset($d->codigo_postal) ? $d->codigo_postal : "", $numero_interior = isset($d->numero_interior) ? $d->numero_interior : "", $referencia = isset($d->referencia) ? $d->referencia : "", $telefono = isset($d->telefono) ? $d->telefono : "", $telefono2 = isset($d->telefono2) ? $d->telefono2 : ""); } } } DAO::transBegin(); try { //Se guardan los cambios hechos en la empresa EmpresaDAO::save($empresa); } catch (Exception $e) { DAO::transRollback(); Logger::error("No se pudo modificar la empresa: " . $e); throw new Exception("No se pudo modificar la empresa"); } $impuestos_empresa = ImpuestoEmpresaDAO::search(new ImpuestoEmpresa(array("id_empresa" => $empresa->getIdEmpresa()))); //quitamos los impuestos que no estan actualmente foreach ($impuestos_empresa as $impuesto_empresa) { $exist_ic = false; foreach ($impuestos_compra as $impuesto_compra) { if ($impuesto_compra->getIdImpuesto() == $impuesto_empresa->getIdImpuesto()) { $exist_ic = true; } } if (!$exist_ic) { try { ImpuestoEmpresaDAO::delete($impuesto_empresa); } catch (Exception $e) { Logger::warn("Error al eliminar impuesto : " . $e->getMessage()); } } } $impuestos_empresa = ImpuestoEmpresaDAO::search(new ImpuestoEmpresa(array("id_empresa" => $empresa->getIdEmpresa()))); foreach ($impuestos_empresa as $impuesto_empresa) { $exist_iv = false; foreach ($impuestos_venta as $impuesto_venta) { if ($impuesto_venta->getIdImpuesto() == $impuesto_venta->getIdImpuesto()) { $exist_iv = true; } } if (!$exist_iv) { try { ImpuestoEmpresaDAO::delete($impuesto_empresa); } catch (Exception $e) { Logger::warn("Error al eliminar impuesto : " . $e->getMessage()); } } } //agregamos los impuestos de compra que no existen $impuestos_empresa = ImpuestoEmpresaDAO::search(new ImpuestoEmpresa(array("id_empresa" => $empresa->getIdEmpresa()))); if ($impuestos_compra != NULL) { foreach ($impuestos_compra as $impuesto_compra) { $exist_ic = false; foreach ($impuestos_empresa as $impuesto_empresa) { if ($impuesto_compra->getIdImpuesto() == $impuesto_empresa->getIdImpuesto()) { $exist_ic = true; } } if (!$exist_ic) { try { ImpuestoEmpresaDAO::save(new ImpuestoEmpresa(array("id_empresa" => $empresa->getIdEmpresa(), "id_impuesto" => $impuesto_compra->getIdImpuesto()))); } catch (Exception $e) { Logger::warn("Error al guardar un impuesto compra : " . $e->getMessage()); } } } } //agregamos los impuestos de venta que no existen $impuestos_empresa = ImpuestoEmpresaDAO::search(new ImpuestoEmpresa(array("id_empresa" => $empresa->getIdEmpresa()))); if ($impuestos_venta != NULL) { foreach ($impuestos_venta as $impuesto_venta) { $exist_iv = false; foreach ($impuestos_venta as $impuesto_venta) { if ($impuesto_venta->getIdImpuesto() == $impuesto_venta->getIdImpuesto()) { $exist_iv = true; } } if (!$exist_iv) { try { ImpuestoEmpresaDAO::save(new ImpuestoEmpresa(array("id_empresa" => $empresa->getIdEmpresa(), "id_impuesto" => $impuesto_venta->getIdImpuesto()))); } catch (Exception $e) { Logger::warn("Error al guardar un impuesto venta : " . $e->getMessage()); } } } } if ($cuentas_bancarias != NULL) { foreach ($cuentas_bancarias as $cuenta_bancarias) { //Pendiente hasta que se haga el SPEC de cuentas bancarias } } DAO::transEnd(); Logger::log("Empresa editada con exito"); }