예제 #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;
 }
 /**
  * Crea una línea de recepcion en base al objetoLinea pasado
  *
  * @param string $entidad El nombre de la entidad padre (PedidosCab, ManufacCab, TraspasosCab, ...)
  * @param integer $idEntidad El id de la entidad padre
  * @param object $objetoLinea Objeto linea hija de la entidad padre correspondiente (linea de pedido, manufactura, traspaso, ...)
  */
 private function creaLineaRecepcion($entidad, $idEntidad, $objetoLinea)
 {
     $linea = new Recepciones();
     $linea->setEntidad($entidad);
     $linea->setIDEntidad($idEntidad);
     $linea->setIDLineaEntidad($objetoLinea->getIDLinea());
     $linea->setIDAlmacen($objetoLinea->getIDAlmacen()->getIDAlmacen());
     $linea->setIDAlmacenero($_SESSION['usuarioPortal']['Id']);
     $linea->setIDArticulo($objetoLinea->getIDArticulo()->getIDArticulo());
     $linea->setUnidades($objetoLinea->getUnidades());
     $linea->setUnidadMedida($objetoLinea->getUnidadMedida());
     $linea->setUnidadesBrutas($objetoLinea->getUnidades());
     $linea->setUnidadesNetas($objetoLinea->getUnidades());
     $linea->create();
     unset($linea);
 }
예제 #3
0
 /**
  * Expide la linea de traspaso de tipo 0 (la de envío)
  * Actualiza las existencias y marca la línea como expedida.
  * Genera la línea de traspaso de tipo 1 (la de entrada) poniendo el 'entrando' y
  * generar tantas líneas de recepción como líneas de expedición se hayan generado
  * para mantener las mismas unidades y lotes
  *
  * NO SE REALIZA NINGUN TRATAMIENTO CON LAS EXISTENCIAS SI EL ARTICULO NO ES INVENTARIABLE
  *
  * @return boolean
  */
 public function expide()
 {
     $ok = true;
     $articulo = new Articulos($this->IDArticulo);
     $esInventariable = $articulo->getInventario()->getIDTipo();
     if ($esInventariable) {
         // Quitar la reserva de mercancía
         $exi = new Existencias();
         $ok = $exi->quitaReserva($this->IDAlmacen, $this->IDArticulo, $this->Unidades, $this->UnidadMedida);
         unset($exi);
     }
     if ($esInventariable and $ok) {
         // Expedir la línea de traspaso
         $expedicion = new Expediciones();
         $unidadesNetas = $expedicion->expide("TraspasosCab", $this->IDLinea);
         unset($expedicion);
     } else {
         $unidadesNetas = $this->Unidades;
     }
     if ($ok) {
         // Marcar la línea de traspaso como expedida y
         // poner las unidades netas expedidas
         $this->setIDEstado(2);
         $this->setUnidades($unidadesNetas);
         $this->totalizaLinea();
         $this->save();
         // Generar la línea de traspaso de tipo 1 (la de entrada) y poner el entrando
         $idAlmacenDestino = $this->getIDTraspaso()->getIDAlmacenDestino()->getIDAlmacen();
         $lineaEntrada = new TraspasosLineas();
         $lineaEntrada->setIDLinea('');
         $lineaEntrada->setIDTraspaso($this->IDTraspaso);
         $lineaEntrada->setTipo(1);
         $lineaEntrada->setIDArticulo($this->IDArticulo);
         $lineaEntrada->setDescripcion($this->Descripcion);
         $lineaEntrada->setUnidades($this->Unidades);
         $lineaEntrada->setUnidadMedida($this->UnidadMedida);
         $lineaEntrada->setIDAlmacen($idAlmacenDestino);
         $lineaEntrada->setPrecio($this->Precio);
         $lineaEntrada->setImporte($this->Importe);
         $lineaEntrada->setIDEstado(0);
         $idLineaEntrada = $lineaEntrada->create();
         unset($lineaEntrada);
         // Generar tantas líneas de recepción como líneas de expedición haya para
         // la línea de traspaso expedida
         $expedicion = new Expediciones();
         $rows = $expedicion->cargaCondicion("*", "Entidad='TraspasosCab' and IDLineaEntidad='{$this->IDLinea}'");
         unset($expedicion);
         foreach ($rows as $row) {
             $recepcion = new Recepciones();
             $recepcion->setEntidad($row['Entidad']);
             $recepcion->setIDEntidad($row['IDEntidad']);
             $recepcion->setIDLineaEntidad($idLineaEntrada);
             $recepcion->setIDAlmacen($idAlmacenDestino);
             $recepcion->setIDAlmacenero($_SESSION['usuarioPortal']['Id']);
             $recepcion->setIDArticulo($row['IDArticulo']);
             $recepcion->setUnidades($row['Unidades']);
             $recepcion->setUnidadMedida($row['UnidadMedida']);
             $recepcion->setUnidadesBrutas($row['Unidades']);
             $recepcion->setUnidadesNetas($row['Unidades']);
             $recepcion->setIDLote($row['IDLote']);
             $recepcion->create();
             unset($recepcion);
         }
         // Poner el entrando
         $exi = new Existencias();
         $ok = $exi->hazEntrando($idAlmacenDestino, $this->IDArticulo, $this->getUnidades(), $this->getUnidadMedida());
         unset($exi);
     }
     unset($articulo);
     return $ok;
 }