Headquarters.php 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  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){
  44. self::sycCompany($isobj->relation_code,$object);
  45. }
  46. $result['id']=$isobj->isEmpty()?null:$isobj->id;
  47. $info = $isobj->save($result);
  48. return $info;
  49. }
  50. /** 数据转换
  51. * @param $object
  52. * @param $type 1企业(业务公司),2客户,3供应商(只有供应商升级为业务公司的时候)
  53. * @return array
  54. * @throws Exception
  55. */
  56. private static function checkObject($object,$type){
  57. $result = [];
  58. switch ($type){
  59. case 1://业务公司
  60. $result = [
  61. 'code' =>$object->companyNo,//编号
  62. 'name' =>$object->company,//名称
  63. 'type' =>1,//1企业(业务公司),2客户,3供应商(只有供应商升级为业务公司的时候)
  64. 'company_type' =>0,//公司类型,只有企业有效,对应于company_type表
  65. 'invoice_title' =>$object->invoice_title,//发票抬头
  66. 'invoice_people' =>$object->inv_legaler,//发票纳税人
  67. 'invoice_addr' =>$object->inv_addr,//发票地址
  68. 'invoice_mobile' =>$object->invoice_mobile,//发票联系方式
  69. 'invoice_code' =>$object->inv_code,//纳税识别号
  70. 'invoice_bank' =>$object->inv_bank,//纳税银行
  71. 'invoice_bankNo' =>$object->inv_bankNo,//纳税银行账户
  72. 'invoice_img' =>$object->license_img,//营业执照
  73. 'remark' =>'',//备注
  74. "is_del"=>$object->is_del??0,
  75. "creater"=>$object->creater,
  76. "createrid"=>$object->createrid,
  77. 'updater' => $object->updater,
  78. 'updaterid' => $object->updaterid,
  79. ];
  80. break;
  81. case 2://客户
  82. $result = [
  83. 'code' =>$object->companyNo,//编号
  84. 'name' =>$object->companyName,//名称
  85. 'type' =>2,//1企业(业务公司),2客户,3供应商(只有供应商升级为业务公司的时候)
  86. 'company_type' =>0,//公司类型,只有企业有效,对应于company_type表
  87. 'invoice_title' =>$object->invoice_title??"",//发票抬头
  88. 'invoice_people' =>$object->invoice_people??'',//发票纳税人
  89. 'invoice_addr' =>$object->invoice_people??'',//发票地址
  90. 'invoice_mobile' =>$object->invoice_mobile??'',//发票联系方式
  91. 'invoice_code' =>$object->invoice_code??'',//纳税识别号
  92. 'invoice_bank' =>$object->invoice_bank??'',//纳税银行
  93. 'invoice_bankNo' =>$object->invoice_bankNo??'',//纳税银行账户
  94. 'invoice_img' =>'',//营业执照
  95. 'remark' =>'',//备注
  96. 'is_del'=>$object->is_del??0,
  97. 'creater'=>$object->creater,
  98. 'createrid'=>$object->createrid,
  99. 'updater' => $object->updater,
  100. 'updaterid' => $object->updaterid,
  101. ];
  102. break;
  103. case 3://供应商
  104. $result = [
  105. 'code' =>$object->code,//编号
  106. 'name' =>$object['name'],//名称
  107. 'type' =>3,//1企业(业务公司),2客户,3供应商(只有供应商升级为业务公司的时候)
  108. 'company_type' =>0,//公司类型,只有企业有效,对应于company_type表
  109. 'invoice_title' =>$object['name']??'',//发票抬头
  110. 'invoice_people' =>$object->legaler??'',//发票纳税人
  111. 'invoice_addr' =>$object->addr??'',//发票地址
  112. 'invoice_mobile' =>'',//发票联系方式
  113. 'invoice_code' =>$object->registercode??'',//纳税识别号
  114. 'invoice_bank' =>'',//纳税银行
  115. 'invoice_bankNo' =>'',//纳税银行账户
  116. 'invoice_img' =>$object->license_img??'',//营业执照
  117. 'remark' =>'',//备注
  118. 'is_del'=>$object->is_del??0,
  119. 'creater'=>$object->creater,
  120. 'createrid'=>$object->createrid,
  121. 'updater' => $object->updater,
  122. 'updaterid' => $object->updaterid,
  123. ];
  124. break;
  125. default:
  126. $result=[];
  127. break;
  128. }
  129. return $result;
  130. }
  131. /** 供应商更新 同步业务公司数据
  132. * @param $relation_code
  133. * @param $object
  134. * @throws Exception
  135. */
  136. private static function sycCompany($relation_code,$object){
  137. $result = Business::where(['companyNo'=>$relation_code,"is_del"=>0])->findOrEmpty();
  138. if(!$result->isEmpty()){
  139. $result->company=$object['name'];
  140. $result->inv_code=$object->registercode;
  141. $result->license_img=$object->license_img;
  142. $result->inv_legaler=$object->legaler;
  143. $result->inv_time=$object->registertime;
  144. $result->addr=$object->addr;
  145. $result->inv_scope=$object->scope;
  146. $result->contactor=$object->contactor;
  147. $result->mobile=$object->mobile;
  148. $result->updater=$object->updater;
  149. $result->updaterid=$object->updaterid;
  150. $busup=$result->save();
  151. if(!$busup) throw new \Exception("业务公司同步失败");
  152. self::createInfo($result,1);
  153. }
  154. }
  155. public function companyInfo(){
  156. return $this->belongsTo(Business::class,'code','companyNo');
  157. }
  158. public function supplierInfo(){
  159. return $this->belongsTo(Supplier::class,'code','code');
  160. }
  161. public function customerInfo(){
  162. return $this->belongsTo(CustomerInfo::class,'code','companyNo');
  163. }
  164. public static function onAfterWrite($model) {
  165. event("copyCompany",$model->toArray());
  166. }
  167. }