예제 #1
0
 /**
  * Recepciona todas las líneas de recepción correspondientes
  * a la entidad $entidad y línea de entidad $idLineaEntidad
  *
  * @param string $entidad La entidad padre (PedidosCab,ManufacCab,TraspasosCab)
  * @param integer $idLineaEntidad El id de la línea de la entidad padre
  * @return float La cantidad de unidades recepcionadas
  */
 public function recepciona($entidad, $idLineaEntidad, $flagDeposito = '0')
 {
     $unidadesRecepcionadas = 0;
     $rows = $this->cargaCondicion("*", "Entidad='{$entidad}' and IDLineaEntidad='{$idLineaEntidad}' and Recepcionada='0'");
     foreach ($rows as $row) {
         $valores = array('UM' => $row['UnidadMedida'], 'Reales' => $row['UnidadesNetas'], 'Pales' => $row['Pales'], 'Cajas' => $row['Cajas'], 'Reservadas' => 0, 'Entrando' => 0);
         $mvtoAlmacen = new MvtosAlmacen();
         $ok = $mvtoAlmacen->genera($row['Entidad'], 'E', $row['IDEntidad'], $row['IDAlmacen'], $row['IDArticulo'], $row['IDLote'], $row['IDUbicacion'], $flagDeposito, $valores);
         // Valores con los que actualizar
         $unidadesRecepcionadas += $row['UnidadesNetas'];
         if ($ok) {
             // Marcar la linea de recepción como recepcionada.
             $recepcion = new Recepciones($row['IDLinea']);
             $recepcion->setRecepcionada(1);
             $recepcion->save();
         } else {
             // Ha fallado la creación/validación del movimiento. No se
             // marca la recepción como recepcionada
             $recepcion = new Recepciones($row['IDLinea']);
             $recepcion->setRecepcionada(0);
             $recepcion->setUnidadesBrutas(0);
             $recepcion->setUnidadesNetas(0);
             $recepcion->save();
             $unidadesRecepcionadas = 0;
         }
     }
     unset($mvtoAlmacen);
     unset($recepcion);
     return $unidadesRecepcionadas;
 }
 /**
  * Edita, actualiza o borrar un registro
  * @return array con el template y valores a renderizar
  */
 public function editAction()
 {
     $entidad = $this->request['Recepciones']['Entidad'];
     $idEntidad = $this->request['Recepciones']['IDEntidad'];
     $idLineaEntidad = $this->request['Recepciones']['IDLineaEntidad'];
     switch ($this->request['accion']) {
         case 'G':
             //GUARDAR DATOS
             $datos = new Recepciones($this->request['Recepciones']['IDLinea']);
             $datos->bind($this->request['Recepciones']);
             if ($datos->valida($this->form->getRules())) {
                 $datos->save();
             }
             $this->values['errores'] = $datos->getErrores();
             $this->values['alertas'] = $datos->getAlertas();
             unset($datos);
             return $this->listAction($entidad, $idEntidad);
             break;
         case 'B':
             //BORRAR LINEA DE RECEPCION
             $datos = new Recepciones($this->request['Recepciones']['IDLinea']);
             $datos->erase();
             $this->values['errores'] = $datos->getErrores();
             unset($datos);
             return $this->listAction($entidad, $idEntidad);
             break;
         case 'Varios':
             //CREA OTRA LINEA DE RECEPCION, SI PROVIENE DE TRASPASO OBLIGO EL MISMO LOTE
             // Calculo las unidades totales que llevo entre todas las eventuales
             // lineas de recepción para la linea de pedido/traspaso/elaboración en curso
             $lineaRecepcion = new Recepciones();
             $rows = $lineaRecepcion->cargaCondicion("sum(UnidadesNetas) as UnidadesNetas", "Entidad='{$entidad}' and IDEntidad='{$idEntidad}' and IDLineaEntidad='{$idLineaEntidad}'");
             $suma = $rows[0]['UnidadesNetas'];
             // Propongo las unidades que faltan para la nueva linea de recepción
             $lineaRecepcion = new Recepciones($this->request['Recepciones']['IDLinea']);
             $unidades = $lineaRecepcion->getIDLineaEntidad()->getUnidades() - $suma;
             // Crea la linea nueva de recepción, si proviene de traspaso obligo el mismo lote
             $datos = new Recepciones();
             $datos->setEntidad($entidad);
             $datos->setIDEntidad($idEntidad);
             $datos->setIDLineaEntidad($idLineaEntidad);
             $datos->setIDAlmacen($lineaRecepcion->getIDAlmacen()->getIDAlmacen());
             $datos->setIDAlmacenero($lineaRecepcion->getIDAlmacenero()->getIDAgente());
             $datos->setIDArticulo($lineaRecepcion->getIDArticulo()->getIDArticulo());
             $datos->setUnidades($unidades);
             $datos->setUnidadMedida($lineaRecepcion->getUnidadMedida());
             $datos->setUnidadesBrutas($unidades);
             $datos->setUnidadesNetas($unidades);
             if ($entidad == 'TraspasosCab') {
                 $datos->setIDLote($lineaRecepcion->getIDLote()->getIDLote());
             }
             $datos->create();
             $this->values['errores'] = $datos->getErrores();
             $this->values['alertas'] = $datos->getAlertas();
             unset($datos);
             unset($lineaRecepcion);
             return $this->listAction($entidad, $idEntidad);
             break;
     }
 }