Ejemplo n.º 1
0
 /**
  * 
  * @param int $grupo_dispo_cab_id
  * @param string $grado_id
  * @param string $cadena_color_ventas_ids
  * @param string $cadena_calidad_variedad_ids
  * @param float $porcentaje
  * @param int $valor
  * @param int $usuario_id
  * @throws Exception
  * @return array
  */
 function grabarPorGrupoPorGrado($grupo_dispo_cab_id, $grado_id, $cadena_color_ventas_ids, $cadena_calidad_variedad_ids, $porcentaje, $valor, $usuario_id)
 {
     $this->getEntityManager()->getConnection()->beginTransaction();
     try {
         $GrupoDispoDetDAO = new GrupoDispoDetDAO();
         $GrupoDispoDetData = new GrupoDispoDetData();
         $GrupoDispoDetDAO->setEntityManager($this->getEntityManager());
         $condiciones['grupo_dispo_cab_id'] = $grupo_dispo_cab_id;
         $condiciones['color_ventas_id'] = null;
         $condiciones['calidad_variedad_id'] = null;
         $condiciones['cadena_color_ventas_ids'] = $cadena_color_ventas_ids;
         $condiciones['cadena_calidad_variedad_ids'] = $cadena_calidad_variedad_ids;
         $result = $this->listado($condiciones);
         $campo_grado_dispogen = "dgen_" . $grado_id;
         foreach ($result as $reg) {
             $GrupoDispoDetData->setGrupoDispoCabId($grupo_dispo_cab_id);
             $GrupoDispoDetData->setProductoId($reg['producto_id']);
             $GrupoDispoDetData->setVariedadId($reg['variedad_id']);
             $GrupoDispoDetData->setGradoId($grado_id);
             $GrupoDispoDetData->setTallosXBunch($reg['tallos_x_bunch']);
             if ($porcentaje != 0) {
                 $cantidad_bunch = floor($reg[$campo_grado_dispogen] * $porcentaje / 100);
             } else {
                 if ($valor != 0) {
                     $cantidad_bunch = $valor;
                 } else {
                     $cantidad_bunch = 0;
                 }
             }
             //end if
             if ($cantidad_bunch > $reg[$campo_grado_dispogen]) {
                 $cantidad_bunch = $reg[$campo_grado_dispogen];
             }
             //end if
             $GrupoDispoDetData->setCantidadBunch($cantidad_bunch);
             $GrupoDispoDetData->setCantidadBunchDisponible($cantidad_bunch);
             $GrupoDispoDetData->setUsuarioModId($usuario_id);
             $GrupoDispoDetData->setUsuarioIngId($usuario_id);
             $GrupoDispoDetDAO->registrar($GrupoDispoDetData);
         }
         //end foreach
         $result['validacion_code'] = 'OK';
         $result['respuesta_mensaje'] = '';
         $this->getEntityManager()->getConnection()->commit();
         return $result;
     } catch (Exception $e) {
         $this->getEntityManager()->getConnection()->rollback();
         $this->getEntityManager()->close();
         throw $e;
     }
 }
 function grabarstockAction()
 {
     try {
         $SesionUsuarioPlugin = $this->SesionUsuarioPlugin();
         $EntityManagerPlugin = $this->EntityManagerPlugin();
         $GrupoDispoCabBO = new GrupoDispoCabBO();
         $GrupoDispoCabBO->setEntityManager($EntityManagerPlugin->getEntityManager());
         $respuesta = $SesionUsuarioPlugin->isLoginAdmin();
         if ($respuesta == false) {
             return false;
         }
         $usuario_id = $SesionUsuarioPlugin->getUsuarioId();
         $body = $this->getRequest()->getContent();
         $json = json_decode($body, true);
         $GrupoDispoDetData = new GrupoDispoDetData();
         $GrupoDispoDetData->setGrupoDispoCabId($json['grupo_dispo_cab_id']);
         $GrupoDispoDetData->setProductoId($json['producto_id']);
         $GrupoDispoDetData->setVariedadId($json['variedad_id']);
         $GrupoDispoDetData->setGradoId($json['grado_id']);
         $GrupoDispoDetData->setTallosXBunch($json['tallos_x_bunch']);
         $GrupoDispoDetData->setCantidadBunchDisponible($json['cantidad_bunch_disponible']);
         $GrupoDispoDetData->setUsuarioIngId($usuario_id);
         $GrupoDispoDetData->setUsuarioModId($usuario_id);
         $result = $GrupoDispoCabBO->registrarStock($GrupoDispoDetData);
         //Retorna la informacion resultante por JSON
         $response = new \stdClass();
         $response->respuesta_code = 'OK';
         $response->validacion_code = $result['validacion_code'];
         $response->respuesta_mensaje = $result['respuesta_mensaje'];
         $json = new JsonModel(get_object_vars($response));
         return $json;
         //false
     } catch (\Exception $e) {
         $excepcion_msg = utf8_encode($this->ExcepcionPlugin()->getMessageFormat($e));
         $response = $this->getResponse();
         $response->setStatusCode(500);
         $response->setContent($excepcion_msg);
         return $response;
     }
 }
