/**
  * Genera array con los clientes del la ruta para el
  * comercial y dia indicado
  *
  * @param integer $idComercial
  * @param integer $dia
  * @return <type>
  */
 public function listAction($idComercial = '', $dia = '')
 {
     if ($idComercial == '') {
         $idComercial = $this->request[2];
     }
     if ($dia == '') {
         $dia = $this->request[3];
     }
     $this->values['listado']['dia'] = $dia;
     // Busco los clientes del comercial indicado y sucursal actual
     // que aun no estén asignados al día solicitado
     $cliente = new Clientes();
     $rutasVentas = new RutasVentas();
     $filtro = "IDComercial='{$idComercial}'\n                        AND IDSucursal='{$_SESSION['suc']}'\n                        AND IDCliente NOT IN\n                            (SELECT IDCliente FROM {$rutasVentas->getDataBaseName()}.{$rutasVentas->getTableName()}\n                            WHERE IDComercial='{$idComercial}' AND Dia='{$dia}')";
     $clientes = $cliente->cargaCondicion("IDCliente as Id, RazonSocial as Value", $filtro, "RazonSocial ASC");
     $this->values['listado']['clientes'] = $clientes;
     array_unshift($this->values['listado']['clientes'], array('Id' => '', 'Value' => ':: Indique un cliente'));
     // Busco las zonas de los clientes del comercial indicado y sucursal actual
     // que aun no estén asignados al día solicitado
     $zona = new Zonas();
     $em = new EntityManager($cliente->getConectionName());
     if ($em->getDbLink()) {
         $query = "SELECT DISTINCT t1.IDZona as Id, t2.Zona as Value \n                        FROM \n                            {$cliente->getDataBaseName()}.{$cliente->getTableName()} as t1, \n                            {$zona->getDataBaseName()}.{$zona->getTableName()} as t2\n                        WHERE t1.IDZona=t2.IDZona\n                        AND t1.IDComercial='{$idComercial}'\n                        AND t1.IDSucursal='{$_SESSION['suc']}'\n                        AND t1.IDCliente NOT IN\n                            (SELECT IDCliente FROM {$rutasVentas->getDataBaseName()}.{$rutasVentas->getTableName()}\n                            WHERE IDComercial='{$idComercial}' AND Dia='{$dia}')\n                        ORDER BY t2.Zona ASC";
         $em->query($query);
         $rows = $em->fetchResult();
         $em->desConecta();
     }
     $this->values['listado']['zonas'] = $rows;
     array_unshift($this->values['listado']['zonas'], array('Id' => '', 'Value' => ':: Indique una Zona'));
     //-----------------------------------------------
     // Lleno los clientes asignados al comercial y día
     // ordenados por Zona
     // -----------------------------------------------
     $em = new EntityManager($cliente->getConectionName());
     if ($em->getDbLink()) {
         $query = "SELECT t1.Id \n                        FROM \n                            {$rutasVentas->getDataBaseName()}.{$rutasVentas->getTableName()} as t1,\n                            {$cliente->getDataBaseName()}.{$cliente->getTableName()} as t2\n                        WHERE t1.IDCliente=t2.IDCliente\n                        AND t2.IDSucursal='{$_SESSION['suc']}'\n                        AND t1.IDComercial='{$idComercial}'\n                        AND t1.Dia='{$dia}'\n                        ORDER BY t1.OrdenCliente,t1.IDZona";
         $em->query($query);
         $rows = $em->fetchResult();
         $em->desConecta();
     }
     unset($em);
     unset($em);
     unset($cliente);
     unset($zona);
     unset($rutasVentas);
     foreach ($rows as $row) {
         $lineas[] = new $this->parentEntity($row['Id']);
     }
     //-----------------------------------------------
     $template = $this->entity . '/list.html.twig';
     $this->values['linkBy']['value'] = $idComercial;
     $this->values['listado']['data'] = $lineas;
     $this->values['listado']['nClientes'] = count($lineas);
     unset($lis);
     unset($lineas);
     return array('template' => $template, 'values' => $this->values);
 }
 /**
  * Generar el listado de clientes apoyándose en el método padre
  * Si el usuario es comercial muestra solo los suyos.
  *
  * @return array
  */
 public function listAction($aditionalFilter = '')
 {
     $cliente = new Clientes();
     $tabla = $cliente->getDataBaseName() . "." . $cliente->getTableName();
     $usuario = new Agentes($_SESSION['usuarioPortal']['Id']);
     $filtro = "";
     if ($usuario->getEsComercial()) {
         $filtro = $tabla . ".IDComercial='" . $usuario->getIDAgente()->getId() . "'";
     }
     unset($usuario);
     unset($cliente);
     return parent::listAction($filtro);
 }
 /**
  * Genera una listado por pantalla en base al filtro.
  * Puede recibir un filtro adicional
  *
  * @param string $aditionalFilter
  * @return array con el template y valores a renderizar
  */
 public function listAction($aditionalFilter = '')
 {
     $clientes = new Clientes();
     $recibos = new RecibosClientes();
     $idComercial = $this->request['filter']['valuesSelected']['5'];
     if ($this->values['permisos']['permisosModulo']['CO']) {
         if ($idComercial) {
             $this->listado->makeQuery($aditionalFilter);
             $this->listado->arrayQuery['FROM'] = str_replace(", {$clientes->getDataBaseName()}.{$clientes->getTableName()}", "", $this->listado->arrayQuery['FROM']);
             $this->listado->arrayQuery['FROM'] .= ", {$clientes->getDataBaseName()}.{$clientes->getTableName()}";
             $this->listado->arrayQuery['WHERE'] .= " AND {$recibos->getDataBaseName()}.{$recibos->getTableName()}.IDCliente={$clientes->getDataBaseName()}.{$clientes->getTableName()}.IDCliente ";
             $this->listado->arrayQuery['WHERE'] .= "AND {$clientes->getDataBaseName()}.{$clientes->getTableName()}.IDComercial='{$idComercial}'";
             $this->listado->buildQuery();
         }
         $this->values['listado'] = $this->listado->getAll($aditionalFilter);
         $this->values['filtroRemesa'] = $this->values['listado']['filter']['valuesSelected'][11];
         // Obtener total recibos y total a remesar
         $em = new EntityManager($recibos->getConectionName());
         if ($em->getDbLink()) {
             $query = "select sum(Importe) as Importe from {$this->listado->arrayQuery['FROM']} where {$this->listado->arrayQuery['WHERE']}";
             $em->query($query);
             $total = $em->fetchResult();
             $query1 = "select sum(Importe) as Importe from {$this->listado->arrayQuery['FROM']} where {$this->listado->arrayQuery['WHERE']} and Remesar='1'";
             $em->query($query1);
             $remesa = $em->fetchResult();
             $em->desConecta();
         }
         unset($em);
         $this->values['listado']['importeRecibos'] = $total[0]['Importe'];
         $this->values['listado']['importeRemesa'] = $remesa[0]['Importe'];
         $template = $this->entity . '/list.html.twig';
     } else {
         $template = "_global/forbiden.html.twig";
     }
     unset($clientes);
     unset($recibos);
     return array('template' => $template, 'values' => $this->values);
 }
