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'); } 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 */ $orderIssue = $this->orderIssue; if($orderIssue){ $orderIssue->unJoinRejectedBill($this->logistic_number_return); $orderIssue->update(['is_new_rejecting'=>'无']); $orderIssue->syncRejectingStatus(); } return parent::delete(); // TODO: Change the autogenerated stub } 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; } // 原单退回 if($this->logistic_number === '原单退回'){ $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' => '有']); } }