Ejemplo n.º 3
0
 /**
  * 
  * @param DispoData $DispoData
  * @param array $grados
  * @param int $color_ventas_id
  * @param int $calidad_variedad_id
  */
 public function moverStock($DispoData, $grados, $color_ventas_id, $calidad_variedad_id, $clasifica_destino)
 {
     $GrupoDispoDetDAO = new GrupoDispoDetDAO();
     $DispoDAO = new DispoDAO();
     $CalidadDAO = new CalidadDAO();
     $GrupoDispoCabDAO = new GrupoDispoCabDAO();
     $GrupoDispoDetData = new GrupoDispoDetData();
     $GrupoDispoDetDAO->setEntityManager($this->getEntityManager());
     $DispoDAO->setEntityManager($this->getEntityManager());
     $CalidadDAO->setEntityManager($this->getEntityManager());
     $GrupoDispoCabDAO->setEntityManager($this->getEntityManager());
     //Se establece el RANGO DE GRADOS al que se va afectar
     $flag_1era_vez = true;
     $sql_grados = '';
     foreach ($grados as $reg) {
         if (!$flag_1era_vez) {
             $sql_grados = $sql_grados . ",";
         }
         //end if
         $sql_grados = $sql_grados . "'" . $reg['grado_id'] . "'";
         $flag_1era_vez = false;
     }
     //end foreach
     //Se consulta el registro de la DISPO ORIGEN
     $sql = " SELECT dispo.* " . " FROM dispo INNER JOIN variedad " . "                    ON variedad.id \t\t= dispo.variedad_id ";
     if (!empty($calidad_variedad_id)) {
         $sql = $sql . "             AND variedad.calidad_variedad_id = " . $calidad_variedad_id;
     }
     //end if
     if (!empty($color_ventas_id)) {
         $sql = $sql . "      LEFT JOIN color_ventas " . "                    ON color_ventas.id \t= dispo.color_ventas_id ";
     }
     //end if
     $sql = $sql . " WHERE dispo.inventario_id \t= '" . $DispoData->getInventarioId() . "'" . "   and dispo.producto \t\t\t= '" . $DispoData->getProducto() . "'" . "   and dispo.variedad_id\t\t= '" . $DispoData->getVariedadId() . "'" . "   and dispo.grado_id \t\t\tin (" . $sql_grados . ")" . "   and dispo.tallos_x_bunch \t= " . $DispoData->getTallosxbunch() . "\tand dispo.clasifica\t\t \t= '" . $DispoData->getClasifica() . "'";
     $stmt = $this->getEntityManager()->getConnection()->prepare($sql);
     $stmt->execute();
     $result = $stmt->fetchAll();
     //Se utiliza el fecth por que es un registro
     $DispoDataFind = new DispoData();
     $DispoDataTarget = new DispoData();
     foreach ($result as $reg) {
         $DispoDataFind->setFecha($reg['fecha']);
         $DispoDataFind->setInventarioId($reg['inventario_id']);
         $DispoDataFind->setFechaBunch($reg['fecha_bunch']);
         $DispoDataFind->setProveedorId($reg['proveedor_id']);
         $DispoDataFind->setProducto($reg['producto']);
         $DispoDataFind->setVariedadId($reg['variedad_id']);
         $DispoDataFind->setGradoId($reg['grado_id']);
         $DispoDataFind->setTallosxBunch($reg['tallos_x_bunch']);
         $DispoDataFind->setClasifica($clasifica_destino);
         $DispoDataSource = $this->consultarPorKey($DispoDataFind);
         if (empty($DispoDataSource)) {
             $DispoDataTarget->setFecha($reg['fecha']);
             $DispoDataTarget->setInventarioId($reg['inventario_id']);
             $DispoDataTarget->setFechaBunch($reg['fecha_bunch']);
             $DispoDataTarget->setProveedorId($reg['proveedor_id']);
             $DispoDataTarget->setProducto($reg['producto']);
             $DispoDataTarget->setVariedadId($reg['variedad_id']);
             $DispoDataTarget->setGradoId($reg['grado_id']);
             $DispoDataTarget->setTallosxBunch($reg['tallos_x_bunch']);
             $DispoDataTarget->setClasifica($clasifica_destino);
             $DispoDataTarget->setCantidadBunch($reg['cantidad_bunch']);
             $DispoDataTarget->setCantidadBunchDisponible($reg['cantidad_bunch_disponible']);
             $DispoDataTarget->setClasifica($clasifica_destino);
             $id = $this->ingresar($DispoDataTarget);
         } else {
             //Se actualiza la dispo de DESTINO (acumula)
             $sql = " UPDATE dispo " . " SET cantidad_bunch_disponible = cantidad_bunch_disponible + " . $reg['cantidad_bunch_disponible'] . " WHERE fecha\t\t\t\t= '" . $reg['fecha'] . "'" . "\tand inventario_id \t\t= '" . $reg['inventario_id'] . "'" . "   and fecha_bunch\t\t\t= '" . $reg['fecha_bunch'] . "'" . "   and proveedor_id\t\t= '" . $reg['proveedor_id'] . "'" . "\tand producto\t\t\t= '" . $reg['producto'] . "'" . "   and variedad_id\t\t\t= '" . $reg['variedad_id'] . "'" . "\tand grado_id\t\t\t= " . $reg['grado_id'] . "\tand tallos_x_bunch\t\t= " . $reg['tallos_x_bunch'] . "\tand clasifica\t\t\t= '" . $clasifica_destino . "'";
             $count = $this->getEntityManager()->getConnection()->executeUpdate($sql);
         }
         //end if
         //Se resta la dispo de ORIGEN (DISMINUYE)
         $sql = " UPDATE dispo " . " SET cantidad_bunch_disponible = cantidad_bunch_disponible - " . $reg['cantidad_bunch_disponible'] . " WHERE fecha\t\t\t\t= '" . $reg['fecha'] . "'" . "\tand inventario_id \t\t= '" . $reg['inventario_id'] . "'" . "   and fecha_bunch\t\t\t= '" . $reg['fecha_bunch'] . "'" . "   and proveedor_id\t\t= '" . $reg['proveedor_id'] . "'" . "   and producto\t\t\t= '" . $reg['producto'] . "'" . "   and variedad_id\t\t\t= '" . $reg['variedad_id'] . "'" . "\tand grado_id\t\t\t= " . $reg['grado_id'] . "\tand tallos_x_bunch\t\t= " . $reg['tallos_x_bunch'] . "\tand clasifica\t\t\t= '" . $reg['clasifica'] . "'";
         $count = $this->getEntityManager()->getConnection()->executeUpdate($sql);
         //ACTUALIZA EL STOCK DE LOS GRUPOS DESTINO
         $tot_stock = $DispoDAO->consultartotalInventario($reg['inventario_id'], $reg['producto'], $clasifica_destino, $reg['variedad_id'], $reg['grado_id'], $reg['tallos_x_bunch']);
         /*if ($tot_stock['tot_cantidad_bunch'] < $tot_stock['tot_bunch_disponible'])
         		{
         			$tot_stock['tot_bunch_disponible'] = $tot_stock['tot_cantidad_bunch'];
         		}//end if
         		*/
         $CalidadData = $CalidadDAO->consultarPorClasificaFox($clasifica_destino);
         $result_dispocab = $GrupoDispoCabDAO->consultarPorInventario($reg['inventario_id'], $CalidadData->getId());
         foreach ($result_dispocab as $reg_dispocab) {
             $GrupoDispoDetData->setGrupoDispoCabId($reg_dispocab['id']);
             $GrupoDispoDetData->setProductoId($reg['producto']);
             $GrupoDispoDetData->setVariedadId($reg['variedad_id']);
             $GrupoDispoDetData->setGradoId($reg['grado_id']);
             $GrupoDispoDetData->setTallosXBunch($reg['tallos_x_bunch']);
             $GrupoDispoDetData->setCantidadBunch($tot_stock['tot_cantidad_bunch']);
             $GrupoDispoDetData->setCantidadBunchDisponible($tot_stock['tot_bunch_disponible']);
             $GrupoDispoDetData->setUsuarioModId(1);
             $GrupoDispoDetData->setUsuarioIngId(1);
             $GrupoDispoDetDAO->registrar($GrupoDispoDetData);
         }
         //end foreach
         //ACTUALIZA EL STOCK DE LOS GRUPOS ORIGEN
         $tot_stock = $DispoDAO->consultartotalInventario($reg['inventario_id'], $reg['producto'], $reg['clasifica'], $reg['variedad_id'], $reg['grado_id'], $reg['tallos_x_bunch']);
         /*if ($tot_stock['tot_cantidad_bunch'] < $tot_stock['tot_bunch_disponible'])
         		{
         			$tot_stock['tot_bunch_disponible'] = $tot_stock['tot_cantidad_bunch'];
         		}//end if
         		*/
         $CalidadData = $CalidadDAO->consultarPorClasificaFox($reg['clasifica']);
         $result_dispocab = $GrupoDispoCabDAO->consultarPorInventario($reg['inventario_id'], $CalidadData->getId());
         foreach ($result_dispocab as $reg_dispocab) {
             $GrupoDispoDetData->setGrupoDispoCabId($reg_dispocab['id']);
             $GrupoDispoDetData->setProductoId($reg['producto']);
             $GrupoDispoDetData->setVariedadId($reg['variedad_id']);
             $GrupoDispoDetData->setGradoId($reg['grado_id']);
             $GrupoDispoDetData->setTallosXBunch($reg['tallos_x_bunch']);
             $GrupoDispoDetData->setCantidadBunch($tot_stock['tot_cantidad_bunch']);
             $GrupoDispoDetData->setCantidadBunchDisponible($tot_stock['tot_bunch_disponible']);
             $GrupoDispoDetData->setUsuarioModId(1);
             $GrupoDispoDetData->setUsuarioIngId(1);
             $GrupoDispoDetDAO->registrar($GrupoDispoDetData);
         }
         //end foreach
     }
     //end foreach
     return true;
 }
