OrderPackageService.php 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. <?php
  2. namespace App\Services;
  3. use App\OracleActAllocationDetails;
  4. use App\OracleDOCOrderDetail;
  5. use App\OracleDOCOrderHeader;
  6. use App\Order;
  7. use App\OrderPackage;
  8. class OrderPackageService
  9. {
  10. public function __construct()
  11. {
  12. app()->bind('orderPackageCommoditiesService', OrderPackageCommoditiesService::class);
  13. }
  14. public function createdByOrder(Order $order, OracleDOCOrderHeader $orderHeader = null)
  15. {
  16. $orderPackageCommoditiesService = app('orderPackageCommoditiesService');
  17. if (!$orderHeader) {
  18. $orderHeader = OracleDOCOrderHeader::where('OrderNo', trim($order->code, "'"))->first();
  19. }
  20. // 获取orderNo 对应的打包详情
  21. $orderActAllocationDetails = OracleActAllocationDetails::where(['OrderNo' => $order->code])->get();
  22. if (!$orderActAllocationDetails) {
  23. return [];
  24. }
  25. $orderPackages = [];
  26. foreach ($orderActAllocationDetails as $detail){
  27. $logistic_number = $detail->picktotraceid;
  28. $orderPackage = OrderPackage::where(['logistic_number'=>$logistic_number])->first();
  29. if(!$orderPackage){
  30. $orderPackage = OrderPackage::firstOrCreate(['order_id'=>$order['id'],'logistic_number'=>$logistic_number]);
  31. }
  32. $orderPackageCommoditiesService->createdOrderPackage($orderPackage,$detail);
  33. }
  34. $orderPackages = OrderPackage::with(['commodities' => function($query){
  35. return $query->with(['commodity']);
  36. }])->get();
  37. return $orderPackages;
  38. }
  39. }