Sale.php 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. <?php
  2. namespace app\admin\controller;
  3. use app\admin\BaseController;
  4. use think\App;
  5. use think\facade\Db;
  6. class Sale extends BaseController{
  7. public function __construct(App $app) {parent::__construct($app);}
  8. /** 获取列表
  9. * @return \think\response\Json|void
  10. * @throws \think\db\exception\DataNotFoundException
  11. * @throws \think\db\exception\DbException
  12. * @throws \think\db\exception\ModelNotFoundException
  13. */
  14. public function list(){
  15. $post =$this->request->param();
  16. $condition = [['a.is_del',"=",0]];
  17. $page = isset($post['page'])&&$post['page']!==''?intval($post['page']):1;
  18. $size = isset($post['size'])&&$post['size']!==''?intval($post['size']):15;
  19. $start =isset($post['start'])&&$post['start']!==''?trim($post['start']):'';
  20. if($start!=''){
  21. $condition[]=["a.createdTime",">=",$start." 00:00:00"];
  22. }
  23. $end =isset($post['end'])&&$post['end']!==''?trim($post['end']):'';
  24. if($end!=''){
  25. $condition[]=["a.createdTime","<=",$end." 23:59:59"];
  26. }
  27. $total_min = isset($post['total_min'])&&$post['total_min']!==''?floatval($post['total_min']):'';
  28. if($total_min!==''){
  29. $condition[]=["a.totalPrice",">=",$total_min];
  30. }
  31. $total_max = isset($post['total_max'])&&$post['total_max']!==''?floatval($post['total_max']):'';
  32. if($total_max!==''){
  33. $condition[]=["a.totalPrice","<=",$total_max];
  34. }
  35. $inv_status = isset($post['inv_status'])&&$post['inv_status']!==''?intval($post['inv_status']):'';
  36. if($inv_status!==''){
  37. if($inv_status==0){
  38. $condition[]=["a.inv_status","<>",3];
  39. }else{
  40. $condition[]=["a.inv_status","=",$inv_status];
  41. }
  42. }
  43. $invIs = isset($post['inv_is'])&&$post['inv_is']!==''?intval($post['inv_is']):'';
  44. if($invIs!==''){
  45. if($invIs==1){
  46. $condition[]=["a.winv_fee","<>",0];
  47. }else{
  48. $condition[]=["a.winv_fee","=",0];
  49. }
  50. }
  51. $payIs = isset($post['pay_is'])&&$post['pay_is']!==''?intval($post['pay_is']):'';
  52. if($payIs!==''){
  53. if($invIs==1){
  54. $condition[]=["a.wpay_fee","<>",0];
  55. }else{
  56. $condition[]=["a.wpay_fee","=",0];
  57. }
  58. }
  59. $pay_status = isset($post['pay_status'])&&$post['pay_status']!==''?intval($post['pay_status']):'';
  60. if($pay_status!==''){
  61. if($pay_status==0){
  62. $condition[]=["a.pay_status","<>",3];
  63. }else{
  64. $condition[]=["a.pay_status","=",$pay_status];
  65. }
  66. }
  67. $status = isset($post['status'])&&$post['status']!==''?intval($post['status']):'';
  68. if($status!==''){
  69. if($status==3){
  70. $condition[]=["a.status","<>",2];
  71. }else{
  72. $condition[]=["a.status","=",$status];
  73. }
  74. }
  75. $qrdNo = isset($post['sequenceNo'])&&$post['sequenceNo']!=''?trim($post['sequenceNo']):'';
  76. if($qrdNo!==''){
  77. $condition[]=["a.sequenceNo","like","%$qrdNo%"];
  78. }
  79. $department = isset($post['department'])&&$post['department']!=''?trim($post['department']):'';
  80. if($department!==''){
  81. $condition[]=["a.department","like","%$department%"];
  82. }
  83. $customerNo = isset($post['customerNo'])&&$post['customerNo']!=''?trim($post['customerNo']):'';
  84. if($customerNo!==''){
  85. $condition[]=["a.customerNo","like","%$customerNo%"];
  86. }
  87. $customer = isset($post['customer'])&&$post['customer']!=''?trim($post['customer']):'';
  88. if($customer!=''){
  89. $condition[]=["a.customerName","like","%$customer%"];
  90. }
  91. $companyNo = isset($post['companyNo'])&&$post['companyNo']!=''?trim($post['companyNo']):'';
  92. if($companyNo!==''){
  93. $condition[]=["a.companyNo","=",$companyNo];
  94. }
  95. $companyName = isset($post['companyName'])&&$post['companyName']!=''?trim($post['companyName']):'';
  96. if($companyName !=''){
  97. $condition[]=["a.companyName","like","%$companyName%"];
  98. }
  99. $platName = isset($post['platName'])&&$post['platName']!=''?trim($post['platName']):'';
  100. if($platName!=''){
  101. $condition[]=["a.platName","like","%$platName%"];
  102. }
  103. $saler= isset($post['saler']) && $post['saler']!='' ? trim($post['saler']) :"";
  104. if($saler!='') $condition []=["a.ownerName","like","%$saler%"];
  105. $salerid= isset($post['salerid']) && $post['salerid']!='' ? intval($post['salerid']) :"";
  106. if($salerid!='') $condition []=["a.ownerid","=",$salerid];
  107. $qrdtype= isset($post['qrdtype']) && $post['qrdtype']!='' ? intval($post['qrdtype']) :"";
  108. if($qrdtype!='') $condition []=["a.qrdType","=",$qrdtype];
  109. $qrdsource= isset($post['qrdsource']) && $post['qrdsource']!='' ? intval($post['qrdsource']) :"";
  110. if($qrdsource!='') $condition []=["a.qrdSource","=",$qrdsource];
  111. $sendstatus= isset($post['sendstatus']) && $post['sendstatus']!='' ? intval($post['sendstatus']) :"";
  112. if($sendstatus!='') $condition []=["a.sendStatus","=",$sendstatus];
  113. $tag_id= isset($post['tag_id'])&&$post['tag_id']!=="" ? intval($post['tag_id']) :"";
  114. if($tag_id!==''){
  115. if($tag_id==1) $condition[]=["a.inv_tag","=",1];
  116. if($tag_id==2) $condition[]=["a.pay_tag","=",1];
  117. if($tag_id==3) $condition[]=["a.pay_tag|inv_tag","=",1];
  118. if($tag_id==4) $condition[]=["a.pay_tag&inv_tag","=",1];
  119. }
  120. $cat_status= isset($post['cat_status'])&&$post['cat_status']!=="" ? intval($post['cat_status']) :"";
  121. if($cat_status!=='') $condition[]=["b.status","=",$cat_status];
  122. $count =Db::name("qrd_info")->alias("a")->leftJoin("good b","a.goodNo=b.spuCode")->where($condition)->count();
  123. $total = ceil($count/$size);
  124. $page = $page>$total ? intval($total) : $page;
  125. $list =Db::name("qrd_info")->alias("a")
  126. ->leftJoin("good b","a.goodNo=b.spuCode")
  127. ->field("a.*,b.status as cat_status,b.inv_cat_name,b.inv_cat_code,b.inv_tax,b.inv_good_name,b.isZx")
  128. ->where($condition)->page($page,$size)->select();
  129. $data=[];
  130. foreach ( $list as $ky=>$value){
  131. $value['catInfo'] = json_decode($value['catInfo'],true);
  132. $tag =Db::name("tag_log")->alias("a")->leftJoin("order_tag b","a.tag_id=b.id")->where
  133. (["code"=>$value['sequenceNo'],"a.status"=>1])->column("b.tag_name","b.type");
  134. $value['inv_tag_name']=$tag[4]['tag_name']??'';
  135. $value['pay_tag_name']=$tag[3]['tag_name']??'';
  136. $invArr = Db::name("assoc")->alias("a")->leftJoin("invoice_good b","a.viceCode=b.invNo")
  137. ->where(["a.status"=>[1,2],"a.is_del"=>0,"a.type"=>1,"a.orderCode"=>$value['sequenceNo']])->group("a.status")
  138. ->column("sum(b.goodNum) as goodNum","a.status");
  139. $value['inv_num'] = $invArr[1]??0;
  140. $value['ainv_num'] = $invArr[2]??0;
  141. $value['winv_num'] =$value['goodNum']- $value['inv_num']-$value['ainv_num'];
  142. $data[]=$value;
  143. }
  144. return app_show(0,"获取成功",["list"=>$data,"count"=>$count]);
  145. }
  146. /**
  147. * 更改销售单状态 是否需要回款 0 未回款对账 1 回款对账 2 无需汇款操作
  148. */
  149. public function status(){
  150. $post =$this->request->only(["sequenceNo"=>'',"status"=>0],"post","trim");
  151. if($post['sequenceNo']==''){
  152. return error_show(1004,"参数 sequenceNo 不能为空");
  153. }
  154. if($post['status']===''){
  155. return error_show(1004,"参数 status 不能为空");
  156. }
  157. $qrdinfo =Db::name("qrd_info")->where("sequenceNo","=",$post['sequenceNo'])->findOrEmpty();
  158. if(empty($qrdinfo)){
  159. return error_show(1004,"未找到确认单信息");
  160. }
  161. if ($qrdinfo['status']==1){
  162. return error_show(1004,"确认单已参与对账");
  163. }
  164. $update=[
  165. "status"=>$post['status'],
  166. "updatetime"=>date("Y-m-d H:i:s")
  167. ];
  168. $up =Db::name("qrd_info")->where($qrdinfo)->update($update);
  169. if($up){
  170. return app_show(0,"更新成功");
  171. }else{
  172. return error_show(1003,"更新失败");
  173. }
  174. }
  175. //确认单信息详情
  176. public function saleinfo(){
  177. $post=$this->post;
  178. $sequenceNo =isset($post['sequenceNo'])&&$post['sequenceNo']?trim($post['sequenceNo']):"";
  179. if($sequenceNo==''){
  180. return error_show(1003,"参数 sequenceNo 不能为空");
  181. }
  182. $qrdinfo =Db::name("qrd_info")->where("sequenceNo","=",$post['sequenceNo'])->findOrEmpty();
  183. if(empty($qrdinfo)){
  184. return error_show(1004,"未找到确认单信息");
  185. }
  186. $goodinfo = Db::name("good")->where(["skuCode"=>$qrdinfo["goodNo"]])->findOrEmpty();
  187. $qrdinfo['goodinfo'] =$goodinfo;
  188. $qrdinfo['catInfo'] = json_decode($qrdinfo['catInfo'],true);
  189. $tag =Db::name("tag_log")->alias("a")->leftJoin("order_tag b","a.tag_id=b.id")->where
  190. (["code"=>$qrdinfo['sequenceNo'],"a.status"=>1])->column("b.tag_name","b.type");
  191. $qrdinfo['inv_tag_name']=$tag[4]??'';
  192. $qrdinfo['pay_tag_name']=$tag[3]??'';
  193. return app_show(0,"获取成功",$qrdinfo);
  194. }
  195. }