OracleDOCOrderHeaderService.php 3.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  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'
  19. ];
  20. function first(array $params){
  21. $order = OracleDOCOrderHeader::query();
  22. foreach ($params as $column => $value){
  23. $order->where($column, $value);
  24. }
  25. return $order->first();
  26. }
  27. public function getWmsOrderOnStartDateCreate($startDate){
  28. /** @var Owner $owners */
  29. $owners = app(OrderTrackingOwnerService::class)->getTrackingOrderOwner();
  30. return OracleDOCOrderHeader::query()
  31. ->with(['oracleDOCOrderDetails', 'actAllocationDetails','oracleBASCode','oracleBASCustomer'])
  32. ->where('DOC_Order_Header.addTime','>=',$startDate)
  33. ->whereIn('DOC_Order_Header.customerID',data_get($owners,'*.code'))
  34. ->get();
  35. }
  36. public function getWmsOrderOnStartDateEdit($startDate){
  37. /** @var Owner $owners */
  38. $owners = app(OrderTrackingOwnerService::class)->getTrackingOrderOwner();
  39. return OracleDOCOrderHeader::query()
  40. ->with(['oracleDOCOrderDetails', 'actAllocationDetails','oracleBASCode','oracleBASCustomer'])
  41. ->where('DOC_Order_Header.EditTime','>=',$startDate)
  42. ->whereColumn('DOC_Order_Header.EditTime','<>','DOC_Order_Header.addTime')
  43. ->whereIn('DOC_Order_Header.customerID',data_get($owners,'*.code'))
  44. ->get();
  45. }
  46. /**
  47. * @param OracleDOCOrderHeader $orderHeader
  48. * @return array|mixed
  49. */
  50. public function getLogisticNumbers($orderHeader)
  51. {
  52. if(!$orderHeader ?? false){return [];}
  53. $actAllocationDetails = $orderHeader->actAllocationDetails ?? [];
  54. return array_unique(array_diff(data_get($actAllocationDetails,'*.picktotraceid'),['','*',null]));
  55. }
  56. public function getWMSOrderOnStartDate($startDate)
  57. {
  58. return OracleDOCOrderHeader::query()->selectRaw(implode(',',self::$columns))
  59. ->with(['oracleBASCustomer'=>function($query){
  60. $query->selectRaw('BAS_CUSTOMER.CustomerID,BAS_CUSTOMER.Customer_Type,BAS_CUSTOMER.Descr_C,BAS_CUSTOMER.Active_Flag');
  61. },'oracleDOCOrderDetails'=>function($query){
  62. $query->selectRaw('doc_order_details.orderNo,doc_order_details.customerid,doc_order_details.sku,doc_order_details.QtyOrdered');
  63. }, 'actAllocationDetails'=>function($query){
  64. $query->selectRaw('ACT_Allocation_Details.AllocationDetailsID,ACT_Allocation_Details.OrderNo,ACT_Allocation_Details.Qty_Each,ACT_Allocation_Details.PickToTraceID,ACT_Allocation_Details.CustomerID');
  65. },'oracleBASCode'=>function($query){
  66. $query->selectRaw('BAS_Codes.CodeID,BAS_Codes.CodeName_C,BAS_Codes.Code');
  67. }])
  68. ->where('addTime','>=',$startDate)
  69. ->get();
  70. }
  71. }