Ejemplo n.º 1
0
 static function RazonSocialFromIdEmpresa($id_empresa)
 {
     if (is_null($u = EmpresaDAO::getByPK($id_empresa))) {
         return self::NonExistent();
     } else {
         return $u->getRazonSocial();
     }
 }
Ejemplo n.º 2
0
 public function testEditarEmpresa()
 {
     $direccion = array("calle" => "Calle " . time(), "numero_exterior" => "107", "colonia" => "Colonia " . time(), "id_ciudad" => 334, "codigo_postal" => "38060", "numero_interior" => null, "texto_extra" => null, "telefono1" => "4616149974", "telefono2" => "45*451*454");
     $id_moneda = 1;
     $razon_social = "Caffeina Software-" . time();
     $rfc = "GOHA-" . time();
     $nueva_empresa = EmpresasController::Nuevo(array($direccion), $id_moneda, $razon_social, $rfc);
     $this->assertInternalType('int', $nueva_empresa["id_empresa"]);
     $original = EmpresaDAO::getByPK($nueva_empresa['id_empresa']);
     //se edita la empresa con los mismos datos
     EmpresasController::Editar($id_empresa = $nueva_empresa['id_empresa'], $cedula = "cedula_" . time(), $direccion = null, $email = null, $id_moneda = null, $impuestos_venta = null, $impuesto_compra = null, $logo = null, $razon_social = null, $representante_legal = null, $texto_extra = "Texto_" . time());
     //se cambia
     $editada = EmpresaDAO::getByPK($nueva_empresa['id_empresa']);
     //$this->assertNotEquals($editada->getCedula() , $original->getCedula(),"---- 'testEditarEmpresa' LA CEDULA NO SE ACTUALIZÓ");
     //$this->assertNotEquals($editada->getTextoExtra() , $original->getTextExtra(),"---- 'testEditarEmpresa' LA TEXTO EXTRA NO SE ACTUALIZÓ");
 }
function funcion_empresa($id_empresa)
{
    return EmpresaDAO::getByPK($id_empresa) ? EmpresaDAO::getByPK($id_empresa)->getRazonSocial() : "------";
}
Ejemplo n.º 4
0
 public function testEditarEmpresa()
 {
     $direccion = array("calle" => "Calle " . time(), "numero_exterior" => "107", "colonia" => "Colonia " . time(), "id_ciudad" => 334, "codigo_postal" => "38060", "numero_interior" => null, "texto_extra" => null, "telefono1" => "4616149974", "telefono2" => "45*451*454");
     $razon_social = "Caffeina Software-3" . time();
     $rfc = "GOHA-3" . time();
     $contabilidad = new stdClass();
     $contabilidad->id_moneda = 1;
     $contabilidad->ejercicio = "2013";
     $contabilidad->periodo_actual = 1;
     $contabilidad->duracion_periodo = 1;
     $nueva_empresa = EmpresasController::Nuevo($contabilidad, array($direccion), $razon_social, $rfc, $cuentas_bancarias = null, $direccion_web = null, $duplicar = false, $email = time() . "d", $impuestos_compra = null, $impuestos_venta = null, $mensajes_morosos = null, $representante_legal = null, $uri_logo = null);
     $this->assertInternalType('int', $nueva_empresa["id_empresa"]);
     $original = EmpresaDAO::getByPK($nueva_empresa['id_empresa']);
     //se edita la empresa con los mismos datos
     EmpresasController::Editar($id_empresa = $nueva_empresa['id_empresa'], $cuentas_bancarias = null, $direccion = null, $direccion_web = null, $email = null, $id_moneda = "1", $impuestos_compra = null, $impuestos_venta = null, $mensaje_morosos = "Nuevo mensaje", $razon_social = $razon_social . time() . time(), $representante_legal = null, $rfc = $rfc . time() . time(), $uri_logo = null);
     //se cambia
     $editada = EmpresaDAO::getByPK($nueva_empresa['id_empresa']);
     $this->assertNotEquals($editada->getRfc(), $original->getRfc(), "---- 'testEditarEmpresa' El RFC no se actualizo");
     $this->assertNotEquals($editada->getRazonSocial(), $original->getRazonSocial(), "---- 'testEditarEmpresa' LA razon social no se actualizo");
 }
