/**
  * Quita la vinculación entre la empresa y el usuario y todos
  * los permisos que tuviera para los proyectos y apps de la empresa
  * 
  * @return boolean TRUE si el borraro se ha hecho con exito
  */
 public function erase()
 {
     $idEmpresa = $this->IdEmpresa;
     $idUsuario = $this->IdUsuario;
     $ok = parent::erase();
     if ($ok) {
         // Borrar todos los permisos de acceso del usuario-empresa
         $em = new EntityManager($this->getConectionName());
         if ($em->getDbLink()) {
             $query = "DELETE FROM {$em->getDataBase()}.PcaePermisos WHERE IdEmpresa='{$idEmpresa}' AND IdUsuario='{$idUsuario}'";
             $em->query($query);
             $this->_errores = $em->getError();
             $em->desConecta();
         }
         unset($em);
     }
     return $ok;
 }
 /**
  * Borra físicamente el registro que vincula la app al proyecto
  * y elimina todos los permisos relativos a ese proyecto y app
  * @return boolean
  */
 public function delete()
 {
     $idProyecto = $this->IdProyecto;
     $idEmpresa = $this->getIdProyecto()->getIdEmpresa()->getId();
     $idApp = $this->IdApp;
     $ok = parent::erase();
     if ($ok) {
         // Borrar todos los permisos de acceso a la app borrada
         $em = new EntityManager($this->getConectionName());
         if ($em->getDbLink()) {
             $query = "DELETE FROM {$em->getDataBase()}.PcaePermisos WHERE IdEmpresa='{$idEmpresa}' AND IdProyecto='{$idProyecto}' AND IdApp='{$idApp}'";
             $em->query($query);
             $this->_errores = $em->getError();
             $em->desConecta();
         }
         unset($em);
     }
     return $ok;
 }
 /**
  * Devuelve un array de objetos articulos que cumplen la
  * regla $idRegla, ordenados por SortOrder ASC
  * 
  * El array tendrá $nItems elementos.
  * 
  * @param int $idRegla El id de la regla
  * @param int $nItems El número máximo de elementos a devolver. Opcional, por defecto todos.
  * @return \Articulos array de objetos Articulos
  */
 public function getArticulos($idRegla, $nItems = 999999)
 {
     $array = array();
     if ($nItems <= 0) {
         $nItems = 999999;
     }
     $em = new EntityManager($this->getConectionName());
     if ($em->getDbLink()) {
         // Condición de vigencia
         $ahora = date("Y-m-d H:i:s");
         $filtro = "(a.Deleted='0') AND (a.Publish='1') AND (a.ActiveFrom<='{$ahora}') AND ( (a.ActiveTo>='{$ahora}') or (a.ActiveTo='0000-00-00 00:00:00') )";
         $query = "\n                SELECT a.IDArticulo as Id\n                FROM {$em->getDataBase()}.ErpOrdenesArticulos r, {$em->getDataBase()}.ErpArticulos a\n                WHERE r.IDRegla='{$idRegla}' AND r.IDArticulo=a.IDArticulo AND a.Vigente='1' AND {$filtro}\n                ORDER BY r.SortOrder ASC\n                LIMIT {$nItems}";
         $em->query($query);
         $rows = $em->fetchResult();
         $em->desConecta();
     }
     unset($em);
     if (is_array($rows)) {
         foreach ($rows as $row) {
             $array[$row['Id']] = new Articulos($row['Id']);
         }
     }
     return $array;
 }
 /**
  * Devuelve un array de objetos articulos que cumplen la
  * regla $idRegla, ordenados por SortOrder ASC
  * 
  * El array tendrá $nItems elementos.
  * 
  * @param int $idRegla El id de la regla
  * @param int $nItems El número máximo de elementos a devolver. Opcional, por defecto todos.
  * @return \ErpArticulos array de objetos Articulos
  */
 public function getArticulos($idRegla, $nItems = 999999)
 {
     $array = array();
     if ($nItems <= 0) {
         $nItems = 999999;
     }
     $articulos = new Articulos();
     $tablaArticulos = $articulos->getTableName();
     unset($articulos);
     $em = new EntityManager($this->getConectionName());
     if ($em->getDbLink()) {
         $query = "\n                SELECT a.IDArticulo as Id\n                FROM {$em->getDataBase()}.{$this->getTableName()} r, {$em->getDataBase()}.{$tablaArticulos} a\n                WHERE r.IDRegla='{$idRegla}' AND r.IDArticulo=a.IDArticulo AND a.Publish='1' AND a.Vigente='1' AND a.Deleted='0'\n                ORDER BY r.SortOrder ASC\n                LIMIT {$nItems}";
         $em->query($query);
         $rows = $em->fetchResult();
         $em->desConecta();
     }
     unset($em);
     if (is_array($rows)) {
         foreach ($rows as $row) {
             $array[$row['Id']] = new Articulos($row['Id']);
         }
     }
     return $array;
 }
 /**
  * Crea las líneas de recepciones relativas al traspaso
  *
  * @param integer $idTraspaso
  */
 public function cargaLineasTraspaso($idTraspaso)
 {
     // Cargo las lineas dl traspaso que no están recibidas y cuyos artículos son inventariables.
     // Borro las eventuales líneas de recepción que no están recibidas
     $traspasosLineas = new TraspasosLineas();
     $rows = array();
     $em = new EntityManager($traspasosLineas->getConectionName());
     if ($em->getDbLink()) {
         $query = "select l.IDLinea\n                    from {$em->getDataBase()}.ErpTraspasosLineas l, {$em->getDataBase()}.ErpArticulos a\n                    where l.IDTraspaso = '{$idTraspaso}' and\n                          l.IDEstado = '2' and\n                          l.Tipo = '0' and\n                          l.IDArticulo = a.IDArticulo and\n                          a.Inventario = '1'\n                    order by IDLinea ASC;";
         $em->query($query);
         $rows = $em->fetchResult();
         $query = "delete from ErpRecepciones where Entidad='TraspasosCab' and IDEntidad='{$idTraspaso}' and Recepcionada='0'";
         $em->query($query);
         $em->desConecta();
     }
     unset($em);
     unset($traspasosLineas);
     // Por cada lína de traspaso crea una línea de recepción
     foreach ($rows as $row) {
         $this->creaLineaRecepcion('TraspasosCab', $idTraspaso, new TraspasosLineas($row['IDLinea']));
     }
 }
