InvCat.php 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. <?php
  2. namespace app\admin\controller;
  3. use app\admin\BaseController;
  4. use think\App;
  5. use think\facade\Db;
  6. class InvCat extends BaseController{
  7. public function __construct(App $app) {parent::__construct($app);}
  8. //商品关联开票类目
  9. public function AddGood(){
  10. $spuCode=isset($this->post['spuCode'])&&$this->post['spuCode']!=''?trim($this->post['spuCode']):"";
  11. if($spuCode==''){
  12. return error_show(1004,"参数 spuCode 不能为空");
  13. }
  14. $goodinfo =Db::name("good")->where(["spuCode"=>$spuCode])->findOrEmpty();
  15. if(empty($goodinfo)) return error_show(1004,"商品数据未找到");
  16. $inv_good_name = isset($this->post['inv_good_name'])&&$this->post['inv_good_name']!=''?trim($this->post['inv_good_name']):"";
  17. if($inv_good_name==''){
  18. return error_show(1004,"参数 inv_good_name 不能为空");
  19. }
  20. $tax = isset($this->post['tax'])&&$this->post['tax']!=''?trim($this->post['tax']):"";
  21. if($tax=="") return error_show(1004,"参数 tax 不能为空");
  22. $cat_code = isset($this->post['cat_code'])&&$this->post['cat_code']!=''?trim($this->post['cat_code']):"";
  23. if($cat_code==''){
  24. return error_show(1004,"参数 cat_code 不能为空");
  25. }
  26. $catinfo=Db::name("inv_cat")->where(["cat_code"=>$cat_code])->findOrEmpty();
  27. if(empty($catinfo)) return error_show(1004,"未找到对应的开票类目");
  28. $taxArr=$catinfo['tax']!=''? explode("、",$catinfo['tax']):[];
  29. if(!in_array($tax,$taxArr))return error_show(1004,"未找到对应的开票类目税率");
  30. $tax=str_replace("%","",$tax)/100;
  31. $invTag=isset($this->post['inv_tag'])&& $this->post['inv_tag']!==''?intval($this->post['inv_tag']):0;
  32. $is_discount=isset($this->post['is_discount'])&& $this->post['is_discount']!==''?intval($this->post['is_discount']):0;
  33. $addTax=isset($this->post['addTax'])&& $this->post['addTax']!==''?trim($this->post['addTax']):'';
  34. if($is_discount==1){
  35. // 优惠政策下 税率标识只能选择 0非零说率 1免税 2不征税 增值税管理为空"出口零税/免税/不征税"
  36. if($tax==0 && $invTag==3){
  37. return error_show(1004,"税率标识不能选择零税率");
  38. }
  39. if($addTax==''){
  40. return error_show(1004,"参数 addTax 不能为空");
  41. }
  42. }else{
  43. // 非优惠政策下 零税率 税率标识只能选择 3 普通零税率 增值税管理为空
  44. // 非优惠政策下 非零税率 税率标识只能选择 0 非零税率 增值税管理为空
  45. if($tax==0 && $invTag!=3){
  46. return error_show(1004,"税率标识只能选择零税率");
  47. }
  48. $addTax='';
  49. }
  50. $data=[
  51. "inv_cat_name"=>$catinfo['short_name'],
  52. "inv_cat_code"=>$catinfo['merge_code'],
  53. "inv_tax"=>$tax,
  54. "inv_good_name"=>$inv_good_name,
  55. "inv_tag"=>$invTag,
  56. "is_discount"=>$is_discount,
  57. "addTax"=>$addTax,
  58. "status"=>1,
  59. "updatetime"=>date("Y-m-d H:i:s")
  60. ];
  61. $up =Db::name("good")->where($goodinfo)->update($data);
  62. return $up? app_show(0,"添加成功"):error_show(1004,"添加失败");
  63. }
  64. //商品列表
  65. public function GoodList(){
  66. $page =isset($this->post['page'])&& $this->post['page']!="" ? intval($this->post['page']) :1;
  67. $size =isset($this->post['size'])&& $this->post['size']!="" ? intval($this->post['size']) :15;
  68. $condition =[];
  69. $status =isset($this->post['status'])&&$this->post['status']!==''?intval($this->post['status']):"";
  70. if($status!==''){
  71. $condition[]=["status","=",$status];
  72. }
  73. $isZx =isset($this->post['isZx'])&&$this->post['isZx']!==''?intval($this->post['isZx']):"";
  74. if($isZx!==''){
  75. $condition[]=["isZx","=",$isZx];
  76. }
  77. $spuCode=isset($this->post['spuCode'])&&$this->post['spuCode']!=''?trim($this->post['spuCode']):"";
  78. if($spuCode!="") $condition[]=["spuCode","like","%$spuCode%"];
  79. $good_name=isset($this->post['good_name'])&&$this->post['good_name']!=''?trim($this->post['good_name']):"";
  80. if($good_name!="") $condition[]=["good_name","like","%$good_name%"];
  81. $companyNo=isset($this->post['companyNo'])&&$this->post['companyNo']!=''?trim($this->post['companyNo']):"";
  82. if($companyNo!="") $condition[]=["companyNo","like","%$companyNo%"];
  83. $supplierNo=isset($this->post['supplierNo'])&&$this->post['supplierNo']!=''?trim($this->post['supplierNo']):"";
  84. if($supplierNo!="") $condition[]=["supplierNo","like","%$supplierNo%"];
  85. $creater=isset($this->post['creater'])&&$this->post['creater']!=''?trim($this->post['creater']):"";
  86. if($creater!="") $condition[]=["creater","like","%$creater%"];
  87. $count=Db::name("good")->where($condition)->count();
  88. $total=ceil($count/$size);
  89. $page = $page>=$total? intval($total):$page;
  90. $list =Db::name("good")->where($condition)->order("addtime desc")->page($page,$size)->select()->toArray();
  91. foreach ($list as &$value){
  92. $company =Db::name("company_info")->where(["companyNo"=>$value['companyNo']])->find();
  93. $value['companyName']=$company['company_name']??"";
  94. $supplier =Db::name("supplier_info")->where(["code"=>$value["supplierNo"]])->find();
  95. $value["supplierName"]=$supplier["name"]??"";
  96. }
  97. return app_show(0,"获取成功",["list"=>$list,"count"=>$count]);
  98. }
  99. //商品详情
  100. public function goodinfo(){
  101. $spuCode=isset($this->post['spuCode'])&&$this->post['spuCode']!=''?trim($this->post['spuCode']):"";
  102. if($spuCode=="") return error_show(1004,"参数 spuCode 不能为空");
  103. $goodinfo =Db::name("good")->where(["spuCode"=>$spuCode])->findOrEmpty();
  104. if(empty($goodinfo))return error_show(1004,"商品数据未找到");
  105. $company =Db::name("company_info")->where(["companyNo"=>$goodinfo['companyNo']])->find();
  106. $goodinfo['companyName']=$company['company_name']??"";
  107. $supplier =Db::name("supplier_info")->where(["code"=>$goodinfo["supplierNo"]])->find();
  108. $goodinfo["supplierName"]=$supplier["name"]??"";
  109. return app_show(0,"获取成功",$goodinfo);
  110. }
  111. //发票类目列表
  112. public function catlist(){
  113. $page =isset($this->post['page'])&& $this->post['page']!="" ? intval($this->post['page']) :1;
  114. $size =isset($this->post['size'])&& $this->post['size']!="" ? intval($this->post['size']) :15;
  115. $condition =[];
  116. $cat_name = isset($this->post['cat_name'])&&$this->post['cat_name']!=''?trim($this->post['cat_name']):"";
  117. if($cat_name!=''){
  118. $condition[]=["cat_name|short_name","like","%$cat_name%"];
  119. }
  120. $cat_code = isset($this->post['cat_code'])&&$this->post['cat_code']!=''?trim($this->post['cat_code']):"";
  121. if($cat_code!=''){
  122. $condition[]=["cat_code|merge_code","like","%$cat_code%"];
  123. }
  124. $status =isset($this->post['status'])&&$this->post['status']!==''?intval($this->post['status']):"";
  125. if($status!==''){
  126. $condition[]=["status","=",$status];
  127. }
  128. $count =Db::name("inv_cat")->where($condition)->count();
  129. $total=ceil($count/$size);
  130. $page = $page>=$total? intval($total):$page;
  131. $list =Db::name("inv_cat")->where($condition)->order("addtime desc")->page($page,$size)->select()->toArray();
  132. foreach ($list as &$value){
  133. $value['tax'] = $value['tax']==''?[]:explode("、",$value['tax']);
  134. }
  135. return app_show(0,"获取成功",["list"=>$list,"count"=>$count]);
  136. }
  137. //类目查询
  138. public function query(){
  139. $condition =[["tax","<>",""]];
  140. $cat_name = isset($this->post['cat_name'])&&$this->post['cat_name']!=''?trim($this->post['cat_name']):"";
  141. if($cat_name!=''){
  142. $condition[]=["short_name","like","%$cat_name%"];
  143. }
  144. $cat_code = isset($this->post['cat_code'])&&$this->post['cat_code']!=''?trim($this->post['cat_code']):"";
  145. if($cat_code!=''){
  146. $condition[]=["cat_code|merge_code","like","%$cat_code%"];
  147. }
  148. $list =Db::name("inv_cat")->where($condition)->order("addtime desc")->limit(30)->select()->toArray();
  149. foreach ($list as &$value){
  150. $value['tax'] = $value['tax']==''?[]:explode("、",$value['tax']);
  151. }
  152. return app_show(0,"获取成功",$list);
  153. }
  154. }