示例#1
0
 /**
  * Resets all references to other model objects or collections of model objects.
  *
  * This method is a user-space workaround for PHP's inability to garbage collect
  * objects with circular references (even in PHP 5.3). This is currently necessary
  * when using Propel in certain daemon or large-volume/high-memory operations.
  *
  * @param boolean $deep Whether to also clear the references on all referrer objects.
  */
 public function clearAllReferences($deep = false)
 {
     if ($deep && !$this->alreadyInClearAllReferencesDeep) {
         $this->alreadyInClearAllReferencesDeep = true;
         if ($this->collLugarinventarios) {
             foreach ($this->collLugarinventarios as $o) {
                 $o->clearAllReferences($deep);
             }
         }
         if ($this->aArticulovariante instanceof Persistent) {
             $this->aArticulovariante->clearAllReferences($deep);
         }
         if ($this->aOrdencompra instanceof Persistent) {
             $this->aOrdencompra->clearAllReferences($deep);
         }
         $this->alreadyInClearAllReferencesDeep = false;
     }
     // if ($deep)
     if ($this->collLugarinventarios instanceof PropelCollection) {
         $this->collLugarinventarios->clearIterator();
     }
     $this->collLugarinventarios = null;
     $this->aArticulovariante = null;
     $this->aOrdencompra = null;
 }
示例#2
0
 /**
  * Resets all references to other model objects or collections of model objects.
  *
  * This method is a user-space workaround for PHP's inability to garbage collect
  * objects with circular references (even in PHP 5.3). This is currently necessary
  * when using Propel in certain daemon or large-volume/high-memory operations.
  *
  * @param boolean $deep Whether to also clear the references on all referrer objects.
  */
 public function clearAllReferences($deep = false)
 {
     if ($deep && !$this->alreadyInClearAllReferencesDeep) {
         $this->alreadyInClearAllReferencesDeep = true;
         if ($this->collTraspasodetalless) {
             foreach ($this->collTraspasodetalless as $o) {
                 $o->clearAllReferences($deep);
             }
         }
         if ($this->aLugarRelatedByIdlugardestinatario instanceof Persistent) {
             $this->aLugarRelatedByIdlugardestinatario->clearAllReferences($deep);
         }
         if ($this->aLugarRelatedByIdlugarremitente instanceof Persistent) {
             $this->aLugarRelatedByIdlugarremitente->clearAllReferences($deep);
         }
         if ($this->aOrdencompra instanceof Persistent) {
             $this->aOrdencompra->clearAllReferences($deep);
         }
         $this->alreadyInClearAllReferencesDeep = false;
     }
     // if ($deep)
     if ($this->collTraspasodetalless instanceof PropelCollection) {
         $this->collTraspasodetalless->clearIterator();
     }
     $this->collTraspasodetalless = null;
     $this->aLugarRelatedByIdlugardestinatario = null;
     $this->aLugarRelatedByIdlugarremitente = null;
     $this->aOrdencompra = null;
 }
示例#3
0
 /**
  * @return \yii\db\ActiveQuery
  */
 public function getOrdencompras()
 {
     return $this->hasMany(Ordencompra::className(), ['idproveedor' => 'idproveedor']);
 }
