public function editarAction()
 {
     //Cachamos el valor desde nuestro params
     $id = (int) $this->params()->fromRoute('id');
     //Verificamos que el Id articulo que se quiere modificar exista
     if (!\TraspasoQuery::create()->filterByIdinventariolugar($id)->exists()) {
         $id = 0;
     }
     //Si es incorrecto redireccionavos al action nuevo
     if (!$id) {
         return $this->redirect()->toRoute('almacen-transferencias', array('action' => 'nuevo'));
     }
     $request = $this->getRequest();
     $entity = \TraspasoQuery::create()->findOneByIdinventariolugar($id);
     $entity_array = $entity->toArray();
     $entity_array['detalles'] = array();
     $traspaso_detalles = $entity->getTraspasodetalless();
     foreach ($traspaso_detalles as $detalle) {
         $tmp['costo'] = $detalle->getLugarinventario()->getOrdencompradetalle()->getArticulovariante()->getArticulovarianteCosto();
         $tmp['idarticulovariante'] = $detalle->getLugarinventario()->getOrdencompradetalle()->getIdarticulovariante();
         $tmp['idlugarinventario'] = $detalle->getIdlugarinventario();
         $tmp['cantidad'] = (int) $detalle->getTraspasoCantidad();
         $tmp['descripcion'] = '';
         $idarticulovariante = $detalle->getLugarinventario()->getOrdencompradetalle()->getIdarticulovariante();
         $articulovariante = \ArticulovarianteQuery::create()->findPk($idarticulovariante);
         $articulovariantevalor = \ArticulovariantevalorQuery::create()->filterByIdarticulovariante($idarticulovariante)->find();
         $tmp['descripcion'] .= $articulovariante->getArticulo()->getArticuloNombre() . ' ';
         $propiedadCount = 0;
         foreach ($articulovariantevalor as $key => $value) {
             $propiedadCount++;
             $tmp['descripcion'] .= \PropiedadQuery::create()->findOneByIdpropiedad($value->getIdpropiedad())->getPropiedadNombre();
             //Propiedad
             $tmp['descripcion'] .= ':' . \PropiedadvalorQuery::create()->findOneByIdpropiedadvalor($value->getIdpropiedadvalor())->getPropiedadvalorNombre();
             //PropiedadValor
             if ($propiedadCount < $articulovariantevalor->count()) {
                 $tmp['descripcion'] .= ' - ';
             }
         }
         $tmp['caducidad'] = !is_null($detalle->getLugarinventario()->getOrdencompradetalle()->getOrdencompradetalleCaducidad('m/Y')) ? $detalle->getLugarinventario()->getOrdencompradetalle()->getOrdencompradetalleCaducidad('m/Y') : 'N/D';
         array_push($entity_array['detalles'], $tmp);
     }
     //Instanciamos nuestro lugares
     $lugaresCollection = \LugarQuery::create()->find();
     $lugarArray = array();
     foreach ($lugaresCollection as $lugar) {
         $lugarArray[] = array('value' => $lugar->getIdLugar(), 'name' => $lugar->getLugarNombre());
     }
     if ($request->isPost()) {
         //Si hicieron POST
         $post_data = $request->getPost();
         //echo '<pre>';var_dump($entity_array); echo '<pre>';exit();
         //Eliminamos nuestra anterior transferencia
         $traspaso = \TraspasoQuery::create()->findOneByIdinventariolugar($id);
         $traspaso_idorden = $traspaso->getIdOrdencompra();
         $traspaso_detalles = $traspaso->getTraspasodetalless();
         //Eliminamos los detalles y los regresamos a almacen general
         foreach ($traspaso_detalles as $detalle) {
             //Instanciamos nuestro el lugar inventario del detalle
             $lugar_inventario = $detalle->getLugarinventario();
             $current_stock = $lugar_inventario->getLugarinventarioCantidad();
             $new_stock = $current_stock + $detalle->getTraspasoCantidad();
             $lugar_inventario->setLugarinventarioCantidad($new_stock);
             $lugar_inventario->save();
         }
         //Eliminamos el traspaso y la orden
         $traspaso->delete();
         \OrdencompraQuery::create()->findPk($traspaso_idorden)->delete();
         /*
          * Creamos la nueva
          */
         $traspaso_fecha = \DateTime::createFromFormat('d/m/Y', $post_data['traspaso_fecha']);
         //Si existen items en el traspaso
         if (isset($post_data["traspaso_detalles"])) {
             //Creamos una nueva orden donde vamos a registrar el traspaso
             $orden = new \Ordencompra();
             $orden->setIdproveedor(1)->setOrdencompraNofactura($traspaso_fecha->getTimestamp())->setOrdencompraFecha($traspaso_fecha->format('Y-m-d h:m:s'))->setOrdencompraImporte(0.0)->setOrdencompraStatus('inventario')->setOrdencompraFechaapagar($traspaso_fecha->format('Y-m-d'))->save();
             //Generamos el traspaso
             $traspaso = new \Traspaso();
             $traspaso->setIdinventariolugar($entity_array['Idinventariolugar']);
             $traspaso_fecha = \DateTime::createFromFormat('d/m/Y', $post_data['traspaso_fecha']);
             $traspaso->setTraspasoFecha($traspaso_fecha->format('Y-m-d h:m:s'));
             $traspaso->setIdordencompra($orden->getIdordencompra());
             $traspaso->setTraspasoStatus('recibido');
             $traspaso->setIdlugarremitente($post_data['traspaso_idlugarorigen']);
             $traspaso->setIdlugardestinatario($post_data["traspaso_idlugardestinatario"]);
             $traspaso->save();
             $idtraspaso = $traspaso->getIdinventariolugar();
             //Se guardo con exito la orden
             if (!$orden->isPrimaryKeyNull()) {
                 $idorden = $orden->getIdordencompra();
                 //Modificamos el idorden de nuestro traspaso
                 //Insertamos los orden items
                 foreach ($post_data["traspaso_detalles"] as $detalle) {
                     //Agregamos los detalles del traspaso
                     $traspaso_detalle = new \Traspasodetalles();
                     $traspaso_detalle->setIdtraspaso($idtraspaso)->setIdlugarinventario($detalle["idlugarinventario"])->setTraspasoCantidad($detalle["traspaso_cantidad"])->save();
                     //Agregamos el order item a la orden
                     $orden_detalle = new \Ordencompradetalle();
                     $orden_detalle->setIdordencompra($idorden)->setIdarticulovariante($detalle["idarticulovariante"])->setOrdencompradetalleCantidad($detalle["traspaso_cantidad"])->setOrdencompradetalleCosto(0.0)->setOrdencompradetallePrecio(0.0)->setOrdencompradetalleImporte(0.0);
                     if ($detalle['caducidad'] != 'N/D') {
                         $caducidad = \DateTime::createFromFormat('m/Y', $detalle['caducidad']);
                         $orden_detalle->setOrdencompradetalleCaducidad($caducidad->format('Y-m-d'));
                     }
                     $orden_detalle->save();
                     //Insertamos en nuestro almacen destinatario
                     $lugar_inventario = new \Lugarinventario();
                     $lugar_inventario->setIdlugar($post_data["traspaso_idlugardestinatario"])->setIdordencompradetalle($orden_detalle->getIdordencompradetalle())->setLugarinventarioCantidad($orden_detalle->getOrdencompradetalleCantidad())->save();
                     //Restamos del lugarinventario remitente (almacen general)
                     $lugar_inventario = \LugarinventarioQuery::create()->findPk($detalle["idlugarinventario"]);
                     $current_stock = $lugar_inventario->getLugarinventarioCantidad();
                     $new_stock = $current_stock - $orden_detalle->getOrdencompradetalleCantidad();
                     $lugar_inventario->setLugarinventarioCantidad($new_stock)->save();
                 }
             }
         }
         //Agregamos un mensaje
         $this->flashMessenger()->addMessage('Transferencia modificada exitosamente!');
         return $this->getResponse()->setContent(\Zend\Json\Json::encode(array('response' => true)));
     }
     return new ViewModel(array('id' => $id, 'transferencia' => $entity_array, 'lugares' => $lugarArray));
 }
