Exemplo n.º 1
0
 /**
  * Recepciona la línea de pedido.
  * Pasa las existencias del estado "Entrando" (1) al estado "Recepionada" (2)
  * y marca la línea como Recepcionada.
  *
  * Las unidades recibidas pueden ser diferentes a las pedidas.
  *
  * Recalcula los precios (Pvd,Pmc,Margen,Pvp) del artículo en base a las unidades recepcionadas
  *
  * @return boolean
  */
 public function recepciona()
 {
     $ok = true;
     $articulo = new Articulos($this->IDArticulo);
     $esInventariable = $articulo->getInventario()->getIDTipo();
     if ($esInventariable) {
         // Quitar 'entrando'
         $exi = new Existencias();
         $ok = $exi->quitaEntrando($this->IDAlmacen, $this->IDArticulo, $this->Unidades, $this->UnidadMedida);
         unset($exi);
     }
     if ($esInventariable and $ok) {
         // Recepcionar las líneas de recepción de la línea de pedido
         $recepcion = new Recepciones();
         $unidadesNetas = $recepcion->recepciona("PedidosCab", $this->IDLinea);
         unset($recepcion);
     } else {
         $unidadesNetas = $this->Unidades;
     }
     if ($ok) {
         // Marcar la línea de pedido como recepcionada y
         // Poner las unidades netas recibidas y las unidades pendientes de facturar
         // Recalcular la línea de pedido en base a las Unidades Recibidas
         // Actualiza los precios del artículo
         $this->setIDEstado(2);
         $this->setUnidadesRecibidas($unidadesNetas);
         $this->setUnidadesPtesFacturar($unidadesNetas);
         $this->setImporte($unidadesNetas * $this->Precio * (1 - $this->Descuento / 100));
         if ($unidadesNetas != 0) {
             $articulo = new Articulos($this->IDArticulo);
             $articulo->actualizaPrecios($unidadesNetas, abs($this->Importe / $unidadesNetas));
             unset($articulo);
         }
         $this->save();
     }
     return $ok;
 }
 /**
  * Recalcula los precios de costo y de venta de los articulos
  * obtenidos en la elaboración, prorrateando el costo total de
  * la elaboración entre las UMAs obtenidas de cada producto
  *
  * Este proceso se hace con las líneas de tipo 1 que estén recepcionadas (Estado=3)
  * y en base a la política de recálculo de precios definida con el parámetro ACTU_PRECIOS
  */
 public function CotizarAction()
 {
     if ($this->values['permisos']['permisosModulo']['UP']) {
         $idManufac = $this->request['ManufacCab']['IDManufac'];
         $datos = new ManufacCab($idManufac);
         if ($datos->getKilosDestino() != 0) {
             $totalCoste = $datos->getTotalCoste();
             $totalUMAObtenidos = $datos->getKilosDestino();
             $costePorUMA = $totalCoste / $datos->getKilosDestino();
             //Recorrer las lineas de elaboracion tipo 1
             $lineas = new ManufacLineas();
             $rows = $lineas->cargaCondicion("*", "IDManufac='{$idManufac}' and Tipo='1' and IDEstado='3'");
             unset($lineas);
             foreach ($rows as $row) {
                 $articulo = new Articulos($row['IDArticulo']);
                 if ($articulo->actualizaPrecios($row['Unidades'], $costePorUMA)) {
                     $this->values['alertas'][] = "Se actualizó: " . $articulo->getCodigo() . " " . $articulo->getDescripcion();
                 } else {
                     $this->values['alertas'][] = "NO Se actualizó: " . $articulo->getCodigo() . " " . $articulo->getDescripcion();
                 }
             }
             unset($articulo);
         }
         $this->values['datos'] = $datos;
         $this->values['errores'] = $datos->getErrores();
         unset($datos);
         return array('template' => $this->entity . '/edit.html.twig', 'values' => $this->values);
     } else {
         return array('template' => '_global/forbiden.html.twig');
     }
 }
Exemplo n.º 3
0
 /**
  * Recepciona la línea de elaboración de tipo 1 (la de entrada)
  * Actualiza las existencias y marca la línea como recepcionada.
  *
  * NO SE REALIZA NINGUN TRATAMIENTO CON LAS EXISTENCIAS SI EL ARTICULO NO ES INVENTARIABLE
  *
  * @return boolean
  */
 public function recepciona()
 {
     $ok = true;
     $articulo = new Articulos($this->IDArticulo);
     $esInventariable = $articulo->getInventario()->getIDTipo();
     if ($esInventariable) {
         // Recepcionar la línea de elaboración
         $recepcion = new Recepciones();
         $unidadesNetas = $recepcion->recepciona("ManufacCab", $this->IDLinea);
         unset($recepcion);
     } else {
         $unidadesNetas = $this->Unidades;
     }
     if ($ok) {
         // Marcar la línea de elaboración como recepcionada y
         // Poner las unidades netas recibidas
         // Recalcular la línea
         // Actualiza los precios del artículo
         $this->setIDEstado(3);
         $this->setUnidades($unidadesNetas);
         $this->TotalizaLinea();
         if ($unidadesNetas != 0) {
             $articulo = new Articulos($this->IDArticulo);
             $articulo->actualizaPrecios($unidadesNetas, abs($this->Importe / $unidadesNetas));
             unset($articulo);
         }
         $this->save();
     }
     return $ok;
 }
Exemplo n.º 4
0
 /**
  * Recepciona la línea de traspaso de tipo 1 (la de entrada)
  * Actualiza las existencias y marca la línea como expedida.
  *
  * NO SE REALIZA NINGUN TRATAMIENTO CON LAS EXISTENCIAS SI EL ARTICULO NO ES INVENTARIABLE
  *
  * @return boolean
  */
 public function recepciona()
 {
     $ok = true;
     $articulo = new Articulos($this->IDArticulo);
     $esInventariable = $articulo->getInventario()->getIDTipo();
     if ($esInventariable) {
         // Quitar 'entrando'
         $exi = new Existencias();
         $ok = $exi->quitaEntrando($this->IDAlmacen, $this->IDArticulo, $this->Unidades, $this->UnidadMedida);
         unset($exi);
     }
     if ($esInventariable and $ok) {
         // Recepcionar las líneas de recepción de la línea de traspaso
         $recepcion = new Recepciones();
         $unidadesNetas = $recepcion->recepciona("TraspasosCab", $this->IDLinea);
         unset($recepcion);
     } else {
         $unidadesNetas = $this->Unidades;
     }
     if ($ok) {
         // Marcar la línea de traspaso como recepcionada y
         // Poner las unidades netas recibidas
         // Recalcular la línea
         // Actualiza los precios del artículo
         $this->setIDEstado(3);
         $this->setUnidades($unidadesNetas);
         $this->TotalizaLinea();
         if ($unidadesNetas != 0) {
             $articulo = new Articulos($this->IDArticulo);
             $articulo->actualizaPrecios($unidadesNetas, abs($this->Importe / $unidadesNetas));
             unset($articulo);
         }
         $this->save();
     }
     return $ok;
 }