示例#4
0
 /**
  * Filter the query by a related Ordencompra object
  *
  * @param   Ordencompra|PropelObjectCollection $ordencompra The related object(s) to use as filter
  * @param     string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
  *
  * @return                 TraspasoQuery The current query, for fluid interface
  * @throws PropelException - if the provided filter is invalid.
  */
 public function filterByOrdencompra($ordencompra, $comparison = null)
 {
     if ($ordencompra instanceof Ordencompra) {
         return $this->addUsingAlias(TraspasoPeer::IDORDENCOMPRA, $ordencompra->getIdordencompra(), $comparison);
     } elseif ($ordencompra instanceof PropelObjectCollection) {
         if (null === $comparison) {
             $comparison = Criteria::IN;
         }
         return $this->addUsingAlias(TraspasoPeer::IDORDENCOMPRA, $ordencompra->toKeyValue('PrimaryKey', 'Idordencompra'), $comparison);
     } else {
         throw new PropelException('filterByOrdencompra() only accepts arguments of type Ordencompra or PropelCollection');
     }
 }
 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));
 }
 function confirmar()
 {
     $id = $_REQUEST['idOrdenCompra'];
     $dataOrdenCompra = $_REQUEST['OrdenCompra'];
     $dataOrdenCompraDetalle = $_REQUEST['Detalleordencompra'];
     //echo '<pre>';
     //print_r($dataOrdenCompraDetalle);
     //exit;
     $dataOrdenCompra['valorizado'] = 1;
     if ($_REQUEST['conformidad'] != 'on') {
         $dataOrdenCompra['vbimportaciones'] = 0;
     }
     if ($_REQUEST['registrado'] == 1) {
         $detalleMovimiento = $this->AutoLoadModel('detallemovimiento');
         $dataproducto = $_REQUEST['Producto'];
     }
     $totalDOC = count($dataOrdenCompraDetalle);
     $ordenCompra = new Ordencompra();
     $detalleOrdenCompra = new Detalleordencompra();
     $producto = new Producto();
     $historialProducto = new Historialproducto();
     $exito1 = $ordenCompra->actualizaOrdenCompra($dataOrdenCompra, $id);
     for ($i = 1; $i <= $totalDOC; $i++) {
         //Actualizando el DetalleOrdenCompra
         $idDOC = $dataOrdenCompraDetalle[$i]['iddetalleordencompra'];
         $ddoci = $dataOrdenCompraDetalle[$i];
         $exito_doc = $detalleOrdenCompra->actualizaDetalleOrdenCompra($ddoci, $idDOC);
         $idProducto = $dataOrdenCompraDetalle[$i]['idproducto'];
         if ($_REQUEST['registrado'] == 1) {
             $tcv = $ordenCompra->TipoCambioxIdOrdenCompra($id);
             $tipocambio = $tcv[0]['tipocambiovigente'];
             $filtro = "m.idordencompra='{$id}' and dm.idproducto='{$idProducto}' ";
             $dataMovimiento = $detalleMovimiento->buscaDetalleMovimientoxFiltro($filtro);
             $iddetallemovimiento = $dataMovimiento[0]['iddetallemovimiento'];
             $precioCosto = $dataOrdenCompraDetalle[$i]['cifunitario'] * $tipocambio;
             $cantidadRecibida = $dataOrdenCompraDetalle[$i]['cantidadrecibidaoc'];
             $stockactual = $dataMovimiento[0]['stockactual'] - $dataMovimiento[0]['cantidad'];
             $precioactual = $dataproducto[$i]['preciocosto'];
             $stockproducto = $stockactual + $cantidadRecibida;
             $preciovalorizado = ($precioCosto * $cantidadRecibida + $stockactual * $precioactual) / $stockproducto;
             $preciovalorizado = round($preciovalorizado, 2);
             $ddm['preciovalorizado'] = $preciovalorizado;
             $ddm['pu'] = $precioCosto;
             $datop['preciocosto'] = $preciovalorizado;
             $exitoM = $detalleMovimiento->actualizaDetalleMovimientoxid($iddetallemovimiento, $ddm);
         }
         $datop['fob'] = $dataOrdenCompraDetalle[$i]['fobdoc'];
         $exitoP = $producto->actualizaProducto($datop, $idProducto);
         // $preciocosto=$dataOrdenCompraDetalle[$i]['totalunitario'];
         // $idproducto=$dataOrdenCompraDetalle[$i]['idproducto'];
         // $cantidad=$dataOrdenCompraDetalle[$i]['cantidadsolicitadaoc'];
         // $dp=$producto->buscaProducto($idproducto);//Data producto
         // $psv=(($dp[0]['stockactual']*$dp[0]['preciocosto'])+($cantidad*$precioCosto))/($dp[0]['stockactual']+$cantidad);//Precio de stock valorizado
         // /*Datos de la tabla producto*/
         // $dp1['preciocosto']=$precioCosto;
         // $dp1['fob']=$dataOrdenCompraDetalle[$i]['fobdoc'];
         // $dp1['cif']=$dataOrdenCompraDetalle[$i]['cifunitario'];
         // $dp1['precioreferencia01']=($psv*1.10);
         // //Datos para Historial producto
         // $dhp['idproducto']=$idproducto;
         // $dhp['preciofob']=$dataOrdenCompraDetalle[$i]['fobdoc'];
         // $dhp['hpreciocosto']=$precioCosto;
         // $dhp['preciostockvalorizado']=$psv;
         // $exito2=$producto->actualizaProducto($dp1,$idproducto);
         // $exito3=$historialProducto->grabaHistorialProducto($dhp);
     }
     if ($exito_doc and $exito1) {
         $ruta['ruta'] = "/importaciones/ordencompra";
         $this->view->show('ruteador.phtml', $ruta);
     }
 }
