Example #1
0
 public static function ActualizarTotales($id_venta)
 {
     Logger::log("actualizando el total de la venta " . $id_venta);
     $v = VentaDAO::getByPK($id_venta);
     if (is_null($v)) {
         throw new InvalidDataException("Esta venta no existe");
     }
     //iniciar valores
     $subtotal = 0;
     //buscar los productos
     $vp = VentaProductoDAO::search(new VentaProducto(array("id_venta" => $id_venta)));
     for ($i = 0; $i < sizeof($vp); $i++) {
         Logger::log("prioducto" . $vp[$i]->getPrecio());
         $subtotal += $vp[$i]->getPrecio() * $vp[$i]->getCantidad();
     }
     //buscar los servicios
     $vo = VentaOrdenDAO::search(new VentaOrden(array("id_venta" => $id_venta)));
     for ($i = 0; $i < sizeof($vo); $i++) {
         $subtotal += $vo[$i]->getPrecio();
         Logger::log("servicio" . $vo[$i]->getPrecio());
     }
     //buscar los ipouestos
     $im = ImpuestoDAO::search(new Impuesto(array()));
     $iporcentaje = 0;
     for ($i = 0; $i < sizeof($im); $i++) {
         $iporcentaje += $im[$i]->getImporte();
     }
     $itotal = $subtotal * $iporcentaje;
     $total = $itotal + $subtotal;
     //itotal, total, subtotal
     $v->setSubtotal($subtotal);
     $v->setImpuesto($itotal);
     $v->setTotal($total);
     try {
         VentaDAO::save($v);
     } catch (Exception $e) {
         Logger::error($e);
         throw $e;
     }
     return true;
 }
 /**
  *
  *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 ");
 }
<?php

define("BYPASS_INSTANCE_CHECK", false);
require_once "../../../server/bootstrap.php";
$page = new GerenciaComponentPage();
$page->addComponent(new TitleComponent("Impuestos"));
$tabla = new TableComponent(array("id_impuesto" => "ID", "nombre" => "Nombre", "descripcion" => "Descripcion", "codigo" => "Codigo", "importe" => "Importe", "tipo" => "Tipo", "aplica" => "Aplica", "incluido" => "Incluido", "activo" => "Activo"), ImpuestoDAO::getAll());
function funcion_es_monto($es_monto)
{
    return $es_monto ? "Si" : "No";
}
$tabla->addColRender("es_monto", "funcion_es_monto");
$tabla->addOnClick("id_impuesto", "(function(a){window.location = 'impuestos.impuesto.ver.php?iid='+a;})");
$page->addComponent($tabla);
$page->render();
<?php

define("BYPASS_INSTANCE_CHECK", false);
require_once "../../../server/bootstrap.php";
$page = new GerenciaComponentPage();
//
// Requerir parametros
//
$page->requireParam("iid", "GET", "Este impuesto no existe.");
$este_impuesto = ImpuestoDAO::getByPK($_GET["iid"]);
//
// Titulo de la pagina
//
$page->addComponent(new TitleComponent("Detalles de " . $este_impuesto->getNombre(), 2));
//
// Menu de opciones
//
$menu = new MenuComponent();
$menu->addItem("Editar este impuesto", "impuestos.editar.impuesto.php?iid=" . $_GET["iid"]);
$page->addComponent($menu);
//
// Forma de producto
//
$form = new DAOFormComponent($este_impuesto);
$form->setEditable(false);
$form->hideField(array("id_impuesto"));
$page->addComponent($form);
$page->render();
 /**
  *
  *Crear un nuevo impuesto.
  *
  * @param monto_porcentaje float monto o porcentaje que representa este impuesto
  * @param nombre string Nombre del impuesto
  * @param es_monto bool Si es verdadero, el campo de monto_porcentaje sera tomado como un monto fijo, si es falso, sera tomado como un porcentaje
  * @param descripcion string Descripcion del impuesto
  * @return id_impuesto int Id del impuesto insertado.
  **/
 public static function NuevoImpuesto($es_monto, $monto_porcentaje, $nombre, $descripcion = null)
 {
     Logger::log("Creando un nuevo impuesto");
     //Se validan los parametros recibidos
     $e = self::validarEsMonto($es_monto);
     if (is_string($e)) {
         Logger::error($e);
         throw new Exception($e);
     }
     $e = self::validarMontoPorcentaje($monto_porcentaje);
     if (is_string($e)) {
         Logger::error($e);
         throw new Exception($e);
     }
     $e = self::validarNombre($nombre);
     if (is_string($e)) {
         Logger::error($e);
         throw new Exception($e);
     }
     if (!is_null($descripcion)) {
         $e = self::validarDescripcion($descripcion);
         if (is_string($e)) {
             Logger::error($e);
             throw new Exception($e);
         }
     }
     $impuesto = new Impuesto(array("es_monto" => $es_monto, "monto_porcentaje" => $monto_porcentaje, "nombre" => $nombre, "descripcion" => $descripcion));
     DAO::transBegin();
     try {
         ImpuestoDAO::save($impuesto);
     } catch (Exception $e) {
         DAO::transRollback();
         Logger::error("No se ha podido crear el nuevo impuesto: " . $e);
         throw new Exception("No se ha podido crear al nuevo impuesto, consulte a su administrador de sistema");
     }
     DAO::transEnd();
     Logger::log("Impuesto creado exitosamente");
     return array("id_impuesto" => $impuesto->getIdImpuesto());
 }
 private static function validarParametrosImpuestoUsuario($id_impuesto = null, $id_usuario = null)
 {
     //valida que el impuesto exista en la base de datos
     if (!is_null($id_impuesto)) {
         if (is_null(ImpuestoDAO::getByPK($id_impuesto))) {
             return "El impuesto con id: " . $id_impuesto . " no existe";
         }
     }
     //valida que el 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";
         }
     }
     return true;
 }
