示例#1
0
 /**
  *
  * Procesar producto no es mas que moverlo de lote.
  *
  * @param id_lote_nuevo int Id del lote al que se mover el producto
  * @param id_producto int Id del producto a mover
  * @param id_lote_viejo int Id del lote donde se encontraba el producto
  * @param cantidad float Si solo se movera una cierta cantidad de producto al nuevo lote. Si este valor no es obtenido, se da por hecho que se movera toda la cantidad de ese producto al nuevo lote
  * */
 public static function Procesar_producto($cantidad_nueva, $cantidad_vieja, $id_almacen_nuevo, $id_almacen_viejo, $id_producto_nuevo, $id_producto_viejo, $id_unidad_nueva, $id_unidad_vieja)
 {
     Logger::log("Procesando " . $cantidad_vieja . " productos con id:" . $id_producto_viejo . " \n                en unidad:" . $id_unidad_vieja . " a " . $cantidad_nueva . " productos con id:" . $id_producto_nuevo . " en unidad:" . $id_unidad_nueva);
     $productos_salida = array(array("id_producto" => $id_producto_viejo, "id_unidad" => $id_unidad_vieja, "cantidad" => $cantidad_vieja));
     $productos_entrada = array(array("id_producto" => $id_producto_nuevo, "id_unidad" => $id_unidad_nueva, "cantidad" => $cantidad_nueva));
     //Se utilizaran los metodos de entrada y salida almacen, pues estos se encargaran de todas las validaciones
     DAO::transBegin();
     try {
         //primero se saca del almacen el producto a transformar
         SucursalesController::SalidaAlmacen($productos_salida, $id_almacen_viejo, "Producto que sera procesado");
         //Despues se inserta el nuevo producto en el nuevo almacen
         SucursalesController::EntradaAlmacen($productos_entrada, $id_almacen_nuevo, "Producto resultado del procesado");
     } catch (Exception $e) {
         DAO::transRollback();
         Logger::error("No se ha podido procesar todo el producto: " . $e);
         if ($e->getCode() == 901) {
             throw new Exception("No se ha podido procesar todo el producto: " . $e->getMessage(), 901);
         }
         throw new Exception("No se ha podido procesar todo el producto, consulte a su administrador de sistema", 901);
     }
     DAO::transEnd();
     Logger::log("Producto procesado exitosamente");
 }