Example #1
0
 public function edit(Request $request)
 {
     \DB::beginTransaction();
     $var = $request->detailOrderPurchases;
     $almacen_id = $request->input("warehouses_id");
     foreach ($var as $object) {
         //var_dump($object); die();
         $stockmodel = new StockRepo();
         $object['warehouse_id'] = $almacen_id;
         $object["variant_id"] = $object["Codigovar"];
         $stockac = $stockmodel->encontrar($object["variant_id"], $almacen_id);
         if (!empty($stockac)) {
             //var_dump($stockac); var_dump('1');die();
             if ($object["esbase"] == 0) {
                 //antes usando equivalencia$object["stockActual"]=$stockac->stockActual+($object["cantidad"]*$object["equivalencia"]);
                 $object["stockActual"] = $stockac->stockActual + $object["cantidad"];
             } else {
                 $object["stockActual"] = $stockac->stockActual + $object["cantidad"];
             }
             //$stock = $stockmodel->find($stockac->id);
             //var_dump($object); var_dump('1');die();
             $manager = new StockManager($stockac, $object);
             $manager->save();
             $stock = null;
         } else {
             //var_dump($stockac); var_dump('2'); die();
             if ($object["esbase"] == 0) {
                 //$object["stockActual"]=$object["cantidad"]*$object["equivalencia"];
                 $object["stockActual"] = $object["cantidad"];
             } else {
                 $object["stockActual"] = $object["cantidad"];
             }
             $manager = new StockManager($stockmodel->getModel(), $object);
             $manager->save();
             $stockmodel = null;
         }
         $stockac = null;
     }
     \DB::commit();
     return response()->json(['estado' => true]);
 }
 public function create(Request $request)
 {
     $orderSale = $this->orderSaleRepo->getModel();
     $var = $request->detOrders;
     $payment = $request->salePayment;
     $saledetPayments = $request->saledetPayments;
     $manager = new OrderSaleManager($orderSale, $request->all());
     $manager->save();
     /*
            if($this->purchaseRepo->validateDate(substr($request->input('fechaEntrega'),0,10))){
                 $order->fechaEntrega = substr($request->input('fechaEntrega'),0,10);
             }else{
                
                 $order->fechaEntrega = null;
             }*/
     $orderSale->save();
     $temporal = $orderSale->id;
     //---create movimiento---
     $movimiento = $request->movimiento;
     $detCashrepo;
     $movimiento['observacion'] = $temporal;
     $detCashrepo = new DetCashRepo();
     $movimientoSave = $detCashrepo->getModel();
     $insertarMovimiento = new DetCashManager($movimientoSave, $movimiento);
     $insertarMovimiento->save();
     $detCash_id = $movimientoSave->id;
     //---Autualizar Caja---
     $cajaAct = $request->caja;
     $cashrepo;
     $cashrepo = new CashRepo();
     $cajaSave = $cashrepo->getModel();
     $cash1 = $cashrepo->find($cajaAct["id"]);
     $manager1 = new CashManager($cash1, $cajaAct);
     $manager1->save();
     //----------------
     $salePaymentrepo;
     $payment['orderSale_id'] = $temporal;
     $salePaymentrepo = new SalePaymentRepo();
     $paymentSave = $salePaymentrepo->getModel();
     $insertarpayment = new SalePaymentManager($paymentSave, $payment);
     $insertarpayment->save();
     $paymentSave->save();
     $temporal1 = $paymentSave->id;
     //--------------------------
     $saledetPaymentrepo;
     foreach ($saledetPayments as $object1) {
         $object1['salePayment_id'] = $temporal1;
         $object1['detCash_id'] = $detCash_id;
         $saledetPaymentrepo = new SaleDetPaymentRepo();
         $insertar = new SaleDetPaymentManager($saledetPaymentrepo->getModel(), $object1);
         $insertar->save();
         $saledetPaymentrepo = null;
     }
     $detOrderrepox;
     foreach ($var as $object) {
         $object['orderSale_id'] = $temporal;
         $detOrderrepox = new DetOrderSaleRepo();
         $insertar = new DetOrderSaleManager($detOrderrepox->getModel(), $object);
         $insertar->save();
         $detOrderrepox = null;
         //-------------------------------------
         $stockmodel = new StockRepo();
         $object['warehouse_id'] = $object['idAlmacen'];
         $object["variant_id"] = $object['vari'];
         $stockac = $stockmodel->encontrar($object["variant_id"], $object['warehouse_id']);
         if (!empty($stockac)) {
             if ($object["equivalencia"] == null) {
                 $object["stockPedidos"] = $stockac->stockPedidos + $object["cantidad"];
                 //
             } else {
                 $object["stockPedidos"] = $stockac->stockPedidos + $object["cantidad"] * $object["equivalencia"];
             }
             $manager = new StockManager($stockac, $object);
             $manager->save();
         } else {
         }
         $stockac = null;
         //-----------------------------------------------------
     }
     return response()->json(['estado' => true, 'nombres' => $orderSale->nombres]);
 }
 public function edit(Request $request)
 {
     \DB::beginTransaction();
     //var_dump($request->all()); die();
     $oProd = Product::find($request->input('product_id'));
     //si viene el prod y ademas es prod con variantes
     if (!empty($oProd) && $oProd->hasVariants == 1) {
         $variant = $this->variantRepo->findV($request->input('id'));
         if ($request->input('autogenerado') === true) {
             $sku = \DB::table('variants')->max('sku');
             if (!empty($sku)) {
                 $sku = $sku + 1;
             } else {
                 $sku = 1000;
                 //inicializar el sku;
             }
             $request->merge(array('sku' => $sku));
         } else {
         }
         $request->merge(array('user_id' => Auth()->user()->id));
         $managerVar = new VariantManager($variant, $request->except('stock', 'detAtr', 'presentation_base_object', 'presentations'));
         $managerVar->save();
         $oProd->quantVar = $oProd->quantVar + 1;
         $oProd->save();
         //================================ VARIANTES==============================//
         //$variant->presentation()->detach();
         foreach ($request->input('presentations') as $presentation) {
             $presentation['variant_id'] = $variant->id;
             $presentation['presentation_id'] = $presentation['id'];
             $oPres = new DetPresRepo();
             //$oStock = $stockRepo->getModel()->where('variant_id',$stock['variant_id'])->where('warehouse_id',$stock['warehouse_id'])->first();
             $obj = $oPres->getModel()->where('variant_id', $presentation['variant_id'])->where('presentation_id', $presentation['presentation_id'])->first();
             if (!isset($obj->id)) {
                 $presManager = new DetPresManager($oPres->getModel(), $presentation);
                 $presManager->save();
             } else {
                 $presManager = new DetPresManager($obj, $presentation);
                 $presManager->save();
             }
             //$presManager = new DetPresManager($oPres->getModel(),$presentation);
             //$presManager->save();
         }
         $variant->atributes()->detach();
         foreach ($request->input('detAtr') as $detAtr) {
             if (!empty($detAtr['descripcion'])) {
                 $detAtr['variant_id'] = $variant->id;
                 $oDetAtr = new DetAtrRepo();
                 $detAtrManager = new DetAtrManager($oDetAtr->getModel(), $detAtr);
                 $detAtrManager->save();
             }
         }
         if ($request->input('track') == 1) {
             //if (empty($variant->warehouse())) {
             //var_dump( $variant->stock ); die();
             //$variant->warehouse()->detach();
             foreach ($request->input('stock') as $stock) {
                 if (isset($stock['stockActual']) && $stock['stockActual'] == null && $stock['stockActual'] == '') {
                     $stock['stockActual'] = 0;
                 }
                 if (isset($stock['stockMin']) && $stock['stockMin'] == null && $stock['stockMin'] == '') {
                     $stock['stockMin'] = 0;
                 }
                 if (isset($stock['stockMinSoles']) && $stock['stockMinSoles'] == null && $stock['stockMinSoles'] == '') {
                     $stock['stockMinSoles'] = 0;
                 }
                 $stock['variant_id'] = $variant->id;
                 $oStock = new StockRepo();
                 //var_dump($stock['variant_id']);
                 //var_dump($stock['warehouse_id']);
                 $obj = $oStock->getModel()->where('variant_id', $stock['variant_id'])->where('warehouse_id', $stock['warehouse_id'])->first();
                 if (!isset($obj->id)) {
                     $stockManager = new StockManager($oStock->getModel(), $stock);
                     $stockManager->save();
                 } else {
                     $stockManager = new StockManager($obj, $stock);
                     $stockManager->save();
                 }
                 //print_r($obj->id); die();
             }
             //}
         }
         \DB::commit();
         return response()->json(['estado' => true, 'nombres' => $variant->nombre]);
     } else {
         return response()->json(['estado' => 'Prod sin variantes']);
     }
     //================================./VARIANTES==============================//
 }