Beispiel #4
0
 /**
  * Devuelve un array con las reservas del articulo y almacen indicado
  *
  * Cada elemento del array es otro array con los elementos:
  * array (
  *   'IDAlbaran' =>
  *   'PrimaryKeyMD5' =>
  *   'NumeroAlbaran' =>
  *   'Fecha' =>
  *   'IDCliente' =>
  *   'RazonSocial =>
  *   'Reservas' =>
  * )
  *
  * @param integer $idAlmacen El id de almacen
  * @return array Array con las reservas
  */
 public function getReservas($idAlmacen)
 {
     $reservas = array();
     $tablaAlbaranes = new AlbaranesCab();
     $tablaAlbaranesLineas = new AlbaranesLineas();
     $tablaClientes = new Clientes();
     $em = new EntityManager($this->getConectionName());
     if ($em->getDbLink()) {
         //$query = "Call ReservasArticuloAlmacen('{$this->IDArticulo}','{$idAlmacen}');";
         $query = "select\n                        cab.IDAlbaran,\n                        cab.PrimaryKeyMD5,\n                        cab.NumeroAlbaran,                       \n                        cab.Fecha,\n                        cab.IDCliente,\n                        cli.RazonSocial,\n                        sum(lin.Unidades) as Reservas\n                      from\n                        {$tablaAlbaranes->getDataBaseName()}.{$tablaAlbaranes->getTableName()} as cab,\n                        {$tablaAlbaranesLineas->getDataBaseName()}.{$tablaAlbaranesLineas->getTableName()} as lin,\n                        {$tablaClientes->getDataBaseName()}.{$tablaClientes->getTableName()} as cli\n                      where\n                        cab.IDAlbaran  = lin.IDAlbaran and\n                        cab.IDCliente  = cli.IDCliente and\n                        lin.IDEstado   = '1' and\n                        lin.IDArticulo = '{$this->IDArticulo}' and\n                        lin.IDAlmacen  = '{$idAlmacen}'\n                      group by IDAlbaran\n                      order by Fecha ASC";
         $em->query($query);
         //echo $query,"<br/>";
         $reservas = $em->fetchResult();
         $em->desConecta();
     }
     unset($em);
     unset($tablaAlbaranes);
     unset($tablaAlbaranesLineas);
     unset($tablaClientes);
     return $reservas;
 }
 /**
  * Renderiza el template _Emergente/historicoVentas.html.twig
  * mostrando las ventas realizadas a un cliente de un articulo dado en un periodo.
  *
  * La información se obtiene en base a los albaranes confimardos o facturados.
  * No se tienen en cuenta los albaranes no confirmados.
  *
  * Puede entrar por POST o por GET.
  *
  * Si es por POST los parametros vienen en:
  *
  *  idArticulo, idCliente, periodo, formato
  *
  * Si es por GET los parametros vienen en:
  *
  *  posicion 2 (idArticulo), 3 (idCliente), 4 (periodo), 5 (formato)
  *
  * @return array El template y los datos
  */
 public function HistoricoVentasAction()
 {
     $periodos = array(array('Id' => '0', 'Value' => 'Último Mes'), array('Id' => '1', 'Value' => 'Último Trimestre'), array('Id' => '2', 'Value' => 'Último Año'), array('Id' => '3', 'Value' => 'Todo'));
     switch ($this->request["METHOD"]) {
         case 'GET':
             $idArticulo = $this->request['2'];
             if ($idArticulo == '0') {
                 $idArticulo = '';
             }
             $idCliente = $this->request['3'];
             if ($idCliente == '0') {
                 $idCliente = '';
             }
             $periodo = $this->request['4'];
             $formato = $this->request['5'];
             break;
         case 'POST':
             $idArticulo = $this->request['idArticulo'];
             if ($idArticulo == '0') {
                 $idArticulo = '';
             }
             $idCliente = $this->request['idCliente'];
             if ($idCliente == '0') {
                 $idCliente = '';
             }
             $periodo = $this->request['periodo'];
             $formato = $this->request['formato'];
             break;
     }
     $formato = strtoupper($formato);
     // Construir la parte del filtro que depende del periodo
     switch ($periodo) {
         case '':
             $periodo = 1;
         case '0':
             // Ultimo mes
             $diferenciaDias = -30;
             break;
         case '1':
             // Ultimo Trimestre
             $diferenciaDias = -90;
             break;
         case '2':
             // Ultimo año
             $diferenciaDias = -365;
             break;
         case '3':
             // Todo, 20 años hacia atrás
             $diferenciaDias = -7300;
             break;
     }
     $fecha = new Fecha(date('Y-m-d'));
     $desdeFecha = $fecha->sumaDias($diferenciaDias);
     unset($fecha);
     $cliente = new Clientes($idCliente);
     $clienteTabla = $cliente->getDataBaseName() . "." . $cliente->getTableName();
     $articulo = new Articulos($idArticulo);
     $articuloTabla = $articulo->getDataBaseName() . "." . $articulo->getTableName();
     $pedido = new PedidosCab();
     $pedidoTabla = $pedido->getDataBaseName() . "." . $pedido->getTableName();
     unset($pedido);
     $lineas = new PedidosLineas();
     $lineasTabla = $lineas->getDataBaseName() . "." . $lineas->getTableName();
     unset($lineas);
     // Calcular el total de unidades vendidas y el precio medio de venta
     if ($idArticulo != '' or $idCliente != '') {
         $em = new EntityManager($articulo->getConectionName());
         if ($em->getDbLink()) {
             $query = "SELECT SUM(t1.Unidades) as Unidades, SUM(t1.Importe) as Importe\n                FROM {$lineasTabla} as t1, {$pedidoTabla} as t2";
             $query .= " WHERE t1.IdPedido=t2.Id AND t2.Fecha>='{$desdeFecha}'";
             if ($idCliente !== '') {
                 $query .= " AND  t2.IdCliente='{$idCliente}'";
             }
             if ($idArticulo !== '') {
                 $query .= " AND t1.IdArticulo='{$idArticulo}'";
             }
             $em->query($query);
             //echo $query;
             $rows = $em->fetchResult();
             $em->desConecta();
         }
         $precioMedio = $rows[0]['Unidades'] != 0 ? $rows[0]['Importe'] / $rows[0]['Unidades'] : 0;
         $unidades = $rows[0]['Unidades'] == '' ? 0 : $rows['0']['Unidades'];
     }
     $values['datos'] = array('articulo' => $articulo->iterator(), 'cliente' => $cliente->iterator(), 'unidades' => $unidades, 'periodo' => $periodo, 'periodos' => $periodos, 'precioMedio' => number_format($precioMedio, 3));
     // Obtener el litado histórico de ventas para el articulo y cliente
     $em = new EntityManager($articulo->getConectionName());
     if ($em->getDbLink()) {
         $query = "SELECT t2.Id,t1.Id NumeroPedido,t1.PrimaryKeyMD5,DATE_FORMAT(t1.Fecha,'%d-%m-%Y') as Fecha,t2.Descripcion,t2.Unidades,t2.Precio,t2.Descuento1,t2.Descuento2,t2.Descuento3,t2.Importe\n                FROM {$pedidoTabla} as t1, {$lineasTabla} as t2";
         if ($idCliente !== '') {
             $query .= ", {$clienteTabla} as t3";
         }
         if ($idArticulo !== '') {
             $query .= ", {$articuloTabla} as t4";
         }
         $query .= " WHERE t1.Id=t2.IdPedido";
         if ($idCliente !== '') {
             $query .= " AND t1.IdCliente=t3.Id AND t1.IdCliente='{$idCliente}' ";
         }
         if ($idArticulo !== '') {
             $query .= " AND t2.IdArticulo=t4.Id AND t2.IdArticulo='{$idArticulo}'";
         }
         $query .= "\n                AND t1.Fecha>='{$desdeFecha}'\n                ORDER BY t1.Fecha DESC, t1.Id DESC";
         $em->query($query);
         //echo $query;
         $rows = $em->fetchResult();
         $em->desConecta();
     }
     $values['listado'] = $rows;
     unset($em);
     unset($articulo);
     unset($cliente);
     if (in_array($formato, $this->formats)) {
         $values['status'] = '200';
         $values['statusMessage'] = "";
         switch ($formato) {
             case '':
             case 'JSON':
                 header('Content-type: application/json; charset="UTF-8"', true);
                 $template = "_global/json.twig";
                 $this->values['json'] = $values;
                 break;
             case 'HTML':
                 $this->values = $values;
                 $template = "_Emergente/historicoVentas.html.twig";
                 break;
         }
     } else {
         $this->values['json'] = array('status' => 401, 'statusMessage' => 'Format not implemented', 'result' => array());
         $template = "_global/json.twig";
     }
     return array('template' => $template, 'values' => $this->values);
 }
 /**
  * Renderiza el template _Emergente/historicoVentas.html.twig
  * mostrando las ventas realizadas a un cliente de un articulo dado en un periodo.
  *
  * La información se obtiene en base a los albaranes confimardos o facturados.
  * No se tienen en cuenta los albaranes no confirmados.
  *
  * Puede entrar por POST o por GET.
  *
  * Si es por POST los parametros vienen en:
  *
  *  idArticulo, idCliente, periodo
  *
  * Si es por GET los parametros vienen en:
  *
  *  posicion 2 (idArticulo), 3 (idCliente), 4 (periodo)
  *
  * @return array El template y los datos
  */
 public function HistoricoVentasAction()
 {
     switch ($this->request["METHOD"]) {
         case 'GET':
             $idArticulo = $this->request['2'];
             if ($idArticulo == '0') {
                 $idArticulo = '';
             }
             $idCliente = $this->request['3'];
             if ($idCliente == '0') {
                 $idCliente = '';
             }
             $periodo = $this->request['4'];
             break;
         case 'POST':
             $idArticulo = $this->request['idArticulo'];
             if ($idArticulo == '0') {
                 $idArticulo = '';
             }
             $idCliente = $this->request['idCliente'];
             if ($idCliente == '0') {
                 $idCliente = '';
             }
             $periodo = $this->request['periodo'];
             break;
     }
     // Construir la parte del filtro que depende del periodo
     switch ($periodo) {
         case '':
             $periodo = 0;
         case '0':
             // Ultimo mes
             $diferenciaDias = -30;
             break;
         case '1':
             // Ultimo Trimestre
             $diferenciaDias = -90;
             break;
         case '2':
             // Ultimo año
             $diferenciaDias = -365;
             break;
         case '3':
             // Todo, 20 años hacia atrás
             $diferenciaDias = -7300;
             break;
     }
     $fecha = new Fecha(date('Y-m-d'));
     $desdeFecha = $fecha->sumaDias($diferenciaDias);
     unset($fecha);
     $cliente = new Clientes($idCliente);
     $clienteTabla = $cliente->getDataBaseName() . "." . $cliente->getTableName();
     $articulo = new Articulos($idArticulo);
     $articuloTabla = $articulo->getDataBaseName() . "." . $articulo->getTableName();
     $albaran = new AlbaranesCab();
     $albaranTabla = $albaran->getDataBaseName() . "." . $albaran->getTableName();
     unset($albaran);
     $lineas = new AlbaranesLineas();
     $lineasTabla = $lineas->getDataBaseName() . "." . $lineas->getTableName();
     unset($lineas);
     // Calcular el total de unidades vendidas y el precio medio de venta
     // No tiene en cuenta los albaranes que no están confirmados
     if ($idArticulo != '' or $idCliente != '') {
         $em = new EntityManager($articulo->getConectionName());
         if ($em->getDbLink()) {
             $query = "SELECT SUM(t1.Unidades) as Unidades, SUM(t1.Importe) as Importe\n                FROM {$lineasTabla} as t1, {$albaranTabla} as t2";
             $query .= " WHERE t1.IDAlbaran=t2.IDAlbaran AND t2.IDEstado<>'0' AND t2.Fecha>='{$desdeFecha}'";
             if ($idCliente !== '') {
                 $query .= " AND  t2.IDCliente='{$idCliente}'";
             }
             if ($idArticulo !== '') {
                 $query .= " AND t1.IDArticulo='{$idArticulo}'";
             }
             $em->query($query);
             //echo $query;
             $rows = $em->fetchResult();
             $em->desConecta();
         }
         $precioMedio = $rows[0]['Unidades'] != 0 ? $rows[0]['Importe'] / $rows[0]['Unidades'] : 0;
         $unidades = $rows[0]['Unidades'] == '' ? 0 : $rows['0']['Unidades'];
     }
     $this->values['datos'] = array('idsucursal' => $_SESSION['usuarioPortal']['SucursalActiva']['Id'], 'articulo' => $articulo, 'cliente' => $cliente, 'unidades' => $unidades, 'periodo' => $periodo, 'periodos' => $this->periodos, 'precioMedio' => number_format($precioMedio, 3));
     // Obtener el litado histórico de ventas para el articulo y cliente
     // Solo muestra los albaranes que están confirmador o facturados
     $em = new EntityManager($articulo->getConectionName());
     if ($em->getDbLink()) {
         $query = "SELECT t2.IDLinea,t1.IDAlbaran,t1.NumeroAlbaran,t1.PrimaryKeyMD5,DATE_FORMAT(t1.Fecha,'%d-%m-%Y') as Fecha,t1.IDEstado,t1.IDFactura,t2.Descripcion,t2.Unidades,t2.Precio,t2.Descuento,t2.Importe,t2.IDPromocion\n                FROM {$albaranTabla} as t1, {$lineasTabla} as t2";
         if ($idCliente !== '') {
             $query .= ", {$clienteTabla} as t3";
         }
         if ($idArticulo !== '') {
             $query .= ", {$articuloTabla} as t4";
         }
         $query .= " WHERE t1.IDAlbaran=t2.IDAlbaran";
         if ($idCliente !== '') {
             $query .= " AND t1.IDCliente=t3.IDCliente AND t1.IDCliente='{$idCliente}' ";
         }
         if ($idArticulo !== '') {
             $query .= " AND t2.IDArticulo=t4.IDArticulo AND t2.IDArticulo='{$idArticulo}'";
         }
         $query .= "\n                AND t1.IDEstado<>'0'\n                AND t1.Fecha>='{$desdeFecha}'\n                ORDER BY t1.Fecha DESC, t1.IDAlbaran DESC";
         $em->query($query);
         //echo $query;
         $rows = $em->fetchResult();
         $em->desConecta();
     }
     // Recorro el array de resultados y convierto (si procede) la columna IDPromocion
     // en un objeto promocion para tener todos los datos de la promocion en el template.
     foreach ($rows as $key => $value) {
         $rows[$key]['Estado'] = new EstadosAlbaranes($value['IDEstado']);
         if ($value['IDFactura']) {
             $rows[$key]['Factura'] = new FemitidasCab($value['IDFactura']);
         }
         if ($value['IDPromocion']) {
             $rows[$key]['IDPromocion'] = new Promociones($value['IDPromocion']);
         }
     }
     $this->values['listado'] = $rows;
     unset($em);
     unset($articulo);
     unset($cliente);
     return array('template' => '_Emergente/historicoVentas.html.twig', 'values' => $this->values);
 }
 static function RecibosAgrupados($filtro)
 {
     $recibos = new RecibosClientes();
     $clientes = new Clientes();
     $tablaRecibos = $recibos->getDataBaseName() . "." . $recibos->getTableName();
     $tablaClientes = $clientes->getDataBaseName() . "." . $clientes->getTableName();
     $em = new EntityManager($recibos->getConectionName());
     if ($em->getDbLink()) {
         $filtro .= " and (Remesar='1') and (CHAR_LENGTH(r.Iban)>23) and (r.Iban<>'ES8200000000000000000000')";
         $query = "select r.IDCliente," . "sum(r.Importe) importe," . "r.Iban iban, " . "r.Bic bic, " . "r.Mandato idMandato, " . "r.FechaMandato fechaMandato " . "from {$tablaRecibos} as r " . "left join {$tablaClientes} as c on r.IDCliente=c.IDCliente " . "where {$filtro} " . "group by r.IDCliente,r.Iban " . "having sum(r.Importe)>0 " . "order by c.RazonSocial,r.Vencimiento ASC";
         $em->query($query);
         $rows = $em->fetchResult();
     }
     unset($em);
     unset($recibos);
     unset($clientes);
     $total = 0;
     foreach ($rows as $row) {
         $cliente = new Clientes($row['IDCliente']);
         $total += $row['importe'];
         $recibos[] = array('numeroFactura' => 'Varias', 'importe' => $row['importe'], 'idMandato' => $row['idMandato'], 'fechaMandato' => $row['fechaMandato'], 'bic' => $row['bic'] == '' ? "BBBBESPP" : $row['bic'], 'iban' => $row['iban'], 'razonSocial' => $cliente->getRazonSocial(), 'direccion1' => $cliente->getDireccion(), 'direccion2' => $cliente->getIDPoblacion()->getMunicipio() . " " . $cliente->getCodigoPostal() . " " . $cliente->getIDProvincia()->getProvincia(), 'pais' => $cliente->getIDPais()->getCodigo(), 'texto' => "Varias Facturas");
     }
     unset($cliente);
     return array('nRecibos' => count($rows), 'importeTotal' => $total, 'recibos' => $recibos);
 }
 /**
  * Devuelve las ventas de una firma en el periodo por clientes
  * 
  * @param int $idFirma
  * @param int $periodo 0=todo, 1=últimos 12 meses
  * @return array
  */
 static function getVentasFirmaClientes($idFirma, $periodo = 0)
 {
     $firma = new Firmas($idFirma);
     $razonSocial = $firma->getRazonSocial();
     $cliente = new Clientes();
     $clienteTabla = $cliente->getDataBaseName() . "." . $cliente->getTableName();
     $pedidos = new PedidosCab();
     $pedidosTabla = $pedidos->getDataBaseName() . "." . $pedidos->getTableName();
     unset($pedidos);
     switch ($periodo) {
         case '0':
             $tituloPeriodo = "Todos los años";
             $query = "select c.RazonSocial name, sum(p.TotalBases) y " . "from {$pedidosTabla} p, {$clienteTabla} c " . "where p.IdFirma='{$idFirma}' and c.Id=p.IdCliente " . "group by c.RazonSocial " . "order by sum(p.TotalBases) DESC";
             break;
         case '1':
             $tituloPeriodo = "Últimos 12 meses";
             $fecha = new Fecha();
             $desdeFecha = $fecha->sumaDias(-365);
             unset($fecha);
             $query = "select c.RazonSocial name, sum(p.TotalBases) y " . "from {$pedidosTabla} p, {$clienteTabla} c " . "where p.IdFirma='{$idFirma}' and c.Id=p.IdCliente and p.Fecha>'{$desdeFecha}' " . "group by c.RazonSocial " . "order by sum(p.TotalBases) DESC";
             break;
         default:
     }
     $em = new EntityManager($firma->getConectionName());
     if ($em->getDbLink()) {
         $em->query($query);
         $rows = $em->fetchResult();
         $em->desConecta();
     }
     unset($firma);
     return array('title' => "Ventas de la firma {$razonSocial} desglosadas por clientes. {$tituloPeriodo}", 'serieName' => "Ventas", 'serie' => $rows, 'query' => $query);
 }
 /**
  * Genera array con las direcciones de entrega de la ruta para el
  * repartidor y dia indicado
  *
  * @param integer $idRepartidor
  * @param integer $dia
  * @return <type>
  */
 public function listAction($idRuta = '', $dia = '')
 {
     if ($idRuta == '') {
         $idRuta = $this->request[2];
     }
     if ($dia == '') {
         $dia = $this->request[3];
     }
     $this->values['listado']['dia'] = $dia;
     $cliente = new Clientes();
     $zona = new Zonas();
     $dentrega = new ClientesDentrega();
     $ruta = new RutasRepartoDetalle();
     // Busco las direcciones de entrega de la ruta indicada y sucursal actual
     // que aun no estén asignadas al día solicitado
     $em = new EntityManager($cliente->getConectionName());
     if ($em->getDbLink()) {
         $query = "SELECT t1.IDDirec as Id, t1.Nombre as Value\n                        FROM \n                            {$dentrega->getDataBaseName()}.{$dentrega->getTableName()} as t1, \n                            {$cliente->getDataBaseName()}.{$cliente->getTableName()} as t2, \n                            {$zona->getDataBaseName()}.{$zona->getTableName()} as t3\n                        WHERE t1.IDCliente=t2.IDCliente\n                        AND t2.IDSucursal='{$_SESSION['suc']}'\n                        AND t3.IDSucursal='{$_SESSION['suc']}'\n                        AND t1.IDZona=t3.IDZona\n                        AND t1.IDDirec NOT IN\n                            (SELECT IDDirec FROM {$ruta->getDataBaseName()}.{$ruta->getTableName()}\n                            WHERE IDRuta='{$idRuta}' AND Dia='{$dia}')\n                        ORDER BY t1.Nombre ASC";
         $em->query($query);
         $rows = $em->fetchResult();
         $em->desConecta();
     }
     unset($em);
     $this->values['listado']['direcciones'] = $rows;
     array_unshift($this->values['listado']['direcciones'], array('Id' => '', 'Value' => ':: Indique una dirección'));
     // Busco las zonas de las direcciones de entrega de la sucursal actual
     // que aun no estén asignadas al día solicitado
     $em = new EntityManager($cliente->getConectionName());
     if ($em->getDbLink()) {
         $query = "SELECT DISTINCT t1.IDZona as Id, t2.Zona as Value \n                        FROM \n                            {$dentrega->getDataBaseName()}.{$dentrega->getTableName()} as t1, \n                            {$zona->getDataBaseName()}.{$zona->getTableName()} as t2, \n                            {$cliente->getDataBaseName()}.{$cliente->getTableName()} as t3\n                        WHERE t1.IDZona=t2.IDZona\n                        AND t1.IDCliente=t3.IDCliente\n                        AND t3.IDSucursal='{$_SESSION['suc']}'\n                        AND t2.IDSucursal='{$_SESSION['suc']}'\n                        AND t1.IDDirec NOT IN\n                            (SELECT IDDirec FROM {$ruta->getDataBaseName()}.{$ruta->getTableName()}\n                            WHERE IDRuta='{$idRuta}' AND Dia='{$dia}')\n                        ORDER BY t2.Zona ASC";
         $em->query($query);
         $rows = $em->fetchResult();
         $em->desConecta();
     }
     unset($em);
     $this->values['listado']['zonas'] = $rows;
     array_unshift($this->values['listado']['zonas'], array('Id' => '', 'Value' => ':: Indique una Zona'));
     //-----------------------------------------------
     // Lleno las direcciones asignadas al repartidor y día
     // ordenados por Orden de direccion de entrega y IDZona
     // -----------------------------------------------
     $em = new EntityManager($cliente->getConectionName());
     if ($em->getDbLink()) {
         $query = "SELECT t1.Id,t1.IDRepartidor \n                        FROM \n                            {$ruta->getDataBaseName()}.{$ruta->getTableName()}  as t1, \n                            {$dentrega->getDataBaseName()}.{$dentrega->getTableName()}  as t2, \n                            {$zona->getDataBaseName()}.{$zona->getTableName()} as t3\n                        WHERE t1.IDDirec=t2.IDDirec\n                        AND t2.IDZona=t3.IDZona\n                        AND t1.IDRuta='{$idRuta}'\n                        AND t1.Dia='{$dia}'\n                        ORDER BY t1.OrdenDirec,t1.IDZona";
         $em->query($query);
         $rows = $em->fetchResult();
         $em->desConecta();
     }
     unset($em);
     unset($cliente);
     unset($dentrega);
     unset($zona);
     foreach ($rows as $row) {
         $lineas[] = new $this->entity($row['Id']);
     }
     //-----------------------------------------------
     $this->values['listado']['IDRepartidor'] = $rows[0]['IDRepartidor'];
     $template = $this->entity . '/list.html.twig';
     $this->values['linkBy']['value'] = $idRuta;
     $this->values['listado']['data'] = $lineas;
     $this->values['listado']['nDirecciones'] = count($lineas);
     unset($lis);
     unset($lineas);
     return array('template' => $template, 'values' => $this->values);
 }
