/** * 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); }
/** * 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); }
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}"); } }
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; }