Headquarters.php 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. <?php
  2. namespace app\user\model;
  3. use think\Exception;use think\Model;class Headquarters extends Base
  4. {
  5. //设置字段信息
  6. protected $schema = [
  7. 'id' =>'bigint',//
  8. 'code' =>'varchar',//编号
  9. 'name' =>'varchar',//名称
  10. 'type' =>'tinyint',//1企业(业务公司),2客户,3供应商(只有供应商升级为业务公司的时候)
  11. 'company_type' =>'tinyint',//公司类型,只有企业有效,对应于company_type表
  12. 'invoice_title' =>'varchar',//发票抬头
  13. 'invoice_people' =>'varchar',//发票纳税人
  14. 'invoice_addr' =>'varchar',//发票地址
  15. 'invoice_mobile' =>'varchar',//发票联系方式
  16. 'invoice_code' =>'varchar',//纳税识别号
  17. 'invoice_bank' =>'varchar',//纳税银行
  18. 'invoice_bankNo' =>'varchar',//纳税银行账户
  19. 'invoice_img' =>'varchar',//营业执照
  20. 'remark' =>'varchar',//备注
  21. 'status' =>'tinyint',//使用状态,1启用,0禁用
  22. 'is_del' =>'tinyint',//是否删除,0未删除,1已删除
  23. 'creater' =>'varchar',//创建人
  24. 'createrid' =>'int',//创建人id
  25. 'addtime' =>'datetime',//创建时间
  26. 'updater' =>'varchar',//修改人
  27. 'updaterid' =>'int',//修改人id
  28. 'updatetime' =>'datetime',//修改时间
  29. 'relation_code' =>'char',//关联编码(目前只有供应商升级为业务公司时有用,存储业务公司编码)
  30. ];
  31. protected $createTime = 'addtime';
  32. protected $updateTime = 'updatetime';
  33. /**数据总表创建
  34. * @param $object
  35. * @param $type 1企业(业务公司),2客户,3供应商(只有供应商升级为业务公司的时候)
  36. * @return bool
  37. * @throws Exception
  38. */
  39. public static function createInfo($object,$type){
  40. $result =self::checkObject($object,$type);
  41. if(empty($result))throw new Exception("公司数据创建失败");
  42. $isobj= self::where(['code'=>$result['code'],"is_del"=>0])->findOrEmpty();
  43. if(!$isobj->isEmpty() && $type==3 && $object->is_upgrade==1)self::sycCompany($isobj->relation_code,$object);
  44. $result['id']=$isobj->isEmpty()?null:$isobj->id;
  45. $info = $isobj->save($result);
  46. return $info;
  47. }
  48. /** 数据转换
  49. * @param $object
  50. * @param $type 1企业(业务公司),2客户,3供应商(只有供应商升级为业务公司的时候)
  51. * @return array
  52. * @throws Exception
  53. */
  54. private static function checkObject($object,$type){
  55. $result = [];
  56. switch ($type){
  57. case 1://业务公司
  58. $result = [
  59. 'code' =>$object->companyNo,//编号
  60. 'name' =>$object->company,//名称
  61. 'type' =>1,//1企业(业务公司),2客户,3供应商(只有供应商升级为业务公司的时候)
  62. 'company_type' =>0,//公司类型,只有企业有效,对应于company_type表
  63. 'invoice_title' =>$object->invoice_title,//发票抬头
  64. 'invoice_people' =>$object->inv_legaler,//发票纳税人
  65. 'invoice_addr' =>$object->inv_addr,//发票地址
  66. 'invoice_mobile' =>$object->invoice_mobile,//发票联系方式
  67. 'invoice_code' =>$object->inv_code,//纳税识别号
  68. 'invoice_bank' =>$object->inv_bank,//纳税银行
  69. 'invoice_bankNo' =>$object->inv_bankNo,//纳税银行账户
  70. 'invoice_img' =>$object->license_img,//营业执照
  71. 'remark' =>'',//备注
  72. "relation_code"=>$object->relation_code??"",
  73. "creater"=>$object->creater,
  74. "createrid"=>$object->createrid,
  75. 'updater' => $object->updater,
  76. 'updaterid' => $object->updaterid,
  77. ];
  78. break;
  79. case 2://客户
  80. $result = [
  81. 'code' =>$object->companyNo,//编号
  82. 'name' =>$object->companyName,//名称
  83. 'type' =>2,//1企业(业务公司),2客户,3供应商(只有供应商升级为业务公司的时候)
  84. 'company_type' =>0,//公司类型,只有企业有效,对应于company_type表
  85. 'invoice_title' =>$object->invoice_title??"",//发票抬头
  86. 'invoice_people' =>$object->invoice_people??'',//发票纳税人
  87. 'invoice_addr' =>$object->invoice_people??'',//发票地址
  88. 'invoice_mobile' =>$object->invoice_mobile??'',//发票联系方式
  89. 'invoice_code' =>$object->invoice_code??'',//纳税识别号
  90. 'invoice_bank' =>$object->invoice_bank??'',//纳税银行
  91. 'invoice_bankNo' =>$object->invoice_bankNo??'',//纳税银行账户
  92. 'invoice_img' =>'',//营业执照
  93. 'remark' =>'',//备注
  94. 'creater'=>$object->creater,
  95. 'createrid'=>$object->createrid,
  96. 'updater' => $object->updater,
  97. 'updaterid' => $object->updaterid,
  98. ];
  99. break;
  100. case 3://供应商
  101. $result = [
  102. 'code' =>$object->code,//编号
  103. 'name' =>$object->name,//名称
  104. 'type' =>3,//1企业(业务公司),2客户,3供应商(只有供应商升级为业务公司的时候)
  105. 'company_type' =>0,//公司类型,只有企业有效,对应于company_type表
  106. 'invoice_title' =>$object->name??'',//发票抬头
  107. 'invoice_people' =>$object->legaler??'',//发票纳税人
  108. 'invoice_addr' =>$object->addr??'',//发票地址
  109. 'invoice_mobile' =>'',//发票联系方式
  110. 'invoice_code' =>$object->registercode??'',//纳税识别号
  111. 'invoice_bank' =>'',//纳税银行
  112. 'invoice_bankNo' =>'',//纳税银行账户
  113. 'invoice_img' =>$object->license_img??'',//营业执照
  114. 'remark' =>'',//备注
  115. 'relation_code'=>$object->relation_code??'',
  116. 'creater'=>$object->creater,
  117. 'createrid'=>$object->createrid,
  118. 'updater' => $object->updater,
  119. 'updaterid' => $object->updaterid,
  120. ];
  121. break;
  122. default:
  123. $result=[];
  124. break;
  125. }
  126. return $result;
  127. }
  128. /** 供应商更新 同步业务公司数据
  129. * @param $relation_code
  130. * @param $object
  131. * @throws Exception
  132. */
  133. private static function sycCompany($relation_code,$object){
  134. $result = Business::where(['companyNo'=>$relation_code,"is_del"=>0])->findOrEmpty();
  135. if(!$result->isEmpty()){
  136. $result->company=$object->name;
  137. $result->inv_code=$object->registercode;
  138. $result->license_img=$object->license_img;
  139. $result->inv_legaler=$object->legaler;
  140. $result->inv_time=$object->registertime;
  141. $result->addr=$object->addr;
  142. $result->inv_scope=$object->scope;
  143. $result->contactor=$object->contactor;
  144. $result->mobile=$object->mobile;
  145. $result->updater=$object->updater;
  146. $result->updaterid=$object->updaterid;
  147. $busup=$result->save();
  148. if($busup) throw new \Exception("业务公司同步失败");
  149. self::createInfo($result,1);
  150. }
  151. }
  152. public function companyInfo(){
  153. return $this->belongsTo(Business::class,'code','companyNo');
  154. }
  155. public function supplierInfo(){
  156. return $this->belongsTo(Supplier::class,'code','code');
  157. }
  158. public function customerInfo(){
  159. return $this->belongsTo(CustomerInfo::class,'code','companyNo');
  160. }
  161. public static function onAfterWrite($model) {
  162. event("copyCompany",$model->toArray());
  163. }
  164. }