OrderTracking.php 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. <?php
  2. namespace App;
  3. use App\Traits\ModelTimeFormat;
  4. use Illuminate\Database\Eloquent\Model;
  5. use Illuminate\Database\Eloquent\Builder;
  6. use App\Traits\ModelLogChanging;
  7. class OrderTracking extends Model
  8. {
  9. use ModelLogChanging;
  10. use ModelTimeFormat;
  11. protected $fillable = [
  12. 'order_package_commodity_id','owner_id','logistic_id',
  13. 'web_order_number',
  14. 'pick_up_at','sale','client','order_client_code','order_client_code_wms',
  15. 'order_remark','pallet_total','planning_sent_at',
  16. 'is_on_duty_shift','is_arrival','signed_at',
  17. 'receive_bill_status','remark','gross_weight','bulk'];
  18. /*
  19. * order_package_commodity_id 订单商品id
  20. * owner_id 货主
  21. * web_order_number WEB+订单号
  22. * pick_up_at 提货时间
  23. * sale 销售
  24. * client 客户
  25. * order_client_code 订单号
  26. * order_remark 订单备注
  27. * pallet_total 托盘合计
  28. * planning_sent_at 应送达时间
  29. * is_on_duty_shift 是否赶上卡班
  30. * is_arrival 到货情况
  31. * signed_at 签收时间
  32. * receive_bill_status
  33. * remark 签收单情况
  34. * gross_weight 重量
  35. * bulk 体积
  36. * customer_order_number 客户订单号
  37. */
  38. protected $appends =[
  39. 'ownerName','sku','packageWeight','packageBulk','orderCity','packageLogisticNumber','packageLogistic','orderClientNumber'
  40. ];
  41. public function commodities(){
  42. return $this->hasOne(OrderPackageCommodities::class,'id','order_package_commodity_id');
  43. }
  44. public function owner(){
  45. return $this->hasOne(Owner::class,'id','owner_id');
  46. }
  47. public function logistic(){
  48. return $this->hasOne(Logistic::class,'id','logistic_id');
  49. }
  50. public function uploadFile()
  51. {
  52. return $this->hasOne(UploadFile::class,'table_id','order_client_code')->where('table_name','order_trackings');
  53. }
  54. public function getOwnerNameAttribute(){
  55. return $this->owner['name'] ?? '';
  56. }
  57. public function getSkuAttribute(){
  58. return ['sku' => $this->commodities['commodity']['sku'] ?? '',
  59. 'skuName' => $this->commodities['commodity']['name'] ?? '',
  60. 'skuAmount' => $this->commodities['amount'] ?? ''];
  61. }
  62. public function getPackageWeightAttribute(){
  63. return $this->commodities->package['weight'] ?? '';
  64. }
  65. public function getPackageBulkAttribute(){
  66. return $this->commodities->package['bulk'] ?? '';
  67. }
  68. public function getOrderCityAttribute(){
  69. return $this->commodities->package->order['city'] ?? '';
  70. }
  71. public function getPackageLogisticNumberAttribute(){
  72. return $this->commodities->package['logistic_number'] ?? '';
  73. }
  74. public function getPackageLogisticAttribute(){
  75. return $this->commodities->package->order->logistic['name'] ?? '';
  76. }
  77. public function getOrderClientNumberAttribute(){
  78. return $this->commodities->package->order['client_code'] ?? '';
  79. }
  80. public function scopeFilter($query, $filters)
  81. {
  82. return $filters->apply($query);
  83. }
  84. public function scopeDefaultQuery($query): Builder
  85. {
  86. return $query->orderByDesc('order_trackings.pick_up_at')
  87. ->orderBy('order_trackings.order_client_code');
  88. }
  89. public function scopeDefaultWith($query)
  90. {
  91. return $query->with(['commodities'=>function($query){
  92. $query->with(['commodity.barcodes','serialNumbers','package.order']);
  93. },'owner','logistic','uploadFile']);
  94. }
  95. }