Example #6
0
 /**
  * Devuelve el nombre físico de la BD donde está la entidad en curso
  * @return string Nombre de la BD
  */
 public function getDataBaseName()
 {
     $em = new EntityManager($this->getConection());
     $dataBaseName = $em->getDataBase();
     unset($em);
     return $dataBaseName;
 }
 /**
  * Proceso de facturación agrupada.
  *
  * Se pueden agrupar pedidos de distintas sucursales, en cuyo caso
  * la factura generada se asignará a la sucursal en curso.
  *
  * Se agrupan las facturas en base a la forma de pago.
  *
  * @return <type>
  */
 public function ConformarAction()
 {
     $facturados = array();
     $filtro = $this->request['filtro'];
     $fecha = new Fecha($filtro['desdeFecha']);
     $desdeFecha = $fecha->getaaaammdd();
     $fecha = new Fecha($filtro['hastaFecha']);
     $hastaFecha = $fecha->getaaaammdd();
     unset($fecha);
     if ($filtro['idSucursal'] == '') {
         $filterSucursal = "(1)";
         $idSucursal = $_SESSION['suc'];
     } else {
         $filterSucursal = "(IDSucursal='{$filtro['idSucursal']}')";
         $idSucursal = $filtro['idSucursal'];
     }
     $filter = $filterSucursal . " AND c.IDFactura='0' and c.IDEstado='2' and c.IDProveedor='{$filtro['idProveedor']}' and c.Fecha>='{$desdeFecha}' and c.Fecha<'{$hastaFecha}' and c.FlagFacturar='1'";
     //COMPRUEBO QUE NO HAYA MAS DE TRES TIPOS DE IVA ENTRE TODOS LOS ALBARANES A FACTURAR
     $pedidos = new PedidosCab();
     $em = new EntityManager($pedidos->getConectionName());
     if (!$em->getDbLink()) {
         $this->values['errores'] = $em->getError();
         return $this->listAction();
     }
     $query = "SELECT l.Iva\n                    FROM\n                        {$em->getDataBase()}.ErpPedidosLineas as l,\n                        {$em->getDataBase()}.ErpPedidosCab as c\n                    WHERE {$filter} and c.IDPedido=l.IDPedido\n                    GROUP BY l.Iva";
     $em->query($query);
     $rows = $em->fetchResult();
     $em->desConecta();
     if (count($rows) > 3) {
         $this->values['alertas'] = "Hay más de tres tipos de iva distintos. No se puede agrupar";
         return $this->listAction();
     }
     $contador = new Contadores($this->request['idContador']);
     // Buscar la cuenta contable de compras para la sucursal
     $sucursal = new Sucursales($idSucursal);
     $ctaCompras = $sucursal->getCtaContableCompras();
     unset($sucursal);
     //AGRUPO LOS PEDIDOS POR FORMA DE PAGO.
     $em = new EntityManager($pedidos->getConectionName());
     $query = "SELECT c.IDFP, sum(c.Total) as Total FROM {$pedidos->getDataBaseName()}.ErpPedidosCab as c WHERE {$filter} GROUP BY c.IDFP";
     $em->query($query);
     $rows = $em->fetchResult();
     $em->desConecta();
     foreach ($rows as $row) {
         $numeroFactura = $contador->asignaContador();
         $factura = new FrecibidasCab();
         $factura->setIDSucursal($idSucursal);
         $factura->setIDContador($this->request['idContador']);
         $factura->setNumeroFactura($numeroFactura);
         $factura->setSuFactura($this->request['suFactura']);
         $factura->setFecha($this->request['fecha']);
         $factura->setIDProveedor($filtro['idProveedor']);
         $factura->setCuentaCompras($ctaCompras);
         $factura->setIDFP($row['IDFP']);
         $idFactura = $factura->create();
         // Guardo en un array los id's de facturas generadas
         $facturados[] = $idFactura;
         if ($idFactura != 0) {
             // Crear las líneas de factura
             $em = new EntityManager($pedidos->getConectionName());
             $query = "select l.* from {$pedidos->getDataBaseName()}.ErpPedidosLineas l, {$pedidos->getDataBaseName()}.ErpPedidosCab c where (c.IDPedido=l.IDPedido) and (c.IDFP='{$row['IDFP']}') and {$filter}";
             $em->query($query);
             $lineas = $em->fetchResult();
             $em->desConecta();
             foreach ($lineas as $linea) {
                 $linFactura = new FrecibidasLineas();
                 $linFactura->setIDFactura($idFactura);
                 $linFactura->setIDArticulo($linea['IDArticulo']);
                 $linFactura->setDescripcion($linea['Descripcion']);
                 $linFactura->setUnidades($linea['UnidadesPtesFacturar']);
                 $linFactura->setPrecio($linea['Precio']);
                 $linFactura->setDescuento($linea['Descuento']);
                 $linFactura->setIva($linea['Iva']);
                 $linFactura->setIDPedido($linea['IDPedido']);
                 $linFactura->setIDLineaPedido($linea['IDLinea']);
                 if ($linFactura->create()) {
                     // Pongo el estado de la linea de pedido a "Facturado" y
                     // quitar el pendiente de facturar.
                     $lineaPedido = new PedidosLineas($linea['IDLinea']);
                     $lineaPedido->setIDEstado(3);
                     $lineaPedido->setUnidadesPtesFacturar(0);
                     $lineaPedido->save();
                 }
                 unset($linFactura);
             }
             // Totalizar la factura
             $factura->recalcula();
             // Crear vencimientos
             $factura->creaVctos();
             // Anotar en caja si procede
             $factura->anotaEnCaja();
             // Actualiza las cabecera del grupo de pedidos
             $em = new EntityManager($pedidos->getConectionName());
             $query = "update {$pedidos->getDataBaseName()}.ErpPedidosCab c set c.IDFactura='{$idFactura}', c.IDEstado='3' where (c.IDFP='{$row['IDFP']}') and ({$filter})";
             $em->query($query);
             $em->desConecta();
             unset($factura);
         } else {
             $this->values['errores'] = $factura->getErrores();
         }
     }
     return $this->listAction();
 }