Ejemplo n.º 5
0
 private static function validarParametrosSucursalEmpresa($id_sucursal = null, $id_empresa = null)
 {
     //valida que 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 la empresa exista en la base de datos
     if (!is_null($id_empresa)) {
         if (is_null(EmpresaDAO::getByPK($id_empresa))) {
             return "La empresa con id " . $id_empresa . " no existe";
         }
     }
     //no se encontro error, regres true;
     return true;
 }
Ejemplo n.º 6
0
 /**
  *
  *Registra una nueva compra fuera de caja, puede usarse para que el administrador haga directamente una compra. El usuario y al sucursal seran tomados de la sesion. La fecha sera tomada del servidor. La empresa sera tomada del almacen del cual fueron tomados los productos.
  *
  * @param descuento float Monto descontado por descuentos
  * @param subtotal float Total de la compra antes de impuestos y descuentos.
  * @param detalle json Objeto que contendr el arreglo de id productos, cantidad,  precio, descuento, id de unidad y procesado que involucran esta compra.
  * @param impuesto float Monto agregado por impuestos
  * @param tipo_compra string Si la compra es a credito o de contado
  * @param retencion float Monto agregado por retenciones
  * @param id_usuario_compra int Id usuario al que se le compra, si es a una sucursal, se pone el id en negativo
  * @param id_empresa int Id de la empresa a nombre de la cual se hace la compra
  * @param total float Total de la compra
  * @param cheques json Si el tipo de pago es con cheque, se almacena el nombre del banco, el monto y los ultimos 4 numeros del o de los cheques
  * @param saldo float Cantidad pagada de la 
  * @param tipo_de_pago string Si el pago sera en efectivo, con cheque o tarjeta
  * @return id_compra int Id autogenerado por la inserci�n de la compra
  **/
 public static function Nueva($descuento, $detalle, $id_empresa, $id_usuario_compra, $impuesto, $retencion, $subtotal, $tipo_compra, $total, $cheques = null, $id_sucursal = null, $saldo = 0, $tipo_de_pago = null)
 {
     Logger::log(" ===== Creando nueva compra... ===== ");
     //validemos al comprador
     $proveedor = UsuarioDAO::getByPK($id_usuario_compra);
     if (is_null($proveedor)) {
         Logger::error("el provedor {$id_usuario_compra} no exite");
         throw new InvalidDataException("El proveedor no existe");
     }
     if ($proveedor->getActivo() == false) {
         throw new BusinessLogicException("No se puede comprar de un proveedor no activo.");
     }
     //validemos la empresa
     $empresa = EmpresaDAO::getByPK($id_empresa);
     if (is_null($empresa)) {
         Logger::error("La empresa {$id_empresa} no existe");
         throw new InvalidDataException("La empresa que compra no existe.");
     }
     if ($empresa->getActivo() == false) {
         throw new BusinessLogicException("Una empresa inactiva no puede hacer compras.");
     }
     //validemos los valores conocidos
     //( 0 >= descuento > 100, subtotal > 0, total >= subtotal, etc etc)
     //validemos sucursal
     $sucursal = null;
     if (!is_null($id_sucursal) && strlen($id_sucursal) > 0) {
         $sucursal = SucursalDAO::getByPK($id_sucursal);
         if (is_null($sucursal)) {
             Logger::error("La sucursal {$id_sucursal} no existe");
             //throw new InvalidDataException("La sucural que se envio no existe.");
         }
     }
     //validemos detalles de compra
     //debe traer
     // 	-id_producto
     //	-cantidad
     //	-precio
     //	-lote
     if (!is_array($detalle)) {
         throw InvalidDataException("El detalle no es un arreglo");
     }
     for ($detalleIterator = 0; $detalleIterator < sizeof($detalle); $detalleIterator++) {
         //por cada producto
         //	-debe existir
         //	-si se lo compro a un proveedor no hay pedo
         // 	 si se lo compro a un cliente, debe de tener comprar_caja = 1
         //	-debe tener cantidad mayor a 0
         //	-que exista el lote a donde va a ir
         $p = $detalle[$detalleIterator];
         if (!isset($p->precio)) {
             throw new InvalidArgumentException("No se envio el precio");
         }
         if (!isset($p->id_producto)) {
             throw new InvalidArgumentException("No se envio el id_producto");
         }
         if (!isset($p->cantidad)) {
             throw new InvalidArgumentException("No se envio la cantidad");
         }
         if (!isset($p->lote)) {
             throw new InvalidArgumentException("No se envio el lote");
         }
         $producto = ProductoDAO::getByPK($p->id_producto);
         if (is_null($producto)) {
             throw new InvalidArgumentException("El producto a comprar no existe");
         }
         if ($p->cantidad <= 0) {
             throw new InvalidArgumentException("No puedes comprar 0 unidades");
         }
     }
     $s = SesionController::getCurrentUser();
     //terminaron las validaciones
     $compra = new Compra();
     $compra->setIdVendedorCompra($id_usuario_compra);
     $compra->setTipoDeCompra($tipo_compra);
     $compra->setFecha(time());
     $compra->setSubtotal($subtotal);
     $compra->setImpuesto($impuesto);
     $compra->setDescuento($descuento);
     $compra->setTotal($subtotal + $impuesto);
     $compra->setIdUsuario($s->getIdUsuario());
     $compra->setIdEmpresa($id_empresa);
     $compra->setSaldo(0);
     $compra->setCancelada(false);
     $compra->setTipoDePago($tipo_de_pago);
     $compra->setRetencion(0);
     try {
         DAO::transBegin();
         CompraDAO::save($compra);
     } catch (Exception $e) {
         DAO::transRollback();
         throw InvalidDatabaseOperationException($e);
     }
     for ($detalleIterator = 0; $detalleIterator < sizeof($detalle); $detalleIterator++) {
         //por cada producto
         //	--- procesos ---
         //	-insertar en productoempresa
         //	-insertar en loteproducto
         //	-insertar en entradalote
         //	-si el tipo de precio de venta es costo, actualizar
         //	-insertar compra producto
         $p = $detalle[$detalleIterator];
         try {
             ProductoEmpresaDAO::save(new ProductoEmpresa(array("id_empresa" => $id_empresa, "id_producto" => $p->id_producto)));
             if (is_null($p->lote)) {
                 throw new InvalidDataException("No selecciono a que lote ira el producto " . $p->id_producto);
             }
             if (strlen($p->lote) == 0) {
                 throw new InvalidDataException("No selecciono a que lote ira el producto " . $p->id_producto);
             }
             //busquemos el id del lote
             $l = LoteDAO::search(new Lote(array("folio" => $p->lote)));
             $l = $l[0];
             //busquemos la unidad que nos mandaron
             $uAbreviacion = $p->id_unidad;
             $uResults = UnidadMedidaDAO::search(new UnidadMedida(array("abreviacion" => $uAbreviacion, "activa" => 1)));
             if (sizeof($uResults) != 1) {
                 throw new InvalidDataException("La unidad de medida `" . $p->id_unidad . "` no existe, o no esta activa.");
             } else {
                 $p->id_unidad = $uResults[0]->getIdUnidadMedida();
             }
             //busequemos si este producto ya existe en este lote
             $lp = LoteProductoDAO::getByPK($l->getIdLote(), $p->id_producto);
             if (is_null($lp)) {
                 //no existe, insertar
                 $loteProducto = new LoteProducto(array("id_lote" => $l->getIdLote(), "id_producto" => $p->id_producto, "cantidad" => $p->cantidad, "id_unidad" => $p->id_unidad));
                 LoteProductoDAO::save($loteProducto);
             } else {
                 //ya existe, sumar
                 //revisemos si es de la misma unidad
                 if ($lp->getIdUnidad() == $p->id_unidad) {
                     //es igual, solo hay que sumar
                     $lp->setCantidad($lp->getCantidad() + $p->cantidad);
                 } else {
                     //no es igual, hay que convertir
                     try {
                         $r = UnidadMedidaDAO::convertir($p->id_unidad, $lp->getIdUnidad(), $p->cantidad);
                     } catch (BusinessLogicException $ide) {
                         //no se pudo convertir porque son de
                         //diferentes categorias
                         throw $ide;
                         //mostrar una excpetion mas fresona
                     }
                     $lp->setCantidad($lp->getCantidad() + $r);
                 }
                 //$lp->setCantidad( $lp->getCantidad() + $p->cantidad );
                 LoteProductoDAO::save($lp);
             }
             $loteEntrada = new LoteEntrada(array("id_lote" => $l->getIdLote(), "id_usuario" => $s->getIdUsuario(), "fecha_registro" => time(), "motivo" => "Compra a Proveedor"));
             LoteEntradaDAO::save($loteEntrada);
             LoteEntradaProductoDAO::save(new LoteEntradaProducto(array("id_lote_entrada" => $loteEntrada->getIdLoteEntrada(), "id_producto" => $p->id_producto, "id_unidad" => $p->id_unidad, "cantidad" => $p->cantidad)));
             $compraProducto = new CompraProducto(array("id_compra" => $compra->getIdCompra(), "id_producto" => $p->id_producto, "cantidad" => $p->cantidad, "precio" => $p->precio, "descuento" => 0, "impuesto" => 0, "id_unidad" => $p->id_unidad, "retencion" => 0));
             CompraProductoDAO::save($compraProducto);
         } catch (InvalidDataException $e) {
             Logger::error($e);
             DAO::transRollback();
             throw $e;
         } catch (exception $e) {
             Logger::error($e);
             DAO::transRollback();
             throw new InvalidDatabaseOperationException($e);
         }
     }
     //for
     try {
         DAO::transEnd();
     } catch (Exception $e) {
         throw InvalidDatabaseOperationException($e);
     }
     Logger::log("===== COMPRA " . $compra->getIdCompra() . " EXITOSA ===== ");
     return array("id_compra" => $compra->getIdCompra());
 }