示例#7
0
 public function guardarordenAction()
 {
     //Recibimos la orden como parametro
     $request = $this->request;
     $orden = $request->getPost('orden');
     //Cre un nuevo objeto de ordencompra
     $ordenCompra = new \Ordencompra();
     //Seteo los datos
     $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
     $ordenCompra->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)) {
         $ordenCompra->setOrdencompraFechaapagar($ordencompra_fechapagar->format('Y-m-d'));
     }
     if (!is_null($orden['orden_facturapdf'])) {
         $ordenCompra->setOrdencompraFacturapdf($orden['orden_facturapdf']);
     }
     //echo '<pre>';var_dump($ordenCompra->toArray()); echo '<pre>';exit();
     $ordenCompra->save();
     //Itenaramos sobre los items
     foreach ($orden['orden_items'] as $item) {
         $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($ordenCompra->getIdordencompra())->setIdarticulovariante($item['idarticulovariante'])->setOrdencompradetalleCantidad($item['ordencompradetalle_cantidad'])->setOrdencompradetalleCosto($item['ordencompradetalle_costo'])->setOrdencompradetallePrecio($item['ordencompradetalle_precio'])->setOrdencompradetalleImporte($item_importe);
         if (!empty($item['ordencompradetalle_caducidad'])) {
             $caducidad = \DateTime::createFromFormat('m/Y', $item['ordencompradetalle_caducidad']);
             $caducidad = $caducidad->format('Y-m-d');
             $ordenCompraDetalle->setOrdencompradetalleCaducidad($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->setArticulovarianteCosto($item['ordencompradetalle_costo']);
         $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 generada exitosamente!');
     return $this->getResponse()->setContent(\Zend\Json\Json::encode(array('response' => true)));
 }
示例#8
0
 /**
  * Adds an object to the instance pool.
  *
  * Propel keeps cached copies of objects in an instance pool when they are retrieved
  * from the database.  In some cases -- especially when you override doSelect*()
  * methods in your stub classes -- you may need to explicitly add objects
  * to the cache in order to ensure that the same objects are always returned by doSelect*()
  * and retrieveByPK*() calls.
  *
  * @param Ordencompra $obj A Ordencompra object.
  * @param      string $key (optional) key to use for instance map (for performance boost if key was already calculated externally).
  */
 public static function addInstanceToPool($obj, $key = null)
 {
     if (Propel::isInstancePoolingEnabled()) {
         if ($key === null) {
             $key = (string) $obj->getIdordencompra();
         }
         // if key === null
         OrdencompraPeer::$instances[$key] = $obj;
     }
 }
示例#9
0
 function registra()
 {
     $dataMovimiento = $_REQUEST['Movimiento'];
     $idOrdenCompra = $dataMovimiento[idordencompra];
     $numero = $_REQUEST['txtCantidadDetalleMovimiento'];
     $producto = new Producto();
     $movimiento = new Movimiento();
     $detalleMovimiento = new Detallemovimiento();
     $ordenCompra = new Ordencompra();
     $detalleOrdenCompra = new Detalleordencompra();
     $historialProducto = new Historialproducto();
     $exitoMovimiento = $movimiento->grabaMovimiento($dataMovimiento);
     $operacion = $dataMovimiento[idtipomovimiento] == 1 ? "+" : "-";
     //Si el concepto movimiento es ingreso por compras
     if ($dataMovimiento[idordencompra]) {
         $dataOrdenCompra = array('registrado' => '1');
         $exitoOrdenCompra = $ordenCompra->actualizaOrdenCompra($dataOrdenCompra, $idOrdenCompra);
         for ($i = 1; $i <= $numero; $i++) {
             $datosDetalleMovimiento = $_REQUEST['Detallemovimiento' . $i];
             $datosProducto = $_REQUEST['Producto' . $i];
             if ($datosDetalleMovimiento[estado]) {
                 $cantidad = $datosDetalleMovimiento[cantidadrecibida];
                 $idProducto = $datosDetalleMovimiento[idproducto];
                 $iddetalleordencompra = $datosDetalleMovimiento[iddetalleordencompra];
                 //Obtenemos el stock actual y agregamos el elemento stockactual al
                 //array $datosProducto y lo actualizamos la tabla wc_producto
                 $dataProducto = $producto->buscaProducto($idProducto);
                 $datosProducto['stockactual'] = $dataProducto[0]['stockactual'] + $cantidad;
                 $exitoProducto = $producto->actualizaProducto($datosProducto, $idProducto);
                 //Actualizamos la cantidadrecibida de la tabla wc_detalleordencompra
                 $cantidadRecibida = array('cantidadrecibida' => $cantidad);
                 $exitoDetalleOrdenCompra = $detalleOrdenCompra->actualizaDetalleOrdenCompra($cantidadRecibida, $iddetalleordencompra);
                 //Preparar el array $datosProducto para insertar registro en al tabla
                 //wc_historialproducto. Eliminamos los elemtos stockactual y preciolista
                 //luego agregamos idproducto y cantidad.
                 unset($datosProducto['stockactual']);
                 unset($datosProducto['preciolista']);
                 $datosProducto['idproducto'] = $idProducto;
                 $datosProducto['cantidad'] = $cantidad;
                 $datosProducto['fecha'] = date('Y/m/d');
                 $exitoHistorialProducto = $historialProducto->grabaHistorialProducto($datosProducto);
                 //Preparamos el array $datosDetalleMovimiento para insertar registro en la
                 //tabla wc_detallemovimiento.
                 unset($datosDetalleMovimiento['iddetalleordencompra']);
                 unset($datosDetalleMovimiento['estado']);
                 array_splice($datosDetalleMovimiento, -2);
                 $datosDetalleMovimiento['cantidad'] = $cantidad;
                 $exitoDetalleMovimiento = $detalleMovimiento->grabaDetalleMovimieto($datosDetalleMovimiento);
             }
         }
         if ($exitoMovimiento and $exitoOrdenCompra and $exitoProducto and $exitoDetalleOrdenCompra and $exitoHistorialProducto and $exitoDetalleMovimiento) {
             $ruta['ruta'] = "/movimiento/listar";
             $this->view->show("ruteador.phtml", $ruta);
         }
     } else {
         $dataDetalleMovimiento = array_splice($_REQUEST, 3, count($_REQUEST) - 8);
         foreach ($dataDetalleMovimiento as $data) {
             $cantidad = $data[cantidad];
             $idProducto = $data[idproducto];
             $dataProducto = $producto->buscaProducto($idProducto);
             $stockActual = $dataProducto[0]['stockactual'];
             $stockNuevo = $operacion == '+' ? array('stockactual' => $stockActual + $cantidad) : array('stockactual' => $stockActual - $cantidad);
             $exitoDetalleMovimiento = $detalleMovimiento->grabaDetalleMovimieto($data);
             $exitoProducto = $producto->actualizaProducto($stockNuevo, $idProducto);
         }
         if ($exitoMovimiento and $exitoDetalleMovimiento and $exitoProducto) {
             $ruta['ruta'] = "/movimiento/listar";
             $this->view->show("ruteador.phtml", $ruta);
         }
     }
 }
示例#10
0
 function agotados()
 {
     $fecha = $_REQUEST['fecha'];
     $fechaInicio = $_REQUEST['fechaInicio'];
     $fechaFinal = $_REQUEST['fechaFinal'];
     $idProducto = $_REQUEST['idProducto'];
     $repote = new Reporte();
     $ordenCompra = new Ordencompra();
     $linea = new Linea();
     $cantidadDoc = 0;
     $rutaImagen = $this->rutaImagenesProducto();
     $data = $repote->reporteAgotados($fecha, $fechaInicio, $fechaFinal, $idProducto);
     //$data=$repote->reporteAgotados('','','','');
     $unidadMedida = $this->unidadMedida();
     $cantidadData = count($data);
     for ($i = 0; $i < $cantidadData; $i++) {
         $fu = '';
         //Fecha ultima compra
         $fp = '';
         //Fecha penultima compra
         $c1 = 0;
         //Cantidad 1
         $c2 = 0;
         //Cantidad 2
         $doc = $ordenCompra->lista2UltimasCompras($data[$i]['idproducto']);
         $cantidadDoc = count($doc);
         //Data orden compra
         if ($cantidadDoc) {
             if ($cantidadDoc == 2) {
                 $fu = $doc[0]['fordencompra'];
                 $fp = $doc[1]['fordencompra'];
                 $c1 = $doc[0]['cantidadsolicitadaoc'];
                 $c2 = $doc[1]['cantidadsolicitadaoc'];
             } else {
                 $fu = $doc[0]['fordencompra'];
                 $c1 = $doc[0]['cantidadsolicitadaoc'];
             }
         }
         //><img src="'.$rutaImagen.$data[$i]['codigo'].'/'.$data[$i]['imagen'].'"></td>';
         $data[$i]['codigo'] = $data[$i]['codigop'];
         $data[$i]['nompro'] = $data[$i]['nompro'];
         $data[$i]['fechaultima'] = date("d/m/Y", strtotime($fu));
         $data[$i]['cantidadultima'] = $c1;
         $data[$i]['fechapenultima'] = date("d/m/Y", strtotime($fp));
         $data[$i]['cantidadpenultima'] = $c2;
         $data[$i]['nomlin'] = $linea->nombrexid($data[$i]['idlinea']);
     }
     $pdf = new PDF_Mc_Table("L", "mm", "A4");
     $titulos = array('Penultima', 'C.Penul', 'Ultima', 'C. Ultima', 'codigo', 'Descripcion', 'Sublinea');
     $columnas = array('fechapenultima', 'cantidadpenultima', 'fechaultima', 'cantidadultima', 'codigo', 'nompro', 'nomlin');
     $ancho = array(20, 15, 25, 18, 22, 110, 70);
     $orientacion = array('C', 'C', 'C', 'C', 'C', '', '');
     $pdf->_titulo = "Reporte de Agotados";
     $pdf->AddPage();
     $relleno = true;
     $pdf->SetFillColor(202, 232, 234);
     $pdf->SetTextColor(12, 78, 139);
     $pdf->SetDrawColor(12, 78, 139);
     $pdf->SetLineWidth(0.3);
     $pdf->SetFont('Helvetica', 'B', 8);
     $pdf->fill($relleno);
     //un arreglo con su medida  a lo ancho
     $pdf->SetWidths($ancho);
     $valor = "Reporte de Ventas";
     $pdf->titlees($valor);
     //un arreglo con alineacion de cada celda
     $pdf->SetAligns($orientacion);
     for ($i = 0; $i < count($titulos); $i++) {
         $pdf->Cell($ancho[$i], 7, $titulos[$i], 1, 0, 'C', true);
     }
     $pdf->Ln();
     $pdf->SetFillColor(224, 235, 255);
     $pdf->SetTextColor(0);
     $pdf->SetFont('');
     for ($i = 0; $i < $cantidadData; $i++) {
         $fila = array($data[$i]['fechapenultima'], $data[$i]['cantidadpenultima'], utf8_decode($data[$i]['fechaultima']), $data[$i]['cantidadultima'], $data[$i]['codigo'], utf8_decode($data[$i]['nompro']), $data[$i]['nomlin']);
         $pdf->Row($fila);
         $relleno = !$relleno;
         $pdf->fill($relleno);
     }
     $pdf->AliasNbPages();
     $pdf->Output();
 }
示例#11
0
 /**
  * @param	Ordencompra $ordencompra The ordencompra object to add.
  */
 protected function doAddOrdencompra($ordencompra)
 {
     $this->collOrdencompras[] = $ordencompra;
     $ordencompra->setProveedor($this);
 }
示例#12
0
 /**
  * @return \yii\db\ActiveQuery
  */
 public function getOrdencompras()
 {
     return $this->hasMany(Ordencompra::className(), ['estatus_did' => 'id']);
 }
示例#13
0
 /**
  * @return \yii\db\ActiveQuery
  */
 public function getOrdencompras()
 {
     return $this->hasMany(Ordencompra::className(), ['requisicion_did' => 'id']);
 }
示例#14
0
 /**
  * @return \yii\db\ActiveQuery
  */
 public function getOrdencompras()
 {
     return $this->hasMany(Ordencompra::className(), ['idcordinacion' => 'idcoordinacion']);
 }
示例#15
0
 /**
  * Exclude object from result
  *
  * @param   Ordencompra $ordencompra Object to remove from the list of results
  *
  * @return OrdencompraQuery The current query, for fluid interface
  */
 public function prune($ordencompra = null)
 {
     if ($ordencompra) {
         $this->addUsingAlias(OrdencompraPeer::IDORDENCOMPRA, $ordencompra->getIdordencompra(), Criteria::NOT_EQUAL);
     }
     return $this;
 }
示例#16
0
 function ordenCompra()
 {
     if (count($_REQUEST) == 6) {
         $ordenCompra = new Ordencompra();
         /*$url="/".$_REQUEST['url'];
         		$opciones=new general();
         		$data['Opcion']=$opciones->buscaOpcionexurl($url);
         		$data['Modulo']=$opciones->buscaModulosxurl($url);*/
         $data['Ordencompra'] = $ordenCompra->listadoOrdenescompra();
         $this->view->show("/reporte/ordencompra.phtml", $data);
     } else {
         $idProveedor = $_REQUEST['idProveedor'];
         $fecha = $_REQUEST['fecha'];
         $fechaInicio = $_REQUEST['fechaInicio'];
         $fechaFinal = $_REQUEST['fechaFinal'];
         $repote = new Reporte();
         $data = $repote->reporteOrdenCompra($idProveedor, $fecha, $fechaInicio, $fechaFinal);
         $data2 = array();
         for ($i = 0; $i < count($data); $i++) {
             $data2[$i]['codigooc'] = $data[$i]['codigooc'];
             $data2[$i]['fordencompra'] = date("d/m/Y", strtotime($data[$i]['fordencompra']));
             $data2[$i]['nomalm'] = $data[$i]['nomalm'] . '</td>';
             $data2[$i]['razonsocialp'] = $data[$i]['razonsocialp'];
             $data2[$i]['fob'] = $data[$i]['fob'];
         }
         $objeto = $this->formatearparakui($data2);
         header("Content-type: application/json");
         echo json_encode($objeto);
     }
 }
示例#17
0
 /**
  * Filter the query by a related Ordencompra object
  *
  * @param   Ordencompra|PropelObjectCollection $ordencompra  the related object to use as filter
  * @param     string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
  *
  * @return                 ProveedorQuery The current query, for fluid interface
  * @throws PropelException - if the provided filter is invalid.
  */
 public function filterByOrdencompra($ordencompra, $comparison = null)
 {
     if ($ordencompra instanceof Ordencompra) {
         return $this->addUsingAlias(ProveedorPeer::IDPROVEEDOR, $ordencompra->getIdproveedor(), $comparison);
     } elseif ($ordencompra instanceof PropelObjectCollection) {
         return $this->useOrdencompraQuery()->filterByPrimaryKeys($ordencompra->getPrimaryKeys())->endUse();
     } else {
         throw new PropelException('filterByOrdencompra() only accepts arguments of type Ordencompra or PropelCollection');
     }
 }
示例#18
0
 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;
 }
示例#19
0
 /**
  * @return \yii\db\ActiveQuery
  */
 public function getOrdencompraD()
 {
     return $this->hasOne(Ordencompra::className(), ['id' => 'ordencompra_did']);
 }
示例#20
0
 public function actionAjaxObtenerOrdenesProveedor()
 {
     $idProveedor = $_POST['idProveedor'];
     $ordenes = Ordencompra::model()->ObtenerOrdenesXProveedor($idProveedor);
     Util::renderJSON($ordenes);
 }