static function RazonSocialFromIdEmpresa($id_empresa) { if (is_null($u = EmpresaDAO::getByPK($id_empresa))) { return self::NonExistent(); } else { return $u->getRazonSocial(); } }
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() : "------"; }
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"); }
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; }
/** * *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()); }
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()); }
/** *Detalles($id_empresa) * *Muestra los detalles de una empresa en especifico. * * @author Juan Manuel Garcí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"); }
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; }
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; }
/** * *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; }
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; }
/** * *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()); }