TaxRelation.php 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <?php
  2. namespace app\user\model;
  3. use think\model\concern\SoftDelete;
  4. class TaxRelation extends Base
  5. {
  6. use SoftDelete;
  7. //设置字段信息
  8. protected $schema = [
  9. 'id' =>'bigint',//
  10. 'income_tax_id' =>'int',//
  11. 'output_tax_id' =>'int',//
  12. 'output_bind_tax' =>'varchar',//
  13. 'companyNo' =>'varchar',//业务公司编号
  14. 'createrid' =>'int',//
  15. 'creater' =>'varchar',//
  16. 'createTime' =>'datetime',//
  17. 'updateTime' =>'datetime',//
  18. 'delete_time' =>'datetime',//
  19. ];
  20. protected $createTime='createTime';
  21. protected $updateTime='updateTime';
  22. protected $deleteTime='delete_time';
  23. public function company(){
  24. return $this->belongsTo(Headquarters::class,'companyNo','code')->bind(['companyName'=>'name']);
  25. }
  26. public function incomeTax(){
  27. return $this->belongsTo(TaxCategory::class,'income_tax_id','id')
  28. ->bind(["income_cat_name" =>"cat_name","income_cat_code" =>"cat_code","income_short_name" =>"short_name","income_merge_code" =>"merge_code","income_tax" =>'tax']);
  29. }
  30. public function outputTax(){
  31. return $this->belongsTo(TaxCategory::class,'output_tax_id','id')
  32. ->bind(["output_cat_name" =>"cat_name","output_cat_code" =>"cat_code","output_short_name" =>"short_name","output_merge_code" =>"merge_code","output_tax" =>"tax"]);
  33. }
  34. public static function relationCheck($companyNo,$incomeTaxIds){
  35. $where=[['companyNo','=',$companyNo],['income_tax_id','in',$incomeTaxIds]];
  36. $list=self::with(['incomeTax'])->where($where)->select();
  37. if(!$list->isEmpty()){
  38. $map= array_map(function($item)use($incomeTaxIds){
  39. if(in_array($item['income_tax_id'],$incomeTaxIds))return $item['income_cat_name'];
  40. },$list->toArray());
  41. if(!empty($map))throw new \Exception(implode(",",$map).'关联税目已存在');
  42. }
  43. return true;
  44. }
  45. public static function onAfterWrite($model){
  46. TaxCompany::where(['companyNo'=>$model->companyNo,'tax_id'=>$model->income_tax_id])->update(['in_status'=>1]);
  47. $ist=self::where(['companyNo'=>$model->companyNo,'output_tax_id'=>$model->output_tax_id])->count();
  48. TaxCompany::where(['companyNo'=>$model->companyNo,'tax_id'=>$model->output_tax_id])->update(['out_status'=>$ist>0?1:0]);
  49. }
  50. public static function onAfterUpdate($model){
  51. $after=$model->getChangedData();
  52. $data = $model->getOrigin();
  53. $before = $data;
  54. $changeLog= new TaxRelationLog();
  55. $create = [
  56. 'income_tax_id'=>$data['income_tax_id']??$model->income_tax_id,
  57. 'output_tax_id'=>$data['output_tax_id']??$model->output_tax_id,
  58. 'output_bind_tax'=>$data['output_bind_tax']??$model->output_bind_tax,
  59. "change_content"=>$after,
  60. 'companyNo'=>$model->companyNo,
  61. 'changer'=>$model->creater,
  62. "change_type"=>"1",
  63. ];
  64. $changeLog->save($create);
  65. }
  66. public static function onAfterDelete($model){
  67. TaxCompany::where(['companyNo'=>$model->companyNo,'tax_id'=>$model->income_tax_id])->update(['in_status'=>0]);
  68. $ist=self::where(['companyNo'=>$model->companyNo,'output_tax_id'=>$model->output_tax_id])->count();
  69. TaxCompany::where(['companyNo'=>$model->companyNo,'tax_id'=>$model->output_tax_id])->update(['out_status'=>$ist>0?1:0]);
  70. }
  71. }