<?php

define("BYPASS_INSTANCE_CHECK", false);
require_once "../../../server/bootstrap.php";
$page = new GerenciaComponentPage();
$page->addComponent(new TitleComponent("Retenciones"));
$tabla = new TableComponent(array("nombre" => "Nombre", "monto_porcentaje" => "Monto/Porcentaje", "es_monto" => "Es monto", "descripcion" => "Descripcion"), ImpuestoDAO::getAll());
function funcion_es_monto($es_monto)
{
    return $es_monto ? "Si" : "No";
}
$tabla->addColRender("es_monto", "funcion_es_monto");
$tabla->addOnClick("id_retencion", "(function(a){window.location = 'impuestos.retencion.ver.php?rid='+a;})");
$page->addComponent($tabla);
$page->render();
Example #8
0
$configuracion_moneda_form->createComboBoxJoin("id_moneda", "simbolo", EfectivoController::ListaMoneda());
$page->addComponent($configuracion_moneda_form);
$page->addComponent("<br />");
$page->addComponent(new TitleComponent("Ejercicio", 3));
$configuracion_ejercicio_form = new FormComponent();
$configuracion_ejercicio_form->addField("ejercicio", "A&#241;o del Ejercicio", "text", date("Y"), "ejercicio");
$page->addComponent($configuracion_ejercicio_form);
$page->addComponent(new TitleComponent("Periodo", 3));
$configuracion_periodo_form = new FormComponent();
$configuracion_periodo_form->addField("duracion_periodo", "Duracion de periodos (meses)", "number", "1", "duracion_periodo");
$configuracion_periodo_form->addField("periodo_actual", "Periodo Actual", "number", "1", "periodo_actual");
$page->addComponent($configuracion_periodo_form);
$page->addComponent(new TitleComponent("Impuestos", 2));
$impuestos_compra_form = new FormComponent();
$valores = array();
foreach (ImpuestoDAO::getAll() as $impuesto) {
    array_push($valores, array("id" => $impuesto->getIdImpuesto(), "caption" => $impuesto->getNombre()));
}
$impuestos_compra_form->addField('impuestos_compra', 'Impuestos Compra', 'listbox', $valores, 'impuestos_compra');
$impuestos_compra_form->addField('impuestos_venta', 'Impuestos Venta', 'listbox', $valores, 'impuestos_venta');
$page->addComponent($impuestos_compra_form);
/*
 * Tab Pagos
 */
