public function traitementLots() { try { $IDAGENCE = 4; // A remplacer par l'agence concernée $ZONESTOCKAGE_RESERVE = ZONESTOCKAGE::select("IDZONESTOCKAGE") ->where("ReservePrincipale", true) ->where("IDAGENCE", $IDAGENCE) ->first(); $ZONESTOCKAGE_DEBALLE = ZONESTOCKAGE::select("IDZONESTOCKAGE") ->where("DeballePrincipal", true) ->where("IDAGENCE", $IDAGENCE) ->first(); if ($ZONESTOCKAGE_RESERVE == null && $ZONESTOCKAGE_DEBALLE == null) { return response()->json(["error" => true, "messages" => "Merci de vérifier les zones de stockage !"], 500); } // $STOCKAGENCE_LOTS = STOCKAGENCE_LOTS::whereRaw('COALESCE("IDZONESTOCKAGE", 0) = 0') $STOCKAGENCE_LOTS = STOCKAGENCE_LOTS::where('CreeLe', "<", "2023-11-01 00:00:00") ->leftJoin("STOCKAGENCE") ->where("LotTraiteGpharmaWeb", false) ->where("IDAGENCE", $IDAGENCE) ->orderBy("IDAGENCE") ->orderBy("CreeLe") ->orderBy("IDSTOCKAGENCE_LOTS") ->limit(5000) ->get(); $IDZONESTOCKAGE_RESERVE = $ZONESTOCKAGE_RESERVE->IDZONESTOCKAGE; $IDZONESTOCKAGE_DEBALLE = $ZONESTOCKAGE_DEBALLE->IDZONESTOCKAGE; foreach ($STOCKAGENCE_LOTS as $key => $items) { DB::beginTransaction(); Log::channel('logPerso')->info("[$key] IDSTOCKAGENCE_LOTS " . $items->IDSTOCKAGENCE_LOTS . " - CreeLe " . $items->CreeLe); if ($items->IDAGENCE == 1) { $items->IDZONESTOCKAGE = $IDZONESTOCKAGE_RESERVE; $items->save(); $IDSTOCKAGENCE_LOTS_DEBALLE = $items->IDSTOCKAGENCE_LOTS; $IDSTOCKAGENCE_LOTS_RESERVE = $items->IDSTOCKAGENCE_LOTS; $IDZONESTOCKAGE_RESERVE = $IDZONESTOCKAGE_RESERVE; $IDZONESTOCKAGE_DEBALLE = null; } else { $items->IDZONESTOCKAGE = $IDZONESTOCKAGE_DEBALLE; $items->save(); $items_reserve = $items->replicate(); $items_reserve->StockTransit = 0; $items_reserve->StockTotal_Lot = 0; $items_reserve->StockTransitTIZ = 0; $items_reserve->StockEnReception = 0; $items_reserve->QteEnCoursVente = 0; $items_reserve->QtecoursDeRoute_Lot = 0; $items_reserve->IDZONESTOCKAGE = $IDZONESTOCKAGE_RESERVE; $items_reserve->ID_Old = $items->IDSTOCKAGENCE_LOTS; $items_reserve->LotTraiteGpharmaWeb = true; // unset($items_reserve->IDSTOCKAGENCE_LOTS); // $items_reserve->IDSTOCKAGENCE_LOTS = null; $items_reserve->save(); $IDSTOCKAGENCE_LOTS_DEBALLE = $items->IDSTOCKAGENCE_LOTS; $IDSTOCKAGENCE_LOTS_RESERVE = $items_reserve->IDSTOCKAGENCE_LOTS; } /**:::::::::::::::::::: BON LIVRAISON ::::::::::::::::::::::: */ $BONDELIVRAISON = BONDELIVRAISON::select([ "BONLIVRAISONLIGNE.IDZoneEntreeStock", "BONLIVRAISONLIGNE.ZoneEntreeStock", "BONLIVRAISONLIGNE.IDBONLIVRAISONLIGNE", "BONLIVRAISON.IDBONLIVRAISON", ]) ->leftJoin("BONLIVRAISONLIGNE", "BONLIVRAISON.IDBONLIVRAISON", "BONLIVRAISONLIGNE.IDBONLIVRAISON") ->where("BONLIVRAISON.AgenceReceptionnee", $IDAGENCE) ->whereRaw('COALESCE("BONLIVRAISONLIGNE"."IDZoneEntreeStock", 0) = 0') ->where("BONLIVRAISONLIGNE.IDSTOCKAGENCE_LOTS", $IDSTOCKAGENCE_LOTS_DEBALLE) ->get(); // Log::channel('logPerso')->info("BONDELIVRAISON " . $BONDELIVRAISON->count()); foreach ($BONDELIVRAISON as $key => $ITEM_BL) { if ($ITEM_BL->ZoneEntreeStock == 0 || $ITEM_BL->ZoneEntreeStock == 1) { DB::table('BONLIVRAISONLIGNE') ->where("IDBONLIVRAISONLIGNE", $ITEM_BL->IDBONLIVRAISONLIGNE) ->update([ "IDZoneEntreeStock" => $IDZONESTOCKAGE_RESERVE, "IDSTOCKAGENCE_LOTS" => $IDSTOCKAGENCE_LOTS_RESERVE, ]); } else { DB::table('BONLIVRAISONLIGNE') ->where("IDBONLIVRAISONLIGNE", $ITEM_BL->IDBONLIVRAISONLIGNE) ->update([ "IDZoneEntreeStock" => $IDZONESTOCKAGE_DEBALLE, "IDSTOCKAGENCE_LOTS" => $IDSTOCKAGENCE_LOTS_DEBALLE, ]); } } Log::channel('logPerso')->info("BONDELIVRAISON terminee"); /**:::::::::::::::::::: TRANSFERT INTER-SITE ::::::::::::::::::::::: */ $IDSTL = $items->IDSTOCKAGENCE_LOTS; $TRANSFERT_SITE = TRANSFERT_SITE::leftJoin('TRANSFERT_SITE_LIGNE', 'TRANSFERT_SITE.IDTRANSFERT_SITE', '=', 'TRANSFERT_SITE_LIGNE.IDTRANSFERT_SITE') ->where(function ($query) use ($IDAGENCE) { $query->where('IDAGENCE', $IDAGENCE) ->orWhere('IDAGENCEDESTINATION', $IDAGENCE); }) ->where(function ($query) use ($IDSTL) { $query->where('IDSTOCKAGENCE_LOTS', $IDSTL) ->orWhere('IDSTOCKAGENCE_LOTS_RECEPTION', $IDSTL); }) ->select( 'TRANSFERT_SITE_LIGNE.IDZONESTOCKAGE_EXPEDITION', 'TRANSFERT_SITE_LIGNE.IDZONESTOCKAGE_RECEPTION', 'TRANSFERT_SITE_LIGNE.IDTRANSFERT_SITE_LIGNE', 'TRANSFERT_SITE_LIGNE.ZonePrelevementTransfert', 'TRANSFERT_SITE_LIGNE.ZoneReceptionTransfert' ) ->get(); // Log::channel('logPerso')->info("TRANSFERT_SITE " . $TRANSFERT_SITE->count()); foreach ($TRANSFERT_SITE as $key => $ITEMS_TRS) { if ($ITEMS_TRS->ZonePrelevementTransfert == 0 || $ITEMS_TRS->ZonePrelevementTransfert == 1) { DB::table('TRANSFERT_SITE_LIGNE') ->where('IDTRANSFERT_SITE_LIGNE', $ITEMS_TRS->IDTRANSFERT_SITE_LIGNE) ->update([ "IDSTOCKAGENCE_LOTS" => $IDSTOCKAGENCE_LOTS_RESERVE, "IDZONESTOCKAGE_EXPEDITION" => $IDZONESTOCKAGE_RESERVE, ]); } else { DB::table('TRANSFERT_SITE_LIGNE') ->where('IDTRANSFERT_SITE_LIGNE', $ITEMS_TRS->IDTRANSFERT_SITE_LIGNE) ->update([ "IDZONESTOCKAGE_EXPEDITION" => $IDZONESTOCKAGE_DEBALLE, "IDSTOCKAGENCE_LOTS" => $IDSTOCKAGENCE_LOTS_DEBALLE, ]); } if ($ITEMS_TRS->ZoneReceptionTransfert == 0 || $ITEMS_TRS->ZoneReceptionTransfert == 1) { DB::table('TRANSFERT_SITE_LIGNE') ->where('IDTRANSFERT_SITE_LIGNE', $ITEMS_TRS->IDTRANSFERT_SITE_LIGNE) ->update([ "IDSTOCKAGENCE_LOTS_RECEPTION" => $IDSTOCKAGENCE_LOTS_RESERVE, "IDZONESTOCKAGE_RECEPTION" => $IDZONESTOCKAGE_RESERVE, ]); } else { DB::table('TRANSFERT_SITE_LIGNE') ->where('IDTRANSFERT_SITE_LIGNE', $ITEMS_TRS->IDTRANSFERT_SITE_LIGNE) ->update([ "IDZONESTOCKAGE_RECEPTION" => $IDZONESTOCKAGE_DEBALLE, "IDSTOCKAGENCE_LOTS_RECEPTION" => $IDSTOCKAGENCE_LOTS_DEBALLE, ]); } } Log::channel('logPerso')->info("TRANSFERT_SITE terminee"); /**:::::::::::::::::::: TRANSFERT INTER ZONE ::::::::::::::::::::::: */ $TRANSFERT_INTERNE_LIGNE = DB::table('TRANSFERT_INTERNE_LIGNE') ->where("IDSTOCKAGENCE_LOTS", $items->IDSTOCKAGENCE_LOTS) ->where("IDAGENCE", $IDAGENCE) ->get(); // Log::channel('logPerso')->info("TRANSFERT_INTERNE_LIGNE " . $TRANSFERT_INTERNE_LIGNE->count()); foreach ($TRANSFERT_INTERNE_LIGNE as $key => $ITEMS_INTERNE_LIGNE) { $IDSTOCKAGENCE_LOTS_EXPEDITION = 0; $IDZONESTOCKAGE_EXPEDITION = 0; $IDSTOCKAGENCE_LOTS_RECEPTION = 0; $IDZONESTOCKAGE_RECEPTION = 0; if ($ITEMS_INTERNE_LIGNE->RetourEnReserve == false) { $IDSTOCKAGENCE_LOTS_EXPEDITION = $IDSTOCKAGENCE_LOTS_RESERVE; $IDZONESTOCKAGE_EXPEDITION = $IDZONESTOCKAGE_RESERVE; $IDSTOCKAGENCE_LOTS_RECEPTION = $IDSTOCKAGENCE_LOTS_DEBALLE; $IDZONESTOCKAGE_RECEPTION = $IDZONESTOCKAGE_DEBALLE; $StockAvantExpedition = $ITEMS_INTERNE_LIGNE->StockReserve; } else { $IDSTOCKAGENCE_LOTS_EXPEDITION = $IDSTOCKAGENCE_LOTS_DEBALLE; $IDZONESTOCKAGE_EXPEDITION = $IDZONESTOCKAGE_DEBALLE; $IDSTOCKAGENCE_LOTS_RECEPTION = $IDSTOCKAGENCE_LOTS_RESERVE; $IDZONESTOCKAGE_RECEPTION = $IDZONESTOCKAGE_RESERVE; $StockAvantExpedition = $ITEMS_INTERNE_LIGNE->StockDetail; } if ($ITEMS_INTERNE_LIGNE->IDOperateurDepart <= 0) { $StatutTransfert = 1; } else if ($ITEMS_INTERNE_LIGNE->IDOperateurDepart > 0 && $ITEMS_INTERNE_LIGNE->IDOperateurReception <= 0) { $StatutTransfert = 2; } else { $StatutTransfert = 3; } $TRANSFERT_INTER_ZONE = new TRANSFERT_INTER_ZONE(); $TRANSFERT_INTER_ZONE->IDAGENCE = $ITEMS_INTERNE_LIGNE->IDAGENCE; $TRANSFERT_INTER_ZONE->IDZONESTOCKAGE_EXPEDITION = $IDZONESTOCKAGE_EXPEDITION; $TRANSFERT_INTER_ZONE->IDZONESTOCKAGE_RECEPTION = $IDZONESTOCKAGE_RECEPTION; $TRANSFERT_INTER_ZONE->IDSTOCKAGENCE_LOTS_EXPEDITION = $IDSTOCKAGENCE_LOTS_EXPEDITION; $TRANSFERT_INTER_ZONE->IDSTOCKAGENCE_LOTS_RECEPTION = $IDSTOCKAGENCE_LOTS_RECEPTION; $TRANSFERT_INTER_ZONE->StockAvantExpedition = $StockAvantExpedition; $TRANSFERT_INTER_ZONE->QteTransferee = $ITEMS_INTERNE_LIGNE->QteTransferee; $TRANSFERT_INTER_ZONE->QteSuggeree = $ITEMS_INTERNE_LIGNE->QteATransferer; $TRANSFERT_INTER_ZONE->IDPRODUIT = $ITEMS_INTERNE_LIGNE->IDPRODUIT; $TRANSFERT_INTER_ZONE->IDEMPLACEMENT_EXPEDITION = 0; $TRANSFERT_INTER_ZONE->IDEMPLACEMENT_RECEPTION = 0; $TRANSFERT_INTER_ZONE->ID_Old = $ITEMS_INTERNE_LIGNE->IDTRANSFERT_INTERNE_LIGNE; $TRANSFERT_INTER_ZONE->ExpedieLe = $ITEMS_INTERNE_LIGNE->DateHeureDepartTransfert; $TRANSFERT_INTER_ZONE->ExpediePar = $ITEMS_INTERNE_LIGNE->IDOperateurDepart; $TRANSFERT_INTER_ZONE->ReceptionneLe = $ITEMS_INTERNE_LIGNE->DateHeureReceptionTransfert; $TRANSFERT_INTER_ZONE->ReceptionnePar = $ITEMS_INTERNE_LIGNE->IDOperateurReception; $TRANSFERT_INTER_ZONE->ReceptionWS = $ITEMS_INTERNE_LIGNE->ReceptionWS; $TRANSFERT_INTER_ZONE->created_at = $ITEMS_INTERNE_LIGNE->CreeLe; $TRANSFERT_INTER_ZONE->updated_at = $ITEMS_INTERNE_LIGNE->ModifieLe; $TRANSFERT_INTER_ZONE->ModeTransfert = $ITEMS_INTERNE_LIGNE->ModeDemandeTransfert; $TRANSFERT_INTER_ZONE->StatutTransfert = $StatutTransfert; $TRANSFERT_INTER_ZONE->IDPaysProprietaire = $ITEMS_INTERNE_LIGNE->IDPaysProprietaire; $TRANSFERT_INTER_ZONE->CreeLe = $ITEMS_INTERNE_LIGNE->CreeLe; $TRANSFERT_INTER_ZONE->CreePar = $ITEMS_INTERNE_LIGNE->CreePar; $TRANSFERT_INTER_ZONE->ModifieLe = $ITEMS_INTERNE_LIGNE->ModifieLe; $TRANSFERT_INTER_ZONE->ModifiePar = $ITEMS_INTERNE_LIGNE->ModifiePar; $TRANSFERT_INTER_ZONE->save(); } Log::channel('logPerso')->info("TRANSFERT_INTERNE_LIGNE terminee"); /**:::::::::::::::::::: MOUVEMENT DE STOCKS ::::::::::::::::::::::: */ $CORRECTION = CORRECTION::select([ "ZoneStockageCorrigee", "IDZONESTOCKAGE", "IDSTOCKAGENCE_LOTS", "CORRECTION.IDCORRECTION", "CORRECTION_LIGNE.IDCORRECTION_LIGNE", ]) ->leftJoin("CORRECTION_LIGNE", "CORRECTION.IDCORRECTION", "CORRECTION_LIGNE.IDCORRECTION") ->where("CORRECTION.IDAGENCE", $IDAGENCE) ->where("CORRECTION_LIGNE.IDSTOCKAGENCE_LOTS", $items->IDSTOCKAGENCE_LOTS) ->get(); // Log::channel('logPerso')->info("CORRECTION " . $CORRECTION->count()); foreach ($CORRECTION as $key => $ITEMS_COR) { if ($ITEMS_COR->ZoneStockageCorrigee == 0 || $ITEMS_COR->ZoneStockageCorrigee == 1) { DB::table('CORRECTION_LIGNE') ->where("IDCORRECTION_LIGNE", $ITEMS_COR->IDCORRECTION_LIGNE) ->update([ "IDSTOCKAGENCE_LOTS" => $IDSTOCKAGENCE_LOTS_RESERVE, ]); DB::table('CORRECTION') ->where("IDCORRECTION", $ITEMS_COR->IDCORRECTION) ->update([ "IDZONESTOCKAGE" => $IDZONESTOCKAGE_RESERVE, ]); } else { DB::table('CORRECTION_LIGNE') ->where("IDCORRECTION_LIGNE", $ITEMS_COR->IDCORRECTION_LIGNE) ->update([ "IDSTOCKAGENCE_LOTS" => $IDSTOCKAGENCE_LOTS_DEBALLE, ]); DB::table('CORRECTION') ->where("IDCORRECTION", $ITEMS_COR->IDCORRECTION) ->update([ "IDZONESTOCKAGE" => $IDZONESTOCKAGE_DEBALLE, ]); } } Log::channel('logPerso')->info("CORRECTION terminee"); /**:::::::::::::::::::: FACTURE CLIENT ::::::::::::::::::::::: */ $FACTURECLIENT = DB::table('FACTURECLIENT') ->select([ "IDSTOCKAGENCE_LOTS", "IDZONESTOCKAGE", "ZoneFacturation", "FACTURECLIENT_LIGNE.IDFACTURECLIENT_LIGNE", "FACTURECLIENT.IDFACTURECLIENT", ]) ->leftJoin("FACTURECLIENT_LIGNE", "FACTURECLIENT.IDFACTURECLIENT", "FACTURECLIENT_LIGNE.IDFACTURECLIENT") ->where("IDAGENCE", $IDAGENCE) ->where("IDSTOCKAGENCE_LOTS", $items->IDSTOCKAGENCE_LOTS) ->orderBy("DateFactureClient") ->orderBy("IDFACTURECLIENT") ->get(); // Log::channel('logPerso')->info("FACTURECLIENT " . $FACTURECLIENT->count()); $IDFACTURECLIENT_OLD = ""; foreach ($FACTURECLIENT as $key => $ITEMS_FC) { if ($ITEMS_FC->ZoneFacturation == 4) { if ($ITEMS_FC->IDFACTURECLIENT != $IDFACTURECLIENT_OLD) { DB::table('FACTURECLIENT') ->where("IDFACTURECLIENT", $ITEMS_FC->IDFACTURECLIENT) ->update([ "IDZONESTOCKAGE" => $IDZONESTOCKAGE_RESERVE, ]); } DB::table('FACTURECLIENT_LIGNE') ->where("IDFACTURECLIENT_LIGNE", $ITEMS_FC->IDFACTURECLIENT_LIGNE) ->update([ "IDSTOCKAGENCE_LOTS" => $IDSTOCKAGENCE_LOTS_RESERVE, ]); } else { if ($ITEMS_FC->IDFACTURECLIENT != $IDFACTURECLIENT_OLD) { DB::table('FACTURECLIENT') ->where("IDFACTURECLIENT", $ITEMS_FC->IDFACTURECLIENT) ->update([ "IDZONESTOCKAGE" => $IDZONESTOCKAGE_DEBALLE, ]); } } $IDFACTURECLIENT_OLD = $ITEMS_FC->IDFACTURECLIENT; } Log::channel('logPerso')->info("FACTURECLIENT terminee"); /**:::::::::::::::::::: RETOUR FSEUR ::::::::::::::::::::::: */ $RETOURFSEUR = RETOURFSEUR::where("RETOURFSEUR.AgenceConcernee", $IDAGENCE) ->where("RETOURFSEUR_LIGNE.IDSTOCKAGENCE_LOTS", $items->IDSTOCKAGENCE_LOTS) ->leftJoin("RETOURFSEUR_LIGNE", "RETOURFSEUR.IDRETOURFSEUR", "RETOURFSEUR_LIGNE.IDRETOURFSEUR") ->select("IDSTOCKAGENCE_LOTS", "ZoneEntreeStock", "IDRETOURFSEURLIGNE") ->get(); // Log::channel('logPerso')->info("RETOURFSEUR " . $RETOURFSEUR->count()); foreach ($RETOURFSEUR as $key => $ITEMS_RTF) { if ($ITEMS_RTF->ZoneEntreeStock == 0 || $ITEMS_RTF->ZoneEntreeStock == 1) { DB::table('RETOURFSEUR_LIGNE') ->where("IDRETOURFSEURLIGNE", $ITEMS_RTF->IDRETOURFSEURLIGNE) ->update([ "IDZONESTOCKAGE" => $IDZONESTOCKAGE_RESERVE, "IDSTOCKAGENCE_LOTS" => $IDSTOCKAGENCE_LOTS_RESERVE, ]); } else { DB::table('RETOURFSEUR_LIGNE') ->where("IDRETOURFSEURLIGNE", $ITEMS_RTF->IDRETOURFSEURLIGNE) ->update([ "IDZONESTOCKAGE" => $IDZONESTOCKAGE_DEBALLE, // "IDSTOCKAGENCE_LOTS" => $IDSTOCKAGENCE_LOTS_DEBALLE, ]); } } Log::channel('logPerso')->info("RETOURFSEUR terminee"); /**:::::::::::::::::::: RETOUR CLIENT ::::::::::::::::::::::: */ $RETOURCLIENT = DB::table('RETOURCLIENT') ->select([ "FACTURECLIENT.IDZONESTOCKAGE", "FACTURECLIENT.ZoneFacturation", "RETOURCLIENT_LIGNE.IDSTOCKAGENCE_LOTS", "RETOURCLIENT_LIGNE.IDRETOURCLIENT_LIGNE", ]) ->leftJoin("RETOURCLIENT_LIGNE", "RETOURCLIENT.IDRETOURCLIENT", "RETOURCLIENT_LIGNE.IDRETOURCLIENT") ->leftJoin("FACTURECLIENT_LIGNE", "RETOURCLIENT_LIGNE.IDFACTURECLIENTLIGNE", "FACTURECLIENT_LIGNE.IDFACTURECLIENT_LIGNE") ->leftJoin("FACTURECLIENT", "FACTURECLIENT_LIGNE.IDFACTURECLIENT", "FACTURECLIENT.IDFACTURECLIENT") ->where("FACTURECLIENT.IDAGENCE", $items->IDAGENCE) ->where("RETOURCLIENT_LIGNE.IDSTOCKAGENCE_LOTS", $items->IDSTOCKAGENCE_LOTS) ->get(); // Log::channel('logPerso')->info("RETOURCLIENT " . $RETOURCLIENT->count()); foreach ($RETOURCLIENT as $key => $ITEMS_RTC) { if ($ITEMS_RTC->ZoneFacturation == 4) { DB::table('RETOURCLIENT_LIGNE') ->where("IDRETOURCLIENT_LIGNE", $ITEMS_RTC->IDRETOURCLIENT_LIGNE) ->update([ "IDSTOCKAGENCE_LOTS" => $IDSTOCKAGENCE_LOTS_RESERVE, ]); } else { DB::table('RETOURCLIENT_LIGNE') ->where("IDRETOURCLIENT_LIGNE", $ITEMS_RTC->IDRETOURCLIENT_LIGNE) ->update([ "IDSTOCKAGENCE_LOTS" => $IDSTOCKAGENCE_LOTS_DEBALLE, ]); } } Log::channel('logPerso')->info("RETOURCLIENT terminee"); /**:::::::::::::::::::: BLOCAGE LOT ::::::::::::::::::::::: */ $STOCKAGENCE_LOTS_BLOQUE = STOCKAGENCE_LOTS_BLOQUE::where("IDAGENCE", $IDAGENCE) ->select("IDSTOCKAGENCE_LOTS", "ZoneStockageBloque", "IDSTOCKAGENCE_LOTS_BLOQUE") ->where("STOCKAGENCE_LOTS_BLOQUE.IDSTOCKAGENCE_LOTS", $items->IDSTOCKAGENCE_LOTS) ->get(); Log::channel('logPerso')->info("STOCKAGENCE_LOTS_BLOQUE " . $STOCKAGENCE_LOTS_BLOQUE->count()); foreach ($STOCKAGENCE_LOTS_BLOQUE as $key => $STA_LOTS_BLOQUE) { if ($STA_LOTS_BLOQUE->ZoneStockageBloque == 0 || $STA_LOTS_BLOQUE->ZoneStockageBloque == 1) { DB::table('STOCKAGENCE_LOTS_BLOQUE') ->where("IDSTOCKAGENCE_LOTS_BLOQUE", $STA_LOTS_BLOQUE->IDSTOCKAGENCE_LOTS_BLOQUE) ->update([ "IDZONESTOCKAGE" => $IDZONESTOCKAGE_RESERVE, "IDSTOCKAGENCE_LOTS" => $IDSTOCKAGENCE_LOTS_RESERVE, ]); } else { DB::table('STOCKAGENCE_LOTS_BLOQUE') ->where("IDSTOCKAGENCE_LOTS_BLOQUE", $STA_LOTS_BLOQUE->IDSTOCKAGENCE_LOTS_BLOQUE) ->update([ "IDZONESTOCKAGE" => $IDZONESTOCKAGE_DEBALLE, ]); } } Log::channel('logPerso')->info("STOCKAGENCE_LOTS_BLOQUE terminee"); $items->LotTraiteGpharmaWeb = true; $items->save(); DB::commit(); Log::channel('logPerso')->info("Site : " . $IDAGENCE . " Lot :" . $items->IDSTOCKAGENCE_LOTS); } return response()->json(["error" => false, "messages" => "Opération terminée avec success !"], 200); } catch (\Throwable $th) { DB::rollback(); Log::channel('logPerso')->info($th->getMessage(), ["line" => $th->getLine(), "file" => $th->getFile()]); return response()->json(["error" => true, "messages" => "Une erreur est survenue !! "], 400); } } // 10/09/2023 public function traitementLots() { try { $IDAGENCE = 2; // A remplacer par l'agence concernée $ZONESTOCKAGE_RESERVE = ZONESTOCKAGE::select("IDZONESTOCKAGE") ->where("ReservePrincipale", true) ->where("IDAGENCE", $IDAGENCE) ->first(); $ZONESTOCKAGE_DEBALLE = ZONESTOCKAGE::select("IDZONESTOCKAGE") ->where("DeballePrincipal", true) ->where("IDAGENCE", $IDAGENCE) ->first(); if ($ZONESTOCKAGE_RESERVE == null && $ZONESTOCKAGE_DEBALLE == null) { return response()->json(["error" => true, "messages" => "Merci de vérifier les zones de stockage !"], 500); } // $STOCKAGENCE_LOTS = STOCKAGENCE_LOTS::whereRaw('COALESCE("IDZONESTOCKAGE", 0) = 0') $STOCKAGENCE_LOTS = STOCKAGENCE_LOTS::where('CreeLe', "<", "2023-11-01 00:00:00") // ->leftJoin("STOCKAGENCE") ->where("LotTraiteGpharmaWeb", false) ->where("IDAGENCE", $IDAGENCE) ->where("IDSTOCKAGENCE_LOTS", 281474977343643) ->orderBy("IDAGENCE") ->orderBy("CreeLe") ->orderBy("IDSTOCKAGENCE_LOTS") ->limit(5000) ->get(); $IDZONESTOCKAGE_RESERVE = $ZONESTOCKAGE_RESERVE->IDZONESTOCKAGE; $IDZONESTOCKAGE_DEBALLE = $ZONESTOCKAGE_DEBALLE->IDZONESTOCKAGE; foreach ($STOCKAGENCE_LOTS as $key => $items) { DB::beginTransaction(); Log::channel('logPerso')->info("[$key] IDSTOCKAGENCE_LOTS " . $items->IDSTOCKAGENCE_LOTS . " - CreeLe " . $items->CreeLe); $Stockagence = Stockagence::find($items->IDSTOCKAGENCE); $ZoneStockageProduit = $Stockagence->ZoneStockageProduit < 0 ? 1 : $Stockagence->ZoneStockageProduit; if ($Stockagence != null && $ZoneStockageProduit > 1) { $IDZONESTOCKAGE_DEBALLE_OLD = $IDZONESTOCKAGE_DEBALLE; $IDZONESTOCKAGE_DEBALLE = DB::table("ZONESTOCKAGE") ->select("IDZONESTOCKAGE") ->where('IDAGENCE', $items->IDAGENCE) ->where("TypeZoneStockage", $ZoneStockageProduit) ->first()->IDZONESTOCKAGE ?? 0; if ($IDZONESTOCKAGE_DEBALLE == 0) { switch ($items->IDAGENCE) { case 2: if ($ZoneStockageProduit == 4) { $IDZONESTOCKAGE_DEBALLE = 17; // ZONE-01/VRI } else if ($ZoneStockageProduit == 5) { $IDZONESTOCKAGE_DEBALLE = 18; // ZONE-02/VRI } else if ($ZoneStockageProduit == 6) { $IDZONESTOCKAGE_DEBALLE = 19; // ZONE-03/VRI } break; case 3: if ($ZoneStockageProduit == 4) { $IDZONESTOCKAGE_DEBALLE = 20; // ZONE-01/GNA } else if ($ZoneStockageProduit == 5) { $IDZONESTOCKAGE_DEBALLE = 21; // ZONE-02/GNA } else if ($ZoneStockageProduit == 6) { $IDZONESTOCKAGE_DEBALLE = 22; // ZONE-03/GNA } break; case 4: if ($ZoneStockageProduit == 4) { $IDZONESTOCKAGE_DEBALLE = 23; // ZONE-01/BKE } else if ($ZoneStockageProduit == 5) { $IDZONESTOCKAGE_DEBALLE = 24; // ZONE-02/BKE } else if ($ZoneStockageProduit == 6) { $IDZONESTOCKAGE_DEBALLE = 25; // ZONE-03/BKE } break; default: $IDZONESTOCKAGE_DEBALLE = $IDZONESTOCKAGE_DEBALLE_OLD; break; } } } if ($items->IDAGENCE == 1) { $items->IDZONESTOCKAGE = $IDZONESTOCKAGE_RESERVE; $items->save(); $IDSTOCKAGENCE_LOTS_DEBALLE = $items->IDSTOCKAGENCE_LOTS; $IDSTOCKAGENCE_LOTS_RESERVE = $items->IDSTOCKAGENCE_LOTS; $IDZONESTOCKAGE_RESERVE = $IDZONESTOCKAGE_RESERVE; $IDZONESTOCKAGE_DEBALLE = null; } else { $items->IDZONESTOCKAGE = $IDZONESTOCKAGE_DEBALLE; $items->save(); $items_reserve = $items->replicate(); $items_reserve->StockTransit = 0; $items_reserve->StockTotal_Lot = $items->StockReserve; $items_reserve->StockTransitTIZ = 0; // a revoir $items_reserve->StockEnReception = 0; // a revoir $items_reserve->QteEnCoursVente = 0; // a revoir $items_reserve->QtecoursDeRoute_Lot = 0; // a revoir $items_reserve->IDZONESTOCKAGE = $IDZONESTOCKAGE_RESERVE; $items_reserve->ID_Old = $items->IDSTOCKAGENCE_LOTS; $items_reserve->LotTraiteGpharmaWeb = true; // unset($items_reserve->IDSTOCKAGENCE_LOTS); // $items_reserve->IDSTOCKAGENCE_LOTS = null; $items_reserve->save(); $IDSTOCKAGENCE_LOTS_DEBALLE = $items->IDSTOCKAGENCE_LOTS; $IDSTOCKAGENCE_LOTS_RESERVE = $items_reserve->IDSTOCKAGENCE_LOTS; } /**:::::::::::::::::::: BON LIVRAISON ::::::::::::::::::::::: */ $BONDELIVRAISON = BONDELIVRAISON::select([ "BONLIVRAISONLIGNE.IDZoneEntreeStock", "BONLIVRAISONLIGNE.ZoneEntreeStock", "BONLIVRAISONLIGNE.IDBONLIVRAISONLIGNE", "BONLIVRAISON.IDBONLIVRAISON", ]) ->leftJoin("BONLIVRAISONLIGNE", "BONLIVRAISON.IDBONLIVRAISON", "BONLIVRAISONLIGNE.IDBONLIVRAISON") ->where("BONLIVRAISON.AgenceReceptionnee", $IDAGENCE) ->whereRaw('COALESCE("BONLIVRAISONLIGNE"."IDZoneEntreeStock", 0) = 0') ->where("BONLIVRAISONLIGNE.IDSTOCKAGENCE_LOTS", $IDSTOCKAGENCE_LOTS_DEBALLE) ->get(); // Log::channel('logPerso')->info("BONDELIVRAISON " . $BONDELIVRAISON->count()); foreach ($BONDELIVRAISON as $key => $ITEM_BL) { if ($ITEM_BL->ZoneEntreeStock == 0 || $ITEM_BL->ZoneEntreeStock == 1) { DB::table('BONLIVRAISONLIGNE') ->where("IDBONLIVRAISONLIGNE", $ITEM_BL->IDBONLIVRAISONLIGNE) ->update([ "IDZoneEntreeStock" => $IDZONESTOCKAGE_RESERVE, "IDSTOCKAGENCE_LOTS" => $IDSTOCKAGENCE_LOTS_RESERVE, ]); } else { DB::table('BONLIVRAISONLIGNE') ->where("IDBONLIVRAISONLIGNE", $ITEM_BL->IDBONLIVRAISONLIGNE) ->update([ "IDZoneEntreeStock" => $IDZONESTOCKAGE_DEBALLE, "IDSTOCKAGENCE_LOTS" => $IDSTOCKAGENCE_LOTS_DEBALLE, ]); } } Log::channel('logPerso')->info("BONDELIVRAISON terminee"); /**:::::::::::::::::::: TRANSFERT INTER-SITE ::::::::::::::::::::::: */ $IDSTL = $items->IDSTOCKAGENCE_LOTS; $TRANSFERT_SITE = TRANSFERT_SITE::leftJoin('TRANSFERT_SITE_LIGNE', 'TRANSFERT_SITE.IDTRANSFERT_SITE', '=', 'TRANSFERT_SITE_LIGNE.IDTRANSFERT_SITE') ->where(function ($query) use ($IDAGENCE) { $query->where('IDAGENCE', $IDAGENCE) ->orWhere('IDAGENCEDESTINATION', $IDAGENCE); }) ->where(function ($query) use ($IDSTL) { $query->where('IDSTOCKAGENCE_LOTS', $IDSTL) ->orWhere('IDSTOCKAGENCE_LOTS_RECEPTION', $IDSTL); }) ->select( 'TRANSFERT_SITE_LIGNE.IDZONESTOCKAGE_EXPEDITION', 'TRANSFERT_SITE_LIGNE.IDZONESTOCKAGE_RECEPTION', 'TRANSFERT_SITE_LIGNE.IDTRANSFERT_SITE_LIGNE', 'TRANSFERT_SITE_LIGNE.ZonePrelevementTransfert', 'TRANSFERT_SITE_LIGNE.ZoneReceptionTransfert' ) ->get(); // Log::channel('logPerso')->info("TRANSFERT_SITE " . $TRANSFERT_SITE->count()); foreach ($TRANSFERT_SITE as $key => $ITEMS_TRS) { if ($ITEMS_TRS->ZonePrelevementTransfert == 0 || $ITEMS_TRS->ZonePrelevementTransfert == 1) { DB::table('TRANSFERT_SITE_LIGNE') ->where('IDTRANSFERT_SITE_LIGNE', $ITEMS_TRS->IDTRANSFERT_SITE_LIGNE) ->update([ "IDSTOCKAGENCE_LOTS" => $IDSTOCKAGENCE_LOTS_RESERVE, "IDZONESTOCKAGE_EXPEDITION" => $IDZONESTOCKAGE_RESERVE, ]); } else { DB::table('TRANSFERT_SITE_LIGNE') ->where('IDTRANSFERT_SITE_LIGNE', $ITEMS_TRS->IDTRANSFERT_SITE_LIGNE) ->update([ "IDZONESTOCKAGE_EXPEDITION" => $IDZONESTOCKAGE_DEBALLE, "IDSTOCKAGENCE_LOTS" => $IDSTOCKAGENCE_LOTS_DEBALLE, ]); } if ($ITEMS_TRS->ZoneReceptionTransfert == 0 || $ITEMS_TRS->ZoneReceptionTransfert == 1) { DB::table('TRANSFERT_SITE_LIGNE') ->where('IDTRANSFERT_SITE_LIGNE', $ITEMS_TRS->IDTRANSFERT_SITE_LIGNE) ->update([ "IDSTOCKAGENCE_LOTS_RECEPTION" => $IDSTOCKAGENCE_LOTS_RESERVE, "IDZONESTOCKAGE_RECEPTION" => $IDZONESTOCKAGE_RESERVE, ]); } else { DB::table('TRANSFERT_SITE_LIGNE') ->where('IDTRANSFERT_SITE_LIGNE', $ITEMS_TRS->IDTRANSFERT_SITE_LIGNE) ->update([ "IDZONESTOCKAGE_RECEPTION" => $IDZONESTOCKAGE_DEBALLE, "IDSTOCKAGENCE_LOTS_RECEPTION" => $IDSTOCKAGENCE_LOTS_DEBALLE, ]); } } Log::channel('logPerso')->info("TRANSFERT_SITE terminee"); /**:::::::::::::::::::: TRANSFERT INTER ZONE ::::::::::::::::::::::: */ $TRANSFERT_INTERNE_LIGNE = DB::table('TRANSFERT_INTERNE_LIGNE') ->where("IDSTOCKAGENCE_LOTS", $items->IDSTOCKAGENCE_LOTS) ->where("IDAGENCE", $IDAGENCE) ->get(); // Log::channel('logPerso')->info("TRANSFERT_INTERNE_LIGNE " . $TRANSFERT_INTERNE_LIGNE->count()); foreach ($TRANSFERT_INTERNE_LIGNE as $key => $ITEMS_INTERNE_LIGNE) { $IDSTOCKAGENCE_LOTS_EXPEDITION = 0; $IDZONESTOCKAGE_EXPEDITION = 0; $IDSTOCKAGENCE_LOTS_RECEPTION = 0; $IDZONESTOCKAGE_RECEPTION = 0; if ($ITEMS_INTERNE_LIGNE->RetourEnReserve == false) { $IDSTOCKAGENCE_LOTS_EXPEDITION = $IDSTOCKAGENCE_LOTS_RESERVE; $IDZONESTOCKAGE_EXPEDITION = $IDZONESTOCKAGE_RESERVE; $IDSTOCKAGENCE_LOTS_RECEPTION = $IDSTOCKAGENCE_LOTS_DEBALLE; $IDZONESTOCKAGE_RECEPTION = $IDZONESTOCKAGE_DEBALLE; $StockAvantExpedition = $ITEMS_INTERNE_LIGNE->StockReserve; } else { $IDSTOCKAGENCE_LOTS_EXPEDITION = $IDSTOCKAGENCE_LOTS_DEBALLE; $IDZONESTOCKAGE_EXPEDITION = $IDZONESTOCKAGE_DEBALLE; $IDSTOCKAGENCE_LOTS_RECEPTION = $IDSTOCKAGENCE_LOTS_RESERVE; $IDZONESTOCKAGE_RECEPTION = $IDZONESTOCKAGE_RESERVE; $StockAvantExpedition = $ITEMS_INTERNE_LIGNE->StockDetail; } if ($ITEMS_INTERNE_LIGNE->IDOperateurDepart <= 0) { $StatutTransfert = 1; } else if ($ITEMS_INTERNE_LIGNE->IDOperateurDepart > 0 && $ITEMS_INTERNE_LIGNE->IDOperateurReception <= 0) { $StatutTransfert = 2; } else { $StatutTransfert = 3; } $TRANSFERT_INTER_ZONE = new TRANSFERT_INTER_ZONE(); $TRANSFERT_INTER_ZONE->IDAGENCE = $ITEMS_INTERNE_LIGNE->IDAGENCE; $TRANSFERT_INTER_ZONE->IDZONESTOCKAGE_EXPEDITION = $IDZONESTOCKAGE_EXPEDITION; $TRANSFERT_INTER_ZONE->IDZONESTOCKAGE_RECEPTION = $IDZONESTOCKAGE_RECEPTION; $TRANSFERT_INTER_ZONE->IDSTOCKAGENCE_LOTS_EXPEDITION = $IDSTOCKAGENCE_LOTS_EXPEDITION; $TRANSFERT_INTER_ZONE->IDSTOCKAGENCE_LOTS_RECEPTION = $IDSTOCKAGENCE_LOTS_RECEPTION; $TRANSFERT_INTER_ZONE->StockAvantExpedition = $StockAvantExpedition; $TRANSFERT_INTER_ZONE->QteTransferee = $ITEMS_INTERNE_LIGNE->QteTransferee; $TRANSFERT_INTER_ZONE->QteSuggeree = $ITEMS_INTERNE_LIGNE->QteATransferer; $TRANSFERT_INTER_ZONE->IDPRODUIT = $ITEMS_INTERNE_LIGNE->IDPRODUIT; $TRANSFERT_INTER_ZONE->IDEMPLACEMENT_EXPEDITION = 0; $TRANSFERT_INTER_ZONE->IDEMPLACEMENT_RECEPTION = 0; $TRANSFERT_INTER_ZONE->ID_Old = $ITEMS_INTERNE_LIGNE->IDTRANSFERT_INTERNE_LIGNE; $TRANSFERT_INTER_ZONE->ExpedieLe = $ITEMS_INTERNE_LIGNE->DateHeureDepartTransfert; $TRANSFERT_INTER_ZONE->ExpediePar = $ITEMS_INTERNE_LIGNE->IDOperateurDepart; $TRANSFERT_INTER_ZONE->ReceptionneLe = $ITEMS_INTERNE_LIGNE->DateHeureReceptionTransfert; $TRANSFERT_INTER_ZONE->ReceptionnePar = $ITEMS_INTERNE_LIGNE->IDOperateurReception; $TRANSFERT_INTER_ZONE->ReceptionWS = $ITEMS_INTERNE_LIGNE->ReceptionWS; $TRANSFERT_INTER_ZONE->created_at = $ITEMS_INTERNE_LIGNE->CreeLe; $TRANSFERT_INTER_ZONE->updated_at = $ITEMS_INTERNE_LIGNE->ModifieLe; $TRANSFERT_INTER_ZONE->ModeTransfert = $ITEMS_INTERNE_LIGNE->ModeDemandeTransfert; $TRANSFERT_INTER_ZONE->StatutTransfert = $StatutTransfert; $TRANSFERT_INTER_ZONE->IDPaysProprietaire = $ITEMS_INTERNE_LIGNE->IDPaysProprietaire; $TRANSFERT_INTER_ZONE->CreeLe = $ITEMS_INTERNE_LIGNE->CreeLe; $TRANSFERT_INTER_ZONE->CreePar = $ITEMS_INTERNE_LIGNE->CreePar; $TRANSFERT_INTER_ZONE->ModifieLe = $ITEMS_INTERNE_LIGNE->ModifieLe; $TRANSFERT_INTER_ZONE->ModifiePar = $ITEMS_INTERNE_LIGNE->ModifiePar; $TRANSFERT_INTER_ZONE->save(); } Log::channel('logPerso')->info("TRANSFERT_INTERNE_LIGNE terminee"); /**:::::::::::::::::::: MOUVEMENT DE STOCKS ::::::::::::::::::::::: */ $CORRECTION = CORRECTION::select([ "ZoneStockageCorrigee", "IDZONESTOCKAGE", "IDSTOCKAGENCE_LOTS", "CORRECTION.IDCORRECTION", "CORRECTION_LIGNE.IDCORRECTION_LIGNE", ]) ->leftJoin("CORRECTION_LIGNE", "CORRECTION.IDCORRECTION", "CORRECTION_LIGNE.IDCORRECTION") ->where("CORRECTION.IDAGENCE", $IDAGENCE) ->where("CORRECTION_LIGNE.IDSTOCKAGENCE_LOTS", $items->IDSTOCKAGENCE_LOTS) ->get(); // Log::channel('logPerso')->info("CORRECTION " . $CORRECTION->count()); foreach ($CORRECTION as $key => $ITEMS_COR) { if ($ITEMS_COR->ZoneStockageCorrigee == 0 || $ITEMS_COR->ZoneStockageCorrigee == 1) { DB::table('CORRECTION_LIGNE') ->where("IDCORRECTION_LIGNE", $ITEMS_COR->IDCORRECTION_LIGNE) ->update([ "IDSTOCKAGENCE_LOTS" => $IDSTOCKAGENCE_LOTS_RESERVE, ]); DB::table('CORRECTION') ->where("IDCORRECTION", $ITEMS_COR->IDCORRECTION) ->update([ "IDZONESTOCKAGE" => $IDZONESTOCKAGE_RESERVE, ]); } else { DB::table('CORRECTION_LIGNE') ->where("IDCORRECTION_LIGNE", $ITEMS_COR->IDCORRECTION_LIGNE) ->update([ "IDSTOCKAGENCE_LOTS" => $IDSTOCKAGENCE_LOTS_DEBALLE, ]); DB::table('CORRECTION') ->where("IDCORRECTION", $ITEMS_COR->IDCORRECTION) ->update([ "IDZONESTOCKAGE" => $IDZONESTOCKAGE_DEBALLE, ]); } } Log::channel('logPerso')->info("CORRECTION terminee"); /**:::::::::::::::::::: FACTURE CLIENT ::::::::::::::::::::::: */ $FACTURECLIENT = DB::table('FACTURECLIENT') ->select([ "IDSTOCKAGENCE_LOTS", "IDZONESTOCKAGE", "ZoneFacturation", "FACTURECLIENT_LIGNE.IDFACTURECLIENT_LIGNE", "FACTURECLIENT.IDFACTURECLIENT", "FACTURECLIENT.TypeRayons", ]) ->leftJoin("FACTURECLIENT_LIGNE", "FACTURECLIENT.IDFACTURECLIENT", "FACTURECLIENT_LIGNE.IDFACTURECLIENT") ->where("IDAGENCE", $IDAGENCE) ->where("IDSTOCKAGENCE_LOTS", $items->IDSTOCKAGENCE_LOTS) ->where("IDZONESTOCKAGE", "<=", 0) ->orderBy("DateFactureClient") ->orderBy("IDFACTURECLIENT") ->get(); // ListeAjoute(MoiMême,"DEBALLE"+gLien(1)) // ListeAjoute(MoiMême,"FROID"+gLien(2)) // ListeAjoute(MoiMême,"SOUS CLE"+gLien(3)) // ListeAjoute(MoiMême,"RESERVE"+gLien(4)) // ListeAjoute(MoiMême,"LAIT ET FARINE"+gLien(5)) // ListeAjoute(MoiMême,"ZONE-01"+gLien(6)) // ListeAjoute(MoiMême,"ZONE-02"+gLien(7)) // ListeAjoute(MoiMême,"ZONE-03"+gLien(8)) // Log::channel('logPerso')->info("FACTURECLIENT " . $FACTURECLIENT->count()); $IDFACTURECLIENT_OLD = ""; foreach ($FACTURECLIENT as $key => $ITEMS_FC) { if ($ITEMS_FC->TypeRayons == 4) { if ($ITEMS_FC->IDFACTURECLIENT != $IDFACTURECLIENT_OLD) { DB::table('FACTURECLIENT') ->where("IDFACTURECLIENT", $ITEMS_FC->IDFACTURECLIENT) ->update([ "IDZONESTOCKAGE" => $IDZONESTOCKAGE_RESERVE, ]); } DB::table('FACTURECLIENT_LIGNE') ->where("IDFACTURECLIENT_LIGNE", $ITEMS_FC->IDFACTURECLIENT_LIGNE) ->update([ "IDSTOCKAGENCE_LOTS" => $IDSTOCKAGENCE_LOTS_RESERVE, ]); } else { $zoneParTypeRayons = $this->zoneParTypeRayons($ITEMS_FC->TypeRayons, $IDAGENCE); $IDZONESTOCKAGE_DEBALLE = $zoneParTypeRayons == 0 ? $IDZONESTOCKAGE_DEBALLE : $zoneParTypeRayons; if ($ITEMS_FC->IDFACTURECLIENT != $IDFACTURECLIENT_OLD) { DB::table('FACTURECLIENT') ->where("IDFACTURECLIENT", $ITEMS_FC->IDFACTURECLIENT) ->update([ "IDZONESTOCKAGE" => $IDZONESTOCKAGE_DEBALLE, ]); } } $IDFACTURECLIENT_OLD = $ITEMS_FC->IDFACTURECLIENT; } Log::channel('logPerso')->info("FACTURECLIENT terminee"); /**:::::::::::::::::::: RETOUR FSEUR ::::::::::::::::::::::: */ $RETOURFSEUR = RETOURFSEUR::where("RETOURFSEUR.AgenceConcernee", $IDAGENCE) ->where("RETOURFSEUR_LIGNE.IDSTOCKAGENCE_LOTS", $items->IDSTOCKAGENCE_LOTS) ->leftJoin("RETOURFSEUR_LIGNE", "RETOURFSEUR.IDRETOURFSEUR", "RETOURFSEUR_LIGNE.IDRETOURFSEUR") ->select("IDSTOCKAGENCE_LOTS", "ZoneEntreeStock", "IDRETOURFSEURLIGNE") ->get(); // Log::channel('logPerso')->info("RETOURFSEUR " . $RETOURFSEUR->count()); foreach ($RETOURFSEUR as $key => $ITEMS_RTF) { if ($ITEMS_RTF->ZoneEntreeStock == 0 || $ITEMS_RTF->ZoneEntreeStock == 1) { DB::table('RETOURFSEUR_LIGNE') ->where("IDRETOURFSEURLIGNE", $ITEMS_RTF->IDRETOURFSEURLIGNE) ->update([ "IDZONESTOCKAGE" => $IDZONESTOCKAGE_RESERVE, "IDSTOCKAGENCE_LOTS" => $IDSTOCKAGENCE_LOTS_RESERVE, ]); } else { DB::table('RETOURFSEUR_LIGNE') ->where("IDRETOURFSEURLIGNE", $ITEMS_RTF->IDRETOURFSEURLIGNE) ->update([ "IDZONESTOCKAGE" => $IDZONESTOCKAGE_DEBALLE, // "IDSTOCKAGENCE_LOTS" => $IDSTOCKAGENCE_LOTS_DEBALLE, ]); } } Log::channel('logPerso')->info("RETOURFSEUR terminee"); /**:::::::::::::::::::: RETOUR CLIENT ::::::::::::::::::::::: */ $RETOURCLIENT = DB::table('RETOURCLIENT') ->select([ "FACTURECLIENT.IDZONESTOCKAGE", "FACTURECLIENT.ZoneFacturation", "RETOURCLIENT_LIGNE.IDSTOCKAGENCE_LOTS", "RETOURCLIENT_LIGNE.IDRETOURCLIENT_LIGNE", ]) ->leftJoin("RETOURCLIENT_LIGNE", "RETOURCLIENT.IDRETOURCLIENT", "RETOURCLIENT_LIGNE.IDRETOURCLIENT") ->leftJoin("FACTURECLIENT_LIGNE", "RETOURCLIENT_LIGNE.IDFACTURECLIENTLIGNE", "FACTURECLIENT_LIGNE.IDFACTURECLIENT_LIGNE") ->leftJoin("FACTURECLIENT", "FACTURECLIENT_LIGNE.IDFACTURECLIENT", "FACTURECLIENT.IDFACTURECLIENT") ->where("FACTURECLIENT.IDAGENCE", $items->IDAGENCE) ->where("RETOURCLIENT_LIGNE.IDSTOCKAGENCE_LOTS", $items->IDSTOCKAGENCE_LOTS) ->get(); // Log::channel('logPerso')->info("RETOURCLIENT " . $RETOURCLIENT->count()); foreach ($RETOURCLIENT as $key => $ITEMS_RTC) { if ($ITEMS_RTC->ZoneFacturation == 4) { DB::table('RETOURCLIENT_LIGNE') ->where("IDRETOURCLIENT_LIGNE", $ITEMS_RTC->IDRETOURCLIENT_LIGNE) ->update([ "IDSTOCKAGENCE_LOTS" => $IDSTOCKAGENCE_LOTS_RESERVE, ]); } else { DB::table('RETOURCLIENT_LIGNE') ->where("IDRETOURCLIENT_LIGNE", $ITEMS_RTC->IDRETOURCLIENT_LIGNE) ->update([ "IDSTOCKAGENCE_LOTS" => $IDSTOCKAGENCE_LOTS_DEBALLE, ]); } } Log::channel('logPerso')->info("RETOURCLIENT terminee"); /**:::::::::::::::::::: BLOCAGE LOT ::::::::::::::::::::::: */ $STOCKAGENCE_LOTS_BLOQUE = STOCKAGENCE_LOTS_BLOQUE::where("IDAGENCE", $IDAGENCE) ->select("IDSTOCKAGENCE_LOTS", "ZoneStockageBloque", "IDSTOCKAGENCE_LOTS_BLOQUE") ->where("STOCKAGENCE_LOTS_BLOQUE.IDSTOCKAGENCE_LOTS", $items->IDSTOCKAGENCE_LOTS) ->get(); Log::channel('logPerso')->info("STOCKAGENCE_LOTS_BLOQUE " . $STOCKAGENCE_LOTS_BLOQUE->count()); foreach ($STOCKAGENCE_LOTS_BLOQUE as $key => $STA_LOTS_BLOQUE) { if ($STA_LOTS_BLOQUE->ZoneStockageBloque == 0 || $STA_LOTS_BLOQUE->ZoneStockageBloque == 1) { DB::table('STOCKAGENCE_LOTS_BLOQUE') ->where("IDSTOCKAGENCE_LOTS_BLOQUE", $STA_LOTS_BLOQUE->IDSTOCKAGENCE_LOTS_BLOQUE) ->update([ "IDZONESTOCKAGE" => $IDZONESTOCKAGE_RESERVE, "IDSTOCKAGENCE_LOTS" => $IDSTOCKAGENCE_LOTS_RESERVE, ]); } else { DB::table('STOCKAGENCE_LOTS_BLOQUE') ->where("IDSTOCKAGENCE_LOTS_BLOQUE", $STA_LOTS_BLOQUE->IDSTOCKAGENCE_LOTS_BLOQUE) ->update([ "IDZONESTOCKAGE" => $IDZONESTOCKAGE_DEBALLE, ]); } } Log::channel('logPerso')->info("STOCKAGENCE_LOTS_BLOQUE terminee"); $items->LotTraiteGpharmaWeb = true; $items->save(); DB::commit(); Log::channel('logPerso')->info("Site : " . $IDAGENCE . " Lot :" . $items->IDSTOCKAGENCE_LOTS); } return response()->json(["error" => false, "messages" => "Opération terminée avec success !"], 200); } catch (\Throwable $th) { DB::rollback(); Log::channel('logPerso')->info($th->getMessage(), ["line" => $th->getLine(), "file" => $th->getFile()]); return response()->json(["error" => true, "messages" => "Une erreur est survenue !! "], 400); } }