Invoice.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. <?php
  2. namespace app\cxinv\model;
  3. use think\Model;use think\model\concern\SoftDelete;
  4. class Invoice extends Base{
  5. use SoftDelete;
  6. protected $createTime="createTime";
  7. protected $updateTime="updateTime";
  8. protected $deleteTime="delete_time";
  9. public static $invoiceType=[
  10. "special"=>"增值税专用发票",
  11. "normal"=>"增值税普通发票",
  12. "roll"=>"增值税普通发票(卷式)",
  13. "special_electronic"=>"增值税电子专用发票",
  14. "electronic"=>"增值税电子普通发票",
  15. "blockchain_electronic"=>"区块链电子发票",
  16. "toll"=>"增值税电子普通发票(通行费)",
  17. "fully_digitalized_special_electronic"=>"全电专用发票",
  18. "fully_digitalized_normal_electronic"=>"全电普通发票",
  19. ];
  20. public static function onAfterWrite(Model $model) : void{
  21. $change = $model->getChangedData();
  22. if (isset($change['status'])){
  23. if($change['status']==4){
  24. $itemid= InvoiceItem::where(['invoiceCode'=>$model->InvCode,'status'=>[1,2]])->column("id");
  25. if(!empty($itemid)){
  26. $invo= InvoiceOrder::whereIn('itemId',$itemid)->where(['status'=>[1,2]])->column("code,balance_amount,total_amount");
  27. if(!empty($invo)){
  28. foreach ($invo as $key=>$val){
  29. $cgdinfo = CgdInfo::where(['sequenceNo'=>$val['code']])->findOrEmpty();
  30. if(!$cgdinfo->isEmpty()){
  31. $cgdinfo->ainv_fee = bcadd($cgdinfo->winv_fee,bcsub($val['total_amount'],$val['balance_amount'],2),2);
  32. $cgdinfo->inv_status = $cgdinfo->winv_fee==0 && $cgdinfo->ainv_fee==$cgdinfo->totalPrice ?3:2;
  33. $cgdinfo->save();
  34. }
  35. $payinfo = PayInfo::where(['cgdNo'=>$val['code'],'status'=>1,'is_del'=>0])->findOrEmpty();
  36. if(!$payinfo->isEmpty()){
  37. $pay= Pay::where(['payNo'=>$payinfo->payNo,'status'=>2])->findOrEmpty();
  38. if(!$pay->isEmpty()){
  39. $pay->inv_fee=bcsub($pay->winv_fee,bcsub($val['total_amount'],$val['balance_amount'],2),2);
  40. $pay->ainv_fee = bcadd($pay->inv_fee,bcsub($val['total_amount'],$val['balance_amount'],2),2);
  41. $pay->inv_status = $pay->winv_fee==0 && $pay->inv_fee==0?3:2;
  42. $pay->save();
  43. }
  44. }
  45. }
  46. }
  47. }
  48. }
  49. }
  50. }
  51. }