Exemple #2
0
 /**
  * Get the associated Lugarinventario object
  *
  * @param PropelPDO $con Optional Connection object.
  * @param $doQuery Executes a query to get the object if required
  * @return Lugarinventario The associated Lugarinventario object.
  * @throws PropelException
  */
 public function getLugarinventario(PropelPDO $con = null, $doQuery = true)
 {
     if ($this->aLugarinventario === null && $this->idlugarinventario !== null && $doQuery) {
         $this->aLugarinventario = LugarinventarioQuery::create()->findPk($this->idlugarinventario, $con);
         /* The following can be used additionally to
               guarantee the related object contains a reference
               to this object.  This level of coupling may, however, be
               undesirable since it could result in an only partially populated collection
               in the referenced object.
               $this->aLugarinventario->addCargoadmisions($this);
            */
     }
     return $this->aLugarinventario;
 }
Exemple #3
0
 public function editarAction()
 {
     $request = $this->getRequest();
     if ($request->isPost()) {
         //Guaradamos nuestra variable de orden
         $orden = $request->getPost('orden');
         $idorden = $orden['idorden'];
         $orden_compra = \OrdencompraQuery::create()->findPk($idorden);
         //Setiamos los valores que nos envian
         $ordencompra_fecha = new \DateTime();
         $ordencompra_fecha = $ordencompra_fecha->createFromFormat('d/m/Y', $orden['orden_fecha']);
         if (!empty($orden['orden_fechaapagar'])) {
             $ordencompra_fechapagar = new \DateTime();
             $ordencompra_fechapagar = $ordencompra_fechapagar->createFromFormat('d/m/Y', $orden['orden_fechaapagar']);
         }
         $ordencompra_importe = $orden['orden_importe'];
         $ordencompra_importe_split = explode('$ ', $ordencompra_importe);
         $ordencompra_importe = $ordencompra_importe_split[1];
         $ordencompra_importe = str_replace(',', '', $ordencompra_importe);
         //Guardamos nuestra compra
         $orden_compra->setIdproveedor($orden["orden_proveedor"])->setOrdencompraStatus($orden['orden_status'])->setOrdencompraNofactura($orden['orden_folio'])->setOrdencompraFecha($ordencompra_fecha->format('Y-m-d'))->setOrdencompraImporte($ordencompra_importe);
         if (isset($ordencompra_fechapagar)) {
             $orden_compra->setOrdencompraFechaapagar($ordencompra_fechapagar->format('Y-m-d'));
         }
         if (!is_null($orden['orden_facturapdf'])) {
             $orden_compra->setOrdencompraFacturapdf($orden['orden_facturapdf']);
         }
         $orden_compra->save();
         //Itenaramos sobre los items
         foreach ($orden['orden_items'] as $item) {
             if (isset($item["idordendetalle"])) {
                 $item_importe = $item['ordencompradetalle_importe'];
                 $item_importe_split = explode('$ ', $item_importe);
                 $item_importe = $item_importe_split[1];
                 $item_importe = str_replace(',', '', $item_importe);
                 $ordenCompraDetalle = \OrdencompradetalleQuery::create()->findPk($item["idordendetalle"]);
                 $ordenCompraDetalle->setIdarticulovariante($item['idarticulovariante'])->setOrdencompradetalleCantidad($item['ordencompradetalle_cantidad'])->setOrdencompradetalleCosto($item['ordencompradetalle_costo'])->setOrdencompradetallePrecio($item['ordencompradetalle_precio'])->setOrdencompradetalleImporte($item_importe);
                 if (!empty($item['ordencompradetalle_caducidad'])) {
                     $ordenCompraDetalle->setOrdencompradetalleCaducidad($item['ordencompradetalle_caducidad']);
                 }
                 $ordenCompraDetalle->save();
                 //Tambien actualizamos el precio del articulo variante
                 $articulo_variante = \ArticulovarianteQuery::create()->findPk($item['idarticulovariante']);
                 $articulo_variante->setArticulovariantePrecio($item['ordencompradetalle_precio']);
                 $articulo_variante->save();
                 //Actualizamos el lugar inventario
                 $lugarInventario = \LugarinventarioQuery::create()->findOneByIdordencompradetalle($item["idordendetalle"]);
                 $lugarInventario->setLugarinventarioCantidad($ordenCompraDetalle->getOrdencompradetalleCantidad());
                 $lugarInventario->setIdlugar($orden['orden_lugar']);
                 $lugarInventario->save();
             } else {
                 $item_importe = $item['ordencompradetalle_importe'];
                 $item_importe_split = explode('$ ', $item_importe);
                 $item_importe = $item_importe_split[1];
                 $item_importe = str_replace(',', '', $item_importe);
                 $ordenCompraDetalle = new \Ordencompradetalle();
                 $ordenCompraDetalle->setIdordencompra($orden_compra->getIdordencompra())->setIdarticulovariante($item['idarticulovariante'])->setOrdencompradetalleCantidad($item['ordencompradetalle_cantidad'])->setOrdencompradetalleCosto($item['ordencompradetalle_costo'])->setOrdencompradetallePrecio($item['ordencompradetalle_precio'])->setOrdencompradetalleImporte($item_importe);
                 if (!empty($item['ordencompradetalle_caducidad'])) {
                     $ordenCompraDetalle->setOrdencompradetalleCaducidad($item['ordencompradetalle_caducidad']);
                 }
                 $ordenCompraDetalle->save();
                 //Tambien actualizamos el precio del articulo variante
                 $articulo_variante = \ArticulovarianteQuery::create()->findPk($item['idarticulovariante']);
                 $articulo_variante->setArticulovariantePrecio($item['ordencompradetalle_precio']);
                 $articulo_variante->save();
                 //Los insertamos en nuestro almacen general
                 $lugarInventario = new \Lugarinventario();
                 $lugarInventario->setIdlugar($orden['orden_lugar'])->setIdOrdencompradetalle($ordenCompraDetalle->getIdordencompradetalle())->setLugarinventarioCantidad($ordenCompraDetalle->getOrdencompradetalleCantidad())->save();
             }
         }
         //Agregamos un mensaje
         $this->flashMessenger()->addMessage('Orden guardada exitosamente!');
         return $this->getResponse()->setContent(\Zend\Json\Json::encode(array('response' => true)));
     }
     //Cachamos el valor desde nuestro params
     $id = (int) $this->params()->fromRoute('id');
     //Verificamos que el Id compra que se quiere editar
     if (!\OrdencompraQuery::create()->filterByIdordencompra($id)->exists()) {
         $id = 0;
     }
     //Si es incorrecto redireccionavos al action nuevo
     if (!$id) {
         return $this->redirect()->toRoute('compras');
     }
     $orden = array();
     //Instanciamos nuestro compra
     $compra = \OrdencompraQuery::create()->findPk($id);
     //Almacenamos los valores que nos importan en nuestro arreglo orden
     $orden['id'] = $id;
     $orden['facturapdf'] = $compra->getOrdencompraFacturapdf();
     $orden['idproveedor'] = $compra->getIdproveedor();
     $orden['proveedor'] = $compra->getProveedor()->getProveedorNombre();
     $orden['nofactura'] = $compra->getOrdencompraNofactura();
     $orden['fecha'] = $compra->getOrdencompraFecha($format = 'd/m/Y');
     $orden['fechapagar'] = $compra->getOrdencompraFechaapagar($format = 'd/m/Y');
     $orden['importe'] = $compra->getOrdencompraImporte();
     $orden['status'] = $compra->getOrdencompraStatus();
     $orden['orden_items'] = array();
     //Los detalles
     $orden_detalles = \OrdencompradetalleQuery::create()->filterByIdordencompra($id)->find();
     $i = new \Ordencompradetalle();
     $orden['idlugar'] = null;
     foreach ($orden_detalles as $item) {
         $tmp['id'] = $item->getIdordencompradetalle();
         $tmp['idarticulo'] = $item->getIdarticulovariante();
         $tmp['articulo'] = $this->getArticuloNombreByid($item->getIdarticulovariante());
         $tmp['cantidad'] = $item->getOrdencompradetalleCantidad();
         $tmp['costo'] = $item->getOrdencompradetalleCosto();
         $tmp['precio'] = $item->getOrdencompradetallePrecio();
         $tmp['importe'] = $item->getOrdencompradetalleImporte();
         $tmp['caducidad'] = $item->getOrdencompradetalleCaducidad();
         if (!is_null($tmp['caducidad'])) {
             $date_caducidad = new \DateTime($tmp['caducidad']);
             $tmp['caducidad'] = $date_caducidad->format('m/y');
         }
         $li = \LugarinventarioQuery::create()->findOneByIdordencompradetalle($item->getIdordencompradetalle());
         $orden['idlugar'] = $li->getIdlugar();
         $orden['orden_items'][] = $tmp;
     }
     $almacenes = \LugarQuery::create()->find()->toArray(null, false, \BasePeer::TYPE_FIELDNAME);
     return new ViewModel(array('almacenes' => $almacenes, 'orden' => $orden, 'flashMessages' => $this->flashMessenger()->getMessages()));
 }
 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;
 }
 public function caducidadbylugarAction()
 {
     //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('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) {
         $date = new \DateTime($vocd->getOrdencompradetalleCaducidad());
         $tmp['caducidad'] = $date->format('m/y');
         $tmp['id'] = $vocd->getIdOrdencompradetalle();
         //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;
 }
 /**
  * If this collection has already been initialized with
  * an identical criteria, it returns the collection.
  * Otherwise if this Ordencompradetalle is new, it will return
  * an empty collection; or if this Ordencompradetalle has previously
  * been saved, it will retrieve related Lugarinventarios from storage.
  *
  * This method is protected by default in order to keep the public
  * api reasonable.  You can provide public methods for those you
  * actually need in Ordencompradetalle.
  *
  * @param Criteria $criteria optional Criteria object to narrow the query
  * @param PropelPDO $con optional connection object
  * @param string $join_behavior optional join type to use (defaults to Criteria::LEFT_JOIN)
  * @return PropelObjectCollection|Lugarinventario[] List of Lugarinventario objects
  */
 public function getLugarinventariosJoinLugar($criteria = null, $con = null, $join_behavior = Criteria::LEFT_JOIN)
 {
     $query = LugarinventarioQuery::create(null, $criteria);
     $query->joinWith('Lugar', $join_behavior);
     return $this->getLugarinventarios($query, $con);
 }
