OrderService.php 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. <?php
  2. namespace App\Services;
  3. use App\Commodity;
  4. use App\Logistic;
  5. use App\OracleBasCustomer;
  6. use App\OracleDOCOrderHeader;
  7. use App\Order;
  8. use App\OrderItems;
  9. use App\Owner;
  10. use App\Shop;
  11. class OrderService
  12. {
  13. public function __construct()
  14. {
  15. app()->bind("orderPackageService", OrderPackageService::class);
  16. }
  17. public function createOrFindBy($oracleOrderNo)
  18. {
  19. $order = Order::where('code', $oracleOrderNo)->first();
  20. $orderHeader = OracleDOCOrderHeader::where('OrderNo', trim($oracleOrderNo, "'"))->first();
  21. if ($orderHeader == null) {
  22. return null;
  23. }
  24. $orderHeadAttr = $orderHeader->toArray();
  25. if ($order == null) {
  26. $customer_name = $orderHeadAttr['oracleBASCustomer_descr_c'];
  27. $owner = Owner::firstOrCreate(['name' => $customer_name, 'code' => $orderHeadAttr['customerid']]);
  28. $owner_id = $owner->id;
  29. $shop_name = $orderHeadAttr['issuepartyname'];
  30. $shop_Id = null;
  31. if ($shop_name) {
  32. $shop = Shop::firstOrCreate(['name' => $shop_name, 'owner_id' => $owner_id]);
  33. $shop_Id = $shop->id;
  34. }
  35. $logistics = Logistic::where(['name' => $orderHeadAttr['carrierid']])->first();
  36. if ($logistics == null) {
  37. $oracleBasCustomer = OracleBasCustomer::where(['CustomerID' => $orderHeadAttr['carrierid'], 'Customer_Type' => 'CA'])->first();
  38. if ($oracleBasCustomer) {
  39. $logistics = Logistic::firstOrCreate(['code' => $oracleBasCustomer->customerid, 'name' => $oracleBasCustomer->descr_c]);
  40. }
  41. }
  42. $logistics_id = null;
  43. if ($logistics) {
  44. $logistics_id = $logistics->id;
  45. }
  46. $arr = [
  47. 'code' => $orderHeadAttr['orderno'],
  48. 'owner_id' => $owner_id,
  49. 'wms_status' => $orderHeadAttr['oracleBASCode_codename_c'],
  50. 'created_at' => $orderHeadAttr['addtime'],
  51. 'logistic_id' => $logistics_id,
  52. 'shop_id' => $shop_Id,
  53. 'consignee_name' => $orderHeadAttr['c_contact'],
  54. 'consignee_phone' => $orderHeadAttr['c_tel2'],
  55. 'province' => $orderHeadAttr['c_province'],
  56. 'city' => $orderHeadAttr['c_city'],
  57. 'district' => $orderHeadAttr['c_district'],
  58. 'address' => $orderHeadAttr['c_address1'],
  59. ];
  60. $order = Order::create($arr);
  61. }
  62. $orderPackageService = app('orderPackageService');
  63. $orderPackageService->createOrFindBy($order, $orderHeader);
  64. return $order;
  65. }
  66. }