Beispiel #10
0
 public function RecibosAgrupados($filtro)
 {
     //$aux = substr(self::$parametros['fechaCobro'], 0, 4) . '20' . substr(self::$parametros['fechaCobro'], -2);
     $fecha = new Fecha(self::$parametros['fechaCobro']);
     $fCargo = $fecha->getaaaammdd();
     unset($fecha);
     $recibos = new RecibosClientes();
     $clientes = new Clientes();
     $tablaRecibos = $recibos->getDataBaseName() . "." . $recibos->getTableName();
     $tablaClientes = $clientes->getDataBaseName() . "." . $clientes->getTableName();
     $em = new EntityManager($recibos->getConectionName());
     if ($em->getDbLink()) {
         $filtro .= " and (Remesar='1') and (CHAR_LENGTH(r.Iban)>23) and (r.Iban<>'ES8200000000000000000000')";
         $query = "select r.IDCliente,sum(r.Importe) as Importe,r.Iban,c.RazonSocial from {$tablaRecibos} as r\n            left join {$tablaClientes} as c on r.IDCliente=c.IDCliente\n            where {$filtro}\n            group by r.IDCliente,r.Iban,c.RazonSocial \n            having sum(r.Importe)>0\n            order by c.RazonSocial,r.Vencimiento ASC";
         $em->query($query);
         $rows = $em->fetchResult();
         echo $query;
     }
     unset($em);
     unset($clientes);
     foreach ($rows as $recibo) {
         $codclie = self::Rellena($recibo['IDCliente'], 12);
         $titular = self::Rellena($recibo['RazonSocial'], 40);
         $importe = self::Ceros(str_replace(".", "", $recibo['Importe']), 10);
         $concepto = self::Rellena("Facturas", 40);
         $reg = "5680" . self::$ordenante['Cif'] . self::$ordenante['SufijoRemesas'] . $codclie . $titular . substr($recibo['Iban'], 4, strlen($recibo['Iban'])) . $importe . self::Vacio(16) . $concepto . self::Vacio(8);
         self::Escribe(self::$fp, $reg);
         self::$nRegistrosOrdenante += 1;
         self::$totalOrdenante += $recibo['Importe'];
         self::$nDomiciliacionesOrdenante += 1;
         //Marcar los recibos con el ID de la remesa
         $filtro = str_replace("r.", "", $filtro);
         $recibos->queryUpdate(array('IDRemesa' => self::$idRemesa, 'Vencimiento' => $fCargo, 'IDEstado' => self::$parametros['idEstado']), "IDCliente='{$recibo['IDCliente']}' and {$filtro}");
     }
 }
