/**
  * Muestra las líneas de pedido que están pendiente de recepción para el almacén y artículo indicado
  * @return array Con el template y values
  */
 public function entradasAction()
 {
     switch ($this->request["METHOD"]) {
         case 'GET':
             $idArticulo = $this->request['2'];
             $idAlmacen = $this->request['3'];
             $pedido = new PedidosCab();
             $condicion = " JOIN ErpPedidosCab USING(IDPedido) where t1.IDAlmacen='{$idAlmacen}' and t1.IDArticulo='{$idArticulo}' and t1.IDEstado='1' ";
             $query = "select IDLinea from ErpPedidosLineas as t1 {$condicion} order by ErpPedidosCab.FechaEntrega ASC";
             $em = new EntityManager($pedido->getConectionName());
             $em->query($query);
             $rows = $em->fetchResult();
             $em->desConecta();
             unset($em);
             unset($pedido);
             foreach ($rows as $key => $value) {
                 $data[] = new PedidosLineas($value['IDLinea']);
             }
             $this->values['data'] = $data;
             unset($data);
             break;
         case 'POST':
             break;
     }
     return array('template' => '_Emergente/entradasPedidos.html.twig', 'values' => $this->values);
 }
示例#2
0
 /**
  * Devuelve un array con los proveedores que tienen pedidos pendientes
  * de facturar (IDEstado=2) en el periodo de fechas indicado y de la
  * sucursal indicada.
  *
  * El array tiene tres columnas:
  *       Id (el id del proveedor),
  *       Value (la razon social del proveedor)
  *       Total (la suma de los totales de todos sus pedidos pendientes de facturar)
  *
  * @param integer $idSucursal
  * @param date $desdeFecha Fecha en formato dd/mm/aaaa
  * @param date $hastaFecha Fecha en formato dd/mm/aaaa
  * @return array Array con los proveedores
  */
 public function fetchConPendienteDeFacturar($idSucursal, $desdeFecha, $hastaFecha)
 {
     $fecha = new Fecha($desdeFecha);
     $desdeFecha = $fecha->getaaaammdd();
     $fecha = new Fecha($hastaFecha);
     $hastaFecha = $fecha->getaaaammdd();
     unset($fecha);
     $this->conecta();
     $rows = array();
     $pedidos = new PedidosCab();
     $em = new EntityManager($pedidos->getConectionName());
     if (is_resource($em->getDbLink())) {
         $filtroSucursal = $idSucursal == '' ? "(1)" : "(a.IDSucursal='{$idSucursal}')";
         $filtro = $filtroSucursal . " and\n                      (a.Fecha>='{$desdeFecha}') and\n                      (a.Fecha<='{$hastaFecha}') and\n                      (a.IDEstado=2) and\n                      (c.IDProveedor=a.IDProveedor)";
         $query = "SELECT distinct c.IDProveedor as Id, c.RazonSocial as Value, sum(a.Total) as Total\n                        FROM \n                            `{$this->_dataBaseName}`.`{$this->_tableName}` c, \n                            `{$pedidos->getDataBaseName()}`.`{$pedidos->getTableName()}` a\n                        WHERE ( {$filtro} )\n                        GROUP BY c.IDProveedor\n                        ORDER BY c.RazonSocial";
         $em->query($query);
         $rows = $em->fetchResult();
         $em->desConecta();
         unset($em);
     }
     return $rows;
 }
 /**
  * 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();
 }
 /**
  * Devuelve las ventas de una firma en un periodo
  * @param int $idFirma
  * @param int $periodo 0=Todos los años, 1=los últimos 12 meses
  */
 static function getVentasFirma($idFirma, $periodo = 0)
 {
     $firma = new Firmas($idFirma);
     $razonSocial = $firma->getRazonSocial();
     unset($firma);
     $pedidos = new PedidosCab();
     $pedidosTabla = $pedidos->getDataBaseName() . "." . $pedidos->getTableName();
     switch ($periodo) {
         case '0':
             $tituloPeriodo = "Todos los años";
             $query = "select YEAR(p.Fecha) name, sum(p.TotalBases) y " . "from {$pedidosTabla} p " . "where p.IdFirma='{$idFirma}' " . "group by YEAR(p.Fecha) " . "order by YEAR(p.Fecha) ASC";
             break;
         case '1':
             $tituloPeriodo = "Últimos 12 meses";
             $fecha = new Fecha();
             $desdeFecha = $fecha->sumaDias(-365);
             unset($fecha);
             $query = "select DATE_FORMAT(p.Fecha,'%Y-%b') name, sum(p.TotalBases) y " . "from {$pedidosTabla} p " . "where p.IdFirma='{$idFirma}' and p.Fecha>'{$desdeFecha}' " . "group by DATE_FORMAT(p.Fecha,'%Y-%b') " . "order by DATE_FORMAT(p.Fecha,'%Y-%m') ASC";
             break;
         default:
     }
     $em = new EntityManager($pedidos->getConectionName());
     if ($em->getDbLink()) {
         $em->query($query);
         $rows = $em->fetchResult();
         $em->desConecta();
     }
     unset($pedidos);
     return array('title' => "Ventas de la firma {$razonSocial}. {$tituloPeriodo}", 'serieName' => "Ventas", 'serie' => $rows, 'query' => $query);
 }
示例#5
0
 /**
  * Pedidos que estando confirmados, su fecha prevista de
  * entrega es anterior al día actual.
  * 
  * @return type
  */
 static function getEntradasRetrasadas()
 {
     $ped = new PedidosCab();
     $tablaPedidos = $ped->getDataBaseName() . "." . $ped->getTableName();
     $prov = new Proveedores();
     $tablaProveedores = $prov->getDataBaseName() . "." . $prov->getTableName();
     $rows = array();
     $hoy = date('Y-m-d');
     $em = new EntityManager($ped->getConectionName());
     if ($em->getDbLink()) {
         $query = "select a.PrimaryKeyMD5 as PrimaryKeyMD5,IDPedido,Fecha,RazonSocial,TotalBases from {$tablaPedidos} as a left join {$tablaProveedores} as c on a.IDProveedor=c.IDProveedor where (IDEstado='1') and FechaEntrega<'{$hoy}' order by Fecha ASC";
         $em->query($query);
         $rows = $em->fetchResult();
     }
     unset($em);
     unset($ped);
     unset($prov);
     return $rows;
 }