OrderPackageService.php 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  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 createOrFindBy(Order $order, OracleDOCOrderHeader $orderHeader = null)
  15. {
  16. if (!$orderHeader) {
  17. $orderHeader = OracleDOCOrderHeader::where('OrderNo', trim($order->code, "'"))->first();
  18. }
  19. // 获取orderNo 对应的打包详情
  20. $orderActAllocationDetails = OracleActAllocationDetails::where(['OrderNo' => $order->code])->get();
  21. if (!$orderActAllocationDetails) {
  22. return;
  23. }
  24. $orderPackageCommoditiesService = app('orderPackageCommoditiesService');
  25. foreach ($orderActAllocationDetails as $detail) {
  26. if ($detail->picktotraceid == '*') {
  27. continue;
  28. }
  29. // 根据打包详情创建orderPackage
  30. $orderPackage = OrderPackage::firstOrCreate(['order_id' => $order->id, 'logistic_number' => $detail->picktotraceid]);
  31. $orderPackageCommoditiesService->createOrFindBy($orderPackage, $detail);
  32. }
  33. }
  34. }