hasMany(InvoiceOrder::class,"itemId","id"); } public static function getNumAttr($val){ return strval(floatval($val)); } public static function setNumAttr($val){ return floatval($val); } public static function onAfterUpdate($model){ $code=$model->invoiceCode; $orderType=$model->order_type; $change = $model->getChangedData(); if(in_array("status",$change) && ($model->status==1||$model->status==2)){ $num = self::where(['invoiceCode'=>$code,'order_type'=>$orderType,'status'=>0])->count(1); if($num==0){ if($orderType==1){ $info= InvoicePool::where(['invNo'=>$code,'is_del'=>0])->findOrEmpty(); if(!$info->isEmpty() && $info->status==10){ $info->status=11; $info->save(); } } if($orderType==2){ $info= PayInvoice::where(['hpNo'=>$code,'is_del'=>0])->findOrEmpty(); if(!$info->isEmpty()){ $pay = Pay::where(['payNo'=>$info->payNo,'is_del'=>0])->findOrEmpty(); if(!$pay->isEmpty() && $pay->status==2 &&$info->status==11){ $info->status=12; $info->save(); } } } } } } public static function rmInvoice($code,$orderType){ $items = self::where(['invoiceCode'=>$code,'order_type'=>$orderType])->select(); if(!empty($items)){ $orderItems=InvoiceOrder::whereIn('itemId',$items->column('id'))->select(); if(!empty($orderItems)){ InvoiceOrder::whereIn('itemId',$items->column('id'))->save(["status"=>3]); } self::where(['invoiceCode'=>$code,'order_type'=>$orderType])->save(["status"=>3]); } } public static function CopyItem($invNo,$hpNo){ $info = self::where(['invoiceCode'=>$invNo,'order_type'=>1])->select(); if(!$info->isEmpty()){ foreach($info as $item){ $temp = $item->toArray(); $temp['invoiceCode']=$hpNo; $temp['order_type']=2; unset($temp['id']); $up = self::create($temp); if($up->id>0){ $orders = InvoiceOrder::where(['itemId'=>$item->id])->select(); if(!$orders->isEmpty()){ InvoiceOrder::create(array_map(function ($items)use ($up){ $items['itemId']=$up->id; unset($items['id']); return $item; },$orders->toArray())); } } } } } }