Ejemplo n.º 4
0
 /**
  * 
  * @param string $inventario_id
  * @param string $producto
  * @param string $clasifica_fox
  * @param string $proveedor_id
  * @param string $variedad_id
  * @param string $grado_id
  * @param array $stock
  * @throws Exception
  * @return array
  */
 public function actualizarStock($inventario_id, $producto, $clasifica_fox, $proveedor_id, $variedad_id, $grado_id, $tallos_x_bunch, $stock, $usuario_id = null)
 {
     $this->getEntityManager()->getConnection()->beginTransaction();
     try {
         $DispoDAO = new DispoDAO();
         $GrupoDispoCabDAO = new GrupoDispoCabDAO();
         $GrupoDispoDetDAO = new GrupoDispoDetDAO();
         $CalidadDAO = new CalidadDAO();
         $GrupoDispoDetData = new GrupoDispoDetData();
         $DispoDAO->setEntityManager($this->getEntityManager());
         $GrupoDispoCabDAO->setEntityManager($this->getEntityManager());
         $GrupoDispoDetDAO->setEntityManager($this->getEntityManager());
         $CalidadDAO->setEntityManager($this->getEntityManager());
         if (empty($proveedor_id)) {
             //TODAS LAS FINCAS
             foreach ($stock as $clave => $valor) {
                 $valor = empty($valor) ? 0 : $valor;
                 $DispoDAO->actualizarStock($inventario_id, $producto, $clasifica_fox, $clave, $variedad_id, $grado_id, $tallos_x_bunch, $valor);
             }
             //end foreach
         } else {
             //UNA SOLA FINCA
             $stock = $stock[$proveedor_id];
             $DispoDAO->actualizarStock($inventario_id, $producto, $clasifica_fox, $proveedor_id, $variedad_id, $grado_id, $tallos_x_bunch, $stock);
         }
         //end if
         //ACTUALIZA EL STOCK DE LOS GRUPOS
         $tot_stock = $DispoDAO->consultartotalInventario($inventario_id, $producto, $clasifica_fox, $variedad_id, $grado_id, $tallos_x_bunch);
         $CalidadData = $CalidadDAO->consultarPorClasificaFox($clasifica_fox);
         $result_dispocab = $GrupoDispoCabDAO->consultarPorInventario($inventario_id, $CalidadData->getId());
         foreach ($result_dispocab as $reg_dispocab) {
             $GrupoDispoDetData->setGrupoDispoCabId($reg_dispocab['id']);
             $GrupoDispoDetData->setProductoId($producto);
             $GrupoDispoDetData->setVariedadId($variedad_id);
             $GrupoDispoDetData->setGradoId($grado_id);
             $GrupoDispoDetData->setTallosXBunch($tallos_x_bunch);
             $GrupoDispoDetData->setCantidadBunch($tot_stock['tot_bunch_disponible']);
             $GrupoDispoDetData->setCantidadBunchDisponible($tot_stock['tot_bunch_disponible']);
             $GrupoDispoDetData->setUsuarioModId($usuario_id);
             $GrupoDispoDetData->setUsuarioIngId($usuario_id);
             $GrupoDispoDetDAO->registrar($GrupoDispoDetData);
         }
         //end foreach
         $result['validacion_code'] = 'OK';
         $result['respuesta_mensaje'] = '';
         $this->getEntityManager()->getConnection()->commit();
         return $result;
     } catch (Exception $e) {
         $this->getEntityManager()->getConnection()->rollback();
         $this->getEntityManager()->close();
         throw $e;
     }
 }
 /**
  * 
  * @param int $grupo_dispo_cab_id
  * @param string $producto_id
  * @param string $variedad_id
  * @param string $grado_id
  * @return \Dispo\Data\GrupoDispoDetData|NULL
  */
 public function consultar($grupo_dispo_cab_id, $producto_id, $variedad_id, $grado_id, $tallos_x_bunch)
 {
     $GrupoDispoDetData = new GrupoDispoDetData();
     $sql = ' SELECT grupo_dispo_det.* ' . ' FROM grupo_dispo_det ' . ' WHERE grupo_dispo_cab_id 	= :grupo_dispo_cab_id ' . '   and producto_id			= :producto_id' . '   and variedad_id			= :variedad_id' . '   and grado_id			= :grado_id' . '   and tallos_x_bunch		= :tallos_x_bunch';
     $stmt = $this->getEntityManager()->getConnection()->prepare($sql);
     $stmt->bindValue(':grupo_dispo_cab_id', $grupo_dispo_cab_id);
     $stmt->bindValue(':producto_id', $producto_id);
     $stmt->bindValue(':variedad_id', $variedad_id);
     $stmt->bindValue(':grado_id', $grado_id);
     $stmt->bindValue(':tallos_x_bunch', $tallos_x_bunch);
     $stmt->execute();
     $row = $stmt->fetch();
     //Se utiliza el fecth por que es un registro
     if ($row) {
         $GrupoDispoDetData->setGrupoDispoCabId($row['grupo_dispo_cab_id']);
         $GrupoDispoDetData->setProductoId($row['producto_id']);
         $GrupoDispoDetData->setVariedadId($row['variedad_id']);
         $GrupoDispoDetData->setGradoId($row['grado_id']);
         $GrupoDispoDetData->setTallosXBunch($row['tallos_x_bunch']);
         $GrupoDispoDetData->setCantidadBunch($row['cantidad_bunch']);
         $GrupoDispoDetData->setCantidadBunchDisponible($row['cantidad_bunch_disponible']);
         $GrupoDispoDetData->setUsuarioIngId($row['usuario_ing_id']);
         $GrupoDispoDetData->setFecIngreso($row['fec_ingreso']);
         $GrupoDispoDetData->setUsuarioModId($row['usuario_mod_id']);
         $GrupoDispoDetData->setFecModifica($row['fec_modifica']);
         return $GrupoDispoDetData;
     } else {
         return null;
     }
     //end if
 }