>>>>>> b0347ca84d8eeedd9c1ac88b1c55b77c6a0613e8 'logistic_number_return', 'id_logistic_return', 'is_loaded', 'fee_collected', 'remark', 'id_operator', 'is_checked', 'is_finished', 'checked_numbers', 'common_01', 'common_02' ]; static public $enums = [ 'delivery_status' => [ '' => 0, '未收货' => 1, '已收货' => 2, ], ]; function __construct(array $attributes = []) { foreach (self::$enums as &$enum) { $enum = $enum + array_flip($enum); } parent::__construct($attributes); } public function getDeliveryStatusAttribute($value) { switch ($value) { case 1: return '未收货'; case 2: return '已收货'; default: return ''; } } public function setDeliveryStatusAttribute($value) { if (!$value) return 0; $this->attributes['delivery_status'] = self::$enums['delivery_status'][$value]; } /* * id_owner 货主 * order_number 订单号 OracleDOCOrderHeader->SOReference1 * mobile_sender 电话 OracleDOCOrderHeader->[c_tell1,c_tell2] * logistic_number 原单单号 * logistic_number_return 退回单号 * id_logistic_return * is_loaded 是否入库 * fee_collected 到付费用 * remark 备注 OracleDOCOrderHeader->notes * id_operator * is_checked 是否审核 * is_finished 是否完结 * checked_numbers 审核编号 */ protected $appends = ['owner_name', 'logistic_name' , 'is_loaded_str', 'goods_amount', 'is_loaded_null', 'operator_name']; function owner() { return $this->hasOne('App\Owner', 'id', 'id_owner'); } function logistic() { return $this->hasOne('App\Logistic', 'id', 'id_logistic_return'); } function items() { return $this->hasMany('App\RejectedBillItem', 'id_rejected_bill', 'id'); } function user() { return $this->hasOne('App\User', 'id', 'id_operator'); } function rejectedBillItems() { return $this->items(); } function wmsReflectReceive() { return $this->belongsTo('App\WMSReflectReceive', 'id', 'id_rejected_bill'); } function orderIssue() { return $this->hasOneThrough(OrderIssue::class, OrderIssueRejectedBill::class, 'logistic_number_return', 'id', 'logistic_number_return', 'order_issue_id'); } function orderIssueRejectedBill() { return $this->hasOne(OrderIssueRejectedBill::class, 'logistic_number_return', 'logistic_number_return')->whereNotNull('order_issue_id'); } function record(): BelongsTo { return $this->belongsTo(ReceiveRecord::class, "logistic_number_return", "logistic_number"); } function setIsLoaded_toWaitConfirm() { if (config('api.jianshang_rejecteds_log_switch')) Controller::logS(__METHOD__, __FUNCTION__, "将待推单修改为待确认! 退单号:" . $this['logistic_number_return'], Auth::user()['id']); $bill = RejectedBill::find($this['id']); $bill['is_loaded'] = 4; $bill->save(); } function logisticName() { $logistic = $this->hasOne('App\Logistic', 'id', 'id_logistic_return')->first(); return $logistic ? $logistic['name'] : ''; } function makeCheckedNumbers() { $owner = $this->owner()->first(); if (!$owner) return ''; $pinyinOwnerName = Pinyin::convert($owner->name); $pinyinArr = array_map(function ($pinyin) { return $pinyin[0]; }, $pinyinOwnerName); $initials = implode("", $pinyinArr); $this['checked_numbers'] = $initials . Carbon::now()->format('Ymd') . $owner->getIncreasedCheckingCount(); return $this['checked_numbers']; } function update(array $attributes = [], array $options = []) { (new LogisticNumberFeatureController())->createFeatures($this['logistic_number_return'], $this['id_logistic_return']); return parent::update($attributes, $options); } function save(array $options = []) { if ($this['logistic_number_return']) (new LogisticNumberFeatureController())->createFeatures($this['logistic_number_return'], $this['id_logistic_return']); return parent::save($options); } public function getOwnerNameAttribute() { return $this->owner['name'] ?? ''; } public function getLogisticNameAttribute() { return $this->logistic['name'] ?? ''; } public function getIsLoadedStrAttribute() { $val = $this['is_loaded'] === null ? 'null' : $this['is_loaded']; $val = $val === 0 ? '0' : $val; switch ($val) { case 'null': return '无需入库'; case '0': return '否'; case 1: return '是'; case 2: return '待推单'; case 3: return '上传异常'; } return ''; } public function getGoodsAmountAttribute() { $amount = 0; $this->items->each(function (RejectedBillItem $item) use (&$amount) { $amount += $item['amount']; }); return $amount; } public function getOperatorNameAttribute() { return $this['user'] ? $this['user']['name'] : null; } public function getIsLoadedNullAttribute() { if ($this['is_loaded'] === null) return 'null'; return $this['is_loaded']; } public function changeIsLoaded_ifItemsAllLoaded() { $allItemsAreLoaded = true; $this->items->each(function (RejectedBillItem $item) use (&$allItemsAreLoaded) { if ($item['is_loaded'] == '未入库') { $allItemsAreLoaded = false; return false; } }); if ($allItemsAreLoaded) { $this['is_loaded'] = 1; } else { $this['is_loaded'] = 0; } $this->update(); return $this['is_loaded']; } public function delete() { /** @var OrderIssue $orderIssue */ $order_issue_rejected_bill = OrderIssueRejectedBill::query()->select('logistic_number_return') ->where('logistic_number_return', $this->logistic_number_return)->first(); if ($order_issue_rejected_bill) { OrderIssueRejectedBill::query()->where('logistic_number_return', $this->logistic_number_return)->delete(); SyncOrderRejectingStatusJob::dispatch($this); } return parent::delete(); } // public function joinOrderIssue() // { // if(isset($this->orderIssueRejectedBill)){ // return; // } // /** @var OrderIssue $orderIssue */ // $orderIssue = $this->orderIssueRejectedBill->orderIssue ?? null; // if($orderIssue){ // $orderIssue->joinRejectedBill($this->logistic_number_return); // return; // } // // // 获取是否有快递单号对应问题件订单存在 // $orderIssue = OrderIssue::query()->where('order_id',function ($query){ // $query->from('order_packages')->selectRaw('order_id')->where('logistic_number',$this->logistic_number_return); // })->first(); // // if(!$orderIssue){ // $orderHeader = OracleDOCOrderHeader::query()->selectRaw('OrderNO')->where('SoReference1', function ($query) { // $query->select('AsnReference2')->from('DOC_ASN_HEADER')->where('AsnReference3', $this->logistic_number_return)->first(); // })->first(); // if(!$orderHeader)return; // $orderIssue = OrderIssue::query()->where('order_id',function($query)use($orderHeader){ // $query->from('orders')->select('id')->where('code',$orderHeader->orderno); // })->first(); // } // if(!$orderIssue)return; // $orderIssue->joinRejectedBill($this->logistic_number_return); // $orderIssue->syncRejectingStatus(); // } // public function syncOrderIssue() // { // if(isset($this->orderIssueRejectedBill)){ // if(isset($this->orderIssueRejectedBill->orderIssue)){ // /** @var OrderIssue $orderIssue */ // $orderIssue = $this->orderIssueRejectedBill->orderIssue; // $orderIssue->syncRejectingStatus(); // } // } // } // public function updateIsNewRejecting() // { // $orderIssue = $this->orderIssueRejectedBill->orderIssue ?? null; // if($orderIssue) $orderIssue->update(['is_new_rejecting' => '有']); // } }