/** * 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']); }
/** * Hace una copia del parte de traspaso * Genera otro parte en base al actual. * * @return integer El id del parte generado */ public function duplica() { $idOrigen = $this->IDTraspaso; // Crear la cabecera del parte $destino = new TraspasosCab(); $destino->setIDSucursal($this->IDSucursal); $destino->setIDContador($this->IDContador); $destino->setIDEstado(0); $destino->setFechaOrden(date('d-m-Y')); $destino->setFechaEntrada('00-00-0000'); $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 TraspasosLineas(); $rows = $linea->cargaCondicion("*", "IDTraspaso='{$idOrigen}'", "IDLinea ASC"); unset($linea); foreach ($rows as $row) { $lineaDestino = new TraspasosLineas(); $lineaDestino->setIDTraspaso($idDestino); $lineaDestino->setTipo($row['Tipo']); $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 la orden de traspaso."; } return $idDestino; }
/** * 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; }