Beispiel #11
0
 static function getTopNClientes($n = 10, $diasAtras = 365)
 {
     $femi = new FemitidasCab();
     $tablaFacturas = $femi->getDataBaseName() . "." . $femi->getTableName();
     $cli = new Clientes();
     $tablaClientes = $cli->getDataBaseName() . "." . $cli->getTableName();
     $idRol = $_SESSION['usuarioPortal']['IdRol'];
     if ($idRol != '0' and $idRol != '9') {
         $filtro = "(f.IDComercial='{$_SESSION['usuarioPortal']['Id']}')";
     } else {
         $filtro = "(1)";
     }
     $hoy = new Fecha();
     $desde = $hoy->sumaDias(-$diasAtras);
     $filtro .= " AND (Fecha>='{$desde}')";
     $em = new EntityManager($femi->getConectionName());
     if ($em->getDbLink()) {
         $query = "select RazonSocial,sum(TotalBases) as Total \n                from {$tablaFacturas} as f left join {$tablaClientes} as c on f.IDCliente=c.IDCliente\n                where {$filtro}\n                group by f.IDCliente\n                order by sum(TotalBases) DESC\n                limit 0,{$n}";
         $em->query($query);
         $rows = $em->fetchResult();
     }
     unset($em);
     unset($femi);
     unset($cli);
     return $rows;
 }