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 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 orderIssue() { return $this->hasOne( OrderIssue::class, 'logistic_number_return', 'logistic_number_return'); } 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 = []) { (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 getCreatedAtShortAttribute(){ return $this['created_at']?$this['created_at_short']=$this['created_at']->format('m-d H:i:s'):''; } 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 同步问题件退件状态() { $orderIssue = $this->orderIssue()->first(); if ($orderIssue ?? false) { // $this->同步退单状态(); $orderIssue->update(['is_new_rejecting' => '有']); } else { OrderIssue::query()->where('logistic_number_return', $this->logistic_number_return)->update(['is_new_rejecting' => '有']); } } public function 同步问题件() { $orderIssue = $this->orderIssue()->first(); if(!isset($orderIssue)){ if(isset($this->order_number)){ $orderNumber = $this->order_number; $orderIssue = OrderIssue::query()->with('order')->whereHas('order',function($query)use($orderNumber){ $query->where('client_code',$orderNumber); })->first(); } if(isset($this->logistic_number_return) && !isset($orderIssue)){ $logistic_number_return = $this->logistic_number_return; $orderHeader = OracleDOCOrderHeader::query()->where('soreference1',function($query)use($logistic_number_return){ $query->select('asnreference2')->from('DOC_ASN_HEADER')->where('asnreference3',$logistic_number_return)->first(); })->first(); $orderIssue = OrderIssue::query()->with('order')->whereHas('order',function($query)use($orderHeader){ $query->where('code',$orderHeader->orderno); })->first(); } } if(isset($orderIssue)){ // $orderIssue->同步退单状态(); $orderIssue->update(['is_new_rejecting' => '有']); } } private function 同步退单状态() { /** @var OrderIssue $orderIssue */ $orderIssue = $this->orderIssue()->first(); if($orderIssue ?? false) $orderIssue->同步退单状态(); } }