RejectedBillService.php 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. <?php
  2. namespace App\Services;
  3. use App\OracleDOCOrderHeader;
  4. use App\OrderIssue;
  5. use App\RejectedBill;
  6. use App\Services\common\BatchUpdateService;
  7. Class RejectedBillService
  8. {
  9. private function conditionQuery(array $params){
  10. $query = RejectedBill::query();
  11. if ($params['order_number'] ?? false){
  12. $query->whereIn('order_number',$params['order_number']);
  13. }
  14. return $query;
  15. }
  16. public function get(array $params){
  17. return $this->conditionQuery($params)->get();
  18. }
  19. public function create(array $params){
  20. return RejectedBill::query()->create($params);
  21. }
  22. public function batchUpdate($params)
  23. {
  24. return app(BatchUpdateService::class)->batchUpdate('rejected_bills',$params);
  25. }
  26. public function syncOrderIssue($rejectedBill)
  27. {
  28. $orderIssue = $rejectedBill->orderIssue()->first();
  29. if(!$orderIssue && $rejectedBill['logistic_number'] === '原单退回'){ // 原单退回
  30. $orderIssue = OrderIssue::query()->with('order')->whereHas('order',function($query)use($rejectedBill){
  31. $query->where('client_code',$rejectedBill['order_number']);
  32. })->first();
  33. }
  34. if(!isset($orderIssue)){ // 没有对应的问题发货订单
  35. $orderHeader = OracleDOCOrderHeader::query()->where('soreference1',function($query)use($rejectedBill){
  36. $query->select('asnreference2')->from('DOC_ASN_HEADER')->where('asnreference3',$rejectedBill->logistic_number_return)->first();
  37. })->first();
  38. // $orderHeader = OracleDOCOrderHeader::query()->where('soreference1',function($query)use($rejectedBill){
  39. // $query->select('asnreference2')->from('DOC_ASN_HEADER')->where('asnreference3',$rejectedBill->logistic_number_return)->first();
  40. // })->first();
  41. if(!isset($orderHeader))return;
  42. $orderIssue = OrderIssue::query()->with('order')->whereHas('order',function($query)use($orderHeader){
  43. $query->where('code',$orderHeader->orderno);
  44. })->first();
  45. }
  46. if(isset($orderIssue)){
  47. // 更新问题件的退回单号
  48. if($orderIssue['logistic_number_return']!=$rejectedBill['logistic_number_return'])
  49. $orderIssue->update(['logistic_number_return'=>$rejectedBill['logistic_number_return']]);
  50. //确认问题件有的时候需要更新状态和提示
  51. /**
  52. * @var OrderIssue $orderIssue
  53. */
  54. $orderIssue->同步退单状态();
  55. $orderIssue->update(['is_new_rejecting' => '有']);
  56. LogService::log(__METHOD__,__FUNCTION__,'退回单同步问题件'.json_encode($rejectedBill).json_encode($orderIssue));
  57. }
  58. }
  59. }