RejectedBillService.php 2.5 KB

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