OracleDOCOrderHeaderService.php 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. <?php
  2. namespace App\Services;
  3. use App\OracleDOCOrderDetail;
  4. use App\OracleDOCOrderHeader;
  5. use App\Owner;
  6. use Illuminate\Support\Arr;
  7. use Illuminate\Support\Str;
  8. Class OracleDOCOrderHeaderService
  9. {
  10. static $columns =[
  11. 'DOC_Order_Header.OrderNo','DOC_Order_Header.CustomerID','DOC_Order_Header.OrderTime',
  12. 'DOC_Order_Header.SOReference1', 'DOC_Order_Header.ConsigneeID','DOC_Order_Header.C_Contact',
  13. 'DOC_Order_Header.ConsigneeName','DOC_Order_Header.C_Address1', 'DOC_Order_Header.C_City',
  14. 'DOC_Order_Header.C_Province','DOC_Order_Header.UserDefine1','DOC_Order_Header.AddTime',
  15. 'DOC_Order_Header.EditTime','DOC_Order_Header.Notes','DOC_Order_Header.CarrierID',
  16. 'DOC_Order_Header.CarrierName', 'DOC_Order_Header.LastShipmentTime','DOC_Order_Header.EDISendFlag',
  17. 'DOC_Order_Header.SOReference5', 'DOC_Order_Header.C_Tel2','DOC_Order_Header.Transportation',
  18. 'DOC_Order_Header.WareHouseId','DOC_Order_Header.SOStatus','DOC_Order_Header.C_Tel1','DOC_Order_Header.C_District',
  19. 'DOC_Order_Header.IssuePartyName'
  20. ];
  21. function first(array $params){
  22. $order = OracleDOCOrderHeader::query();
  23. foreach ($params as $column => $value){
  24. $order->where($column, $value);
  25. }
  26. return $order->first();
  27. }
  28. public function getWmsOrderOnStartDateCreate($startDate){
  29. /** @var Owner $owners */
  30. $owners = app(OrderTrackingOwnerService::class)->getTrackingOrderOwner();
  31. return OracleDOCOrderHeader::query()
  32. ->with(['oracleDOCOrderDetails', 'actAllocationDetails','oracleBASCode','oracleBASCustomer'])
  33. ->where('DOC_Order_Header.addTime','>=',$startDate)
  34. ->whereIn('DOC_Order_Header.customerID',data_get($owners,'*.code'))
  35. ->get();
  36. }
  37. public function getWmsOrderOnStartDateEdit($startDate){
  38. /** @var Owner $owners */
  39. $owners = app(OrderTrackingOwnerService::class)->getTrackingOrderOwner();
  40. return OracleDOCOrderHeader::query()
  41. ->with(['oracleDOCOrderDetails', 'actAllocationDetails','oracleBASCode','oracleBASCustomer'])
  42. ->where('DOC_Order_Header.EditTime','>=',$startDate)
  43. ->whereColumn('DOC_Order_Header.EditTime','<>','DOC_Order_Header.addTime')
  44. ->whereIn('DOC_Order_Header.customerID',data_get($owners,'*.code'))
  45. ->get();
  46. }
  47. /**
  48. * @param OracleDOCOrderHeader $orderHeader
  49. * @return array|mixed
  50. */
  51. public function getLogisticNumbers($orderHeader)
  52. {
  53. if(!$orderHeader ?? false){return [];}
  54. $actAllocationDetails = $orderHeader->actAllocationDetails ?? [];
  55. return array_unique(array_diff(data_get($actAllocationDetails,'*.picktotraceid'),['','*',null]));
  56. }
  57. public function getWMSOrderOnStartDate($startDate)
  58. {
  59. return OracleDOCOrderHeader::query()->selectRaw(implode(',',self::$columns))
  60. ->with(['oracleBASCustomer'=>function($query){
  61. $query->selectRaw('BAS_CUSTOMER.CustomerID,BAS_CUSTOMER.Customer_Type,BAS_CUSTOMER.Descr_C,BAS_CUSTOMER.Active_Flag');
  62. },'oracleDOCOrderDetails'=>function($query){
  63. $query->selectRaw('doc_order_details.orderNo,doc_order_details.customerid,doc_order_details.sku,doc_order_details.QtyOrdered');
  64. }, 'actAllocationDetails'=>function($query){
  65. $query->selectRaw('ACT_Allocation_Details.AllocationDetailsID,ACT_Allocation_Details.OrderNo,ACT_Allocation_Details.Qty_Each,ACT_Allocation_Details.PickToTraceID,ACT_Allocation_Details.CustomerID,ACT_Allocation_Details.Sku');
  66. },'oracleBASCode'=>function($query){
  67. $query->selectRaw('BAS_Codes.CodeID,BAS_Codes.CodeName_C,BAS_Codes.Code');
  68. }])
  69. ->where('DOC_Order_Header.addTime','>=',$startDate)
  70. ->orderByDesc('DOC_Order_Header.addTime')
  71. ->get();
  72. }
  73. public function getWMSOrderOnEditDate($startDate){
  74. return OracleDOCOrderHeader::query()->selectRaw(implode(',',self::$columns))
  75. ->with(['oracleBASCustomer'=>function($query){
  76. $query->selectRaw('BAS_CUSTOMER.CustomerID,BAS_CUSTOMER.Customer_Type,BAS_CUSTOMER.Descr_C,BAS_CUSTOMER.Active_Flag');
  77. },'oracleDOCOrderDetails'=>function($query){
  78. $query->selectRaw('doc_order_details.orderNo,doc_order_details.customerid,doc_order_details.sku,doc_order_details.QtyOrdered');
  79. }, 'actAllocationDetails'=>function($query){
  80. $query->selectRaw('ACT_Allocation_Details.AllocationDetailsID,ACT_Allocation_Details.OrderNo,ACT_Allocation_Details.Qty_Each,ACT_Allocation_Details.PickToTraceID,ACT_Allocation_Details.CustomerID,ACT_Allocation_Details.Sku');
  81. },'oracleBASCode'=>function($query){
  82. $query->selectRaw('BAS_Codes.CodeID,BAS_Codes.CodeName_C,BAS_Codes.Code');
  83. }])
  84. ->where('DOC_Order_Header.editTime','>=',$startDate)
  85. ->whereColumn('DOC_Order_Header.editTime','!=','DOC_Order_Header.addTime')
  86. ->orderByDesc('DOC_Order_Header.editTime')
  87. ->get();
  88. }
  89. }