public function caducidadbylugarAction() { $request = $this->request; if ($request->isPost()) { $post_data = $request->getPost(); //Creamos una nueva Orden de compra, donde el proveedor va ser el mismo hospital $orden = new \Ordencompra(); $orden->setIdproveedor(1); $fecha = new \DateTime(); $orden->setOrdencompraNofactura($fecha->getTimestamp()); $orden->setOrdencompraFecha($fecha->format('Y-m-d')); $orden->setOrdencompraImporte(0); $orden->setOrdencompraStatus('inventario'); $orden->setOrdencompraFechaapagar($fecha->format('Y-m-d')); $post_data_array = array(); foreach ($post_data as $post) { if (is_array($post)) { $post_data_array[] = $post; } } //Comenzamos a itinerar sobre el post foreach ($post_data_array as $row) { //Si ya es una orden de compra detalle existente if (isset($row['id'])) { //Creamos una instancia de la orden compra detalle $ocd = \OrdencompradetalleQuery::create()->findPk($row['id']); //Setiamos los valores $newCaducidad = new \DateTime(); //Si nos envian la fecha, le damos formato if (!empty($row['caducidad'])) { $newCaducidad = $newCaducidad->createFromFormat('d/m/y', '01/' . $row['caducidad']); } else { $newCaducidad = null; } $ocd->setOrdencompradetalleCantidad($row['cantidad']); if (!is_null($newCaducidad)) { $ocd->setOrdencompradetalleCaducidad($newCaducidad->format('Y-m-d')); } $ocd->save(); //Ahora actualizamos en lugarInventario $lugarInventario = \LugarinventarioQuery::create()->filterByIdlugar($post_data['idlugar'])->filterByIdordencompradetalle($ocd->getIdordencompradetalle())->findOne(); $lugarInventario->setLugarinventarioCantidad($row['cantidad']); $lugarInventario->save(); } else { //En dado caso que no exista... if (is_null($orden->getIdordencompra())) { $orden->save(); } //Nueva instancia de orden compra detalle $ocd = new \Ordencompradetalle(); $newCaducidad = new \DateTime(); //Si nos envian la fecha, le damos formato if (!empty($row['caducidad'])) { $newCaducidad = $newCaducidad->createFromFormat('d/m/y', '01/' . $row['caducidad']); } else { $newCaducidad = null; } $ocd->setIdordencompra($orden->getIdordencompra())->setIdarticulovariante($post_data['idarticulovariante'])->setOrdencompradetalleCantidad($row['cantidad'])->setOrdencompradetalleCosto(0)->setOrdencompradetallePrecio(0)->setOrdencompradetalleImporte(0); if (!is_null($newCaducidad)) { $ocd->setOrdencompradetalleCaducidad($newCaducidad->format('Y-m-d')); } $ocd->save(); //Hacemos el insert en lugar inventario $lugarInventario = new \Lugarinventario(); $lugarInventario->setIdlugar($post_data['idlugar'])->setIdordencompradetalle($ocd->getIdordencompradetalle())->setLugarinventarioCantidad($ocd->getOrdencompradetalleCantidad())->save(); } } //Agregamos un mensaje $this->flashMessenger()->addMessage('Existencias guardadas exitosamente!'); //Redireccionamos return $this->redirect()->toUrl('/productos/existencias'); } //Cachamos los datos de la url $idarticulovariante = $this->params()->fromQuery('idarticulovariante'); $idlugar = $this->params()->fromQuery('idlugar'); $descripcion = $this->params()->fromQuery('descripcion'); $existencias = $this->params()->fromQuery('existencias'); $lugarNombre = $this->params()->fromQuery('lugarNombre'); $modalName = 'modal-producto-' . $idarticulovariante . '-lugar-' . $idlugar; $modal = array('id' => $idarticulovariante, 'idlugar' => $idlugar, 'nombre' => \ArticulovarianteQuery::create()->findOneByIdarticulovariante($idarticulovariante)->getArticulo()->getArticuloNombre(), 'descripcion' => $descripcion, 'caducidad' => array(), 'existencias' => $existencias, 'lugar_nombre' => $lugarNombre); //Obtenemos todas las ordenes de compra por idarticulovariante $ordenCompraDetalleCollection = \OrdencompradetalleQuery::create()->findByIdarticulovariante($idarticulovariante); //Comenzamos a itinerar foreach ($ordenCompraDetalleCollection as $kocd => $vocd) { $tmp['idordendetallecompra'] = $vocd->getIdordencompradetalle(); if (!is_null($vocd->getOrdencompradetalleCaducidad())) { $date = new \DateTime($vocd->getOrdencompradetalleCaducidad()); $tmp['caducidad'] = $date->format('m/y'); } else { $tmp['caducidad'] = ''; } //Por cada item de articulovariante revisamos su lugar en el inventrario $idodencompreadetalle = $vocd->getIdordencompradetalle(); $lugarinventarioCollection = \LugarinventarioQuery::create()->filterByIdlugar($idlugar)->filterByIdordencompradetalle($idodencompreadetalle)->find(); //Itineramos en lugarInventario foreach ($lugarinventarioCollection as $kli => $vli) { $tmp['cantidad'] = $vli->getLugarinventarioCantidad(); $modal['caducidad'][] = $tmp; } } $viewModel = new ViewModel(); $viewModel->setTerminal(true); $viewModel->setVariables(array('modalName' => $modalName, 'modal' => $modal)); return $viewModel; }