$page->nextTab("Pagos fuera de plazo");
$msj = "Estimado/a se&#241;or/se&#241;ora,\n\nNuestros registros indican que algunos pagos en nuestra cuenta est&aacute;n a&uacute;n pendientes. Puede encontrar los detalles a continuaci&oacute;n.\n\n%s\n\nSi la cantidad ha sido ya pagada, por favor, descarte esta notificaci&oacute;n. En otro caso, por favor rem&iacute;tanos el importe total abajo indicado.\n\n%s\n\nSi tiene alguna pregunta con respecto a su cuenta, por favor cont&aacute;ctenos.\n\nGracias de antemano por su colaboraci&oacute;n.\nSaludos cordiales,";
$mensaje_form = new FormComponent();
$mensaje_form->addField("mensaje", "Mensaje pagos vencidos", "textarea", $msj, "mensaje");
$page->addComponent($mensaje_form);
/*
 * Logica de envio de informacion
Example #9
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");
 }
Example #10
0
 /**
  *
  *Edita la informaci?n de un producto
  *
  * @param id_producto int Id del producto a editar
  * @param clasificaciones json Uno o varios id_clasificacion de este producto, esta clasificacion esta dada por el usuario
  * @param codigo_de_barras string El Codigo de barras para este producto
  * @param codigo_producto string Codigo del producto
  * @param compra_en_mostrador bool Verdadero si este producto se puede comprar en mostrador, para aquello de compra-venta
  * @param control_de_existencia int 00000001 = Unidades. 00000010 = Caractersticas. 00000100 = Series. 00001000 = Pedimentos. 00010000 = Lote
  * @param costo_estandar float Valor del costo estndar del producto.
  * @param costo_extra_almacen float Si este producto produce un costo extra por tenerlo en almacen
  * @param descripcion_producto string Descripcion larga del producto
  * @param empresas json arreglo de ids de empresas a las que pertenece este producto
  * @param foto_del_producto string url a una foto de este producto
  * @param garantia int Numero de meses de garantia con los que cuenta esta categoria de producto
  * @param id_unidad int La unidad preferente de este producto
  * @param id_unidad_compra int El id de la unidad de medida en la que se adquiere el producto al comprarlo
  * @param impuestos json array de ids de impuestos que tiene este producto
  * @param metodo_costeo string Puede ser "precio" o "costo" e indican si el precio final sera tomado a partir del costo del producto o del precio del mismo
  * @param nombre_producto string Nombre del producto
  * @param peso_producto float el peso de este producto en KG
  * @param precio int El precio de este producto
  * @param visible_en_vc bool Verdadero si este producto sera visible a los clientes.
  **/
 static function Editar($id_producto, $clasificaciones = null, $codigo_de_barras = null, $codigo_producto = null, $compra_en_mostrador = null, $control_de_existencia = null, $costo_estandar = null, $costo_extra_almacen = null, $descripcion_producto = null, $empresas = null, $foto_del_producto = null, $garantia = null, $id_unidad = null, $id_unidad_compra = null, $impuestos = null, $metodo_costeo = null, $nombre_producto = null, $peso_producto = null, $precio = null, $visible_en_vc = null)
 {
     Logger::log("== Editando producto " . $id_producto . " ==");
     //se validan los parametros recibidos
     $validar = self::validarParametrosProducto($id_producto, $compra_en_mostrador, $metodo_costeo, null, $codigo_producto, $nombre_producto, $garantia, $costo_estandar, $control_de_existencia, $descripcion_producto, $foto_del_producto, $costo_extra_almacen, $codigo_de_barras, $peso_producto, $id_unidad, $precio);
     if (is_string($validar)) {
         Logger::error($validar);
         throw new Exception($validar);
     }
     //is_string($validar)
     $producto = ProductoDAO::getByPK($id_producto);
     //Los parametros que no sean nulos seran tomados como una actualizacion
     if (!is_null($compra_en_mostrador)) {
         $producto->setCompraEnMostrador($compra_en_mostrador);
     }
     //!is_null($compra_en_mostrador)
     if (!is_null($descripcion_producto)) {
         $producto->setDescripcion($descripcion_producto);
     }
     //!is_null($descripcion_producto)
     if (!is_null($metodo_costeo)) {
         $producto->setMetodoCosteo($metodo_costeo);
     }
     //!is_null($metodo_costeo)
     if (!is_null($codigo_producto)) {
         $producto->setCodigoProducto(trim($codigo_producto));
     }
     //!is_null($codigo_producto)
     if (!is_null($nombre_producto)) {
         $producto->setNombreProducto(trim($nombre_producto));
     }
     //!is_null($nombre_producto)
     if (!is_null($garantia)) {
         $producto->setGarantia($garantia);
     }
     //!is_null($garantia)
     if (!is_null($costo_estandar)) {
         $costo_estandar = $metodo_costeo == "costo" ? $costo_estandar : null;
         //sólo en caso de que se haya seleccionado metodo_costeo == 'costo' tomar en cuenta este valor ver API
         $producto->setCostoEstandar($costo_estandar);
     }
     //!is_null($costo_estandar)
     if (!is_null($control_de_existencia)) {
         $producto->setControlDeExistencia($control_de_existencia);
     }
     //!is_null($control_de_existencia)
     if (!is_null($foto_del_producto)) {
         $producto->setFotoDelProducto($foto_del_producto);
     }
     //!is_null($foto_del_producto)
     if (!is_null($costo_extra_almacen)) {
         $producto->setCostoExtraAlmacen($costo_extra_almacen);
     }
     //!is_null($costo_extra_almacen)
     if (!is_null($codigo_de_barras)) {
         $producto->setCodigoDeBarras(trim($codigo_de_barras));
     }
     //!is_null($codigo_de_barras)
     if (!is_null($peso_producto)) {
         $producto->setPesoProducto($peso_producto);
     }
     //!is_null($peso_producto)
     if (!is_null($id_unidad)) {
         $producto->setIdUnidad($id_unidad);
     }
     //!is_null($id_unidad)
     if (!is_null($id_unidad_compra)) {
         $producto->setIdUnidadCompra($id_unidad_compra);
     }
     //!is_null($id_unidad_compra)
     if (!is_null($precio)) {
         $producto->setPrecio($precio);
     }
     //!is_null($precio)
     if (!is_null($visible_en_vc)) {
         $producto->setVisibleEnVc($visible_en_vc);
     }
     if ($metodo_costeo == "precio" && is_null($producto->getPrecio())) {
         Logger::error("Se intenta registrar un producto con metodo de costeo precio sin especificar un precio");
         throw new Exception("Se intenta registrar un producto con metodo de costeo precio sin especificar un precio", 901);
     } else {
         if ($metodo_costeo == "costo" && is_null($producto->getCostoEstandar())) {
             Logger::error("Se intenta registrar un producto con metodo de costeo costo sin especificar un costo estandar");
             throw new Exception("Se intenta registrar un producto con metodo de costeo costo sin especificar un costo estandar", 901);
         }
     }
     //$metodo_costeo == "costo" && is_null($producto->getCostoEstandar())
     DAO::transBegin();
     try {
         ProductoDAO::save($producto);
         //Si se reciben empresas, clasificaciones y/o impuestos se modifican en sus respectivas tablas
         //
         //Primero se guardan o actualizan los registros pasados en la lista, despues se recorren los registros
         //actuales y si alguno no se encuentra en la lista se elimina.
         if (!is_null($empresas)) {
             $empresas = object_to_array($empresas);
             if (!is_array($empresas)) {
                 throw new Exception("Las empresas fueron enviadas incorrectamente", 901);
             }
             //!is_array($empresas)
             $producto_empresa = new ProductoEmpresa(array("id_producto" => $id_producto));
             foreach ($empresas as $empresa) {
                 $validar = self::validarParametrosProductoEmpresa($empresa);
                 if (is_string($validar)) {
                     throw new Exception($validar, 901);
                 }
                 $producto_empresa->setIdEmpresa($empresa);
                 ProductoEmpresaDAO::save($producto_empresa);
             }
             //$empresas as $empresa
             $productos_empresa = ProductoEmpresaDAO::search(new ProductoEmpresa(array("id_producto" => $id_producto)));
             foreach ($productos_empresa as $p_e) {
                 $encontrado = false;
                 foreach ($empresas as $empresa) {
                     if ($empresa == $p_e->getIdEmpresa()) {
                         $encontrado = true;
                     }
                     //$empresa == $p_e->getIdEmpresa()
                 }
                 //$empresas as $empresa
                 if (!$encontrado) {
                     ProductoEmpresaDAO::delete($p_e);
                 }
             }
             //$productos_empresa as $p_e
         }
         //!is_null($empresas)
         /* Fin if de empresas */
         if (!is_null($clasificaciones)) {
             $clasificaciones = object_to_array($clasificaciones);
             if (!is_array($clasificaciones)) {
                 throw new Exception("Las clasificaciones fueron recibidas incorrectamente", 901);
             }
             //!is_array($clasificaciones)
             $producto_clasificacion = new ProductoClasificacion(array("id_producto" => $id_producto));
             foreach ($clasificaciones as $clasificacion) {
                 $c = ClasificacionProductoDAO::getByPK($clasificacion);
                 if (is_null($c)) {
                     throw new Exception("La clasificacion de producto con id " . $clasificacion . " no existe", 901);
                 }
                 if (!$c->getActiva()) {
                     throw new Exception("La clasificaicon de producto con id " . $clasificacion . " no esta activa", 901);
                 }
                 $producto_clasificacion->setIdClasificacionProducto($clasificacion);
                 ProductoClasificacionDAO::save($producto_clasificacion);
             }
             //$clasificaciones as $clasificacion
             $productos_clasificacion = ProductoClasificacionDAO::search(new ProductoClasificacion(array("id_producto" => $id_producto)));
             foreach ($productos_clasificacion as $p_c) {
                 $encontrado = false;
                 foreach ($clasificaciones as $clasificacion) {
                     if ($clasificacion == $p_c->getIdClasificacionProducto()) {
                         $encontrado = true;
                     }
                     //$clasificacion == $p_c->getIdClasificacionProducto()
                 }
                 //$clasificaciones as $clasificacion
                 if (!$encontrado) {
                     ProductoClasificacionDAO::delete($p_c);
                 }
             }
             //$productos_clasificacion as $p_c
         }
         //!is_null($clasificaciones)
         /* Fin if de clasificaciones */
         if (!is_null($impuestos)) {
             $impuestos = object_to_array($impuestos);
             if (!is_array($impuestos)) {
                 throw new Exception("Los impuestos fueron recibidos incorrectamente", 901);
             }
             //!is_array($impuestos)
             $impuesto_producto = new ImpuestoProducto(array("id_producto" => $producto->getIdProducto()));
             foreach ($impuestos as $impuesto) {
                 if (is_null(ImpuestoDAO::getByPK($impuesto))) {
                     throw new Exception("El impuesto con id " . $impuesto . " no existe", 901);
                 }
                 $impuesto_producto->setIdImpuesto($impuesto);
                 ImpuestoProductoDAO::save($impuesto_producto);
             }
             //$impuestos as $impuesto
             $impuestos_producto = ImpuestoProductoDAO::search(new ImpuestoProducto(array("id_producto" => $id_producto)));
             foreach ($impuestos_producto as $i_p) {
                 $encontrado = false;
                 foreach ($impuestos as $impuesto) {
                     if ($impuesto == $i_p->getIdImpuesto()) {
                         $encontrado = true;
                     }
                     //$impuesto == $i_p->getIdImpuesto()
                 }
                 //$impuestos as $impuesto
                 if (!$encontrado) {
                     ImpuestoProductoDAO::delete($i_p);
                 }
             }
             //$impuestos_producto as $i_p
         }
         //!is_null($impuestos)
         /* Fin if de impuestos */
     } catch (Exception $e) {
         DAO::transRollback();
         Logger::error("El producto no pudo ser editado: " . $e);
         if ($e->getCode() == 901) {
             throw new Exception("El producto no pudo ser editado: " . $e->getMessage(), 901);
         }
         throw new Exception("El producto no pudo ser editado", 901);
     }
     DAO::transEnd();
     Logger::log("Producto editado exitosamente");
 }