Ejemplo n.º 7
0
 public static function NuevoCatalogoCuentasEmpresa($id_empresa)
 {
     $empresa = EmpresaDAO::getByPK($id_empresa);
     if (is_null($empresa)) {
         throw new InvalidDatabaseOperationException("La empresa con id " . $id_empresa . " no existe");
     }
     $nuevo_catalogo_cuentas = new CatalogoCuentas();
     $nuevo_catalogo_cuentas->setIdEmpresa($id_empresa);
     $nuevo_catalogo_cuentas->setDescripcion("Catalogo de cuentas " . $empresa->getRazonSocial());
     DAO::transBegin();
     try {
         CatalogoCuentasDAO::save($nuevo_catalogo_cuentas);
     } catch (Exception $e) {
         DAO::transRollback();
         Logger::error("No se ha podido guardar la nueva cuenta: " . $e);
         throw new Exception("No se ha podido guardar el nuevo catalogo de cuentas|: " . $e->getMessage(), 901);
     }
     DAO::transEnd();
     self::InsertarCatalogoCuentasDefault($nuevo_catalogo_cuentas->getIdCatalogo());
     return array("status" => "ok", "id_catalogo_cuentas" => (int) $nuevo_catalogo_cuentas->getIdCatalogo());
 }
Ejemplo n.º 8
0
 /**
  *Detalles($id_empresa)
  *
  *Muestra los detalles de una empresa en especifico. 
  *
  * @author Juan Manuel Garc&iacute;a Carmona <*****@*****.**>
  * @param id_empresa int Id de la empresa
  **/
 public static function Detalles($id_empresa)
 {
     //verificamos si la empresa a consular existe
     if (!($empresa = EmpresaDAO::getByPK($id_empresa))) {
         Logger::error("No se tiene registro de la empresa {$id_empresa}");
         throw new InvalidDataException("No se tiene registro de la empresa {$id_empresa}");
     }
     //extraemos su domicilio fiscal
     if (!($direccion = DireccionDAO::getByPK($empresa->getIdDireccion()))) {
         $direccion = new stdClass();
     }
     //relacionamos a la empresa con la direccion
     $empresa->direccion = $direccion;
     //obtenemos el logo
     $logo = LogoDAO::getByPK($empresa->getIdLogo());
     if ($logo === NULL) {
         $logo = LogoDAO::getByPK(-1);
     }
     $empresa->logo = $logo->getImagen();
     //obtenemos su contabilidad
     $contabilidad = array();
     $contabilidad["moneda_base"] = EmpresaDAO::getMonedaBase($empresa->getIdEmpresa());
     $contabilidad["ejercicio"] = EmpresaDAO::getEjercicioActual($empresa->getIdEmpresa());
     //extraemos sus sucursales
     $sucursales = array();
     $sucursales_empresa = SucursalEmpresaDAO::search(new SucursalEmpresa(array("id_empresa" => $id_empresa)));
     foreach ($sucursales_empresa as $sucursal_empresa) {
         if ($sucursal = SucursalDAO::getByPK($sucursal_empresa->getIdSucursal())) {
             array_push($sucursales, $sucursal);
         }
     }
     //obtenemos todos los impuestos relacionados a la empresa
     $impuestos_empresa = ImpuestoEmpresaDAO::search(new ImpuestoEmpresa(array("id_empresa" => $id_empresa)));
     //extraemos sus impuestos de compra
     $impuestos_compra = array();
     foreach ($impuestos_empresa as $impuesto_compra_empresa) {
         if (!($impuesto = ImpuestoDAO::getByPK($impuesto_compra_empresa->getIdImpuesto()))) {
             Logger::warn("No se tiene registro de un impuesto con id = " . $impuesto_compra_empresa->getIdImpuesto());
             throw new InvalidDataException("No se tiene registro de un impuesto con id = " . $impuesto_compra_empresa->getIdImpuesto());
         }
         if ($impuesto->getAplica() === "compra" || $impuesto->getAplica() === "ambos") {
             array_push($impuestos_compra, $impuesto);
         }
     }
     //extraemos sus impuestos de venta
     $impuestos_venta = array();
     foreach ($impuestos_empresa as $impuesto_venta_empresa) {
         if (!($impuesto = ImpuestoDAO::getByPK($impuesto_venta_empresa->getIdImpuesto()))) {
             Logger::warn("No se tiene registro de un impuesto con id = " . $impuesto_venta_empresa->getIdImpuesto());
             throw new InvalidDataException("No se tiene registro de un impuesto con id = " . $impuesto_venta_empresa->getIdImpuesto());
         }
         if ($impuesto->getAplica() === "venta" || $impuesto->getAplica() === "ambos") {
             array_push($impuestos_venta, $impuesto);
         }
     }
     return array("detalles" => $empresa, "sucursales" => $sucursales, "impuestos_compra" => $impuestos_compra, "impuestos_venta" => $impuestos_venta, "contabilidad" => $contabilidad);
     Logger::log("Detalles de la empresa enviados con exito");
 }
