Sale.php 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650
  1. <?php
  2. namespace app\admin\controller;
  3. use app\admin\model\CgdInfo;use app\admin\model\GoodCombind;use app\admin\model\InvoicePool;use app\admin\model\OrderCategory;use app\admin\model\Pay;use app\admin\model\QrdInfo;use app\admin\model\TradePool;use think\App;
  4. use think\facade\Db;use think\facade\Validate;
  5. class Sale extends Base{
  6. public function __construct(App $app) {
  7. parent::__construct($app);
  8. }
  9. /** 获取列表
  10. * @return \think\response\Json|void
  11. * @throws \think\db\exception\DataNotFoundException
  12. * @throws \think\db\exception\DbException
  13. * @throws \think\db\exception\ModelNotFoundException
  14. */
  15. public function list(){
  16. $post =$this->request->param();
  17. $condition = [['a.is_del',"=",0]];
  18. $roleid = $this->roleid;
  19. $check = checkRole($roleid,'86');
  20. if($check){
  21. $condition[]=["a.ownerid","=",$this->uid];
  22. }
  23. $page = isset($post['page'])&&$post['page']!==''?intval($post['page']):1;
  24. $size = isset($post['size'])&&$post['size']!==''?intval($post['size']):15;
  25. $start =isset($post['start'])&&$post['start']!==''?trim($post['start']):'';
  26. if($start!=''){
  27. $condition[]=["a.createdTime",">=",$start." 00:00:00"];
  28. }
  29. $end =isset($post['end'])&&$post['end']!==''?trim($post['end']):'';
  30. if($end!=''){
  31. $condition[]=["a.createdTime","<=",$end." 23:59:59"];
  32. }
  33. $total_min = isset($post['total_min'])&&$post['total_min']!==''?floatval($post['total_min']):'';
  34. if($total_min!==''){
  35. $condition[]=["a.totalPrice",">=",$total_min];
  36. }
  37. $total_max = isset($post['total_max'])&&$post['total_max']!==''?floatval($post['total_max']):'';
  38. if($total_max!==''){
  39. $condition[]=["a.totalPrice","<=",$total_max];
  40. }
  41. if(isset($post['is_comon'])&&$post['is_comon']!=='') $condition []=['is_comon','=',$post['is_comon']];
  42. $cxCode =$post['cxCode']??[];
  43. if(!empty($cxCode)){
  44. $condition[]=["a.cxCode","in",$cxCode];
  45. }
  46. $inv_status = isset($post['inv_status'])&&$post['inv_status']!==''?intval($post['inv_status']):'';
  47. if($inv_status!==''){
  48. if($inv_status==0){
  49. $condition[]=["a.inv_status","<>",3];
  50. }else{
  51. $condition[]=["a.inv_status","=",$inv_status];
  52. }
  53. }
  54. $invIs = isset($post['inv_is'])&&$post['inv_is']!==''?intval($post['inv_is']):'';
  55. if($invIs!==''){
  56. if($invIs==1){
  57. $condition[]=["a.winv_fee","<>",0];
  58. }else{
  59. $condition[]=["a.winv_fee","=",0];
  60. }
  61. }
  62. $payIs = isset($post['pay_is'])&&$post['pay_is']!==''?intval($post['pay_is']):'';
  63. if($payIs!==''){
  64. if($payIs==1){
  65. $condition[]=["a.wpay_fee","<>",0];
  66. }else{
  67. $condition[]=["a.wpay_fee","=",0];
  68. }
  69. }
  70. $pay_status = isset($post['pay_status'])&&$post['pay_status']!==''?intval($post['pay_status']):'';
  71. if($pay_status!==''){
  72. if($pay_status==0){
  73. $condition[]=["a.pay_status","<>",3];
  74. }else{
  75. $condition[]=["a.pay_status","=",$pay_status];
  76. }
  77. }
  78. $status = isset($post['status'])&&$post['status']!==''?intval($post['status']):'';
  79. if($status!==''){
  80. if($status==3){
  81. $condition[]=["a.status","<>",2];
  82. }else{
  83. $condition[]=["a.status","=",$status];
  84. }
  85. }
  86. $poCode = isset($post['poCode']) && $post['poCode'] !== '' ? trim($post['poCode']) : '';
  87. if ($poCode !== '') {
  88. $condition[] = ['a.poCode', 'like', "%$poCode%"];
  89. }
  90. $qrdNo = isset($post['sequenceNo'])&&$post['sequenceNo']!=''?trim($post['sequenceNo']):'';
  91. if($qrdNo!==''){
  92. $condition[]=["a.sequenceNo","like","%$qrdNo%"];
  93. }
  94. $department = isset($post['department'])&&$post['department']!=''?trim($post['department']):'';
  95. if($department!==''){
  96. $condition[]=["a.department","like","%$department%"];
  97. }
  98. $customerNo = isset($post['customerNo'])&&$post['customerNo']!=''?trim($post['customerNo']):'';
  99. if($customerNo!==''){
  100. $condition[]=["a.customerNo","like","%$customerNo%"];
  101. }
  102. $customer = isset($post['customer'])&&$post['customer']!=''?trim($post['customer']):'';
  103. if($customer!=''){
  104. $condition[]=["a.customerName","like","%$customer%"];
  105. }
  106. $companyNo = isset($post['companyNo'])&&$post['companyNo']!=''?trim($post['companyNo']):'';
  107. if($companyNo!==''){
  108. $condition[]=["a.companyNo","=",$companyNo];
  109. }
  110. $companyName = isset($post['companyName'])&&$post['companyName']!=''?trim($post['companyName']):'';
  111. if($companyName !=''){
  112. $condition[]=["a.companyName","like","%$companyName%"];
  113. }
  114. $platName = isset($post['platName'])&&$post['platName']!=''?trim($post['platName']):'';
  115. if($platName!=''){
  116. $condition[]=["a.platName","like","%$platName%"];
  117. }
  118. $platform_type = isset($post['platform_type'])&&$post['platform_type']!==''?intval($post['platform_type']):'';
  119. if($platform_type!==''){
  120. $condition[]=["a.platform_type","=",$platform_type];
  121. }
  122. $saler= isset($post['saler']) && $post['saler']!='' ? trim($post['saler']) :"";
  123. if($saler!='') $condition []=["a.ownerName","like","%$saler%"];
  124. $salerid= isset($post['salerid']) && $post['salerid']!='' ? intval($post['salerid']) :"";
  125. if($salerid!='') $condition []=["a.ownerid","=",$salerid];
  126. $qrdtype= isset($post['qrdtype']) && $post['qrdtype']!='' ? intval($post['qrdtype']) :"";
  127. if($qrdtype!='') $condition []=["a.qrdType","=",$qrdtype];
  128. $qrdsource= isset($post['qrdsource']) && $post['qrdsource']!='' ? intval($post['qrdsource']) :"";
  129. if($qrdsource!='') $condition []=["a.qrdSource","=",$qrdsource];
  130. $sendstatus= isset($post['sendstatus']) && $post['sendstatus']!='' ? intval($post['sendstatus']) :"";
  131. if($sendstatus!='') $condition []=["a.sendStatus","=",$sendstatus];
  132. $tag_id= isset($post['tag_id'])&&$post['tag_id']!=="" ? intval($post['tag_id']) :"";
  133. if($tag_id!==''){
  134. if($tag_id==1) $condition[]=["a.inv_tag","=",1];
  135. if($tag_id==2) $condition[]=["a.pay_tag","=",1];
  136. if($tag_id==3) $condition[]=["a.pay_tag|inv_tag","=",1];
  137. if($tag_id==4) $condition[]=["a.pay_tag&inv_tag","=",1];
  138. }
  139. $cat_status= isset($post['cat_status'])&&$post['cat_status']!=="" ? intval($post['cat_status']) :"";
  140. if($cat_status!=='') $condition[]=["b.status","=",$cat_status];
  141. $count =Db::name("qrd_info")
  142. ->alias("a")
  143. ->leftJoin("good b","a.goodNo=b.spuCode")->where($condition)->count();
  144. $total = ceil($count/$size);
  145. $page = $page>$total ? intval($total) : $page;
  146. $list =Db::name("qrd_info")->alias("a")
  147. ->leftJoin("good b","a.goodNo=b.spuCode")
  148. ->field("a.*,b.status as cat_status,b.inv_cat_name,b.inv_cat_code,b.inv_tax,b.inv_good_name,b.isZx")
  149. ->order("a.createdTime desc")
  150. ->where($condition)->page($page,$size)->select();
  151. $data=[];
  152. foreach ( $list as $ky=>$value){
  153. $value['orderTax'] = OrderCategory::where(['code' => $value['sequenceNo'], 'spuCode' => $value['goodNo']])
  154. ->field(['cat_code', 'cat_name', 'merge_code', 'short_name', 'tax', 'inv_good_name'])->findOrEmpty();
  155. $value['catInfo'] = json_decode($value['catInfo'],true);
  156. $value['inv_tag_name']='';
  157. $value['pay_tag_name']='';
  158. $value['pay_tag_img']='';
  159. $value['inv_tag_id']='0';
  160. $value['pay_tag_id']='0';
  161. $value['pay_tag_remark']='';
  162. $value['inv_tag_img']='';
  163. $value['inv_tag_remark']='';
  164. if($value['pay_tag']==1 || $value['inv_tag']==1){
  165. $tag =Db::name("tag_log")->alias("a")->leftJoin("order_tag b","a.tag_id=b.id")->where
  166. (["code"=>$value['sequenceNo'],"a.status"=>[1,2]])->order("a.id desc")->column("a.id,b.tag_name,a.tag_img,a.tag_remark","b.type");
  167. if($value['inv_tag']==1){
  168. $value['inv_tag_name']=$tag[4]['tag_name']??'';
  169. $value['inv_tag_id']=$tag[4]['id']??'0';
  170. $value['inv_tag_img']=$tag[4]['tag_img']??'';
  171. $value['inv_tag_remark']=$tag[4]['tag_remark']??'';
  172. }
  173. if($value['pay_tag']==1){
  174. $value['pay_tag_id']=$tag[3]['id']??'0';
  175. $value['pay_tag_name']=$tag[3]['tag_name']??'';
  176. $value['pay_tag_img']=$tag[3]['tag_img']??'';
  177. $value['pay_tag_remark']=$tag[3]['tag_remark']??'';
  178. }
  179. }
  180. $value['plat_pay_fee']=0;
  181. if($value['is_comon']==1){
  182. $tax = QrdInfo::where(['cxCode'=>$value['cxCode'],'is_comon'=>0])->findOrEmpty();
  183. if($tax->isEmpty()==false){
  184. $rate =$tax->totalPrice==0?0: ($tax->apay_fee/$tax->totalPrice);
  185. $value['plat_pay_fee']= round($value['totalPrice']* $rate,2);
  186. }
  187. }
  188. $value['goodNum'] = $value['goodNum'] -$value['thNum'];
  189. $value['sendNum'] = $value['sendNum'] -$value['thNum'];
  190. $invArr = Db::name("assoc")
  191. ->alias("a")
  192. ->leftJoin("invoice_good b", "a.viceCode=b.invNo AND b.orderCode =a.orderCode")
  193. ->where(["a.status" => [1, 2], "a.is_del" => 0, "a.type" => 1, "a.orderCode" => $value['sequenceNo']])->group("a.status")
  194. ->column("sum(b.goodNum) as goodNum", "a.status");
  195. $value['inv_num'] = $invArr[1]??0;
  196. $value['ainv_num'] = $invArr[2]??0;
  197. $value['winv_num'] =$value['goodNum']- $value['inv_num']-$value['ainv_num'];
  198. $data[]=$value;
  199. }
  200. return app_show(0,"获取成功",["list"=>$data,"count"=>$count]);
  201. }
  202. public function query(){
  203. $post =$this->request->param();
  204. $condition = [['a.is_del',"=",0]];
  205. $start =isset($post['start'])&&$post['start']!==''?trim($post['start']):'';
  206. if($start!=''){
  207. $condition[]=["a.createdTime",">=",$start." 00:00:00"];
  208. }
  209. $end =isset($post['end'])&&$post['end']!==''?trim($post['end']):'';
  210. if($end!=''){
  211. $condition[]=["a.createdTime","<=",$end." 23:59:59"];
  212. }
  213. $total_min = isset($post['total_min'])&&$post['total_min']!==''?floatval($post['total_min']):'';
  214. if($total_min!==''){
  215. $condition[]=["a.totalPrice",">=",$total_min];
  216. }
  217. if(isset($post['is_comon'])&&$post['is_comon']!=='') $condition []=['is_comon','=',$post['is_comon']];
  218. $total_max = isset($post['total_max'])&&$post['total_max']!==''?floatval($post['total_max']):'';
  219. if($total_max!==''){
  220. $condition[]=["a.totalPrice","<=",$total_max];
  221. }
  222. $cxCode =$post['cxCode']??[];
  223. if(!empty($cxCode)){
  224. $condition[]=['a.cxCode','in',$cxCode];
  225. }
  226. $inv_status = isset($post['inv_status'])&&$post['inv_status']!==''?intval($post['inv_status']):'';
  227. if($inv_status!==''){
  228. if($inv_status==0){
  229. $condition[]=["a.inv_status","<>",3];
  230. }else{
  231. $condition[]=["a.inv_status","=",$inv_status];
  232. }
  233. }
  234. $invIs = isset($post['inv_is'])&&$post['inv_is']!==''?intval($post['inv_is']):'';
  235. if($invIs!==''){
  236. if($invIs==1){
  237. $condition[]=["a.winv_fee","<>",0];
  238. }else{
  239. $condition[]=["a.winv_fee","=",0];
  240. }
  241. }
  242. $payIs = isset($post['pay_is'])&&$post['pay_is']!==''?intval($post['pay_is']):'';
  243. if($payIs!==''){
  244. if($payIs==1){
  245. $condition[]=["a.wpay_fee","<>",0];
  246. }else{
  247. $condition[]=["a.wpay_fee","=",0];
  248. }
  249. }
  250. $pay_status = isset($post['pay_status'])&&$post['pay_status']!==''?intval($post['pay_status']):'';
  251. if($pay_status!==''){
  252. if($pay_status==0){
  253. $condition[]=["a.pay_status","<>",3];
  254. }else{
  255. $condition[]=["a.pay_status","=",$pay_status];
  256. }
  257. }
  258. $status = isset($post['status'])&&$post['status']!==''?intval($post['status']):'';
  259. if($status!==''){
  260. if($status==3){
  261. $condition[]=["a.status","<>",2];
  262. }else{
  263. $condition[]=["a.status","=",$status];
  264. }
  265. }
  266. $qrdNo = isset($post['sequenceNo'])&&$post['sequenceNo']!=''?trim($post['sequenceNo']):'';
  267. if($qrdNo!==''){
  268. $condition[]=["a.sequenceNo","in",explode(",",$qrdNo)];
  269. }
  270. $department = isset($post['department'])&&$post['department']!=''?trim($post['department']):'';
  271. if($department!==''){
  272. $condition[]=["a.department","like","%$department%"];
  273. }
  274. $customerNo = isset($post['customerNo'])&&$post['customerNo']!=''?trim($post['customerNo']):'';
  275. if($customerNo!==''){
  276. $condition[]=["a.customerNo","like","%$customerNo%"];
  277. }
  278. $customer = isset($post['customer'])&&$post['customer']!=''?trim($post['customer']):'';
  279. if($customer!=''){
  280. $condition[]=["a.customerName","like","%$customer%"];
  281. }
  282. $companyNo = isset($post['companyNo'])&&$post['companyNo']!=''?trim($post['companyNo']):'';
  283. if($companyNo!==''){
  284. $condition[]=["a.companyNo","=",$companyNo];
  285. }
  286. $companyName = isset($post['companyName'])&&$post['companyName']!=''?trim($post['companyName']):'';
  287. if($companyName !=''){
  288. $condition[]=["a.companyName","like","%$companyName%"];
  289. }
  290. $platName = isset($post['platName'])&&$post['platName']!=''?trim($post['platName']):'';
  291. if($platName!=''){
  292. $condition[]=["a.platName","like","%$platName%"];
  293. }
  294. $platform_type = isset($post['platform_type'])&&$post['platform_type']!==''?intval($post['platform_type']):'';
  295. if($platform_type!==''){
  296. $condition[]=["a.platform_type","=",$platform_type];
  297. }
  298. $saler= isset($post['saler']) && $post['saler']!='' ? trim($post['saler']) :"";
  299. if($saler!='') $condition []=["a.ownerName","like","%$saler%"];
  300. $salerid= isset($post['salerid']) && $post['salerid']!='' ? intval($post['salerid']) :"";
  301. if($salerid!='') $condition []=["a.ownerid","=",$salerid];
  302. $qrdtype= isset($post['qrdtype']) && $post['qrdtype']!='' ? intval($post['qrdtype']) :"";
  303. if($qrdtype!='') $condition []=["a.qrdType","=",$qrdtype];
  304. $qrdsource= isset($post['qrdsource']) && $post['qrdsource']!='' ? intval($post['qrdsource']) :"";
  305. if($qrdsource!='') $condition []=["a.qrdSource","=",$qrdsource];
  306. $sendstatus= isset($post['sendstatus']) && $post['sendstatus']!='' ? intval($post['sendstatus']) :"";
  307. if($sendstatus!='') $condition []=["a.sendStatus","=",$sendstatus];
  308. $tag_id= isset($post['tag_id'])&&$post['tag_id']!=="" ? intval($post['tag_id']) :"";
  309. if($tag_id!==''){
  310. if($tag_id==1) $condition[]=["a.inv_tag","=",1];
  311. if($tag_id==2) $condition[]=["a.pay_tag","=",1];
  312. if($tag_id==3) $condition[]=["a.pay_tag|inv_tag","=",1];
  313. if($tag_id==4) $condition[]=["a.pay_tag&inv_tag","=",1];
  314. }
  315. $poCode = isset($post['poCode']) && $post['poCode'] !== '' ? trim($post['poCode']) : '';
  316. if ($poCode !== '') {
  317. $condition[] = ['a.poCode', 'like', "%$poCode%"];
  318. }
  319. $cat_status= isset($post['cat_status'])&&$post['cat_status']!=="" ? intval($post['cat_status']) :"";
  320. if($cat_status!=='') $condition[]=["b.status","=",$cat_status];
  321. $list =Db::name("qrd_info")->alias("a")
  322. ->leftJoin("good b","a.goodNo=b.spuCode")
  323. ->field("a.*,b.status as cat_status,b.inv_cat_name,b.inv_cat_code,b.inv_tax,b.inv_good_name,b.isZx")
  324. ->order("a.createdTime desc")
  325. ->where($condition)->select();
  326. $data=[];
  327. foreach ( $list as $ky=>$value){
  328. $value['catInfo'] = json_decode($value['catInfo'],true);
  329. $value['goodNum'] = $value['goodNum'] -$value['thNum'];
  330. $value['sendNum'] = $value['sendNum'] -$value['thNum'];
  331. $value['inv_tag_name']='';
  332. $value['pay_tag_name']='';
  333. $value['pay_tag_img']='';
  334. $value['inv_tag_id']='0';
  335. $value['pay_tag_id']='0';
  336. $value['pay_tag_remark']='';
  337. $value['inv_tag_img']='';
  338. $value['inv_tag_remark']='';
  339. if($value['pay_tag']==1 || $value['inv_tag']==1){
  340. $tag =Db::name('tag_log')->alias('a')->leftJoin('order_tag b','a.tag_id=b.id')->where
  341. (['code'=>$value['sequenceNo'],'a.status'=>[1,2]])->order('id desc')->column('a.id,b.tag_name,a.tag_img,a.tag_remark','b.type');
  342. if($value['inv_tag']==1){
  343. $value['inv_tag_name']=$tag[4]['tag_name']??'';
  344. $value['inv_tag_id']=$tag[4]['id']??'0';
  345. $value['inv_tag_img']=$tag[4]['tag_img']??'';
  346. $value['inv_tag_remark']=$tag[4]['tag_remark']??'';
  347. }
  348. if($value['pay_tag']==1){
  349. $value['pay_tag_id']=$tag[3]['id']??'0';
  350. $value['pay_tag_name']=$tag[3]['tag_name']??'';
  351. $value['pay_tag_img']=$tag[3]['tag_img']??'';
  352. $value['pay_tag_remark']=$tag[3]['tag_remark']??'';
  353. }
  354. }
  355. $value['goodNum'] = $value['goodNum'] -$value['thNum'];
  356. $value['sendNum'] = $value['sendNum'] -$value['thNum'];
  357. $value['plat_pay_fee']=0;
  358. if($value['is_comon']==1){
  359. $tax = QrdInfo::where(["cxCode"=>$value['cxCode'],"is_comon"=>0])->findOrEmpty();
  360. if($tax->isEmpty()==false){
  361. $rate = $tax->totalPrice==0?0: ($tax->apay_fee/$tax->totalPrice);
  362. $value['plat_pay_fee']= round($value['totalPrice']* $rate,2);
  363. }
  364. }
  365. $invArr = Db::name("assoc")
  366. ->alias("a")
  367. ->leftJoin("invoice_good b", "a.viceCode=b.invNo AND b.orderCode =a.orderCode")
  368. ->where(["a.status" => [1, 2], "a.is_del" => 0, "a.type" => 1, "a.orderCode" => $value['sequenceNo']])->group("a.status")
  369. ->column("sum(b.goodNum) as goodNum", "a.status");
  370. $value['inv_num'] = $invArr[1]??0;
  371. $value['ainv_num'] = $invArr[2]??0;
  372. $value['winv_num'] =$value['goodNum']- $value['inv_num']-$value['ainv_num'];
  373. $data[]=$value;
  374. }
  375. return app_show(0,"获取成功",$data);
  376. }
  377. /**
  378. * 更改销售单状态 是否需要回款 0 未回款对账 1 回款对账 2 无需汇款操作
  379. */
  380. public function status(){
  381. $post =$this->request->only(["sequenceNo"=>'',"status"=>0],"post","trim");
  382. if($post['sequenceNo']==''){
  383. return error_show(1004,"参数 sequenceNo 不能为空");
  384. }
  385. if($post['status']===''){
  386. return error_show(1004,"参数 status 不能为空");
  387. }
  388. $qrdinfo =Db::name("qrd_info")->where("sequenceNo","=",$post['sequenceNo'])->findOrEmpty();
  389. if(empty($qrdinfo)){
  390. return error_show(1004,"未找到确认单信息");
  391. }
  392. if ($qrdinfo['status']==1){
  393. return error_show(1004,"确认单已参与对账");
  394. }
  395. $update=[
  396. "status"=>$post['status'],
  397. "updatetime"=>date("Y-m-d H:i:s")
  398. ];
  399. $up =Db::name("qrd_info")->where($qrdinfo)->update($update);
  400. if($up){
  401. return app_show(0,"更新成功");
  402. }else{
  403. return error_show(1003,"更新失败");
  404. }
  405. }
  406. //确认单信息详情
  407. public function saleinfo(){
  408. $post=$this->post;
  409. $sequenceNo =isset($post['sequenceNo'])&&$post['sequenceNo']?trim($post['sequenceNo']):"";
  410. if($sequenceNo==''){
  411. return error_show(1003,"参数 sequenceNo 不能为空");
  412. }
  413. $qrdinfo =Db::name("qrd_info")->where("sequenceNo","=",$post['sequenceNo'])->findOrEmpty();
  414. if(empty($qrdinfo)){
  415. return error_show(1004,"未找到确认单信息");
  416. }
  417. $goodinfo = Db::name("good")->where(["spuCode"=>$qrdinfo["goodNo"]])->findOrEmpty();
  418. $qrdinfo['goodinfo'] =$goodinfo;
  419. $qrdinfo['catInfo'] = json_decode($qrdinfo['catInfo'],true);
  420. $qrdinfo['inv_tag_name']='';
  421. $qrdinfo['pay_tag_name']='';
  422. $qrdinfo['pay_tag_img']='';
  423. $qrdinfo['inv_tag_id']='0';
  424. $qrdinfo['pay_tag_id']='0';
  425. $qrdinfo['pay_tag_remark']='';
  426. $qrdinfo['inv_tag_img']='';
  427. $qrdinfo['inv_tag_remark']='';
  428. $qrdinfo['orderTax']=OrderCategory::where(['code' => $qrdinfo['sequenceNo'], 'spuCode' => $qrdinfo['goodNo']])
  429. ->field(['cat_code', 'cat_name', 'merge_code', 'short_name', 'tax', 'inv_good_name'])->findOrEmpty();
  430. $qrdinfo['child']=[];
  431. if(isset($goodinfo['isCombind'])&&$goodinfo['isCombind']==1){
  432. $list=(new GoodCombind())->where('spuCode',$qrdinfo['goodNo'])->visible(['child'])->with(['child'])
  433. ->select();
  434. if(!$list->isEmpty()){
  435. $qrdinfo['child']=array_column($list->toArray(),'child');
  436. foreach ($qrdinfo['child'] as &$value){
  437. $value['orderTax'] = OrderCategory::where(['code' => $qrdinfo['sequenceNo'], 'spuCode' => $value['spuCode']]);
  438. }
  439. }
  440. } ;
  441. if($qrdinfo['pay_tag']==1 || $qrdinfo['inv_tag']==1){
  442. $tag =Db::name('tag_log')->alias('a')->leftJoin('order_tag b','a.tag_id=b.id')
  443. ->where(['code'=>$qrdinfo['sequenceNo'],'a.status'=>[1,2]])->order('id desc')->column('a.id,b.tag_name,a.tag_img,a.tag_remark','b.type');
  444. if($qrdinfo['inv_tag']==1){
  445. $qrdinfo['inv_tag_name']=$tag[4]['tag_name']??'';
  446. $qrdinfo['inv_tag_id']=$tag[4]['id']??'0';
  447. $qrdinfo['inv_tag_img']=$tag[4]['tag_img']??'';
  448. $qrdinfo['inv_tag_remark']=$tag[4]['tag_remark']??'';
  449. }
  450. if($qrdinfo['pay_tag']==1){
  451. $qrdinfo['pay_tag_id']=$tag[3]['id']??'0';
  452. $qrdinfo['pay_tag_name']=$tag[3]['tag_name']??'';
  453. $qrdinfo['pay_tag_img']=$tag[3]['tag_img']??'';
  454. $qrdinfo['pay_tag_remark']=$tag[3]['tag_remark']??'';
  455. }
  456. }
  457. $qrdinfo['goodNum'] = $qrdinfo['goodNum'] -$qrdinfo['thNum'];
  458. $qrdinfo['sendNum'] = $qrdinfo['sendNum'] -$qrdinfo['thNum'];
  459. $qrdinfo['customerAttr'] = Db::name("customer_info")->where(["companyNo"=>$qrdinfo['customerNo']])->value("parent",'');
  460. return app_show(0,"获取成功",$qrdinfo);
  461. }
  462. /**验证采销订单管联数据是否对账
  463. * @return \think\response\Json|void
  464. */
  465. public function OrderIsCheck(){
  466. $post =$this->request->only(["orderCode"=>'',"isCgd"=>0,"is_cgd_check"=>0],"post","trim");
  467. $vali=Validate::rule([
  468. "orderCode|销售单单号"=>"require|max:255",
  469. "isCgd|是否退采购单"=>"require|in:0,1",
  470. "is_cgd_check|只退采购单"=>"in:0,1"
  471. ]);
  472. if($vali->check($post)==false) return error_show(1004,$vali->getError());
  473. $data=[];
  474. if($post['is_cgd_check']==0){
  475. $qrdinf =Db::name('qrd_info')->where(['sequenceNo|cxCode'=>$post['orderCode'],'is_del'=>0])
  476. ->field('sequenceNo,ownerName,companyName,inv_tag,pay_tag')->select()->toArray();
  477. if(!empty($qrdinf)){
  478. foreach ($qrdinf as $item){
  479. if($item['inv_tag']==1){
  480. $temp=["type"=>"结算销售单开票标签","username"=> $item['ownerName'],"orderCode"=>$item['sequenceNo'],
  481. "companyName"=>$item['companyName']];
  482. $data[]=$temp;
  483. }
  484. if($item['pay_tag']==1){
  485. $temp=['type'=>'结算销售单付款标签','username'=> $item['ownerName'],'orderCode'=>$item['sequenceNo'],'companyName'=>$item['companyName']];
  486. $data[]=$temp;
  487. }
  488. $asscoinfo =Db::name('assoc')->where(['orderCode'=>$item['sequenceNo'],'status'=>[1,2],'is_del'=>0])->column
  489. ('viceCode','type');
  490. if(isset($asscoinfo[1])){
  491. $uname = InvoicePool::where("invNo",$asscoinfo[1])->value("apply_name",'');
  492. $temp=['type'=>'结算销售单开票申请','username'=> $uname,'orderCode'=>$asscoinfo[1],'companyName'=>$item['companyName']];
  493. $data[]=$temp;
  494. }
  495. if(isset($asscoinfo[2])){
  496. $uname = TradePool::where('logNo',$asscoinfo[2])->value('apply_name','');
  497. $temp=['type'=>'结算销售单资金认领','username'=> $uname,'orderCode'=>$asscoinfo[2],'companyName'=>$item['companyName']];
  498. $data[]=$temp;
  499. }
  500. }
  501. // if(empty($data)==false) $this->error("结算存在进行中业务",1005,$data);
  502. }
  503. $cgdinfo =Db::name('cgd_info')->where(['cxCode'=>$post['orderCode'],'status'=>1,'is_del'=>0])->field('sequenceNo,companyName')->findOrEmpty();
  504. if(!empty($cgdinfo)){
  505. $payNo = Db::name('pay_info')->where(['cgdNo'=>$cgdinfo['sequenceNo'],'status'=>1,'is_del'=>0])->value('payNo','');
  506. if($payNo!=''){
  507. $uname = Pay::where("payNo",$payNo)->value("apply_name",'');
  508. $data[]=['type'=>'采购对账单','username'=> $uname,'orderCode'=>$payNo,'companyName'=>$cgdinfo['companyName']];
  509. $hp = Db::name('pay_invoice')->where(['payNo'=>$payNo,'is_del'=>0,'status'=>[1,2,3,4]])
  510. ->column('hpNo,apply_name');
  511. if(!empty($hp)){
  512. foreach ($hp as $item){
  513. $data[]=['type'=>'采购对账单回票','username'=> $item['apply_name'],'orderCode'=>$item['hpNo'],'companyName'=>$cgdinfo['companyName']];
  514. }
  515. }
  516. $paydz = Db::name('pay_payment')->where(['payNo'=>$payNo,'is_del'=>0,'status'=>[1,2,3,4]])
  517. ->column('dzNo,apply_name');
  518. if(!empty($paydz)){
  519. foreach ($paydz as $item){
  520. $data[]=['type'=>'采购对账单付款','username'=> $item['apply_name'],'orderCode'=>$item['dzNo'],'companyName'=>$cgdinfo['companyName']];
  521. }
  522. }
  523. }
  524. }
  525. if($post['isCgd']==1){
  526. $cgdinfo =Db::name('cgd_info')->where(['qrdCode'=>$post['orderCode'],'is_del'=>0])->field('sequenceNo,companyName')->findOrEmpty();
  527. if(!empty($cgdinfo)){
  528. $payNo = Db::name('pay_info')->where(['cgdNo'=>$cgdinfo['sequenceNo'],'status'=>1,'is_del'=>0])->value('payNo','');
  529. if($payNo!=''){
  530. $uname = Pay::where('payNo',$payNo)->value('apply_name','');
  531. $data[]=['type'=>'采购对账单','username'=> $uname,'orderCode'=>$payNo,'companyName'=>$cgdinfo['companyName']];
  532. $hp = Db::name('pay_invoice')->where(['payNo'=>$payNo,'is_del'=>0,'status'=>[1,2,3,4]])
  533. ->column('hpNo,apply_name');
  534. if(!empty($hp)){
  535. foreach ($hp as $item){
  536. $data[]=['type'=>'采购对账单回票','username'=> $item['apply_name'],'orderCode'=>$item['hpNo'],'companyName'=>$cgdinfo['companyName']];
  537. }
  538. }
  539. $paydz = Db::name('pay_payment')->where(['payNo'=>$payNo,'is_del'=>0,'status'=>[1,2,3,4]])
  540. ->column('dzNo,apply_name');
  541. if(!empty($paydz)){
  542. foreach ($paydz as $item){
  543. $data[]=['type'=>'采购对账单付款','username'=> $item['apply_name'],'orderCode'=>$item['dzNo'],'companyName'=>$cgdinfo['companyName']];
  544. }
  545. }
  546. }
  547. $comoOrder = CgdInfo::where(['mainCode'=>$cgdinfo['sequenceNo'],'is_comon'=>2,'status'=>1])->field('sequenceNo,companyName')->findOrEmpty();
  548. if(!empty($comoOrder)){
  549. $payNo = Db::name('pay_info')->where(['cgdNo'=>$comoOrder['sequenceNo'],'status'=>1,'is_del'=>0])->value('payNo','');
  550. if($payNo!=''){
  551. $uname = Pay::where('payNo',$payNo)->value('apply_name','');
  552. $data[]=['type'=>'源头采购对账单','username'=> $uname,'orderCode'=>$payNo,'companyName'=>$comoOrder['companyName']];
  553. $hp = Db::name('pay_invoice')->where(['payNo'=>$payNo,'is_del'=>0,'status'=>[1,2,3,4]])
  554. ->column('hpNo,apply_name');
  555. if(!empty($hp)){
  556. foreach ($hp as $item){
  557. $data[]=['type'=>'源头采购对账单回票','username'=> $item['apply_name'],'orderCode'=>$item['hpNo'],'companyName'=>$cgdinfo['companyName']];
  558. }
  559. }
  560. $paydz = Db::name('pay_payment')->where(['payNo'=>$payNo,'is_del'=>0,'status'=>[1,2,3,4]])
  561. ->column('dzNo,apply_name');
  562. if(!empty($paydz)){
  563. foreach ($paydz as $item){
  564. $data[]=['type'=>'源头采购对账单付款','username'=> $item['apply_name'],'orderCode'=>$item['dzNo'],'companyName'=>$cgdinfo['companyName']];
  565. }
  566. }
  567. }
  568. }
  569. }
  570. }
  571. }else{
  572. $cgdinfo =Db::name('cgd_info')->where(['sequenceNo'=>$post['orderCode'],'status'=>1,'is_del'=>0])->field('sequenceNo,companyName')->findOrEmpty();
  573. if(!empty($cgdinfo)){
  574. $payNo = Db::name('pay_info')->where(['cgdNo'=>$cgdinfo['sequenceNo'],'status'=>1,'is_del'=>0])->value('payNo','');
  575. if($payNo!=''){
  576. $uname = Pay::where('payNo',$payNo)->value('apply_name','');
  577. $data[]=['type'=>'采购对账单','username'=> $uname,'orderCode'=>$payNo,'companyName'=>$cgdinfo['companyName']];
  578. $hp = Db::name('pay_invoice')->where(['payNo'=>$payNo,'is_del'=>0,'status'=>[1,2,3,4]])
  579. ->column('hpNo,apply_name');
  580. if(!empty($hp)){
  581. foreach ($hp as $item){
  582. $data[]=['type'=>'采购对账单回票','username'=> $item['apply_name'],'orderCode'=>$item['hpNo'],'companyName'=>$cgdinfo['companyName']];
  583. }
  584. }
  585. $paydz = Db::name('pay_payment')->where(['payNo'=>$payNo,'is_del'=>0,'status'=>[1,2,3,4]])
  586. ->column('dzNo,apply_name');
  587. if(!empty($paydz)){
  588. foreach ($paydz as $item){
  589. $data[]=['type'=>'采购对账单付款','username'=> $item['apply_name'],'orderCode'=>$item['dzNo'],'companyName'=>$cgdinfo['companyName']];
  590. }
  591. }
  592. }
  593. }
  594. $comoOrder = CgdInfo::where(['mainCode'=>$post['orderCode'],'is_comon'=>2,'status'=>1])->field('sequenceNo,companyName')->findOrEmpty();
  595. if(!empty($comoOrder)){
  596. $payNo = Db::name('pay_info')->where(['cgdNo'=>$comoOrder['sequenceNo'],'status'=>1,'is_del'=>0])->value('payNo','');
  597. if($payNo!=''){
  598. $uname = Pay::where('payNo',$payNo)->value('apply_name','');
  599. $data[]=['type'=>'源头采购对账单','username'=> $uname,'orderCode'=>$payNo,'companyName'=>$comoOrder['companyName']];
  600. $hp = Db::name('pay_invoice')->where(['payNo'=>$payNo,'is_del'=>0,'status'=>[1,2,3,4]])
  601. ->column('hpNo,apply_name');
  602. if(!empty($hp)){
  603. foreach ($hp as $item){
  604. $data[]=['type'=>'源头采购对账单回票','username'=> $item['apply_name'],'orderCode'=>$item['hpNo'],'companyName'=>$cgdinfo['companyName']];
  605. }
  606. }
  607. $paydz = Db::name('pay_payment')->where(['payNo'=>$payNo,'is_del'=>0,'status'=>[1,2,3,4]])
  608. ->column('dzNo,apply_name');
  609. if(!empty($paydz)){
  610. foreach ($paydz as $item){
  611. $data[]=['type'=>'源头采购对账单付款','username'=> $item['apply_name'],'orderCode'=>$item['dzNo'],'companyName'=>$cgdinfo['companyName']];
  612. }
  613. }
  614. }
  615. }
  616. }
  617. empty($data)?$this->success("不存在对账订单"):$this->error("存在对账业务数据",1005,$data);
  618. }
  619. }