Example #11
0
 /**
  *
  *Listas los impuestos
  *
  * @param query string Valor que se buscara en la consulta
  * @return resultados json Lista de impuestos
  * @return numero_de_resultados int 
  **/
 public static function Lista($query = null)
 {
     $i = ImpuestoDAO::getAll();
     return array("resultados" => $i, "numero_de_resultados" => sizeof($i));
 }
Example #12
0
 /**
  *
  *Edita un servicio
  *
  * @param id_servicio int Id del servicio a editar
  * @param sucursales json Sucursales en las cuales estara disponible este servicio
  * @param nombre_servicio string Nombre del servicio
  * @param garantia int Si este servicio tiene una garanta en meses.
  * @param impuestos json array de ids de impuestos que tiene este servico
  * @param metodo_costeo string Mtodo de costeo del servicio: 1 = Costo Promedio en Base a Entradas.2 = Costo Promedio en Base a Entradas Almacn.3 = ltimo costo.4 = UEPS.5 = PEPS.6 = Costo especfico.7 = Costo Estndar
  * @param empresas string Objeto que contiene los ids de las empresas a las que pertenece este servicio
  * @param codigo_servicio string Codigo de control del servicio manejado por la empresa, no se puede repetir
  * @param descripcion_servicio string Descripcion del servicio
  * @param compra_en_mostrador string Verdadero si este servicio se puede comprar en mostrador, para aquello de compra-venta. Para poder hacer esto, el sistema debe poder hacer compras en mostrador
  * @param activo bool Si el servicio esta activo o no
  * @param control_de_existencia int 00000001 = Unidades. 00000010 = Caractersticas. 00000100 = Series. 00001000 = Pedimentos. 00010000 = LoteCaractersticas. 00000100 = Series. 00001000 = Pedimentos. 00010000 = Lote
  * @param foto_servicio string Url de la foto del servicio
  * @param margen_de_utilidad string Un porcentage de 0 a 100 si queremos que este servicio marque utilidad en especifico
  * @param clasificaciones json Uno o varios id_clasificacion de este servicio, esta clasificacion esta dada por el usuario Array
  * @param retenciones json Ids de retenciones que afectan este servicio
  * @param costo_estandar float Valor del costo estandar del servicio
  **/
 public static function Editar($id_servicio, $clasificaciones = null, $codigo_servicio = null, $compra_en_mostrador = null, $control_de_existencia = null, $costo_estandar = null, $descripcion_servicio = null, $empresas = null, $extra_params = null, $foto_servicio = null, $garantia = null, $impuestos = null, $metodo_costeo = null, $nombre_servicio = null, $precio = null, $retenciones = null, $sucursales = null)
 {
     Logger::log("Editando servicio " . $id_servicio);
     //valida los parametros recibidos
     $validar = self::validarParametrosServicio($id_servicio, $nombre_servicio, $metodo_costeo, $codigo_servicio, $compra_en_mostrador, null, $descripcion_servicio, $costo_estandar, $garantia, $control_de_existencia, $foto_servicio, $precio);
     if (is_string($validar)) {
         Logger::error($validar);
         throw new Exception($validar);
     }
     //Los parametros que no sean nulos seran tomados como actualizacion
     $servicio = ServicioDAO::getByPK($id_servicio);
     if (!is_null($nombre_servicio)) {
         $servicio->setNombreServicio(trim($nombre_servicio));
     }
     if (!is_null($garantia)) {
         $servicio->setGarantia($garantia);
     }
     if (!is_null($codigo_servicio)) {
         $servicio->setCodigoServicio(trim($codigo_servicio));
     }
     if (!is_null($descripcion_servicio)) {
         $servicio->setDescripcionServicio($descripcion_servicio);
     }
     if (!is_null($compra_en_mostrador)) {
         $servicio->setCompraEnMostrador($compra_en_mostrador);
     }
     if (!is_null($control_de_existencia)) {
         $servicio->setControlExistencia($control_de_existencia);
     }
     if (!is_null($extra_params)) {
         $servicio->setExtraParams(json_encode($extra_params));
     }
     if (!is_null($foto_servicio)) {
         $servicio->setFotoServicio($foto_servicio);
     }
     if (!is_null($costo_estandar)) {
         if (!is_numeric($costo_estandar) || $costo_estandar < 0) {
             throw new Exception("Indique un valor de costo valido");
         }
         $servicio->setCostoEstandar($costo_estandar);
     }
     if (!is_null($precio)) {
         if (!is_numeric($precio) || $precio < 0) {
             throw new Exception("Indique un valor de precio valido");
         }
         $servicio->setPrecio($precio);
     }
     if (!is_null($metodo_costeo)) {
         if ($metodo_costeo == "costo" && is_null($costo_estandar)) {
             throw new Exception("Indique un valor de costo");
         }
         if ($metodo_costeo == "precio" && is_null($precio)) {
             throw new Exception("Indique un valor de precio");
         }
         $servicio->setMetodoCosteo($metodo_costeo);
     }
     //Se verifica que se cuente con el atributo que busca el metodo de costeo
     if ($servicio->getMetodoCosteo() == "precio" && is_null($servicio->getPrecio()) || $servicio->getMetodoCosteo() == "costo" && is_null($servicio->getCostoEstandar())) {
         Logger::error("No se cuenta con el parametro " . $metodo_costeo);
         throw new Exception("No se cuenta con el parametro " . $metodo_costeo);
     }
     //Se actualiza el registro de servicio. Si se reciben listas de empresas, sucursales, clasificaciones, impuestos
     //y/o retenciones, se recorre la lista y se guardan o actualizan los que se encuentren.
     //Despues se recorren los registros acutales y se buscan en las listas recibidas, si no son encontrados son eliminados
     //de la base de datos
     DAO::transBegin();
     try {
         ServicioDAO::save($servicio);
         if (!is_null($empresas)) {
             $empresas = object_to_array($empresas);
             if (!is_array($empresas)) {
                 throw new Exception("Las empresas son invalidas", 901);
             }
             $servicio_empresa = new ServicioEmpresa(array("id_servicio" => $servicio->getIdServicio()));
             foreach ($empresas as $empresa) {
                 $validar = self::validarParametrosServicioEmpresa($empresa);
                 if (is_string($validar)) {
                     throw new Exception($validar, 901);
                 }
                 $servicio_empresa->setIdEmpresa($empresa);
                 ServicioEmpresaDAO::save($servicio_empresa);
             }
             $servicios_empresa = ServicioEmpresaDAO::search(new ServicioEmpresa(array("id_servicio" => $id_servicio)));
             foreach ($servicios_empresa as $s_e) {
                 $encontrado = false;
                 foreach ($empresas as $empresa) {
                     if ($empresa == $s_e->getIdEmpresa()) {
                         $encontrado = true;
                     }
                 }
                 if (!$encontrado) {
                     ServicioEmpresaDAO::delete($s_e);
                 }
             }
         }
         /* Fin if de empresas */
         if (!is_null($sucursales)) {
             $sucursales = object_to_array($sucursales);
             if (!is_array($sucursales)) {
                 throw new Exception("Las sucursales no son validas", 901);
             }
             $servicio_sucursal = new ServicioSucursal(array("id_servicio" => $servicio->getIdServicio()));
             foreach ($sucursales as $sucursal) {
                 $validar = self::validarParametrosServicioSucursal($sucursal);
                 if (is_string($validar)) {
                     throw new Exception($validar, 901);
                 }
                 $servicio_sucursal->setIdSucursal($sucursal);
                 ServicioSucursalDAO::save($servicio_sucursal);
             }
             $servicios_sucursal = ServicioSucursalDAO::search(new ServicioSucursal(array("id_servicio" => $id_servicio)));
             foreach ($servicios_sucursal as $s_s) {
                 $encontrado = false;
                 foreach ($sucursales as $sucursal) {
                     if ($sucursal == $s_s->getIdSucursal()) {
                         $encontrado = true;
                     }
                 }
                 if (!$encontrado) {
                     ServicioSucursalDAO::delete($s_s);
                 }
             }
         }
         /* Fin if de sucursales */
         if (!is_null($clasificaciones)) {
             $clasificaciones = object_to_array($clasificaciones);
             if (!is_array($clasificaciones)) {
                 throw new Exception("Las clasificaciones son invalidas", 901);
             }
             $servicio_clasificacion = new ServicioClasificacion(array("id_servicio" => $servicio->getIdServicio()));
             foreach ($clasificaciones as $clasificacion) {
                 if (is_null(ClasificacionServicioDAO::getByPK($clasificacion))) {
                     throw new Exception("La clasificacion " . $clasificacion . " no existe", 901);
                 }
                 $servicio_clasificacion->setIdClasificacionServicio($clasificacion);
                 ServicioClasificacionDAO::save($servicio_clasificacion);
             }
             $servicios_clasificacion = ServicioClasificacionDAO::search(new ServicioClasificacion(array("id_servicio" => $id_servicio)));
             foreach ($servicios_clasificacion as $s_c) {
                 $encontrado = false;
                 foreach ($clasificaciones as $clasificacion) {
                     if ($clasificacion == $s_c->getIdClasificacionServicio()) {
                         $encontrado = true;
                     }
                 }
                 if (!$encontrado) {
                     ServicioClasificacionDAO::delete($s_c);
                 }
             }
         }
         /* Fin if de clasificaciones */
         if (!is_null($impuestos)) {
             $impuestos = object_to_array($impuestos);
             if (!is_array($impuestos)) {
                 throw new Exception("Los impuestos son invalidos", 901);
             }
             $impuesto_servicio = new ImpuestoServicio(array("id_servicio" => $servicio->getIdServicio()));
             foreach ($impuestos as $impuesto) {
                 if (is_null(ImpuestoDAO::getByPK($impuesto))) {
                     throw new Exception("El impuesto " . $impuesto . " no existe", 901);
                 }
                 $impuesto_servicio->setIdImpuesto($impuesto);
                 ImpuestoServicioDAO::save($impuesto_servicio);
             }
             $impuesto_servicio = ImpuestoServicioDAO::search(new ImpuestoServicio(array("id_servicio" => $id_servicio)));
             foreach ($impuesto_servicio as $i_s) {
                 $encontrado = false;
                 foreach ($impuestos as $impuesto) {
                     if ($impuesto == $i_s->getIdImpuesto()) {
                         $encontrado = true;
                     }
                 }
                 if (!$encontrado) {
                     ImpuestoServicioDAO::delete($i_s);
                 }
             }
         }
         /* 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_servicio = new RetencionServicio(array("id_servicio" => $servicio->getIdServicio()));
             foreach ($retenciones as $retencion) {
                 if (is_null(RetencionDAO::getByPK($retencion))) {
                     throw new Exception("La retencion " . $retencion . " no existe", 901);
                 }
                 $retencion_servicio->setIdRetencion($retencion);
                 RetencionServicioDAO::save($retencion_servicio);
             }
             $retencion_servicio = RetencionServicioDAO::search(new RetencionServicio(array("id_servicio" => $id_servicio)));
             foreach ($retencion_servicio as $r_s) {
                 $encontrado = false;
                 foreach ($retenciones as $retencion) {
                     if ($retencion == $r_s->getIdRetencion()) {
                         $encontrado = true;
                     }
                 }
                 if (!$encontrado) {
                     RetencionServicioDAO::delete($r_s);
                 }
             }
         }
         /* Fin if de impuestos */
     } catch (Exception $e) {
         DAO::transRollback();
         Logger::error("No se pudo editar el servicio " . $id_servicio . " : " . $e);
         if ($e->getCode() == 901) {
             throw new Exception("No se pudo editar el servicio: " . $e->getMessage(), 901);
         }
         throw new Exception("No se pudo editar el servicio", 901);
     }
     DAO::transEnd();
     Logger::log("Servicio editado exitosamente");
 }