/**
  * Genera un array con la informacion necesaria para imprimir el documento
  * Recibe un array con los ids de albaran
  * No muestra las lineas cuyas unidades son cero.
  *
  * @param array $idsDocumento Array con los ids de albaranes
  * @return array Array con dos elementos: master es un objeto albaran y detail es un array de objetos lineas de albaran
  */
 protected function getDatosDocumento(array $idsDocumento)
 {
     $master = array();
     $detail = array();
     // Recorro el array de los partes a imprimir
     foreach ($idsDocumento as $key => $idDocumento) {
         // Instancio la cabecera del albaran
         $master[$key] = new ManufacCab($idDocumento);
         // LLeno el array con objetos de lineas de partes de elaboracion
         $lineas = array();
         $manufacLineas = new ManufacLineas();
         $rows = $manufacLineas->cargaCondicion('IDLinea', "IDManufac='{$idDocumento}'", "Tipo,IDLinea ASC");
         foreach ($rows as $row) {
             $lineas[] = new ManufacLineas($row['IDLinea']);
         }
         $detail[$key] = $lineas;
     }
     return array('master' => $master, 'detail' => $detail);
 }
Пример #2
0
 /**
  * Hace una copia del parte de elaboración
  * Genera otro parte en base al actual.
  * Solo genera las lineas de elaboración enviadas (tipo=0)
  *
  * @return integer El id del parte generado
  */
 public function duplica()
 {
     $idOrigen = $this->IDManufac;
     // Crear la cabecera del parte
     $destino = new ManufacCab();
     $destino->setIDEstado(0);
     $destino->setFechaOrden(date('d-m-Y'));
     $destino->setFechaEntrega('00-00-0000');
     $destino->setIDElaborador($this->IDElaborador);
     $destino->setDescripcion($this->Descripcion);
     $destino->setIDAlmacenOrigen($this->IDAlmacenOrigen);
     $destino->setIDAlmacenDestino($this->IDAlmacenDestino);
     $idDestino = $destino->create();
     // Crear las líneas de parte
     if ($idDestino) {
         $linea = new ManufacLineas();
         $rows = $linea->cargaCondicion("*", "IDManufac='{$idOrigen}' and Tipo='0'", "IDLinea ASC");
         unset($linea);
         foreach ($rows as $row) {
             $lineaDestino = new ManufacLineas();
             $lineaDestino->setIDManufac($idDestino);
             $lineaDestino->setIDArticulo($row['IDArticulo']);
             $lineaDestino->setDescripcion($row['Descripcion']);
             $lineaDestino->setUnidades($row['Unidades']);
             $lineaDestino->setIDAlmacen($row['IDAlmacen']);
             $lineaDestino->setPrecio($row['Precio']);
             $lineaDestino->setImporte($row['Importe']);
             $lineaDestino->create();
         }
         unset($lineaDestino);
     } else {
         $this->_errores[] = "Hubo un error al duplicar el parte de elaboración.";
     }
     return $idDestino;
 }
 /**
  * Crea un registro nuevo en la entidad correspondiente
  * y su correspondiente registro en las líneas de recepción
  * 
  * @return array con el template y valores a renderizar
  */
 public function newAction()
 {
     switch ($this->request["entidad"]) {
         //CREAR UNA LINEA DE PEDIDO NUEVA Y SU CORRESPONDIENTE LINEA DE RECEPCION
         case 'PedidosCab':
             $pedido = new PedidosCab($this->request['idEntidad']);
             $lineaPedido = new PedidosLineas();
             $lineaPedido->setIDPedido($this->request['idEntidad']);
             $lineaPedido->setIDArticulo($this->request['idArticulo']);
             $lineaPedido->setDescripcion($this->request['Descripcion']);
             $lineaPedido->setUnidades(0);
             $lineaPedido->setIDEstado(1);
             $lineaPedido->setIDAgente($_SESSION['usuarioPortal']['Id']);
             $lineaPedido->setIDAlmacen($pedido->getIDAlmacen()->getIDAlmacen());
             if ($lineaPedido->valida()) {
                 if ($lineaPedido->create()) {
                     $this->creaLineaRecepcion($this->request['entidad'], $this->request['idEntidad'], $lineaPedido);
                     $pedido->setIDAlmacen($pedido->getIDAlmacen()->getIDAlmacen());
                     $pedido->setIncidencias($pedido->getIncidencias() . "\nFuera de pedido: " . $lineaPedido->getDescripcion());
                     $pedido->save();
                 }
             }
             $this->values['errores'] = $lineaPedido->getErrores();
             unset($pedido);
             unset($lineaPedido);
             break;
             //CREAR UNA LINEA DE PEDIDO NUEVA Y SU CORRESPONDIENTE LINEA DE RECEPCION
         //CREAR UNA LINEA DE PEDIDO NUEVA Y SU CORRESPONDIENTE LINEA DE RECEPCION
         case 'ManufacCab':
             $manufac = new ManufacCab($this->request['idEntidad']);
             $lineaManufac = new ManufacLineas();
             $lineaManufac->setIDManufac($this->request['idEntidad']);
             $lineaManufac->setTipo(1);
             $lineaManufac->setIDArticulo($this->request['idArticulo']);
             $lineaManufac->setDescripcion($this->request['Descripcion']);
             $lineaManufac->setUnidades(1);
             $lineaManufac->setIDEstado(0);
             $lineaManufac->setIDAlmacen($manufac->getIDAlmacenDestino()->getIDAlmacen());
             if ($lineaManufac->valida()) {
                 if ($lineaManufac->create()) {
                     $this->creaLineaRecepcion($this->request['entidad'], $this->request['idEntidad'], $lineaManufac);
                     $manufac->setIDAlmacenDestino($manufac->getIDAlmacenDestino()->getIDAlmacen());
                     $manufac->setIncidencias($manufac->getIncidencias() . "\nFuera de pedido: " . $lineaManufac->getDescripcion());
                     $manufac->save();
                 }
             }
             $this->values['errores'] = $lineaManufac->getErrores();
             unset($manufac);
             unset($lineaManufac);
             break;
             //CREAR UNA LINEA DE TRASPASO NUEVA Y SU CORRESPONDIENTE LINEA DE RECEPCION
         //CREAR UNA LINEA DE TRASPASO NUEVA Y SU CORRESPONDIENTE LINEA DE RECEPCION
         case 'TraspasosCab':
             $traspaso = new TraspasosCab($this->request['idEntidad']);
             $lineaTraspaso = new TraspasosLineas();
             $lineaTraspaso->setIDTraspaso($this->request['idEntidad']);
             $lineaTraspaso->setTipo(1);
             $lineaTraspaso->setIDArticulo($this->request['idArticulo']);
             $lineaTraspaso->setDescripcion($this->request['Descripcion']);
             $lineaTraspaso->setUnidades(1);
             $lineaTraspaso->setIDEstado(0);
             $lineaTraspaso->setIDAlmacen($traspaso->getIDAlmacenDestino()->getIDAlmacen());
             if ($lineaTraspaso->valida()) {
                 if ($lineaTraspaso->create()) {
                     $this->creaLineaRecepcion($this->request['entidad'], $this->request['idEntidad'], $lineaTraspaso);
                     $traspaso->setIDAlmacenDestino($traspaso->getIDAlmacenDestino()->getIDAlmacen());
                     $traspaso->setIncidencias($traspaso->getIncidencias() . "\nFuera de traspaso: " . $lineaTraspaso->getDescripcion());
                     $traspaso->save();
                 }
             }
             $this->values['errores'] = $lineaTraspaso->getErrores();
             unset($traspaso);
             unset($lineaTraspaso);
             break;
     }
     return $this->listAction($this->request['entidad'], $this->request['idEntidad']);
 }
 /**
  * Crea las líneas de expediciones relativas a la elaboración
  *
  * @param integer $idManufac
  */
 private function cargaLineasManufac($idManufac)
 {
     // Cargo las lineas de la elaboración que no están expedidas y cuyos artículos son inventariables.
     // Borro las eventuales líneas de expedición que no están expedidas.
     $rows = array();
     $lineas = new ManufacLineas();
     $tablaLineas = $lineas->getDataBaseName() . "." . $lineas->getTableName();
     $articulos = new Articulos();
     $tablaArticulos = $articulos->getDataBaseName() . "." . $articulos->getTableName();
     $em = new EntityManager($lineas->getConectionName());
     if ($em->getDbLink()) {
         $query = "select l.IDLinea\n                    from {$tablaLineas} l, {$tablaArticulos} a\n                    where l.IDManufac = '{$idManufac}' and\n                          l.IDEstado = '1' 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();
         $expediciones = new Expediciones();
         $expediciones->queryDelete("Entidad='ManufacCab' and IDEntidad='{$idManufac}' and Expedida='0'");
         unset($expediciones);
         $em->desConecta();
     }
     unset($em);
     // Crea las líneas de expedición preasignando lotes y ubicaciones
     foreach ($rows as $row) {
         $this->preasignaLinea('ManufacCab', $idManufac, new ManufacLineas($row['IDLinea']));
     }
 }