Example #4
0
 public function createSale(Request $request)
 {
     \DB::beginTransaction();
     //----------------------
     $orderRepo;
     $orderRepo = new OrderSaleRepo();
     $cajaSave = $orderRepo->getModel();
     $cash1 = $orderRepo->find($request->id);
     $manager1 = new OrderSaleManager($cash1, $request->all());
     $manager1->save();
     //---------------------
     $var = $request->detOrders;
     $request->merge(array('estado' => '0'));
     //$request->merge(array('estado' => '0'));
     $orderSale = $this->saleRepo->getModel();
     $manager = new SaleManager($orderSale, $request->all());
     $manager->save();
     $orderSale->save();
     $temporal = $orderSale->id;
     //----------------------
     $detOrderrepox;
     $montoventa = 0;
     $HeadStockRepo;
     $codigoHeadIS = 0;
     foreach ($var as $object) {
         //------Actualizar pedido------
         //$cajaAct = $request->caja;
         //var_dump($object);die();
         $saleDet;
         $saleDet = new DetOrderSaleRepo();
         //$object=$saleDet->getModel();
         $saled = $saleDet->find($object['id']);
         //var_dump($saled);die();
         $manager2 = new DetOrderSaleManager($saled, $object);
         $manager2->save();
         //-----------------------------
         $object['sale_id'] = $temporal;
         $object['cantidad'] = $object['parteEntregado'];
         $object['subTotal'] = $object['precioVenta'] * $object['parteEntregado'];
         $montoventa = $montoventa + $object['subTotal'];
         $detOrderrepox = new DetSaleRepo();
         $insertar = new DetSaleManager($detOrderrepox->getModel(), $object);
         if ($object['parteEntregado'] > 0) {
             $insertar->save();
         }
         $detOrderrepox = null;
         //-------------------------------------
         $stockmodel = new StockRepo();
         $object['warehouse_id'] = $object['idAlmacen'];
         $object["variant_id"] = $object['vari'];
         $stockac = $stockmodel->encontrar($object["variant_id"], $object['warehouse_id']);
         //var_dump($stockac);die();
         //--------------reporte stock------------
         if ($codigoHeadIS === 0) {
             $object["warehouses_id"] = $object['idAlmacen'];
             //$object["cantidad_llegado"]=$cantidaCalculada;
             //$object['descripcion']='Entrada por compra';
             $object['tipo'] = 'Venta';
             $object["user_id"] = auth()->user()->id;
             $object["Fecha"] = $request->input("fechaPedido");
             $HeadStockRepo = new HeadInputStockRepo();
             $HeadStock = $HeadStockRepo->getModel();
             $HeadStockinsert = new HeadInputStockManager($HeadStock, $object);
             $HeadStockinsert->save();
             $codigoHeadIS = $HeadStock->id;
         }
         $object['headInputStock_id'] = $codigoHeadIS;
         $object["producto"] = $object['nameProducto'] . "(" . $object['NombreAtributos'] . ")";
         $object["cantidad_llegado"] = $object['cantidad'];
         $object['descripcion'] = 'Salida por Venta';
         $inputRepo;
         $inputRepo = new InputStockRepo();
         $inputstock = $inputRepo->getModel();
         $inputInsert = new InputStockManager($inputstock, $object);
         $inputInsert->save();
         //---------------------------------------
         if (!empty($stockac)) {
             if ($object["equivalencia"] == null) {
                 $object["stockPedidos"] = $stockac->stockPedidos - $object["cantidad"];
                 $object["stockActual"] = $stockac->stockActual - $object["cantidad"];
                 //
             } else {
                 $object["stockActual"] = $stockac->stockActual - $object["cantidad"] * $object["equivalencia"];
                 $object["stockPedidos"] = $stockac->stockPedidos - $object["cantidad"] * $object["equivalencia"];
             }
             $manager = new StockManager($stockac, $object);
             $manager->save();
             //$stock=null;
         } else {
         }
         $stockac = null;
         //-----------------------------------------------------
     }
     $subTotal = $montoventa / 1.18;
     $montoIgv = $montoventa - $subTotal;
     $request->merge(array('montoTotal' => $montoventa));
     $request->merge(array('igv' => $montoIgv));
     $request->merge(array('montoBruto' => $subTotal));
     $sales = $this->saleRepo->find($temporal);
     $manager = new SaleManager($sales, $request->all());
     $manager->save();
     \DB::commit();
     return response()->json(['estado' => true, 'nombres' => $orderSale->nombres]);
 }
 public function create(Request $request)
 {
     // var_dump($request->all());die();
     \DB::beginTransaction();
     $saldoTemp = 0;
     $codigoHeadIS = 0;
     $purchase = $this->purchaseRepo->getModel();
     $payment = $this->paymentRepo->getModel();
     $pendientAccount = $this->pendientAccountRepo->getModel();
     $var = $request->detailOrderPurchases;
     $almacen_id = $request->input("warehouses_id");
     if (!empty($request->input("compraDirecta"))) {
         foreach ($var as $object) {
             $stockmodel = new StockRepo();
             $object['warehouse_id'] = $almacen_id;
             $object["variant_id"] = $object["Codigovar"];
             $stockac = $stockmodel->encontrar($object["variant_id"], $almacen_id);
             if (!empty($stockac)) {
                 $object["stockActual"] = floatval($stockac->stockActual) + floatval($object["cantidad"]);
                 //var_dump($object["stockActual"]);die();
                 $manager = new StockManager($stockac, $object);
                 $manager->save();
                 $stock = null;
             } else {
                 $object["stockActual"] = $object["cantidad"];
                 //var_dump($object["stockActual"]);die();
                 $manager = new StockManager($stockRepo->getModel, $object);
             }
             $stockac = null;
         }
     }
     //==================================Cancelar Factura
     if ($request->input('estado') == 2) {
         //var_dump("hola");die();
         foreach ($var as $object) {
             $stockmodel = new StockRepo();
             $object['warehouse_id'] = $almacen_id;
             $object["variant_id"] = $object["Codigovar"];
             $stockac = $stockmodel->encontrar($object["variant_id"], $almacen_id);
             //var_dump($stockac);die();
             if (!empty($stockac)) {
                 $object["porLlegar"] = floatval($stockac->porLlegar) - floatval($object["cantidad"]);
                 $manager = new StockManager($stockac, $object);
                 $manager->save();
                 $stock = null;
             }
             //}
             $stockac = null;
         }
         $orderPurchase = $this->orderPurchaseRepo->find($request->id);
         $ordercompra = new OrderPurchaseManager($orderPurchase, $request->except('fechaPedido', 'fechaPrevista', 'montoBruto', 'montoTotal', 'descuento'));
         $ordercompra->save();
         if ($this->orderPurchaseRepo->validateDate(substr($request->input('fechaPedido'), 0, 10)) and $this->orderPurchaseRepo->validateDate(substr($request->input('fechaPrevista'), 0, 10))) {
             $orderPurchase->fechaPedido = substr($request->input('fechaPedido'), 0, 10);
             $orderPurchase->fechaPrevista = substr($request->input('fechaPrevista'), 0, 10);
         } else {
             $orderPurchase->fechaPedido = null;
             $orderPurchase->fechaPrevista = null;
         }
         $orderPurchase->save();
         $payment1 = $this->paymentRepo->paymentById($request->input('id'));
         $pendientAccount = $this->pendientAccountRepo->getModel();
         //$pendientAcc=$this->pendientAccountRepo->verSaldos($payment1->id);
         if (!empty($payment1)) {
             $detPayment = $this->detPaymentRepo->verPagosAdelantados($payment1->id);
             if (!empty($detPayment)) {
                 foreach ($detPayment as $detPayment) {
                     $request->merge(["estado" => 0]);
                     $SaldosTemporales = $this->pendientAccountRepo->find2($detPayment['Saldo_F']);
                     if ($SaldosTemporales != null) {
                         $request->merge(['Saldo' => $SaldosTemporales->Saldo + $detPayment['montoPagado']]);
                         $request->merge(['orderPurchase_id' => $SaldosTemporales->orderPurchase_id]);
                         $request->merge(['supplier_id' => $SaldosTemporales->supplier_id]);
                         $insercount = new PendientAccountManager($SaldosTemporales, $request->all());
                         $insercount->save();
                     } else {
                         $request->merge(['orderPurchase_id' => $request->input('id')]);
                         $request->merge(['Saldo' => $payment1->Acuenta]);
                         $insercount = new PendientAccountManager($pendientAccount, $request->all());
                         $insercount->save();
                     }
                 }
                 ///================solucion Errores==================================
             } else {
                 $request->merge(['orderPurchase_id' => $request->input('id')]);
                 $request->merge(['Saldo' => $payment1->Acuenta]);
                 $insercount = new PendientAccountManager($pendientAccount, $request->all());
                 $insercount->save();
                 $provicional = $request->idpayment;
             }
             //==========================fin
         }
     } else {
         //===================================UpdateOrderPurchase===========================================
         if ($request->input('estado') == 1) {
             $request->merge(["Estado" => 1]);
             // var_dump($request->input("Estado"));die();
             $orderPurchase = $this->orderPurchaseRepo->find($request->id);
             //var_dump($orderPurchase->Estado);die();
             $ordercompra = new OrderPurchaseManager($orderPurchase, $request->except('fechaPedido', 'fechaPrevista', 'montoBruto', 'montoTotal', 'descuento'));
             $ordercompra->save();
             if ($this->orderPurchaseRepo->validateDate(substr($request->input('fechaPedido'), 0, 10)) and $this->orderPurchaseRepo->validateDate(substr($request->input('fechaPrevista'), 0, 10))) {
                 $orderPurchase->fechaPedido = substr($request->input('fechaPedido'), 0, 10);
                 $orderPurchase->fechaPrevista = substr($request->input('fechaPrevista'), 0, 10);
             } else {
                 $orderPurchase->fechaPedido = null;
                 $orderPurchase->fechaPrevista = null;
             }
             $orderPurchase->save();
             $verSiExiste = $this->detailOrderPurchaseRepo->Comprobar($request->id);
             //***************************************************************
             if (!empty($verSiExiste[0])) {
                 //var_dump("no deve entrar");die();
                 $orderPurchase->detPres()->detach();
                 foreach ($var as $object1) {
                     //$hola=$var[$n];
                     //$object[]
                     $object1["Cantidad_Ll"] = $object1["cantidad1"];
                     $object1["pendiente"] = floatval($object1["cantidad"]) - floatval($object1["cantidad1"]);
                     /*if(!empty($object1["cantidad1"])){
                           //var_dump("holay".$object1["cantidad1"]);die();
                           //$object1["cantidad"]=$object1["Cantidad_Ll"];
                           //$object1["pendiente"]=$object1["pendiente"];
                           $object1["montoBruto"]=floatval($object1["cantidad"])*floatval($object1["preProducto"]);
                           $object1["montoTotal"]=floatval($object1["montoBruto"])-((floatval($object1["montoBruto"])*floatval($object1["descuento"]))/100);
                       }else{
                           //var_dump("dos".$object1["cantidad1"]);die();
                         
                           if($object1["Cantidad_Ll"]=='0' && $object1["montoBruto"]=='0'){
                             $object1["Cantidad_Ll"]=0;
                             $object1["pendiente"]=$object1["cantidad"];
                             $object1["montoBruto"]=floatval($object1["cantidad"])*floatval($object1["preProducto"]);
                             $object1["montoTotal"]=floatval($object1["montoBruto"])-((floatval($object1["montoBruto"])*floatval($object1["descuento"]))/100);
                           }else{
                               if($object1["Cantidad_Ll"]>0){
                                    $object1["Cantidad_Ll"]=$object1["cantidad"];
                                    $object1["pendiente"]=0;
                                    $object1["montoBruto"]=floatval($object1["cantidad"])*floatval($object1["preProducto"]);
                                    $object1["montoTotal"]=floatval($object1["montoBruto"])-((floatval($object1["montoBruto"])*floatval($object1["descuento"]))/100);
                               }else{  
                                    $object1["Cantidad_Ll"]=$object1["cantidad"];
                                    $object1["pendiente"]=0;
                                    $object1["montoBruto"]=floatval($object1["cantidad"])*floatval($object1["preProducto"]);
                                    $object1["montoTotal"]=floatval($object1["montoBruto"])-((floatval($object1["montoBruto"])*floatval($object1["descuento"]))/100);
                           }
                         }
                       
                       }*/
                     ////if($hola->cantidad1!=null){
                     ////    $object1["Cantidad_Ll"]=$hola->Cantidad_Ll;
                     ////    $object1["pendiente"]=$hola->pendiente;
                     ////
                     ////}else{
                     ////    $object1["Cantidad_Ll"]=$object1["cantidad"];
                     ////    $object1["pendiente"]=0;
                     ////}
                     //var_dump($hola['Cantidad_Ll']);die();
                     if (floatval($object1["preCompra"]) > 0) {
                         $detailOrderPurchaseRepox = new DetailOrderPurchaseRepo();
                         $insertar = new DetailOrderPurchaseManager($detailOrderPurchaseRepox->getModel(), $object1);
                         $insertar->save();
                         $detailOrderPurchaseRepox = null;
                         //$n++;
                     }
                 }
                 //   var_dump($var);die();
             }
         }
         //==============================================================================
         $codOrder = $request->input("orderPurchase_id");
         $fechaActual = $request->input("fecha");
         //var_dump($fechaActual);die();
         //=============================Creando compra =============================
         //var_dump($var); die();
         $manager = new PurchaseManager($purchase, $request->except('fechaEntrega'));
         $manager->save();
         if ($this->purchaseRepo->validateDate(substr($request->input('fechaEntrega'), 0, 10))) {
             $purchase->fechaEntrega = substr($request->input('fechaEntrega'), 0, 10);
         } else {
             $purchase->fechaEntrega = null;
         }
         $purchase->save();
         $temporal = $purchase->id;
         // return $temporal;
         $request->merge(["purchase_id" => $temporal]);
         $detailPurchaseRepox;
         $consulPayment = null;
         //$almacen_id=$request->input("warehouses_id");
         //========================================================================
         $total = 0;
         foreach ($var as $object) {
             //========================insertDEtalles=========================
             $object['orderPurchase_id'] = $codOrder;
             $object['purchases_id'] = $temporal;
             $object['purchase_id'] = $temporal;
             $object['Fecha'] = $fechaActual;
             $object['warehouse_id'] = $almacen_id;
             $object["variant_id"] = $object["Codigovar"];
             $stockmodel = new StockRepo();
             $stockac = $stockmodel->encontrar($object["variant_id"], $almacen_id);
             if ($request->input('estado') == 1) {
                 // var_dump($object1["cantidad1"]);
                 $cantidadReal = $object["cantidad"];
                 $object["cantidad"] = $object["cantidad1"];
                 if ($request->input("tCambio") == "sol") {
                     //var_dump("hola este es soles");die();
                     $object["montoBruto"] = floatval($object["cantidad1"]) * floatval($object["preProducto"]);
                     $object["montoBrutoDolar"] = floatval($object["montoBruto"]) / floatval($request->input("tasaDolar"));
                     $object["montoTotal"] = floatval($object["cantidad1"]) * floatval($object["preCompra"]);
                     $object["montoTotalDolar"] = floatval($object["montoTotal"]) / floatval($request->input("tasaDolar"));
                     $total = $total + $object["montoTotal"];
                 } else {
                     $object["montoBrutoDolar"] = floatval($object["cantidad1"]) * floatval($object["preProductoDolar"]);
                     $object["montoBruto"] = floatval($object["montoBrutoDolar"]) * floatval($request->input("tasaDolar"));
                     $object["montoTotalDolar"] = floatval($object["cantidad1"]) * floatval($object["preCompraDolar"]);
                     $object["montoTotal"] = floatval($object["montoTotalDolar"]) * floatval($request->input("tasaDolar"));
                     $total = $total + $object["montoTotalDolar"];
                 }
                 //  var_dump($object["cantidad"]);
                 /*if(!empty($object["cantidad1"])){
                           $object["cantidad"]=$object["Cantidad_Ll"];
                        }else{
                          if($object["preCompra"]==0){
                                  $object["cantidad"]=$object["cantidad"];
                            }else{
                                  if($object["Cantidad_Ll"]==0 && $object["montoBruto"]==0)
                                  {
                                     $object["cantidad"]=$object["Cantidad_Ll"];
                                  }else{
                                   //if(floatval($object["Cantidad_Ll"])>0){
                                   //   $object["cantidad"]=$object["Cantidad_Ll"]; 
                                   //}else{
                                     $object["cantidad"]=$object["cantidad"];
                                   //}
                              }
                        }
                   }**/
                 //***************************************************
                 // $stockmodel = new StockRepo;
                 //$object['warehouse_id']=$almacen_id;
                 //$object["variant_id"]=$object["Codigovar"];
                 //$stockac=$stockmodel->encontrar($object["variant_id"],$almacen_id);
                 $cantidaCalculada = floatval($object["cantidad1"]) - floatval($object["Cantidad_Ll"]);
                 if ($cantidaCalculada < 0) {
                     $cantidaCalculada = floatval($cantidaCalculada * -1);
                 }
                 /*
                                   if(!empty($object["cantidad1"])){
                                       $cantidaCalculada=floatval($object["cantidad1"])-floatval($object["Cantidad_Ll"]);
                                   }else{ 
                                     if($object["preCompra"]==0){
                                           $cantidaCalculada=floatval($object["cantidad"]);
                                     }else{
                                          if($object["Cantidad_Ll"]==0 && $object["montoBruto"]==0){
                                                $cantidaCalculada=0;
                                           }else{
                                          $cantidaCalculada=floatval($object["cantidad"])-floatval($object["Cantidad_Ll"]);
                                           }
                                     }
                                   }*/
                 //*****************ssss*************************
             } else {
                 $stockmodel = new StockRepo();
                 $object['warehouse_id'] = $almacen_id;
                 $object["variant_id"] = $object["Codigovar"];
                 $cantidaCalculada = $object["cantidad"];
             }
             //$object["cantidad"]=$cantidaCalculada;
             if (intval($object["cantidad"] > 0)) {
                 //var_dump($object);die();
                 $detailPurchaseRepox = new DetailPurchaseRepo();
                 $insertar = new DetailPurchaseManager($detailPurchaseRepox->getModel(), $object);
                 $insertar->save();
                 $detailPurchaseRepox = null;
             }
             if ($request->input('estado') == 1) {
                 $purchase1 = $this->purchaseRepo->find($temporal);
                 if ($request->input("tCambio") == "sol") {
                     $request->merge(['montoBruto' => floatval($total)]);
                     $request->merge(['montoBrutoDolar' => floatval($total) / floatval($request->input("tasaDolar"))]);
                 } else {
                     $request->merge(['montoBrutoDolar' => floatval($total)]);
                     $request->merge(['montoBruto' => floatval($total) * floatval($request->input("tasaDolar"))]);
                 }
                 if (!empty($purchase1->descuento)) {
                     if ($request->input("tCambio") == "sol") {
                         $request->merge(['montoTotal' => floatval($total) - floatval($total) * floatval($purchase1->descuento) / 100]);
                         $request->merge(['montoTotalDolar' => floatval($total) / floatval($request->input("tasaDolar"))]);
                     } else {
                         $request->merge(['montoTotalDolar' => floatval($total) - floatval($total) * floatval($purchase1->descuento) / 100]);
                         $request->merge(['montoTotal' => floatval($total) * floatval($request->input("tasaDolar"))]);
                     }
                 } else {
                     if ($request->input("tCambio") == "sol") {
                         $request->merge(['montoTotal' => floatval($total)]);
                         $request->merge(['montoTotalDolar' => floatval($total) / floatval($request->input("tasaDolar"))]);
                     } else {
                         $request->merge(['montoTotalDolar' => floatval($total)]);
                         $request->merge(['montoTotal' => floatval($total) * floatval($request->input("tasaDolar"))]);
                     }
                 }
                 $manager = new PurchaseManager($purchase1, $request->except('fechaEntrega'));
                 $manager->save();
             }
             //======================Si Existe Stock Pendiente Por Agregar===============================
             $inputStock = $this->inputStockRepo->getModel();
             $object["warehouses_id"] = $request->input("warehouses_id");
             $object["cantidad_llegado"] = $cantidaCalculada;
             $object['descripcion'] = 'Entrada por compra';
             $object['tipo'] = 'Compra';
             if (!empty($cantidadReal)) {
                 if (floatval($cantidadReal) > 0) {
                     if (!empty($stockac)) {
                         $object["stockActual"] = $stockac->stockActual + $cantidaCalculada;
                         if ($object["Cantidad_Ll"] > 0) {
                             $object["porLlegar"] = floatval($stockac->porLlegar) - floatval($cantidaCalculada);
                         } else {
                             $object["porLlegar"] = floatval($stockac->porLlegar) - floatval($cantidadReal);
                         }
                         //======================Actualizando stock si es que variante existe===============================
                         $manager = new StockManager($stockac, $object);
                         $manager->save();
                         $stock = null;
                     } else {
                         if (!empty($stockac->porLlegar)) {
                             $object["porLlegar"] = floatval($stockac->porLlegar) - floatval($object["cantidad"]);
                         } else {
                             $object["porLlegar"] = 0;
                         }
                         //======================Registrando estock si es que variante no existe===============================
                         $manager = new StockManager($stockmodel->getModel(), $object);
                         $manager->save();
                         $stockmodel = null;
                     }
                     $stockac = null;
                 }
             }
             if ($cantidaCalculada > 0) {
                 ////======================Registrando en notas de cabecera===============================
                 if ($codigoHeadIS === 0 && $cantidaCalculada > 0) {
                     $headInputStock = $this->headInputStockRepo->getModel();
                     //var_dump($object);die();
                     $object["user_id"] = auth()->user()->id;
                     $inserHeadInputStock = new HeadInputStockManager($headInputStock, $object);
                     $inserHeadInputStock->save();
                     $codigoHeadIS = $headInputStock->id;
                 }
                 ////======================Registrando en notas de detalles===============================cantidad_llegado
                 //if(!empty($object["equivalencia"])){
                 //  if($object["equivalencia"]>0){
                 //    $object["cantidad_llegado"]=$object["cantidad_llegado"]*$object["equivalencia"];
                 //  }
                 //}
                 $object['headInputStock_id'] = $codigoHeadIS;
                 $inserInputStock = new inputStockManager($inputStock, $object);
                 $inserInputStock->save();
             }
         }
         //======================Creando reporte por cada linea de detalle de compra===============================
         //====================Creando y actualizando pagos si que existe adelantos====================================
         if ($request->input('compraDirecta') == 1) {
             $request->merge(["Acuenta" => 0]);
             $inserPay = new PaymentManager($payment, $request->all());
             $inserPay->save();
         } else {
             // var_dump($request->orderPurchase_id);die();
             $consulPayment = $this->paymentRepo->paymentById($request->orderPurchase_id);
             if (!empty($consulPayment)) {
                 // var_dump("entrando XD");die();
                 $request->merge(["Acuenta" => $consulPayment->Acuenta]);
                 $request->merge(["Saldo" => floatval($request->input("montoTotal")) - floatval($request->input("Acuenta"))]);
                 //$request->merge(["Acuenta"=>0]);
                 $inserPay = new PaymentManager($consulPayment, $request->all());
                 $inserPay->save();
                 //------------------------------------
                 if (floatval($request->Saldo) < 0) {
                     $request->merge(['Saldo' => floatval($request->Saldo * -1)]);
                     //$request->merge(["estado"=>0]);
                     $insercount = new PendientAccountManager($pendientAccount, $request->except("estado"));
                     $insercount->save();
                 }
             } else {
                 $request->merge(["Acuenta" => 0]);
                 $request->merge(["Saldo" => floatval($request->input("montoTotal")) - floatval($request->input("Acuenta"))]);
                 $inserPay = new PaymentManager($payment, $request->all());
                 $inserPay->save();
                 //$saldoTemp=$inserPay->Saldo;
             }
         }
         //var_dump("recolectando verdadero salfdo".$consulPayment->Saldo);die();
         // if(!empty($consulPayment)){
         // }
         if (!empty($consulPayment)) {
             $detPayment = $this->detPaymentRepo->verPagosAdelantados($consulPayment->id);
             if ($detPayment != null) {
                 foreach ($detPayment as $detPayment) {
                     if ($detPayment->Saldo_F != null) {
                         $saldos = $this->pendientAccountRepo->find2($detPayment['Saldo_F']);
                         if ($saldos != null) {
                             if ($saldos->Saldo == 0) {
                                 $request->merge(['Saldo' => 0]);
                                 $request->merge(['estado' => 1]);
                                 $request->merge(['orderPurchase_id' => $saldos->orderPurchase_id]);
                                 $request->merge(['supplier_id' => $saldos->supplier_id]);
                                 $insercount = new PendientAccountManager($saldos, $request->all());
                                 $insercount->save();
                             }
                         }
                     }
                 }
             }
         }
         ///==========================Registrando saldo Afavor ========================================
     }
     \DB::commit();
     return response()->json(['estado' => true, 'nombres' => $purchase->nombres]);
 }
 public function edit(Request $request)
 {
     \DB::beginTransaction();
     $var = $request->detailOrderPurchases;
     //->except($request->detailOrderPurchases["id"]);
     $orderPurchase = $this->orderPurchaseRepo->find($request->input('id'));
     $orderPurchase = $this->orderPurchaseRepo->find($request->id);
     $almacen_id = $request->input("warehouses_id");
     $manager = new OrderPurchaseManager($orderPurchase, $request->except('fechaPedido', 'fechaPrevista'));
     $manager->save();
     if ($this->orderPurchaseRepo->validateDate(substr($request->input('fechaPedido'), 0, 10)) and $this->orderPurchaseRepo->validateDate(substr($request->input('fechaPrevista'), 0, 10))) {
         $orderPurchase->fechaPedido = substr($request->input('fechaPedido'), 0, 10);
         $orderPurchase->fechaPrevista = substr($request->input('fechaPrevista'), 0, 10);
     } else {
         $orderPurchase->fechaPedido = null;
         $orderPurchase->fechaPrevista = null;
     }
     $orderPurchase->save();
     $orderPurchase->detPres()->detach();
     foreach ($var as $object) {
         $detailOrderPurchaseRepox = new DetailOrderPurchaseRepo();
         $insertar = new DetailOrderPurchaseManager($detailOrderPurchaseRepox->getModel(), $object);
         $insertar->save();
         $detailOrderPurchaseRepox = null;
         $stockmodel = new StockRepo();
         $object['warehouse_id'] = $almacen_id;
         $object["variant_id"] = $object["Codigovar"];
         $stockac = $stockmodel->encontrar($object["variant_id"], $almacen_id);
         if (!empty($stockac)) {
             // if($object["esbase"]==0){
             //  $object["porLlegar"]=$stockac->stockActual+($object["cantidad_llegado"]*$object["equivalencia"]);
             // }else{
             if (!empty($object["nuevo"])) {
                 $object["porLlegar"] = $stockac->porLlegar + $object["cantidad"];
             } else {
                 if (!empty($object["cantAnterior"])) {
                     $object["porLlegar"] = floatval($stockac->porLlegar) - floatval($object["cantAnterior"]) + floatval($object["cantidad"]);
                 } else {
                     $object["porLlegar"] = $stockac->porLlegar;
                 }
             }
             //}
             $manager = new StockManager($stockac, $object);
             $manager->save();
             $stock = null;
         } else {
             //if($tipo!=$tipo2){
             // if($object["esbase"]==0)
             // {
             //    $object["stockActual"]=$object["cantidad_llegado"]*$object["equivalencia"];
             //}else{
             $object["porLlegar"] = $object["cantidad"];
             //}
             $manager = new StockManager($stockmodel->getModel(), $object);
             $manager->save();
             $stockmodel = null;
         }
         //}
         $stockac = null;
     }
     $payment = $this->paymentRepo->getModel();
     $payment1 = $this->paymentRepo->paymentById($request->input('id'));
     if (!empty($payment1)) {
         $request->merge(['Acuenta' => $payment1->Acuenta]);
         $request->merge(['orderPurchase_id' => $request->input('id')]);
         $salc = floatval($request->input('montoTotal')) - floatval($request->input('Acuenta'));
         $request->merge(['Saldo' => $salc]);
         $manager = new PaymentManager($payment1, $request->all());
         $manager->save();
         $provicional = $request->idpayment;
     }
     \DB::commit();
     return response()->json(['estado' => true]);
 }
 public function create(Request $request)
 {
     \DB::beginTransaction();
     if ($request->warehouDestino_id == "") {
         $request->merge(["warehouDestino_id" => null]);
     }
     $var = $request->detailOrderPurchases;
     $request->merge(["Fecha" => $request->fecha]);
     // var_dump($request->input("generareport"));die();
     $codigoHeadIS;
     $almacen_id = $request->input("warehouses_id");
     $almacen_Destino = $request->input("warehouDestino_id");
     //if($almacen_Destino==null){
     //       $almacen_Destino=null;
     //}
     $queHacer = $request->input("eliminar");
     $tipo = $request->input("tipo");
     $tipo2 = "Salida";
     $request->merge(['user_id' => auth()->user()->id]);
     //var_dump();die();
     if ($queHacer === 0) {
         $request->merge(["orderPurchase_id" => $request->input('id')]);
         $headInputStock = $this->headInputStockRepo->getModel();
         if (!empty($request->input('warehouDestino_id'))) {
             $inserHeadInputStock = new HeadInputStockManager($headInputStock, $request->all());
         } else {
             $inserHeadInputStock = new HeadInputStockManager($headInputStock, $request->except('warehouDestino_id'));
         }
         $inserHeadInputStock->save();
         $codigoHeadIS = $headInputStock->id;
         $orderPurchase = $this->orderPurchaseRepo->find($request->input('id'));
         $orderPurchase->detPres()->detach();
         foreach ($var as $object) {
             //  if($queHacer===0){
             //var_dump("hola");die();
             $detPres = $this->detPresRepo->listarVariantes($object['detPres_id']);
             $object["variant_id"] = $detPres->variant_id;
             $object["warehouses_id"] = $request->input("warehouses_id");
             $object["descripcion"] = "Ingreso por pedido";
             $detailOrderPurchaseRepox = new DetailOrderPurchaseRepo();
             $insertar = new DetailOrderPurchaseManager($detailOrderPurchaseRepox->getModel(), $object);
             $insertar->save();
             $detailOrderPurchaseRepox = null;
             // }
             $inputStock = $this->inputStockRepo->getModel();
             // var_dump($object);die();
             if (!empty($object["cantidad_llegado"])) {
                 //if($object["cantidad_llegado"]>0){
                 //  if(!empty($object["equivalencia"])){
                 //      if($object["equivalencia"]>0){
                 //        $object["cantidad_llegado"]=$object["cantidad_llegado"]*$object["equivalencia"];
                 //      }
                 //   }
                 $object['headInputStock_id'] = $codigoHeadIS;
                 $inserInputStock = new inputStockManager($inputStock, $object);
                 $inserInputStock->save();
                 $stockmodel = new StockRepo();
                 $object['warehouse_id'] = $almacen_id;
                 $stockac = $stockmodel->encontrar($object["variant_id"], $almacen_id);
                 //var_dump($object["tipo"]);die();
                 if (!empty($stockac)) {
                     /* if($object["esbase"]==0){
                            if($object["tipo"]=="Salida"){
                                $object["stockActual"]=$stockac->stockActual-($object["cantidad_llegado"]*$object["equivalencia"]);
                                var_dump("entre");
                            }else{
                                $object["stockActual"]=$stockac->stockActual+($object["cantidad_llegado"]*$object["equivalencia"]);
                             }
                        }else{
                            if($object["tipo"]=="Salida"){
                              $object["stockActual"]=$stockac->stockActual-$object["cantidad_llegado"];
                              var_dump("entre");
                            }else{
                               $object["stockActual"]=$stockac->stockActual+$object["cantidad_llegado"]; 
                            }
                        }*/
                     //if($object["esbase"]==0){
                     //  $object["stockActual"]=$stockac->stockActual+($object["cantidad_llegado"]*$object["equivalencia"]);
                     // }else{
                     $object["stockActual"] = $stockac->stockActual + $object["cantidad_llegado"];
                     $object["porLlegar"] = $stockac->porLlegar - $object["cantidad_llegado"];
                     //}
                     $manager = new StockManager($stockac, $object);
                     $manager->save();
                     $stock = null;
                 } else {
                     if ($tipo != $tipo2) {
                         if ($object["esbase"] == 0) {
                             $object["stockActual"] = $object["cantidad_llegado"] * $object["equivalencia"];
                         } else {
                             $object["stockActual"] = $object["cantidad_llegado"];
                         }
                         $manager = new StockManager($stockmodel->getModel(), $object);
                         $manager->save();
                         $stockmodel = null;
                     }
                 }
                 $stockac = null;
             }
         }
         // }
     } else {
         //==========================================================0
         //$inputStock = $this->inputStockRepo->getModel();
         $headInputStock = $this->headInputStockRepo->getModel();
         //var_dump($var);die();
         //if(!empty($var["cantidad_llegado"])){
         //var_dump($request->all());die();
         $inserHeadInputStock = new HeadInputStockManager($headInputStock, $request->all());
         $inserHeadInputStock->save();
         $codigoHeadIS = $headInputStock->id;
         foreach ($var as $object) {
             $inputStock = $this->inputStockRepo->getModel();
             //$inputStock = $this->inputStockRepo->getModel();
             if (!empty($object["cantidad_llegado"])) {
                 if ($object["cantidad_llegado"] > 0) {
                     $object['warehouse_id'] = $almacen_id;
                     $object['headInputStock_id'] = $codigoHeadIS;
                     $inserInputStock = new InputStockManager($inputStock, $object);
                     $inserInputStock->save();
                     //var_dump($object);die();
                     $stockmodel = new StockRepo();
                     //$var['warehouse_id']=$almacen_id;
                     $stockac = $stockmodel->encontrar($object["variant_id"], $almacen_id);
                     if ($tipo == "Transferencia") {
                         $tockacDestino = $stockmodel->encontrar($object["variant_id"], $almacen_Destino);
                         if (!empty($tockacDestino)) {
                             if ($object["esbase"] == 0) {
                                 $object["stockActual"] = $tockacDestino->stockActual + $object["cantidad_llegado"] * $object["equivalencia"];
                             } else {
                                 $object["stockActual"] = $tockacDestino->stockActual + $object["cantidad_llegado"];
                             }
                             $object['warehouse_id'] = $almacen_Destino;
                             $manager = new StockManager($tockacDestino, $object);
                             $manager->save();
                             $stock = null;
                         } else {
                             if ($object["esbase"] == 0) {
                                 $object["stockActual"] = $object["cantidad_llegado"] * $object["equivalencia"];
                             } else {
                                 $object["stockActual"] = $object["cantidad_llegado"];
                             }
                             $object['warehouse_id'] = $almacen_Destino;
                             $manager = new StockManager($stockmodel->getModel(), $object);
                             $manager->save();
                             $stockmodel = null;
                         }
                         $tockacDestino = null;
                         if (!empty($stockac)) {
                             $object['warehouse_id'] = $almacen_id;
                             $object["stockActual"] = $stockac->stockActual - $object["cantidad_llegado"];
                             $manager = new StockManager($stockac, $object);
                             $manager->save();
                             $stock = null;
                         }
                     } else {
                         //Actualiza Stock---------------------------------------------
                         if (!empty($stockac)) {
                             if ($object["esbase"] == 0) {
                                 if ($tipo == $tipo2) {
                                     $object["stockActual"] = $stockac->stockActual - $object["cantidad_llegado"] * $object["equivalencia"];
                                     //var_dump("entre");
                                 } else {
                                     $object["stockActual"] = $stockac->stockActual + $object["cantidad_llegado"] * $object["equivalencia"];
                                 }
                             } else {
                                 if ($tipo == $tipo2) {
                                     $object["stockActual"] = $stockac->stockActual - $object["cantidad_llegado"];
                                     //var_dump("entre");
                                 } else {
                                     // var_dump("hola ");die();
                                     $object["stockActual"] = $stockac->stockActual + $object["cantidad_llegado"];
                                 }
                             }
                             $manager = new StockManager($stockac, $object);
                             $manager->save();
                             $stock = null;
                         } else {
                             if ($tipo != $tipo2) {
                                 if ($object["esbase"] == 0) {
                                     $object["stockActual"] = $object["cantidad_llegado"] * $object["equivalencia"];
                                 } else {
                                     $object["stockActual"] = $object["cantidad_llegado"];
                                 }
                                 $manager = new StockManager($stockmodel->getModel(), $object);
                                 $manager->save();
                                 $stockmodel = null;
                             }
                         }
                     }
                     //fin actualiza Stock---------------------------------------------------
                     $stockac = null;
                 }
             }
         }
     }
     // var_dump($request->generareport);die();
     //$idOrder=intval($request->input("id"));
     //var_dump($idOrder);die();
     \DB::commit();
     ////======================================================00
     return response()->json(['estado' => true]);
 }
 public function edit(Request $request)
 {
     \DB::beginTransaction();
     //$customer = $this->customerRepo->find($request->id);
     //$manager = new CustomerManager($customer,$request->except('fechaNac'));
     //$manager->save();
     $product = $this->productRepo->find($request->id);
     //$detPres = $this->detPres->getModel();
     if ($request->input('estado') == 1) {
     } else {
         $request->merge(array('estado' => '0'));
     }
     if ($request->input('hasVariants') == 1) {
     } else {
         $request->merge(array('hasVariants' => '0'));
     }
     if ($request->input('track') == 1) {
     } else {
         $request->merge(array('track' => '0'));
     }
     $request->merge(array('user_id' => Auth()->user()->id));
     //var_dump($request->all());die();
     $managerPro = new ProductManager($product, $request->except('sku', 'suppPri', 'markup', 'price', 'track'));
     //================================PROD CON VARIANTES==============================//
     if ($request->input('hasVariants') === true) {
         $managerPro->save();
         $request->merge(array('product_id' => $product->id));
         $product->quantVar = 0;
         //cantidad de variantes igual a 0;
         $product->save();
         //$managerVar = new VariantManager($variant,$request->only('sku','suppPri','markup','price','track','product_id'));
         //$managerVar->save();
         //================================./PROD CON VARIANTES==============================//
         //================================PROD SIN VARIANTES==============================//
     } elseif ($request->input('hasVariants') === '0') {
         $managerPro->save();
         $request->merge(array('product_id' => $product->id));
         if ($request->input('autogenerado') === true) {
             $sku = \DB::table('variants')->max('sku');
             if (!empty($sku)) {
                 $sku = $sku + 1;
             } else {
                 $sku = 1000;
                 //inicializar el sku;
             }
             $request->merge(array('sku' => $sku));
         } else {
         }
         $product->quantVar = 0;
         //aunq presenta una fila en la tabla variantes por defecto
         $product->save();
         $variant = $this->variantRepo->getModel()->where('product_id', $product->id)->first();
         $managerVar = new VariantManager($variant, $request->only('sku', 'suppPri', 'markup', 'price', 'track', 'codigo', 'product_id', 'user_id'));
         $managerVar->save();
         //var_dump($request->input('presentations')); die();
         //$variant->presentation()->detach();
         foreach ($request->input('presentations') as $presentation) {
             //var_dump('o'); die();
             $presentation['variant_id'] = $variant->id;
             $presentation['presentation_id'] = $presentation['id'];
             /*$detpresRepo = new DetPresRepo();
               //$oPres = $detpresRepo->getModel()->where('presentation_id',$presentation['presentation_id'])->where('variant_id',$presentation['variant_id'])->first();
               $oPres = $detpresRepo->getModel();
               $presManager = new DetPresManager($oPres,$presentation);
               $presManager->save();*/
             $oPres = new DetPresRepo();
             //$oStock = $stockRepo->getModel()->where('variant_id',$stock['variant_id'])->where('warehouse_id',$stock['warehouse_id'])->first();
             $obj = $oPres->getModel()->where('variant_id', $presentation['variant_id'])->where('presentation_id', $presentation['presentation_id'])->first();
             if (!isset($obj->id)) {
                 $presManager = new DetPresManager($oPres->getModel(), $presentation);
                 $presManager->save();
             } else {
                 $presManager = new DetPresManager($obj, $presentation);
                 $presManager->save();
             }
         }
         if ($request->input('track') == 1) {
             //$variant->warehouse()->detach();
             foreach ($request->input('stock') as $stock) {
                 if (isset($stock['stockActual']) && $stock['stockActual'] == null) {
                     $stock['stockActual'] = 0;
                 }
                 if (isset($stock['stockMin']) && $stock['stockMin'] == null) {
                     $stock['stockMin'] = 0;
                 }
                 if (isset($stock['stockMinSoles']) && $stock['stockMinSoles'] == null) {
                     $stock['stockMinSoles'] = 0;
                 }
                 $stock['variant_id'] = $variant->id;
                 $stockRepo = new StockRepo();
                 //$oStock = $stockRepo->getModel()->where('variant_id',$stock['variant_id'])->where('warehouse_id',$stock['warehouse_id'])->first();
                 $obj = $stockRepo->getModel()->where('variant_id', $stock['variant_id'])->where('warehouse_id', $stock['warehouse_id'])->first();
                 if (!isset($obj->id)) {
                     $stockManager = new StockManager($stockRepo->getModel(), $stock);
                     $stockManager->save();
                 } else {
                     $stockManager = new StockManager($obj, $stock);
                     $stockManager->save();
                 }
                 /*$oStock = $stockRepo->getModel();
                   $stockManager = new StockManager($oStock, $stock);
                   $stockManager->save();
                   */
             }
         }
     }
     //================================./PROD SIN VARIANTES==============================//
     //================================ADD IMAGE TO PROD==============================//
     if ($request->has('image') and substr($request->input('image'), 5, 5) === 'image') {
         $image = $request->input('image');
         $mime = $this->get_string_between($image, '/', ';');
         $image = base64_decode(preg_replace('#^data:image/\\w+;base64,#i', '', $image));
         Image::make($image)->resize(200, 200)->save('images/products/' . $product->id . '.' . $mime);
         $product->image = '/images/products/' . $product->id . '.' . $mime;
         $product->save();
     }
     //================================./ADD IMAGE TO PROD==============================//
     \DB::commit();
     return response()->json(['estado' => true, 'nombres' => $product->nombre]);
 }
 public function edit(Request $request)
 {
     // var_dump($var=$request->input('detailOrderPurchases'));die();
     \DB::beginTransaction();
     $var = $request->input('detailOrderPurchases');
     //var_dump($request->input("warehouses_id"));die();
     $almacen_id = $request->input("warehouses_id");
     $orderPurchase = $this->orderPurchaseRepo->find($request->id);
     if ($request->Estado == 0) {
         $manager = new OrderPurchaseManager($orderPurchase, $request->except('fechaPedido', 'fechaPrevista'));
         $manager->save();
     } else {
         $manager = new OrderPurchaseManager($orderPurchase, $request->except('fechaPedido', 'fechaPrevista', 'montoBruto', 'montoTotal', 'descuento'));
         $manager->save();
     }
     if ($this->orderPurchaseRepo->validateDate(substr($request->input('fechaPedido'), 0, 10)) and $this->orderPurchaseRepo->validateDate(substr($request->input('fechaPrevista'), 0, 10))) {
         $orderPurchase->fechaPedido = substr($request->input('fechaPedido'), 0, 10);
         $orderPurchase->fechaPrevista = substr($request->input('fechaPrevista'), 0, 10);
     } else {
         $orderPurchase->fechaPedido = null;
         $orderPurchase->fechaPrevista = null;
     }
     $orderPurchase->save();
     // $verSiExiste=$this->detailOrderPurchaseRepo->Comprobar($request->id);
     //$n=0;
     //->except($request->detailOrderPurchases["id"]);
     //$orderPurchase = $this->orderPurchaseRepo->find($request->input('id'));
     //==================================Actualizando Detallles==========================
     //if(!empty($verSiExiste[0])){
     //var_dump("no deve entrar");die();
     // $orderPurchase->detPres()->detach();
     /*foreach($var as $object1){
        //$hola=$var[$n];
        if(!empty($object1["cantidad1"])){
            //var_dump("holay".$object1["cantidad1"]);die();
            //$object1["cantidad"]=$object1["Cantidad_Ll"];
            //$object1["pendiente"]=$object1["pendiente"];
            $object1["montoBruto"]=floatval($object1["cantidad"])*floatval($object1["preProducto"]);
            $object1["montoTotal"]=floatval($object1["montoBruto"])-((floatval($object1["montoBruto"])*floatval($object1["descuento"]))/100);
        }else{
            //var_dump("dos".$object1["cantidad1"]);die();
            if($object1["Cantidad_Ll"]=='0' && $object1["montoBruto"]=='0'){
              $object1["Cantidad_Ll"]=0;
              $object1["pendiente"]=$object1["cantidad"];
              $object1["montoBruto"]=floatval($object1["cantidad"])*floatval($object1["preProducto"]);
              $object1["montoTotal"]=floatval($object1["montoBruto"])-((floatval($object1["montoBruto"])*floatval($object1["descuento"]))/100);
            }else{
                if($object1["Cantidad_Ll"]>0){
                     $object1["montoBruto"]=floatval($object1["cantidad"])*floatval($object1["preProducto"]);
                     $object1["montoTotal"]=floatval($object1["montoBruto"])-((floatval($object1["montoBruto"])*floatval($object1["descuento"]))/100);
                }else{  
                     $object1["Cantidad_Ll"]=$object1["cantidad"];
                     $object1["pendiente"]=0;
                     $object1["montoBruto"]=floatval($object1["cantidad"])*floatval($object1["preProducto"]);
                     $object1["montoTotal"]=floatval($object1["montoBruto"])-((floatval($object1["montoBruto"])*floatval($object1["descuento"]))/100);
            }
          }
        }
        
        ////if($hola->cantidad1!=null){
        ////    $object1["Cantidad_Ll"]=$hola->Cantidad_Ll;
        ////    $object1["pendiente"]=$hola->pendiente;
        ////    
        ////}else{
        ////    $object1["Cantidad_Ll"]=$object1["cantidad"];
        ////    $object1["pendiente"]=0;
        ////}
        //var_dump($hola['Cantidad_Ll']);die();
        
        $detailOrderPurchaseRepox = new DetailOrderPurchaseRepo;
        $insertar=new DetailOrderPurchaseManager($detailOrderPurchaseRepox->getModel(),$object1);
        $insertar->save();
        $detailOrderPurchaseRepox = null;
        //$n++;
         $stockmodel = new StockRepo;
                  $object['warehouse_id']=$almacen_id;
                  $object["variant_id"]=$object["Codigovar"];
                  $stockac=$stockmodel->encontrar($object["variant_id"],$almacen_id);
               var_dump($stockac->porLlegar);die();  
            if(!empty($stockac)){ 
              
               // if($object["esbase"]==0){
                //  $object["porLlegar"]=$stockac->stockActual+($object["cantidad_llegado"]*$object["equivalencia"]);
               // }else{
                  $object["porLlegar"]=$stockac->porLlegar+$object["cantidad"];
                //}
                  $manager = new StockManager($stockac,$object);
                  $manager->save();
                  $stock=null;
            }else{
              //if($tipo!=$tipo2){
               // if($object["esbase"]==0)
               // {
                //    $object["stockActual"]=$object["cantidad_llegado"]*$object["equivalencia"];
                //}else{
                    $object["porLlegar"]=$object["cantidad"];
                //}
            
                  $manager = new StockManager($stockmodel->getModel(),$object);
                  $manager->save();
                  $stockmodel = null;
                  }
            //}
            $stockac=null;
       }*/
     // }
     //else{
     foreach ($var as $object) {
         $object["pendiente"] = $object["cantidad"];
         $detailOrderPurchaseRepox = new DetailOrderPurchaseRepo();
         $insertar = new DetailOrderPurchaseManager($detailOrderPurchaseRepox->getModel(), $object);
         $insertar->save();
         $detailOrderPurchaseRepox = null;
         $stockmodel = new StockRepo();
         $object['warehouse_id'] = $almacen_id;
         $object["variant_id"] = $object["Codigovar"];
         $stockac = $stockmodel->encontrar($object["variant_id"], $almacen_id);
         if (!empty($stockac)) {
             // if($object["esbase"]==0){
             //  $object["porLlegar"]=$stockac->stockActual+($object["cantidad_llegado"]*$object["equivalencia"]);
             // }else{
             $object["porLlegar"] = $stockac->porLlegar + $object["cantidad"];
             //}
             $manager = new StockManager($stockac, $object);
             $manager->save();
             $stock = null;
         } else {
             //if($tipo!=$tipo2){
             // if($object["esbase"]==0)
             // {
             //  $object["stockActual"]=$object["cantidad_llegado"]*$object["equivalencia"];
             //}else{
             $object["porLlegar"] = $object["cantidad"];
             //}
             $manager = new StockManager($stockmodel->getModel(), $object);
             $manager->save();
             $stockmodel = null;
         }
         //}
         $stockac = null;
     }
     // }
     //*************************************************************************************
     $verDeudas = $this->pendientAccountRepo->verSaldos($request->input("supplier_id"));
     //var_dump($verDeudas[0]->Saldo);die();
     $SaldoAfavor = $request->input('SaldoUtilizado');
     $provicional = null;
     if ($verDeudas != null) {
         if ($SaldoAfavor > 0) {
             foreach ($verDeudas as $verDeudas) {
                 // $verDeudas=$this->pendientAccountRepo->verSaldos($request->input("supplier_id"));
                 /* if($provicional==null){
                      $payment = $this->paymentRepo->getModel();
                      $request->merge(['montoTotal'=>$montotot]);
                      $request->merge(['Acuenta'=>$verDeudas->Saldo]);
                      $request->merge(['orderPurchase_id'=>$request->input('id')]);
                      $salc=$request->input('montoTotal')-$request->input('Acuenta');
                      $request->merge(['Saldo'=>$salc]);        
                      $manager = new PaymentManager($payment,$request->all());
                      $manager->save();
                      $provicional=$payment->id;
                    }*/
                 if ($verDeudas->Saldo > 0 && $SaldoAfavor <= $verDeudas->Saldo) {
                     $var = $request->detPayments;
                     if ($provicional == null) {
                         $payment = $this->paymentRepo->getModel();
                         // $request->merge(['montoTotal'=>$montotot]);
                         $request->merge(['Acuenta' => $SaldoAfavor]);
                         $request->merge(['orderPurchase_id' => $request->input('id')]);
                         $salc = floatval($request->input('montoTotal')) - floatval($request->input('Acuenta'));
                         //var_dump($request->input('montoTotal'));die();
                         $request->merge(['Saldo' => $salc]);
                         $manager = new PaymentManager($payment, $request->all());
                         $manager->save();
                         $provicional = $payment->id;
                     } else {
                         $saldos = $this->paymentRepo->find($provicional);
                         // $request->merge(['montoTotal'=>$montotot]);
                         $request->merge(['Acuenta' => $saldos->Acuenta + $SaldoAfavor]);
                         $request->merge(['orderPurchase_id' => $request->input('id')]);
                         $salc = floatval($request->input('montoTotal')) - floatval($request->input('Acuenta'));
                         //var_dump($request->input('montoTotal'));die();
                         $request->merge(['Saldo' => $salc]);
                         $payment = new PaymentManager($saldos, $request->all());
                         $payment->save();
                     }
                     // var_dump($var);die();
                     $detPayment = $this->detPaymentRepo->getModel();
                     $pendientAccountRepo = $this->pendientAccountRepo->getModel();
                     $request->merge(['tipoPago' => 'A']);
                     $request->merge(['payment_id' => $provicional]);
                     $request->merge(['montoPagado' => $SaldoAfavor]);
                     $request->merge(['methodPayment_id' => 4]);
                     $request->merge(['Saldo_F' => $verDeudas->id]);
                     $insertDetP = new DetPaymentManager($detPayment, $request->all());
                     $insertDetP->save();
                     $request->merge(['Saldo' => $verDeudas->Saldo - $SaldoAfavor]);
                     $request->merge(['orderPurchase_id' => $verDeudas->orderPurchase_id]);
                     $request->merge(['supplier_id' => $verDeudas->supplier_id]);
                     $updateSaldoF = new pendientAccountManager($verDeudas, $request->all());
                     $updateSaldoF->save();
                     break;
                     //$SaldoAfavor=$verDeudas->Saldo-$request->input('SaldoUtilizado');
                 } else {
                     if ($verDeudas->Saldo > 0) {
                         $var = $request->detPayments;
                         // var_dump($var);die();
                         $SaldoAfavor = $SaldoAfavor - $verDeudas->Saldo;
                         if (!empty($provicional)) {
                             $payment = $this->paymentRepo->getModel();
                             //$request->merge(['montoTotal'=>$montotot]);
                             $request->merge(['Acuenta' => $SaldoAfavor]);
                             $request->merge(['orderPurchase_id' => $request->input('id')]);
                             $salc = floatval($request->input('montoTotal')) - $request->input('Acuenta');
                             //var_dump($request->input('montoTotal'));die();
                             $request->merge(['Saldo' => $salc]);
                             $manager = new PaymentManager($payment, $request->all());
                             $manager->save();
                             $provicional = $payment->id;
                         } else {
                             $saldos = $this->paymentRepo->fine($provicional);
                             // $request->merge(['montoTotal'=>$montotot]);
                             $request->merge(['Acuenta' => $saldos->Acuenta + $SaldoAfavor]);
                             $request->merge(['orderPurchase_id' => $request->input('id')]);
                             $salc = floatval($request->input('montoTotal')) - $request->input('Acuenta');
                             //var_dump($request->input('montoTotal'));die();
                             $request->merge(['Saldo' => $salc]);
                             $payment = new PaymentManager($saldos, $request->all());
                             $payment->save();
                         }
                         $detPayment = $this->detPaymentRepo->getModel();
                         $pendientAccountRepo = $this->pendientAccountRepo->getModel();
                         $request->merge(['tipoPago' => 'A']);
                         $request->merge(['payment_id' => $provicional]);
                         $request->merge(['montoPagado' => $verDeudas->Saldo]);
                         $request->merge(['methodPayment_id' => 4]);
                         $request->merge(['Saldo_F' => $verDeudas->id]);
                         $insertDetP = new DetPaymentManager($detPayment, $request->all());
                         $insertDetP->save();
                         $request->merge(['Saldo' => 0]);
                         $request->merge(['orderPurchase_id' => $verDeudas->orderPurchase_id]);
                         $request->merge(['supplier_id' => $verDeudas->supplier_id]);
                         $updateSaldoF = new pendientAccountManager($verDeudas, $request->all());
                         $updateSaldoF->save();
                     }
                     //fin else
                 }
                 //fin segundo if
             }
             //fin for
         }
         //fin primer if
     }
     //fin if primeross
     //**************************************************************************************
     if ($orderPurchase->Estado === 2) {
         $payment1 = $this->paymentRepo->paymentById($request->input('id'));
         $pendientAccount = $this->pendientAccountRepo->getModel();
         //$pendientAcc=$this->pendientAccountRepo->verSaldos($payment1->id);
         if ($payment1 != null) {
             $detPayment = $this->detPaymentRepo->verPagosAdelantados($payment1->id);
             if ($detPayment != null) {
                 foreach ($detPayment as $detPayment) {
                     $SaldosTemporales = $this->pendientAccountRepo->find2($detPayment['Saldo_F']);
                     if ($SaldosTemporales != null) {
                         $request->merge(['Saldo' => $SaldosTemporales->Saldo + $detPayment['montoPagado']]);
                         $request->merge(['orderPurchase_id' => $SaldosTemporales->orderPurchase_id]);
                         $request->merge(['supplier_id' => $SaldosTemporales->supplier_id]);
                         $insercount = new PendientAccountManager($SaldosTemporales, $request->all());
                         $insercount->save();
                     } else {
                         $request->merge(['orderPurchase_id' => $request->input('id')]);
                         $request->merge(['Saldo' => $payment1->Acuenta]);
                         $insercount = new PendientAccountManager($pendientAccount, $request->all());
                         $insercount->save();
                     }
                 }
             } else {
                 $request->merge(['orderPurchase_id' => $request->input('id')]);
                 $request->merge(['Saldo' => $payment1->Acuenta]);
                 $insercount = new PendientAccountManager($pendientAccount, $request->all());
                 $insercount->save();
                 $provicional = $request->idpayment;
             }
         }
     }
     \DB::commit();
     return response()->json(['estado' => true, 'nombres' => $orderPurchase->nombres]);
 }