/** * 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'); } }
/** * 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; }
/** * 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; }