Exemple #7
0
 public function listaAction()
 {
     //obtenemos nuestros almacenes
     $lugarCollection = \LugarQuery::create()->find();
     $lugarCollectionArray = array();
     foreach ($lugarCollection as $kl => $vl) {
         $lugarCollectionArray[] = array('nombre' => $vl->getLugarNombre(), 'id' => $vl->getIdLugar());
     }
     //Obtenemos nuestros productos
     $articuloCollection = \ArticuloQuery::create()->find();
     //De cada articulo obtenemos sus variaciones (articulovariante)
     $productos = array();
     foreach ($articuloCollection as $ka => $av) {
         $tmp = array();
         $tmp['nombre'] = $av->getArticuloNombre();
         $articulovarianteCollection = $av->getArticulovariantes();
         foreach ($articulovarianteCollection as $kav => $vav) {
             $tmp['id'] = $vav->getIdarticulovariante();
             $tmp['codigo_barras'] = $vav->getArticulovarianteCodigoBarras();
             $tmp['precio'] = $vav->getArticulovariantePrecio();
             $tmp['imagen'] = $vav->getArticuloVarianteImagen();
             //Por cada valor obtenemos su variaciones
             $articuloVarianteValorCollection = \ArticulovariantevalorQuery::create()->filterByIdarticulovariante($vav->getIdarticulovariante())->find();
             $tmp['descripcion'] = '';
             $propiedadCount = 0;
             foreach ($articuloVarianteValorCollection as $kavv => $vavv) {
                 $propiedadCount++;
                 $tmp['descripcion'] .= \PropiedadQuery::create()->findOneByIdpropiedad($vavv->getIdpropiedad())->getPropiedadNombre();
                 //Propiedad
                 $tmp['descripcion'] .= ':' . \PropiedadvalorQuery::create()->findOneByIdpropiedadvalor($vavv->getIdpropiedadvalor())->getPropiedadvalorNombre();
                 //PropiedadValor
                 if ($propiedadCount < $articuloVarianteValorCollection->count()) {
                     $tmp['descripcion'] .= ' - ';
                 }
             }
             //Por cada variacion obtenemos los datos de reorden
             $reordenCollection = \ArticulovariantereordenQuery::create()->findByIdarticulovariante($vav->getIdArticulovariante());
             $reordenArray = $reordenCollection->toArray();
             if (!empty($reordenArray)) {
                 //Itineramos en el
                 foreach ($reordenCollection as $krc => $vro) {
                     $tmp['reorden']['id'] = $vro->getIdArticulovariantereorden();
                     $tmp['reorden'][$vro->getLugar()->getLugarNombre()]['min'] = (int) $vro->getMinimo();
                     $tmp['reorden'][$vro->getLugar()->getLugarNombre()]['reorden'] = (int) $vro->getReorden();
                     $tmp['reorden'][$vro->getLugar()->getLugarNombre()]['max'] = (int) $vro->getMaximo();
                 }
             } else {
                 foreach ($lugarCollection as $kl => $vl) {
                     $tmp['reorden'][$vl->getLugarNombre()]['min'] = 0;
                     $tmp['reorden'][$vl->getLugarNombre()]['reorden'] = 0;
                     $tmp['reorden'][$vl->getLugarNombre()]['max'] = 0;
                 }
             }
             //Comenzamos a itinerar sobre los lugares disponibles
             foreach ($lugarCollection as $kl => $vl) {
                 //Los agregamos a nuestro arreglo
                 $tmp['reorden'][$vl->getLugarNombre()]['existencias'] = 0;
             }
             //Obtenemos las compras que se han realizado del articulo variante
             $compraDetalleCollection = \OrdencompradetalleQuery::create()->findByIdarticulovariante($vav->getIdArticuloVariante());
             //Itineramos en la coleccion de compras
             foreach ($compraDetalleCollection as $kcd => $vcd) {
                 $idCompraDetalle = $vcd->getIdOrdenCompraDetalle();
                 //por cada compra detalle la buscamos en lugar inventario
                 $lugarInventarioCollection = \LugarinventarioQuery::create()->findByIdordencompradetalle($idCompraDetalle);
                 //empezamos a itinerar en los registros para irlos sumando a nuestro lugar
                 foreach ($lugarInventarioCollection as $kli => $vli) {
                     $lugarNombre = $vli->getLugar()->getLugarNombre();
                     $cantidad = $vli->getLugarinventarioCantidad();
                     $tmp['reorden'][$lugarNombre]['existencias'] += $cantidad;
                 }
             }
             array_push($productos, $tmp);
         }
     }
     return new ViewModel(array('lugares' => $lugarCollectionArray, 'productos' => $productos));
 }
 public function nuevoAction()
 {
     // Almacenamos en un array los registros de todos los consultorios existentes en la base de datos
     $consultaCollection = \ConsultaQuery::create()->find();
     $consultaArray = array();
     foreach ($consultaCollection as $consultaEntity) {
         $consultaArray[$consultaEntity->getIdconsulta()] = $consultaEntity->getPaciente()->getPacienteNombre();
     }
     // Almacenamos en un array los registros de todos los Lugarinventario para obtener el nombre de los productos existentes en la base de datos
     $lugarinventarioCollection = \LugarinventarioQuery::create()->find();
     $lugarinventarioArray = array();
     foreach ($lugarinventarioCollection as $lugarinventarioEntity) {
         $lugarinventarioArray[$lugarinventarioEntity->getIdlugarinventario()] = $lugarinventarioEntity->getOrdencompradetalle()->getArticulovariante()->getArticulo()->getArticuloNombre();
     }
     //Intanciamos nuestro formulario cargoconsulta y le mandamos por parametro los medicos y consultorios existentes
     $cargoconsultaForm = new CargoconsultaForm($consultaArray, $lugarinventarioArray);
     $request = $this->getRequest();
     if ($request->isPost()) {
         //Instanciamos nuestro filtro
         $cargoconsultaFilter = new CargoconsultaFilter();
         //Le ponemos nuestro filtro a nuesto fromulario
         $cargoconsultaForm->setInputFilter($cargoconsultaFilter->getInputFilter());
         //Le ponemos los datos a nuestro formulario
         $cargoconsultaForm->setData($request->getPost());
         //Validamos nuestro formulario
         if ($cargoconsultaForm->isValid()) {
             //Instanciamos un nuevo objeto de nuestro objeto Paciente
             $cargoconsulta = new \Cargoconsulta();
             //Recorremos nuestro formulario y seteamos los valores a nuestro objeto Consulta
             foreach ($cargoconsultaForm->getData() as $cargoconsultaKey => $cargoconsultaValue) {
                 $cargoconsulta->setByName($cargoconsultaKey, $cargoconsultaValue, \BasePeer::TYPE_FIELDNAME);
             }
             $cargoconsulta->save();
             // Validar precio, caducidad y existencia de ordencompradetalle
             $existencia = $cargoconsulta->getLugarinventario()->getOrdencompradetalle()->getOrdencompradetalleExistencia();
             $caducidad = $cargoconsulta->getLugarinventario()->getOrdencompradetalle()->getOrdencompradetalleCaducidad();
             $precio = $cargoconsulta->getLugarinventario()->getOrdencompradetalle()->getOrdencompradetallePrecio();
             $cantidad = $cargoconsulta->getCantidad();
             if ($existencia > 0) {
                 if ($caducidad < date('Y-m-d')) {
                     $cargoconsulta->setMonto($request->getPost()->cantidad * $precio);
                 }
             }
             //Guardamos en nuestra base de datos
             $cargoconsulta->save();
             //Redireccionamos a nuestro list
             //return $this->redirect()->toRoute('pacientes');
         } else {
             $messageArray = array();
             foreach ($cargoconsultaForm->getMessages() as $key => $value) {
                 foreach ($value as $val) {
                     //Obtenemos el valor de la columna con error
                     $message = $key . ' ' . $val;
                     array_push($messageArray, $message);
                 }
             }
             var_dump($messageArray);
             return new ViewModel(array('input_error' => $messageArray));
         }
     }
     return array('cargoconsultaForm' => $cargoconsultaForm);
 }
 /**
  * Removes this object from datastore and sets delete attribute.
  *
  * @param PropelPDO $con
  * @return void
  * @throws PropelException
  * @throws Exception
  * @see        BaseObject::setDeleted()
  * @see        BaseObject::isDeleted()
  */
 public function delete(PropelPDO $con = null)
 {
     if ($this->isDeleted()) {
         throw new PropelException("This object has already been deleted.");
     }
     if ($con === null) {
         $con = Propel::getConnection(LugarinventarioPeer::DATABASE_NAME, Propel::CONNECTION_WRITE);
     }
     $con->beginTransaction();
     try {
         $deleteQuery = LugarinventarioQuery::create()->filterByPrimaryKey($this->getPrimaryKey());
         $ret = $this->preDelete($con);
         if ($ret) {
             $deleteQuery->delete($con);
             $this->postDelete($con);
             $con->commit();
             $this->setDeleted(true);
         } else {
             $con->commit();
         }
     } catch (Exception $e) {
         $con->rollBack();
         throw $e;
     }
 }
 /**
  * Returns a new LugarinventarioQuery object.
  *
  * @param     string $modelAlias The alias of a model in the query
  * @param   LugarinventarioQuery|Criteria $criteria Optional Criteria to build the query from
  *
  * @return LugarinventarioQuery
  */
 public static function create($modelAlias = null, $criteria = null)
 {
     if ($criteria instanceof LugarinventarioQuery) {
         return $criteria;
     }
     $query = new LugarinventarioQuery(null, null, $modelAlias);
     if ($criteria instanceof Criteria) {
         $query->mergeWith($criteria);
     }
     return $query;
 }