Ejemplo n.º 9
0
 private static function validarParametrosProductoEmpresa($id_empresa = null)
 {
     //valida que la empresa exista y este activa
     if (!is_null($id_empresa)) {
         $empresa = EmpresaDAO::getByPK($id_empresa);
         if (is_null($empresa)) {
             return "La empresa con id " . $id_empresa . " no existe";
         }
         if (!$empresa->getActivo()) {
             return "La empresa esta desactivada";
         }
     }
     //!is_null($id_empresa)
     //No se encontro error, regresa true
     return true;
 }
Ejemplo n.º 10
0
 private static function validarParametrosServicioEmpresa($id_empresa = null)
 {
     //valida que la empresa exista y q este activa
     if (!is_null($id_empresa)) {
         $empresa = EmpresaDAO::getByPK($id_empresa);
         if (is_null($empresa)) {
             return "La empresa con id " . $id_empresa . " no existe";
         }
         if (!$empresa->getActivo()) {
             return "La empresa " . $id_empresa . " no esta activa";
         }
     }
     //No se encontro error
     return true;
 }
Ejemplo n.º 11
0
 /**
  *
  *Muestra los productos y/o servicios englobados en este paquete as? como las sucursales y las empresas donde lo ofrecen
  *
  * @param id_paquete int Id del paquete a visualizar sus detalles
  * @return detalle_paquete json Informacion del detalle del paquete
  **/
 public static function Detalle($id_paquete)
 {
     Logger::log("consiguiendo los detalles del paquete");
     //valida que el paquete exista
     $paquete = PaqueteDAO::getByPK($id_paquete);
     if (is_null($paquete)) {
         Logger::error("El paquete " . $id_paquete . " no existe");
         throw new Exception("El paquete " . $id_paquete . " no existe");
     }
     //En el primer campo de un arreglo se almacena el paquete en sí, en el segundo las empresas en las que esta disponible el paquete,
     //en el tercero las sucursales en las que esta disponible, en el cuarto los productos que contiene y en el quinto los servicios
     $detalle_paquete = array();
     array_push($detalle_paquete, $paquete);
     $empresas = array();
     $paquetes_empresa = PaqueteEmpresaDAO::search(new PaqueteEmpresa(array("id_paquete" => $id_paquete)));
     foreach ($paquetes_empresa as $paquete_empresa) {
         array_push($empresas, EmpresaDAO::getByPK($paquete_empresa->getIdEmpresa()));
     }
     array_push($detalle_paquete, $empresas);
     $sucursales = array();
     $paquetes_sucursal = PaqueteSucursalDAO::search(new PaqueteSucursal(array("id_paquete" => $id_paquete)));
     foreach ($paquetes_sucursal as $paquete_sucursal) {
         array_push($sucursales, SucursalDAO::getByPK($paquete_sucursal->getIdSucursal()));
     }
     array_push($detalle_paquete, $sucursales);
     $productos = array();
     $productos_paquete = ProductoPaqueteDAO::search(new ProductoPaquete(array("id_paquete" => $id_paquete)));
     foreach ($productos_paquete as $producto_paquete) {
         array_push($productos, ProductoDAO::getByPK($producto_paquete->getIdProducto()));
     }
     array_push($detalle_paquete, $productos);
     $servicios = array();
     $servicios_paquete = OrdenDeServicioPaqueteDAO::search(new OrdenDeServicioPaquete(array("id_paquete" => $id_paquete)));
     foreach ($servicios_paquete as $servicio_paquete) {
         array_push($servicios, ServicioDAO::getByPK($servicio_paquete->getIdServicio()));
     }
     array_push($detalle_paquete, $servicios);
     Logger::log("Detalle de paquete " . $id_paquete . " conseguido exitosamente con " . count($empresas) . "\n                empresas, " . count($sucursales) . " sucursales, " . count($productos) . " productos y " . count($servicios) . " servicios");
     return $detalle_paquete;
 }
