/** * Devuelve todas las direcciones de entrega del cliente * indicado en el parámetro $idCliente o en su defecto * en la posicion 2 del request. * * @param string Codigo de cliente * @return array */ public function listAction($idCliente = '') { if ($idCliente == '') { $idCliente = $this->request[2]; } $direc = new ClientesDentrega(); $tabla = $direc->getDataBaseName() . "." . $direc->getTableName(); unset($direc); $filtro = $tabla . ".IDCliente='" . $idCliente . "'"; $this->values['linkBy']['value'] = $idCliente; return parent::listAction($filtro); }
/** * Devuelve un array de objeto RutasRepartoDetalle * * Si se indica $idDirec el array tendrá las rutas de reparto de la dirección de entrega * * Si no se indica $idDirec el array tendrá las rutas de reparto de todas las * direcciones de entrega del cliente * * @param integer $idDirec El id de la direccion de entregra, opcional * @return array Array con objetos RutasRepartoDetalle */ public function getRutasReparto($idDirec = '') { $rutasReparto = array(); $rutaReparto = new RutasRepartoDetalle(); $direc = new ClientesDentrega(); $filtro = $idDirec == '' ? "IDDirec IN (SELECT IDDirec from {$direc->getDataBaseName()}.{$direc->getTableName()} where IDCliente='{$this->IDCliente}')" : "IDDirec='{$idDirec}'"; $rows = $rutaReparto->cargaCondicion("Id", $filtro, "Dia ASC, OrdenDirec ASC"); foreach ($rows as $row) { $rutasReparto[] = new RutasRepartoDetalle($row['Id']); } unset($rutaReparto); unset($direc); return $rutasReparto; }
/** * 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); }