Ejemplo n.º 12
0
 private static function validarParametrosGasto($id_gasto = null, $id_empresa = null, $id_concepto_gasto = null, $id_orden_de_servicio = null, $fecha_del_gasto = null, $id_sucursal = null, $id_caja = null, $nota = null, $descripcion = null, $folio = null, $monto = null, $cancelado = null, $motivo_cancelacion = null)
 {
     //valida que el ingreso exista en la base de datos
     if (!is_null($id_gasto)) {
         $gasto = GastoDAO::getByPK($id_gasto);
         if (is_null($gasto)) {
             return "El gasto con id " . $id_gasto . " no existe";
         }
         if ($gasto->getCancelado()) {
             return "El gasto ya ha sido cancelado";
         }
     }
     //valida que la empresa exista en la base de datos
     if (!is_null($id_empresa)) {
         $empresa = EmpresaDAO::getByPK($id_empresa);
         if (is_null($empresa)) {
             return "La empresa con id " . $id_empresa . " no existe";
         }
         if (!$empresa->getActivo()) {
             return "La empresa esta desactivada";
         }
     }
     //valida que el concepto de ingreso exista en la base de datos
     if (!is_null($id_concepto_gasto)) {
         $concepto_gasto = ConceptoGastoDAO::getByPK($id_concepto_gasto);
         if (is_null($concepto_gasto)) {
             return "El concepto de gasto con id " . $id_concepto_gasto . " no existe";
         }
         if (!$concepto_gasto->getActivo()) {
             return "El concepto de gasto esta desactivado";
         }
     }
     //valida que la orden de servicio exista y que este activa
     if (!is_null($id_orden_de_servicio)) {
         $orden_de_servicio = OrdenDeServicioDAO::getByPK($id_orden_de_servicio);
         if (is_null($orden_de_servicio)) {
             return "La orden de servicio " . $id_orden_de_servicio . " no existe";
         }
         if (!$orden_de_servicio->getActiva()) {
             return "La orden de servicio ya esta desactivada";
         }
     }
     //valida que el string fecha_del_ingreso sea valido
     if (!is_null($fecha_del_gasto)) {
         $e = self::validarString($fecha_del_gasto, strlen("YYYY-mm-dd HH:ii:ss"), "fecha del ingreso");
         if (is_string($e)) {
             return $e;
         }
     }
     //valida que la sucursal exista en la base de datos
     if (!is_null($id_sucursal)) {
         $sucursal = SucursalDAO::getByPK($id_sucursal);
         if (is_null($sucursal)) {
             return "La sucursal con id " . $id_sucursal . " no existe";
         }
         if (!$sucursal->getActiva()) {
             return "La sucursal esta desactivada";
         }
     }
     //valida que la caja exista en la base de datos
     if (!is_null($id_caja)) {
         $caja = CajaDAO::getByPK($id_caja);
         if (is_null($caja)) {
             return "La caja con id " . $id_caja . " no existe";
         }
         if (!$caja->getAbierta()) {
             return "La caja no esta abierta, no se le pueden hacer cambios";
         }
         if (!$caja->getActiva()) {
             return "La caja esat desactivada";
         }
     }
     //valida que el string nota este en el rango
     if (!is_null($nota)) {
         $e = self::validarString($nota, 64, "nota");
         if (is_string($e)) {
             return $e;
         }
     }
     //valida que la descripcion este en el rango
     if (!is_null($descripcion)) {
         $e = self::validarString($descripcion, 255, "descripcion");
         if (is_string($e)) {
             return $e;
         }
     }
     //valida que el folio este en el rango
     if (!is_null($folio)) {
         $e = self::validarString($folio, 50, "folio");
         if (is_string($e)) {
             return $e;
         }
     }
     //valida que el monto este en el rango
     if (!is_null($monto)) {
         $e = self::validarNumero($monto, 1.8E+200, "monto");
         if (is_string($e)) {
             return $e;
         }
     }
     //valida el boleano canceldo
     if (!is_null($cancelado)) {
         $e = self::validarNumero($cancelado, 1, "cancelado");
         if (is_string($e)) {
             return $e;
         }
     }
     //valida el motivo de cancelacion
     if (!is_null($motivo_cancelacion)) {
         $e = self::validarString($motivo_cancelacion, 255, "motivo de cancelacion");
         if (is_string($e)) {
             return $e;
         }
     }
     //No se encontro error, regresa verdadero
     return true;
 }
Ejemplo n.º 13
0
 /**
  *
  *Creara un nuevo almacen en una sucursal, este almacen contendra lotes.
  *
  * @param id_empresa int Id de la empresa a la que pertenecen los productos de este almacen
  * @param id_sucursal int El id de la sucursal a la que pertenecera este almacen.
  * @param id_tipo_almacen int Id del tipo de almacen 
  * @param nombre string nombre del almacen
  * @param descripcion string Descripcion extesa del almacen
  * @return id_almacen int el id recien generado
  **/
 static function Nuevo($id_empresa, $id_sucursal, $id_tipo_almacen, $nombre, $descripcion = null)
 {
     //verificamos que exista la empresa
     if (!is_null($id_empresa) && !($empresa = EmpresaDAO::getByPK($id_empresa))) {
         throw new Exception("No se tiene registro de la empresa {$id_empresa}");
     }
     //verificamos que exista la sucursal
     if (!is_null($id_sucursal) && !($sucursal = SucursalDAO::getByPK($id_sucursal))) {
         throw new Exception("No se tiene registro de la sucursal {$id_sucursal}");
     }
     //verificamos que exista el tipo de almacen
     if (!is_null($id_tipo_almacen) && !($almacen = TipoAlmacenDAO::getByPK($id_tipo_almacen))) {
         throw new Exception("No se tiene registro del tipo de almacen {$id_tipo_almacen}");
     }
     //verificamos que se haya especificado el nombre
     if (!ValidacionesController::validarLongitudDeCadena(trim($nombre), 2, 100)) {
         throw new Exception("El nombre debe ser una cadena entre 2 y 100 caracteres, se encontro \"" . trim($nombre) . "\" ");
     }
     //Se valida si hay un almacen con ese mimso nombre en esta sucursal
     $almacenes = AlmacenDAO::search(new Almacen(array("id_sucursal" => $id_sucursal)));
     foreach ($almacenes as $almacen) {
         if ($almacen->getNombre() == trim($nombre) && $almacen->getActivo()) {
             Logger::log("El nombre (" . $nombre . ") ya esta siendo usado por el almacen: " . $almacen->getIdAlmacen());
             throw new Exception("El nombre ya esta en uso");
         }
     }
     //Si se recibe un tipo de almacen de consignacion, se manda una excepcion, pues no se puede crear un almacen
     //de consignacion con este metodo.
     if ($id_tipo_almacen == 2) {
         Logger::error("No se puede crear un almacen de consignacion con este metodo");
         throw new Exception("No se puede crear un almacen de consignacion con este metodo");
     }
     //Solo puede haber un almacen por tipo por cada empresa en una sucursal.
     $almacenes = AlmacenDAO::search(new Almacen(array("id_sucursal" => $id_sucursal, "id_empresa" => $id_empresa, "id_tipo_almacen" => $id_tipo_almacen)));
     if (!empty($almacenes)) {
         Logger::error("Ya existe un almacen (" . $almacenes[0]->getIdAlmacen() . ") de este tipo (" . $id_tipo_almacen . ") en esta sucursal (" . $id_sucursal . ") para esta empresa (" . $id_empresa . ")");
         throw new Exception("Ya existe un almacen de este tipo en esta sucursal para esta empresa");
     }
     //Se inicializa el registro a guardar con los datos obtenidos.
     $almacen = new Almacen();
     $almacen->setNombre(trim($nombre));
     $almacen->setDescripcion($descripcion);
     $almacen->setIdSucursal($id_sucursal);
     $almacen->setIdEmpresa($id_empresa);
     $almacen->setIdTipoAlmacen($id_tipo_almacen);
     $almacen->setActivo(1);
     DAO::transBegin();
     try {
         AlmacenDAO::save($almacen);
     } catch (Exception $e) {
         DAO::transRollback();
         Logger::error("No se pudo crear el nuevo almacen");
         throw new Exception("No se pudo crear el nuevo almacen");
     }
     DAO::transEnd();
     Logger::log("Almacen " . $almacen->getIdAlmacen() . " creado exitosamente");
     return array("id_almacen" => (int) $almacen->getIdAlmacen());
 }