Sale.php 52 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123
  1. <?php
  2. namespace app\admin\controller;
  3. use app\BaseController;
  4. use think\App;
  5. use think\facade\Db;
  6. class Sale extends BaseController
  7. {
  8. public $post="";
  9. public function __construct(App $app)
  10. {
  11. parent::__construct($app);
  12. $this->post=$this->request->post();
  13. }
  14. public function create(){
  15. $token = isset($this->post['token']) && $this->post['token'] !=="" ?trim($this->post['token']):"";
  16. $orderCode=makeNo("CX");
  17. $good_code = $this->post['good_code'] && $this->post['good_code'] !=="" ? trim($this->post['good_code']) :"";
  18. if($good_code==""){
  19. return error_show(1002,"商品code不能为空");
  20. }
  21. $ct = Db::name('good')->alias('a')->join('good_type b','b.good_code=a.good_code','left')
  22. ->where(['b.type_code'=>$good_code])->find();
  23. if($ct==""){
  24. return error_show(1002,"未找到商品数据");
  25. }
  26. $customer_code= $this->post['customer_code'] && $this->post['customer_code'] !=="" ? trim($this->post['customer_code']) :"";
  27. if($customer_code==""){
  28. return error_show(1002,"客户code不能为空");
  29. }
  30. $customer=Db::name("customer_info")->where(["companyNo"=>$customer_code])->find();
  31. if($customer==false){
  32. return error_show(1004,"未找到客户数据");
  33. }
  34. $supplierNo= $this->post['supplierNo'] && $this->post['supplierNo'] !=="" ? trim($this->post['supplierNo']) :"";
  35. if($supplierNo==""){
  36. return error_show(1002,"参数supplierNo不能为空");
  37. }
  38. $supplier=Db::name("supplier")->where(["code"=>$supplierNo])->find();
  39. if($supplier==false){
  40. return error_show(1004,"未找到平台供应商数据");
  41. }
  42. $apply_id =GetUserInfo($token);
  43. if(empty($apply_id)||$apply_id['code']!=0){
  44. return error_show(1002,"申请人数据不存在");
  45. }
  46. $rm= isset($apply_id["data"]['id']) ? $apply_id["data"]['id'] : "";
  47. $ri= isset($apply_id["data"]['nickname']) ? $apply_id["data"]['nickname'] : "";
  48. // $good_name=isset($this->post['good_name']) && $this->post['good_name'] !=="" ? trim($this->post['good_name']) :"";
  49. //$good_num=isset($this->post['good_num']) && $this->post['good_num'] !=="" ? intval($this->post['good_num']) :"";
  50. // if($good_num==""){
  51. // return error_show(1002,"参数good_num不能为空");
  52. //}
  53. // $origin_price = isset($this->post['origin_price']) && $this->post['origin_price'] !=="" ? intval($this->post['origin_price']) :"";
  54. //$sale_price=isset($this->post['sale_price']) && $this->post['sale_price'] !=="" ? trim($this->post['sale_price']) :"";
  55. // $total_price=isset($this->post['total_price']) && $this->post['total_price'] !=="" ? trim($this->post['total_price']) :"";
  56. $post_fee=isset($this->post['post_fee']) && $this->post['post_fee'] !=="" ? trim($this->post['post_fee']) :"";
  57. $status = isset($this->post['status']) && $this->post['status'] !=="" ? intval($this->post['status']) :"";
  58. // $send_num = isset($this->post['send_num']) && $this->post['send_num'] !=="" ? intval($this->post['send_num']) :"";
  59. // $wsend_num = isset($this->post['wsend_num']) && $this->post['wsend_num'] !=="" ? intval($this->post['wsend_num']) :"";
  60. // $send_status = isset($this->post['send_status']) && $this->post['send_status'] !=="" ? intval($this->post['send_status']) :"";
  61. $va= isset($this->post['order_addr']) && $this->post['order_addr'] !=="" ? $this->post['order_addr']:"";
  62. if($va==""){
  63. return error_show(1002,"参数order_addr不能为空");
  64. }
  65. $vi= isset($this->post['good_stock']) && $this->post['good_stock'] !=="" ? $this->post['good_stock']:"";
  66. if($vi==""){
  67. return error_show(1002,"参数good_stock不能为空");
  68. }
  69. $good_num = intval(array_sum(array_column($vi,"num")));
  70. Db::startTrans();
  71. try {
  72. $data=[
  73. "orderCode"=>$orderCode,
  74. "good_code"=>$good_code,
  75. "customer_code"=>$customer_code,
  76. "good_name"=>$ct['good_name'],
  77. "good_num"=>$good_num,
  78. "apply_id"=>$rm,
  79. "apply_name"=>$ri,
  80. "origin_price"=>$ct['original_price'],
  81. "sale_price"=>$ct['original_price'],
  82. "post_fee"=>$post_fee,
  83. "status"=>$status,
  84. "supplierNo"=>$supplierNo,
  85. "send_num"=>0,
  86. "wsend_num"=>$good_num,
  87. "send_status"=>1,
  88. "is_del"=>0,
  89. "addtime"=>date("Y-m-d H:i:s"),
  90. "updatetime"=>date("Y-m-d H:i:s"),
  91. 'total_price'=>$ct['original_price']*$good_num,
  92. ];
  93. $datainfo = Db::name('sale')->insert($data,true);
  94. $vat=[];
  95. $inn=[];
  96. if($datainfo>0){
  97. foreach ($vi as $ion){
  98. $iten=[];
  99. $iten['orderCode']=$orderCode;
  100. $iten['wsm_code']=$ion['wsm_code'];
  101. $iten['stock_id']="";
  102. $iten['num']=$ion['num'];
  103. $iten['status']=0;
  104. $iten['sale_price']=$ct['original_price'];
  105. $iten['addtime'] =date("Y-m-d H:i:s");
  106. $iten['updatetime'] =date("Y-m-d H:i:s");
  107. $inn[]=$iten;
  108. }
  109. // if($vi['usable_stock']<$iten['num']){
  110. // Db::rollback();
  111. // return error_show(1002,"超出库存数量");
  112. // }
  113. $vp= Db::name('sale_info')->insertAll($inn);
  114. if($vp==""){
  115. Db::rollback();
  116. return error_show(1002,"添加失败");
  117. }
  118. foreach ($va as $value){
  119. $temp=[];
  120. $addrs=[];
  121. if($value['addr_code']!==''&&is_array($value['addr_code'])){
  122. $addrs['provice_code'] = $value['addr_code'][0];
  123. $addrs['city_code'] = $value['addr_code'][1];
  124. $addrs['area_code'] = $value['addr_code'][2];
  125. $addr = json_encode($addrs);
  126. }else{
  127. $addr = isset($value['addr_code'])?$value['addr_code']:'';
  128. }
  129. $temp['orderCode']=$orderCode;
  130. $temp['contactor']=$value['contactor'];
  131. $temp['mobile'] = $value['mobile'];
  132. $temp['addr'] = $value['addr'];
  133. $temp['addr_code']=$addr;
  134. $temp['customer_code'] =$customer_code;
  135. $temp['receipt_quantity']=$value['receipt_quantity'];
  136. $temp['post_fee'] =0;
  137. $temp['is_del'] =0;
  138. $temp['addtime'] =date("Y-m-d H:i:s");
  139. $temp['updatetime'] =date("Y-m-d H:i:s");
  140. $temp['arrive_time']=date("Y-m-d H:i:s");
  141. $vat[]=$temp;
  142. }
  143. $vmp = Db::name('order_addr')->insertAll($vat);
  144. if($vmp){
  145. Db::commit();
  146. return error_show(0,"销售订单创建成功");
  147. }
  148. }
  149. Db::rollback();
  150. return error_show(1002,"销售订单创建失败");
  151. }catch(\Exception $e){
  152. Db::rollback();
  153. return error_show(1005,$e->getMessage());
  154. }
  155. }
  156. public function list(){
  157. $page = isset($this->post['page']) && $this->post['page'] !=="" ? intval($this->post['page']):"1";
  158. $size = isset($this->post['size']) && $this->post['size'] !=="" ? intval($this->post['size']) :"10";
  159. $where[] = ['is_del',"=",0];
  160. $orderCode=isset($this->post['orderCode']) && $this->post['orderCode'] !=="" ? trim($this->post['orderCode']):"";
  161. if($orderCode !==""){
  162. $where[]=['orderCode',"like","%$orderCode%"];
  163. }
  164. $apply_name=isset($this->post['apply_name']) && $this->post['apply_name'] !=="" ? trim($this->post['apply_name'])
  165. :"";
  166. if($apply_name !==""){
  167. $where[]=['apply_name',"like","%$apply_name%"];
  168. }
  169. $good_name=isset($this->post['good_name']) && $this->post['good_name'] !=="" ? trim($this->post['good_name'])
  170. :"";
  171. if($good_name !==""){
  172. $where[]=['good_name',"like","%$good_name%"];
  173. }
  174. $good_code=isset($this->post['good_code']) && $this->post['good_code'] !=="" ? trim($this->post['good_code']):"";
  175. if($good_code !==""){
  176. $where[]=['good_code',"like","%$good_code%"];
  177. }
  178. $customer_code=isset($this->post['customer_code']) && $this->post['customer_code'] !=="" ? trim($this->post['customer_code']):"";
  179. if($customer_code !==""){
  180. $where[]=['customer_code',"like","%$customer_code%"];
  181. }
  182. $supplierNo=isset($this->post['supplierNo']) && $this->post['supplierNo'] !=="" ? trim($this->post['supplierNo']):"";
  183. if($supplierNo !==""){
  184. $where[]=['supplierNo',"like","%$supplierNo%"];
  185. }
  186. $ordertype=isset($this->post['order_type']) && $this->post['order_type'] !=="" ? intval($this->post['order_type'])
  187. :"";
  188. if($ordertype !==""){
  189. $where[]=['order_type',"=",$ordertype];
  190. }
  191. $status=isset($this->post['status']) && $this->post['status'] !=="" ? trim($this->post['status']):"";
  192. if($status !==""){
  193. $where[]=['status',"=",$status];
  194. }
  195. $start = isset($this->post['start']) && $this->post['start'] !=="" ? $this->post['start'] :"";
  196. if($start !=""){
  197. $where[]= ["addtime",'>=',$start];
  198. }
  199. $end = isset($this->post['end']) && $this->post['end'] !=="" ? $this->post['end'] :"";
  200. if($end !=""){
  201. $where[]= ["addtime",'<=',$end];
  202. }
  203. $count = Db::name('sale')->where($where)->count();
  204. $total = ceil($count/$size);
  205. $page = $page >= $total ? $total : $page;
  206. $list= Db::name('sale')->where($where)->order("addtime desc")->page($page,$size)->select();
  207. $data=[];
  208. foreach ($list as $value){
  209. $var = Db::name('good_type')->alias('b')->join("good a","a.good_code=b.good_code","left")
  210. ->where(['b.type_code'=>$value['good_code'],'a.is_del'=>0])->field('a.good_code,a.good_name,a.cat_id')->find();;
  211. $value['can']= isset($var['cat_id']) && $var['cat_id'] !=0 ? made($var['cat_id']):[];
  212. $value['supplierName']='';
  213. if($value['supplierNo']!=""){
  214. $supplier=Db::name("supplier")->where(["code"=>$value['supplierNo']])->find();
  215. $value['supplierName']=isset($supplier['name']) ? $supplier['name']:"";
  216. }
  217. $value['customerName']='';
  218. if($value['customer_code']!=""){
  219. $supplier=Db::name("customer_info")->where(["companyNo"=>$value['customer_code']])->find();
  220. $value['customerName']=isset($supplier['companyName']) ? $supplier['companyName']:"";
  221. }
  222. $data[]=$value;
  223. }
  224. return app_show(0,"获取成功",['list'=>$data,'count'=>$count]);
  225. }
  226. public function edit(){
  227. $token = isset($this->post['token']) && $this->post['token'] !=="" ? trim($this->post['token']) :"";
  228. $id = isset($this->post['id']) && $this->post['id'] !=="" ? trim($this->post['id']) :"";
  229. if($id==""){
  230. return error_show(1002,"参数id不能为空");
  231. }
  232. $etid = Db::name("sale")->where(["id"=>$id,"is_del"=>0])->find();
  233. if(empty($etid)){
  234. return error_show(1002,"未找到数据");
  235. }
  236. // $orderCode=isset($this->post['orderCode']) && $this->post['orderCode'] !=="" ? trim($this->post['orderCode']) :"";
  237. // if($orderCode==""){
  238. // return error_show(1002,"销售单code不能为空");
  239. // }
  240. $good_code = isset($this->post['good_code']) && $this->post['good_code'] !=="" ? trim($this->post['good_code']) :"";
  241. if($good_code==""){
  242. return error_show(1002,"商品code不能为空");
  243. }
  244. $customer_code=isset($this->post['customer_code']) && $this->post['customer_code'] !=="" ? trim($this->post['customer_code']):"";
  245. if($customer_code==""){
  246. return error_show(1002,"客户code不能为空");
  247. }
  248. $apply_id =GetUserInfo($token);
  249. if(empty($apply_id)||$apply_id['code']!=0){
  250. return error_show(1002,"申请人数据不存在");
  251. }
  252. $rm= isset($apply_id["data"]['id']) ? $apply_id["data"]['id'] : "";
  253. $ri= isset($apply_id["data"]['nickname']) ? $apply_id["data"]['nickname'] : "";
  254. $good_name=isset($this->post['good_name']) && $this->post['good_name'] !=="" ? trim($this->post['good_name']) :"";
  255. $good_num=isset($this->post['good_num']) && $this->post['good_num'] !=="" ? intval($this->post['good_num']) :"";
  256. $origin_price = isset($this->post['origin_price']) && $this->post['origin_price'] !=="" ? intval($this->post['origin_price']) :"";
  257. $sale_price=isset($this->post['sale_price']) && $this->post['sale_price'] !=="" ? trim($this->post['sale_price']) :"";
  258. $total_price=isset($this->post['total_price']) && $this->post['total_price'] !=="" ? trim($this->post['total_price']) :"";
  259. $post_fee=isset($this->post['post_fee']) && $this->post['post_fee'] !=="" ? trim($this->post['post_fee']) :"";
  260. $status = isset($this->post['status']) && $this->post['status'] !=="" ? intval($this->post['status']) :"";
  261. $vr= isset($this->post['order_addr']) && $this->post['order_addr'] !=="" ? $this->post['order_addr']:"";
  262. if($vr=="" ){
  263. return error_show(1002,"参数order_addr不能为空");
  264. }
  265. $vi= isset($this->post['good_stock']) && $this->post['good_stock'] !=="" ? $this->post['good_stock']:"";
  266. if($vi==""){
  267. return error_show(1002,"参数good_stock不能为空");
  268. }
  269. Db::startTrans();
  270. try {
  271. $datn=[
  272. "id"=>$id,
  273. "good_code"=>$good_code,
  274. "customer_code"=>$customer_code,
  275. "good_name"=>$good_name,
  276. "good_num"=>$good_num,
  277. "apply_id"=>$rm,
  278. "apply_name"=>$ri,
  279. "origin_price"=>$origin_price,
  280. "sale_price"=>$sale_price,
  281. "total_price"=>$total_price,
  282. "post_fee"=>$post_fee,
  283. "status"=>$status,
  284. "is_del"=>0,
  285. "updatetime"=>date("Y-m-d H:i:s")
  286. ];
  287. $datninfo = Db::name('sale')->where(['id'=>$id,'is_del'=>0])->save($datn);
  288. if($datninfo>0){
  289. foreach ($vi as $ion) {
  290. $iten = [];
  291. isset($ion['id']) && $ion['id'] !== "" ? $iten['id'] = $ion['id'] : '';
  292. $iten['orderCode'] = $etid['orderCode'];
  293. $iten['wsm_code'] = $ion['wsm_code'];
  294. $iten['stock_id'] =0;
  295. $iten['num'] = $ion['num'];
  296. $iten['status'] = 1;
  297. $iten['sale_price'] = $ion['sale_price'];
  298. isset($ion['id']) && $ion['id'] !== "" ? '' : $iten['addtime'] = date("Y-m-d H:i:s");
  299. $iten['updatetime'] = date("Y-m-d H:i:s");
  300. //$inn[]=$iten;
  301. $vp = Db::name('sale_info')->save($iten);
  302. if ($vp == false) {
  303. Db::rollback();
  304. return error_show(1002, "更新失败");
  305. }
  306. }
  307. foreach ($vr as $value) {
  308. $temp = [];
  309. isset($value['id']) && $value['id'] !== "" ? $temp['id'] = $value['id'] : '';
  310. $temp['orderCode'] = $etid['orderCode'];
  311. $temp['contactor'] = $value['contactor'];
  312. $temp['mobile'] = $value['mobile'];
  313. $temp['addr'] = $value['addr'];
  314. $temp['addr_code'] = $value['addr_code'];
  315. $temp['customer_code'] = $customer_code;
  316. $temp['receipt_quantity'] = $value['receipt_quantity'];
  317. $temp['post_fee'] = 0;
  318. $temp['is_del'] = $value['is_del'];
  319. isset($value['id']) && $value['id'] !== "" ? '' : $temp['addtime'] = date("Y-m-d H:i:s");
  320. $temp['updatetime'] = date("Y-m-d H:i:s");
  321. $temp['arrive_time'] = date("Y-m-d H:i:s");
  322. $dat = Db::name('order_addr')->save($temp);
  323. if ($dat == false) {
  324. Db::rollback();
  325. return error_show(1002, "更新失败");
  326. }
  327. }
  328. Db::commit();
  329. return error_show(0,"更新成功");
  330. }
  331. Db::rollback();
  332. return error_show(1002,"更新失败");
  333. }catch(\Exception $e){
  334. Db::rollback();
  335. return error_show(1005,$e->getMessage());
  336. }
  337. }
  338. public function info(){
  339. $id = isset($this->post['id']) && $this->post['id'] !=="" ? intval($this->post['id']):"";
  340. if($id==""){
  341. return error_show(1002,"参数id不能为空");
  342. }
  343. //->field('good_code,good_name,good_num,customer_code,orderCode')
  344. $einfo = Db::name('sale')->where(['id'=>$id,'is_del'=>0])->find();
  345. if(empty($einfo)){
  346. return error_show(1002,"未找到销售订单数据");
  347. }
  348. $info = Db::name('sale_diff')->where(['orderCode'=>$einfo['orderCode']])->select();
  349. $de = Db::name('order_out')->where(['orderCode'=>$einfo['orderCode']])->select();
  350. $dm = Db::name('order_return')->where(['orderCode'=>$einfo['orderCode']])->select();
  351. $dk= Db::name('order_back')->where(['orderCode'=>$einfo['orderCode']])->select();
  352. $sa= Db::name('sale_return')->where(['orderCode'=>$einfo['orderCode']])->select();
  353. $goon = Db::name('good')->alias('b')->join("good_type a","a.good_code=b.good_code","left")
  354. ->where(['a.type_code'=> $einfo['good_code']])->find();
  355. if(empty($goon)){
  356. return error_show(1003,"未找到商品数据");
  357. }
  358. $int= isset($goon['cat_id']) && $goon['cat_id'] !=0 ? made($goon['cat_id']):[];
  359. $in= Db::name('customer_info')->where(['companyNo'=>$einfo['customer_code']])->field('companyName')->find();
  360. // ->field('addr,contactor,mobile,receipt_quantity,arrive_time')
  361. $einfo['supplierName']='';
  362. if($einfo['supplierNo']!=""){
  363. $supplier=Db::name("supplier")->where(["code"=>$einfo['supplierNo']])->find();
  364. $einfo['supplierName']=isset($supplier['name']) ? $supplier['name']:"";
  365. }
  366. $fo = Db::name('order_addr')->where(['orderCode'=>$einfo['orderCode'],'is_del'=>0])->select();
  367. $bum = Db::name('order_out')->where(['orderCode'=>$einfo['orderCode']])->select();
  368. $ins=[];
  369. if(!empty($bum)){
  370. foreach ($bum as $stn){
  371. $so = Db::name('order_addr')->where(['id'=>$stn['addrid']])->find();
  372. $addr = GetAddr($so['addr_code']);
  373. $stn['addr_info']=$addr;
  374. $stn['add_code']=json_decode($so['addr_code'],true);
  375. $stn['addr']=$so['addr'];
  376. $stn['contact']=$so['contactor'];
  377. $stn['mobile']=$so['mobile'];
  378. $wsmcode = Db::name("warehouse_info")->alias("a")->leftJoin("supplier b", "a.supplierNo=b.code")
  379. ->where(["a.wsm_code" => $stn['wsm_code']])->field("a.name as wsm_name,b.name,b.code")->find();
  380. $stn['wsm_name'] = isset($wsmcode['wsm_name']) ? $wsmcode['wsm_name'] : "";
  381. $stn['wsm_supplier'] = isset($wsmcode['name']) ? $wsmcode['name'] : "";
  382. $stn['wsm_supplierNo'] = isset($wsmcode['code']) ? $wsmcode['code'] : "";
  383. $ins[]=$stn;
  384. }
  385. }
  386. $addrs=[];
  387. if(!empty($fo)){
  388. foreach ($fo as $value){
  389. $value['addr_info']="";
  390. $value['send_num']=0;
  391. if($value['addr_code']!=""){
  392. $addr=GetAddr($value['addr_code']);
  393. $value['addr_info'] = $addr;
  394. $value['addr_code'] = json_decode($value['addr_code'],true);
  395. $send = Db::name("order_out")->where(['addrid'=>$value['id'],'orderCode' => $einfo['orderCode']])->sum("send_num");
  396. $value['send_num'] = $send ?? 0;
  397. }
  398. $value['wsend_num']=$value['receipt_quantity']-$value['send_num'];
  399. $addrs[]=$value;
  400. }
  401. }
  402. //->field('num,sale_price,wsm_code,stock_id')
  403. $st = Db::name('sale_info')->where(['orderCode'=>$einfo['orderCode']])->select();
  404. $data=[];
  405. if(!empty($fo)) {
  406. foreach ($st as $value) {
  407. $value['wsm_name'] = "";
  408. $value['wsm_supplier'] = "";
  409. $value['wsm_supplierNo'] = "";
  410. $value['usable_stock'] = 0;
  411. $value['send_num'] = 0;
  412. if ($value['wsm_code'] != "") {
  413. $wsmcode = Db::name("warehouse_info")->alias("a")->leftJoin("supplier b", "a.supplierNo=b.code")
  414. ->where(["a.wsm_code" => $value['wsm_code']])->field("a.name as wsm_name,b.name,b.code")->find();
  415. $value['wsm_name'] = isset($wsmcode['wsm_name']) ? $wsmcode['wsm_name'] : "";
  416. $value['wsm_supplier'] = isset($wsmcode['name']) ? $wsmcode['name'] : "";
  417. $value['wsm_supplierNo'] = isset($wsmcode['code']) ? $wsmcode['code'] : "";
  418. $dn = Db::name('good_stock')->where(['wsm_code' => $value['wsm_code'], 'good_type_code' => $einfo['good_code']])->find();
  419. $value['usable_stock'] = isset($dn['usable_stock']) ? $dn['usable_stock'] : "0";
  420. $send = Db::name("order_out")->where(["wsm_code" => $value['wsm_code'], 'orderCode' => $einfo['orderCode']])->sum("send_num");
  421. $value['send_num'] = $send ?? 0;
  422. }
  423. $value['wsend_num'] = $value['num'] - $value['send_num'];
  424. $data[] = $value;
  425. }
  426. }
  427. $einfo['info']=$data;
  428. $einfo['companyName']=isset($in['companyName']) ? $in['companyName']:"";
  429. $einfo['addrs']=$addrs;
  430. $einfo['bum']=$ins;
  431. $einfo['can']=$int;
  432. $einfo['item']=$info;
  433. $einfo['empty']=$de;
  434. $einfo['str']=$dm;
  435. $einfo['var']=$dk;
  436. $einfo['sainfo']=$sa;
  437. if(empty($einfo)){
  438. return error_show(1002,"未找到销售订单数据");
  439. }else{
  440. return app_show(0,"获取成功",$einfo);
  441. }
  442. }
  443. public function del(){
  444. $id = isset($this->post['id']) && $this->post['id'] !=="" ? intval($this->post['id']) :"";
  445. if($id===""){
  446. return error_show(1002,"参数id不能为空");
  447. }
  448. $ed = Db::name('sale')->where(['id'=>$id,'is_del'=>0])->find();
  449. if(empty($ed)){
  450. return error_show(1002,"未找到销售订单数据");
  451. }
  452. $str =Db::name('sale')->update(['id'=>$id,'is_del'=>1,'updatetime'=>date("Y-m-d H:i:s")]);
  453. if($str){
  454. return error_show(0,"删除成功");
  455. }else{
  456. return error_show(1002,"删除失败");
  457. }
  458. }
  459. public function status(){
  460. $token= isset($this->post['token']) && $this->post['token'] !=="" ? trim($this->post['token']) :"";
  461. $id = isset($this->post['id']) && $this->post['id'] !=="" ? intval($this->post['id']) :"";
  462. if($id==""){
  463. return error_show(1002,"参数id不能为空");
  464. }
  465. $status = isset($this->post['status']) && $this->post['status'] !=="" ? intval($this->post['status']) :"";
  466. if($status==""){
  467. return error_show(1002,"订单状态不能为空");
  468. }
  469. $dio = Db::name('sale')->where(['id'=>$id,'is_del'=>0])->find();
  470. if(empty($dio)){
  471. return error_show(1002,"销售单信息未找到");
  472. }
  473. if($status==1 && $dio['order_type']==2) {
  474. $zxinfo = Db::name("consult")->where(["zxNo" => $dio['zxNo'], "is_del" => 0])->find();
  475. if ($zxinfo == false) {
  476. return error_show(1004, "未找到咨询单数据");
  477. }
  478. $gold['price']=0;
  479. if ($zxinfo['zx_type'] == 2) {
  480. if ($zxinfo['metals'] == "") {
  481. return error_show(1004, "未找到咨询单贵金属类型数据");
  482. }
  483. $metals = $zxinfo['metals'] == '18K' ? 1 : ($zxinfo['metals'] == '24K' ? 2 : 3);
  484. $gold = Db::name("gold_price")->where(["type" => $metals])->order("addtime desc")->find();
  485. if (empty($gold)) {
  486. return error_show(1004, "未找到咨询单贵金属类型数据");
  487. }
  488. $dio['gold_price']=$gold['price'];
  489. }
  490. $wsm = Db::name("warehouse_info")->where(["supplierNo" => $zxinfo['gysNo'], "wsm_type" => 2])->find();
  491. if (empty($wsm)) {
  492. return error_show(1002, "供应商仓库未找到");
  493. }
  494. }
  495. $apply_id =GetUserInfo($token);
  496. if(empty($apply_id)||$apply_id['code']!=0){
  497. return error_show(1002,"申请人数据不存在");
  498. }
  499. $rm= isset($apply_id["data"]['id']) ? $apply_id["data"]['id'] : "";
  500. $ri= isset($apply_id["data"]['nickname']) ? $apply_id["data"]['nickname'] : "";
  501. Db::startTrans();
  502. try {
  503. $dio['status']=$status;
  504. $dio['updatetime']=date("Y-m-d H:i:s");
  505. $st = Db::name('sale')->save($dio);
  506. if($st) {
  507. if($status==3){
  508. $dn = Db::name('sale_info')->where(['orderCode' => $st['orderCode']])->select();
  509. foreach ($dn as $value) {
  510. $dm = Db::name('good_stock')->where(['wsm_code' => $value['wsm_code'], 'good_type_code' => $st['good_code']])->find();
  511. if($dm==""){
  512. Db::rollback();
  513. return error_show(1003,"未找到商品数据");
  514. }
  515. if($value['num']>$dm['usable_stock']){
  516. Db::rollback();
  517. return error_show(1002,"超出库存数量");
  518. }
  519. $dm['usable_stock']-=$value['num'];
  520. $dm['wait_out_stock']+=$value['num'];
  521. $send =Db::name("order_out")->where(["wsm_code"=>$value['wsm_code']])->sum("send_num");
  522. $value['send_num'] = $send??0;
  523. $value['wsend_num']=$value['num']-$value['send_num'];
  524. $Db = Db::name('good_stock')->update($dm);
  525. $Db['updatetime']= date('Y-m-d H:i:s');
  526. if($Db==false){
  527. Db::rollback();
  528. return error_show(1002,"状态更新失败");
  529. }
  530. }
  531. }
  532. if($status==1 && $dio['order_type']==2){
  533. $cgd =makeNo("CG");
  534. $clll=[
  535. "cgdNo"=>$cgd,
  536. "bkcode"=>$dio['orderCode'],
  537. "wsm_code"=>$wsm['wsm_code'],
  538. "cgder_id"=>"0",
  539. "cgder"=>$zxinfo['saler'],
  540. "good_code"=>"GD-".$zxinfo['cpNo'],
  541. "good_name"=>$zxinfo['cpName'],
  542. "good_type_code"=>$zxinfo['cpNo'],
  543. "good_num"=>$dio['good_num'],
  544. "good_price"=>$zxinfo['total_fee'],
  545. "total_fee"=>round($zxinfo['total_fee']*$dio['good_num'],2),
  546. "pakge_fee"=>$zxinfo['package_fee'],
  547. "cert_fee"=>$zxinfo['cert_fee'],
  548. "open_fee"=>$zxinfo['open_fee'],
  549. "delivery_fee"=>$zxinfo['delivery_fee'],
  550. "mark_fee"=>$zxinfo['mark_fee'],
  551. "teach_fee"=>$zxinfo['cost_fee'],
  552. "demo_fee"=>$zxinfo['demo_fee'],
  553. "nake_fee"=>$zxinfo['bare_fee'],
  554. "weight"=>isset($zxinfo['weight'])?$zxinfo['weight']:0,
  555. "supplierNo"=>$zxinfo['gysNo'],
  556. "supplier_name"=>$zxinfo['gysname'],
  557. "gold_price"=>$gold['price'],
  558. "send_num"=>0,
  559. "wsend_num"=>$dio['good_num'],
  560. "remark"=>'',
  561. "lasttime"=>date("Y-m-d H:i:s"),
  562. "is_del"=>0,
  563. "status"=>$dio['send_type']==1?1:0,
  564. "order_type"=>2,
  565. "addtime"=>date("Y-m-d H:i:s"),
  566. "updatetime"=>date("Y-m-d H:i:s")
  567. ];
  568. $cgin = Db::name("purchease_order")->insert($clll);
  569. // var_dump(Db::name("purchease_order")->getLastSql(),$clll);
  570. if($cgin==false){
  571. Db::rollback();
  572. return error_show(1002,"咨询采购单创建商品失败");
  573. }
  574. if($dio['send_type']==1){
  575. $addr = Db::name('order_addr')->where(["orderCode"=>$dio['orderCode'],'is_del'=>0])->select();
  576. foreach ($addr as $value){
  577. $outCode=makeNo("CK");
  578. $data=[
  579. "wsm_code"=>$wsm['wsm_code'],
  580. "orderCode"=>$dio['orderCode'],
  581. "outCode"=>$outCode,
  582. "order_type"=>$dio['order_type'],
  583. "apply_id"=>$rm,
  584. "apply_name"=>$ri,
  585. "addrid"=>$value['id'],
  586. "post_name"=>'',
  587. "post_code"=>'',
  588. "post_fee"=>'',
  589. "sendtime"=>date("Y-m-d H:i:s"),
  590. "send_num"=>$value['receipt_quantity'],
  591. "check_num"=>0,
  592. "error_num"=>0,
  593. "status"=>0,
  594. "addtime"=>date("Y-m-d H:i:s"),
  595. "updatetime"=>date("Y-m-d H:i:s")
  596. ];
  597. $datainfo = Db::name('order_out')->insert($data);
  598. if(!$datainfo){
  599. Db::rollback();
  600. return error_show(1003,"创建失败");
  601. }
  602. }
  603. }
  604. }
  605. }
  606. Db::commit();
  607. return error_show(0,"订单状态更新成功");
  608. }catch (\Exception $e) {
  609. Db::rollback();
  610. return error_show(1005, $e->getMessage());
  611. }
  612. }
  613. public function fee(){
  614. $id = isset($this->post['id']) && $this->post['id'] !=="" ? trim($this->post['id']) :"";
  615. if($id==""){
  616. return error_show(1002,"参数id不能为空");
  617. }
  618. $etid = Db::name("sale")->where(["id"=>$id,"is_del"=>0])->find();
  619. if(empty($etid)){
  620. return error_show(1002,"未找到数据");
  621. }
  622. $vr= isset($this->post['order_addr']) && $this->post['order_addr'] !=="" ? $this->post['order_addr']:"";
  623. if($vr==""){
  624. return error_show(1002,"参数order_addr不能为空");
  625. }
  626. Db::startTrans();
  627. try {
  628. $data=[
  629. "id"=>$id,
  630. "status"=>2,
  631. "is_del"=>0,
  632. "updatetime"=>date("Y-m-d H:i:s")
  633. ];
  634. $datainfo = Db::name('sale')->where(['id'=>$id,'is_del'=>0])->save($data);
  635. if($datainfo){
  636. foreach ($vr as $value){
  637. $tm=[];
  638. $tm['id'] = $value['id'];
  639. $tm['orderCode']=$etid['orderCode'];
  640. $tm['post_fee']=$value['post_fee'];
  641. $tm['updatetime']=date("Y-m-d H:i:s");
  642. $dn = Db::name('order_addr')->save($tm);
  643. if($dn==false){
  644. Db::rollback();
  645. return error_show(1002,"更新失败");
  646. }
  647. }
  648. Db::commit();
  649. return error_show(0,"更新成功");
  650. }
  651. Db::rollback();
  652. return error_show(1003,"更新失败");
  653. }catch(\Exception $e){
  654. Db::rollback();
  655. return error_show(1005,$e->getMessage());
  656. }
  657. }
  658. public function out(){
  659. $token= isset($this->post['token']) && $this->post['token'] !=="" ? trim($this->post['token']) :"";
  660. $outCode=makeNo("CK");
  661. $orderCode = isset($this->post['orderCode']) && $this->post['orderCode'] !=="" ? trim($this->post['orderCode']) :"";
  662. if($orderCode==""){
  663. return error_show(1002,"参数orderCoder不能为空");
  664. }
  665. $der = Db::name('sale')->where(['orderCode'=>$orderCode])->find();
  666. if($der==""){
  667. return error_show(1002,"未找到出库订单单号");
  668. }
  669. $wsm_code = isset($this->post['wsm_code']) && $this->post['wsm_code'] !=="" ? trim($this->post['wsm_code']) :"";
  670. if($wsm_code==""){
  671. return error_show(1002,"参数wsm_code不能为空");
  672. }
  673. $wsm= Db::name('sale_info')->where(['wsm_code'=>$wsm_code,'orderCode'=>$der['orderCode']])->find();
  674. if($wsm==""){
  675. return error_show(1002,"未找到仓库编码");
  676. }
  677. $post_name= isset($this->post['post_name']) && $this->post['post_name'] !=="" ? trim($this->post['post_name']) :"";
  678. if($post_name==""){
  679. return error_show(1002,"物流公司不能为空");
  680. }
  681. $post_code = isset($this->post['post_code']) && $this->post['post_code'] !=="" ? trim($this->post['post_code']) :"";
  682. if($post_code==""){
  683. return error_show(1002,"物流单号不能为空");
  684. }
  685. $post_fee = isset($this->post['post_fee']) && $this->post['post_fee'] !=="" ? intval($this->post['post_fee']) :"";
  686. if($post_fee==""){
  687. return error_show(1002,"物流费不能为空");
  688. }
  689. $send_num = isset($this->post['send_num']) && $this->post['send_num'] !=="" ? $this->post['send_num'] :"";
  690. if($send_num==""){
  691. return error_show(1002,"发货数量不能为空");
  692. }
  693. if($send_num>$wsm['num']){
  694. return error_show(1002,"超出可发货数量");
  695. }
  696. $apply_id =GetUserInfo($token);
  697. if(empty($apply_id)||$apply_id['code']!=0){
  698. return error_show(1002,"申请人数据不存在");
  699. }
  700. $rm= isset($apply_id["data"]['id']) ? $apply_id["data"]['id'] : "";
  701. $ri= isset($apply_id["data"]['nickname']) ? $apply_id["data"]['nickname'] : "";
  702. $addrid = isset($this->post['addrid']) && $this->post['addrid'] !=="" ? intval($this->post['addrid']) :"";
  703. $dr = Db::name('order_addr')->where(['id'=>$addrid,'is_del'=>0])->find();
  704. if(empty($dr)){
  705. return error_show(1003,"收货人信息未找到");
  706. }
  707. if($dr['orderCode']!== $orderCode){
  708. return error_show(1002,"订单code不存在");
  709. }
  710. $sendtime = isset($this->post['sendtime']) && $this->post['sendtime'] !=="" ? $this->post['sendtime']:date("Y-m-d H:i:s");
  711. // $check_num = isset($this->post['check_num']) && $this->post['check_num'] !=="" ? $this->post['check_num'] :"";
  712. // $error_num = isset($this->post['error_num']) && $this->post['error_num'] !=="" ? $this->post['error_num'] :"";
  713. $status = isset($this->post['status']) && $this->post['status'] !=="" ? $this->post['status'] :"1";
  714. //$order_type = isset($this->post['order_type']) && $this->post['order_type'] !=="" ? $this->post['order_type'] :"1";
  715. //$dn=Db::name('sale_info')->where(['wsm_code'=>$outCode])->find();
  716. Db::startTrans();
  717. try {
  718. $data=[
  719. "wsm_code"=>$wsm_code,
  720. "orderCode"=>$orderCode,
  721. "outCode"=>$outCode,
  722. "order_type"=>$der['order_type'],
  723. "apply_id"=>$rm,
  724. "apply_name"=>$ri,
  725. "addrid"=>$dr['id'],
  726. "post_name"=>$post_name,
  727. "post_code"=>$post_code,
  728. "post_fee"=>$post_fee,
  729. "sendtime"=>$sendtime,
  730. "send_num"=>$send_num,
  731. "check_num"=>0,
  732. "error_num"=>0,
  733. "status"=>$status,
  734. "addtime"=>date("Y-m-d H:i:s"),
  735. "updatetime"=>date("Y-m-d H:i:s")
  736. ];
  737. $datainfo = Db::name('order_out')->insert($data);
  738. if($datainfo) {
  739. if ($status==1) {
  740. $var = Db::name('sale_info')->where(['orderCode' =>$orderCode,'wsm_code'=>$wsm_code])->find();
  741. //var_dump(Db::name('sale_info')->getLastSql());
  742. if($var==""){
  743. return error_show(1002,"未找到数据");
  744. }
  745. $send =Db::name("order_out")->where(["wsm_code"=>$wsm_code,'orderCode'=>$orderCode])->sum("send_num");
  746. $der['send_num']+= $send;
  747. $der['wsend_num']-=$send ;//($der['send_num'])?$der['wsend_num'] =="" ? $der['send']
  748. $der['send_status']=$der['send_num']==0 ? 1 :$der['wsend_num']==0?3:2;
  749. $der['status']=$der['send_num']==0 ? 3 :$der['wsend_num']==0?5:4;
  750. $der['updatetime'] = date("Y-m-d H:i:s");
  751. $si = Db::name('sale')->save($der);
  752. if($si==false){
  753. Db::rollback();
  754. return error_show(1003,"更新失败");
  755. }
  756. $str = Db::name('good_stock')->where(['wsm_code' => $var['wsm_code'],'good_type_code'=>$der['good_code']])->find();
  757. if ($str == false) {
  758. Db::rollback();
  759. return error_show(1002, "商品数据未找到");
  760. }
  761. if ($var['num'] > $str['wait_out_stock']) {
  762. Db::rollback();
  763. return error_show(1002, "超出库存数量");
  764. }
  765. $str['wait_out_stock'] -= $var['num'];
  766. $str['intra_stock'] += $var['num'];
  767. $str['updatetime'] = date("Y-m-d H:i:s");
  768. $stre = Db::name('good_stock')->save($str);
  769. if ($stre == false) {
  770. Db::rollback();
  771. return error_show(1002, "状态更新失败");
  772. }
  773. }
  774. Db::commit();
  775. return error_show(0,"创建成功");
  776. }else{
  777. Db::rollback();
  778. return error_show(1003,"创建失败");
  779. }
  780. }catch (\Exception $e) {
  781. Db::rollback();
  782. return error_show(1005, $e->getMessage());
  783. }
  784. }
  785. public function customer(){
  786. $outCode= isset($this->post['outCode']) && $this->post['outCode'] !=="" ? trim($this->post['outCode']) :"";
  787. if(empty($outCode)){
  788. return error_show(1002,"销售订单编号不能为空");
  789. }
  790. $codeinfo = Db::name('order_out')->where(['outCode'=>$outCode])->find();
  791. if($codeinfo==""){
  792. return error_show(1003,"未找到订单数据");
  793. }
  794. // $orderCode = isset($this->post['orderCode']) && $this->post['orderCode'] !=="" ? trim($this->post['orderCode']) :"";
  795. // if($orderCode==""){
  796. // return error_show(1002,"参数orderCoder不能为空");
  797. // }
  798. $dr = Db::name('sale')->where(['orderCode'=>$codeinfo['orderCode']])->find();
  799. if($dr==""){
  800. return error_show(1002,"未找到销售订单");
  801. }
  802. $status = isset($this->post['status']) && $this->post['status'] !== "" ? $this->post['status'] :"";
  803. if($status==""){
  804. return error_show(10002,"状态不能为空");
  805. }
  806. Db::startTrans();
  807. try {
  808. $codeinfo['status']=$status;
  809. $codeinfo['updatetime']=date("Y-m-d H:i:s");
  810. $cust = Db::name('order_out')->save($codeinfo);
  811. if($cust){
  812. if($status==2){
  813. $ct =Db::name('sale_info')->where(['orderCode' => $dr['orderCode'],'wsm_code'=>$codeinfo['wsm_code']])->find();
  814. if($ct==false){
  815. return error_show(1002,"未找到数据");
  816. }
  817. $var = Db::name('good_stock')->where(['wsm_code'=>$codeinfo['wsm_code'],'good_type_code'=>$dr['good_code']])->find();
  818. if($var==false){
  819. Db::rollback();
  820. return error_show(1002,"未找到商品数据");
  821. }
  822. if($ct['num']>$var['intra_stock']){
  823. Db::rollback();
  824. return error_show(1003,"超出库存数量");
  825. }
  826. $var['intra_stock']-=$codeinfo['send_num'];
  827. $var['updatetime']=date("Y-m-d H:i:s");
  828. $stre = Db::name('good_stock')->save($var);
  829. if ($stre == false) {
  830. Db::rollback();
  831. return error_show(1002, "状态更新失败");
  832. }
  833. }
  834. Db::commit();
  835. return error_show(0,"出库订单更新成功");
  836. }else{
  837. Db::rollback();
  838. return error_show(1003,"出库订单更新失败");
  839. }
  840. }catch (\Exception $e) {
  841. Db::rollback();
  842. return error_show(1005, $e->getMessage());
  843. }
  844. }
  845. public function difflist(){
  846. $page = isset($this->post['page']) && $this->post['page'] !==""? intval($this->post['page']):"1";
  847. $size = isset($this->post['size']) && $this->post['size'] !==""? intval($this->post['size']):"10";
  848. $where = [];
  849. $cgdNo = isset($this->post['orderCode']) && $this->post['orderCode']!="" ? trim($this->post['orderCode']):"";
  850. if($cgdNo!=""){
  851. $where[]=['a.orderCode',"like", "%$cgdNo%"];
  852. }
  853. $diffNo = isset($this->post['diffCode']) && $this->post['diffCode']!="" ? trim($this->post['diffCode']):"";
  854. if($diffNo!=""){
  855. $where[]=['a.diffCode',"like", "%$diffNo%"];
  856. }
  857. $status = isset($this->post['status']) && $this->post['status'] !==""? intval($this->post['status']):"";
  858. if($status!==""){
  859. $where[]=['a.status',"=",$status];
  860. }
  861. $start= isset($this->post['start']) && $this->post['start'] !== "" ? $this->post['start']:"";
  862. if ($start !="") {
  863. $where[]= ["a.addtime",'>=',$start];
  864. }
  865. $end = isset($this->post['end']) && $this->post['end'] !== "" ? $this->post['end'] :"";
  866. if($end !=""){
  867. $where[]= ["a.addtime",'<=',$end];
  868. }
  869. // $apply_name = isset($this->post['apply_name']) && $this->post['apply_name'] !==""? intval($this->post['apply_name']):"";
  870. // if($apply_name!==""){
  871. // $where[]=['a.apply_name',"like","%$apply_name%"];
  872. // }
  873. $supplierNo =isset($this->post['supplierNo']) &&$this->post['supplierNo'] !=="" ? trim($this->post['supplierNo']):"";
  874. if($supplierNo!=""){
  875. $supplier = Db::name("supplier")->where([['code',"like","%$supplierNo%"]])->column('code');
  876. // if(empty($supplier)){
  877. // return error_show(1004,"未找到供应商信息");
  878. // }
  879. $wsmcode = Db::name("sale")->where([
  880. "is_del"=>0,"supplierNo"=>$supplier])->column("orderCode");
  881. $where[]=['orderCode',"in",$wsmcode];
  882. }
  883. $count = Db::name('sale_diff')->alias('a')->join("good b","b.good_code=a.good_code","left")
  884. ->where($where)->count();
  885. $total = ceil($count/$size);
  886. $page = $page >= $total ? $total : $page;
  887. $list = Db::name('sale_diff')->alias('a')->join("good b","b.good_code=a.good_kode","left")
  888. ->where($where)->page($page,$size)->field("a.*,b.cat_id")->order("a.addtime desc")->select();
  889. $data=[];
  890. foreach ($list as $value){
  891. $value['can']= isset($value['cat_id']) && $value['cat_id'] !=0 ? made($value['cat_id']):[];
  892. $wsm = Db::name("sale")->alias("a")->Join("supplier b","a.supplierNo=b.code","left")->where
  893. (['a.orderCode'=>$value['orderCode'],"a.is_del"=>0])->field("b.code,b.name")->find();
  894. $value['code']=isset($wsm['code'])? $wsm['code']:"";
  895. $value['name']=isset($wsm['name']) ? $wsm['name']:"";
  896. $data[]=$value;
  897. }
  898. return app_show(0,"获取成功",['list'=>$data,'count'=>$count]);
  899. }
  900. /**
  901. * @return \think\response\Json|void
  902. * @throws \think\db\exception\DataNotFoundException
  903. * @throws \think\db\exception\DbException
  904. * @throws \think\db\exception\ModelNotFoundException
  905. */
  906. public function diffcheck(){
  907. $id = isset($this->post['id']) && $this->post['id'] !==""? intval($this->post['id']):"";
  908. if($id===""){
  909. return error_show(1004,"参数id不能为空");
  910. }
  911. $info = Db::name("sale_diff")->where(["id"=>$id])->find();
  912. if(empty($info)){
  913. return error_show(1004,"订单数据未找到");
  914. }
  915. $is_act = isset($this->post['is_act']) && $this->post['is_act'] !==""? intval($this->post['is_act']):"";
  916. if($is_act===''){
  917. return error_show(1004,"参数is_act不能为空");
  918. }
  919. $customer_remark = isset($this->post['customer_remark']) && $this->post['customer_remark'] !==""? trim($this->post['customer_remark']):"";
  920. if($customer_remark===''){
  921. return error_show(1004,"参数customer_remark不能为空");
  922. }
  923. $status = isset($this->post['status']) && $this->post['status'] !==""? intval($this->post['status']):"2";
  924. $remark = isset($this->post['remark']) && $this->post['remark'] !==""? trim($this->post['remark']):"";
  925. $info['is_act'] =$is_act;
  926. $info['customer_remark'] =$customer_remark;
  927. $info['status'] =$status;
  928. $info['remark'] =$remark;
  929. $info['updatetime'] =date("Y-m-d H:i:s");
  930. $up = Db::name("sale_diff")->save($info);
  931. if($up){
  932. return app_show(0,"更新成功");
  933. }else{
  934. return error_show(1003,"更新失败");
  935. }
  936. }
  937. /**
  938. * @return \think\response\Json|void
  939. * @throws \think\db\exception\DataNotFoundException
  940. * @throws \think\db\exception\DbException
  941. * @throws \think\db\exception\ModelNotFoundException
  942. */
  943. public function diffstatus(){
  944. $id = isset($this->post['id']) && $this->post['id'] !==""? intval($this->post['id']):"";
  945. if($id===""){
  946. return error_show(1004,"参数id不能为空");
  947. }
  948. $info = Db::name("sale_diff")->where(["id"=>$id])->find();
  949. if(empty($info)){
  950. return error_show(1004,"订单数据未找到");
  951. }
  952. $status = isset($this->post['status']) && $this->post['status'] !==""? intval($this->post['status']):"3";
  953. $remark = isset($this->post['remark']) && $this->post['remark'] !==""? trim($this->post['remark']):"";
  954. $info['status'] =$status;
  955. $info['remark'] =$remark;
  956. $info['updatetime'] =date("Y-m-d H:i:s");
  957. $up = Db::name("sale_diff")->save($info);
  958. if($up){
  959. return app_show(0,"更新成功");
  960. }else{
  961. return error_show(1003,"更新失败");
  962. }
  963. }
  964. /**
  965. * @return \think\response\Json|void
  966. * @throws \think\db\exception\DataNotFoundException
  967. * @throws \think\db\exception\DbException
  968. * @throws \think\db\exception\ModelNotFoundException
  969. */
  970. public function diffinfo(){
  971. $id = isset($this->post['id']) && $this->post['id'] !==""? intval($this->post['id']):"";
  972. if($id===""){
  973. return error_show(1004,"参数id不能为空");
  974. }
  975. $info = Db::name('sale_diff')->alias('a')->join("good b","b.good_code=a.good_kode","left")->where
  976. (["a.id"=>$id])->field("a.*,b.cat_id")->find();
  977. if(empty($info)){
  978. return error_show(1004,"订单数据未找到");
  979. }
  980. $info['can']= isset($info['cat_id']) && $info['cat_id'] !==0 ? made($info['cat_id']):[];
  981. return app_show(0,"获取成功",$info);
  982. }
  983. public function saleout(){
  984. $page = isset($this->post['page']) && $this->post['page'] !=="" ? intval($this->post['page']):"1";
  985. $size = isset($this->post['size']) && $this->post['size'] !=="" ? intval($this->post['size']) :"10";
  986. $where= [];
  987. $orderCode=isset($this->post['orderCode']) && $this->post['orderCode'] !=="" ? trim($this->post['orderCode'])
  988. :"";
  989. if($orderCode !==""){
  990. $where[]=['a.orderCode',"like","%$orderCode%"];
  991. }
  992. $order_type=isset($this->post['order_type']) && $this->post['order_type'] !=="" ? trim($this->post['order_type'])
  993. :"";
  994. if($order_type !==""){
  995. $where[]=['a.order_type',"=",$order_type];
  996. }
  997. $outCode=isset($this->post['outCode']) && $this->post['outCode'] !=="" ? trim($this->post['outCode'])
  998. :"";
  999. if($outCode !==""){
  1000. $where[]=['a.outCode',"like","%$outCode%"];
  1001. }
  1002. $apply_name=isset($this->post['apply_name']) && $this->post['apply_name'] !=="" ? trim($this->post['apply_name'])
  1003. :"";
  1004. if($apply_name !==""){
  1005. $where[]=['a.apply_name',"like","%$apply_name%"];
  1006. }
  1007. $good_code=isset($this->post['good_code']) && $this->post['good_code'] !=="" ? trim($this->post['good_code'])
  1008. :"";
  1009. if($good_code !==""){
  1010. $where[]=['b.good_code',"like","%$good_code%"];
  1011. }
  1012. $good_name=isset($this->post['good_name']) && $this->post['good_name'] !=="" ? trim($this->post['good_name'])
  1013. :"";
  1014. if($good_name !==""){
  1015. $where[]=['b.good_name',"like","%$good_name%"];
  1016. }
  1017. $status=isset($this->post['status']) && $this->post['status'] !=="" ? trim($this->post['status']):"";
  1018. if($status !==""){
  1019. $where[]=['a.status',"=",$status];
  1020. }
  1021. $start = isset($this->post['start']) && $this->post['start'] !=="" ? $this->post['start'] :"";
  1022. if($start !=""){
  1023. $where[]= ["a.addtime",'>=',$start];
  1024. }
  1025. $end = isset($this->post['end']) && $this->post['end'] !=="" ? $this->post['end'] :"";
  1026. if($end !=""){
  1027. $where[]= ["a.addtime",'<=',$end];
  1028. }
  1029. $supplierNo =isset($this->post['supplierNo']) &&$this->post['supplierNo'] !=="" ? trim($this->post['supplierNo']):"";
  1030. if($supplierNo!=""){
  1031. $supplier = Db::name("supplier")->where([['code',"like","%$supplierNo%"]])->column('code');
  1032. $wsmcode = Db::name("sale")->where([
  1033. "is_del"=>0,"supplierNo"=>$supplier])->column("orderCode");
  1034. $where[]=['b.orderCode',"in",$wsmcode];
  1035. }
  1036. $count = Db::name('order_out')->alias('a')
  1037. ->join("sale b","b.orderCode=a.orderCode","left")
  1038. ->join("customer_info v","v.companyNo=b.customer_code","left")
  1039. //->join("good n","n.good_code=b.good_code","left")
  1040. ->where($where)->count();
  1041. $total = ceil($count/$size);
  1042. $page = $page >= $total ? $total : $page;
  1043. $list= Db::name('order_out')->alias('a')->join("sale b","b.orderCode=a.orderCode","left")
  1044. ->join("customer_info v","v.companyNo=b.customer_code","left")
  1045. //->join("good n","n.good_code=b.good_code","left")
  1046. ->field("a.*,b.good_name,b.good_code,b.supplierNo,b.customer_code,v.companyName")
  1047. ->where($where)->order("addtime desc")->page($page,$size)->select();
  1048. foreach ($list as $value){
  1049. $wsmcode = Db::name("warehouse_info")->alias("k")->leftJoin("supplier c","k.supplierNo=c.code")
  1050. ->where(["k.wsm_code"=>$value['wsm_code']])->field("k.name as wsm_name,c.name,c.code")->find();
  1051. $addr = Db::name("order_addr")->where(["id"=>$value['addrid']])->find();
  1052. $good = Db::name("good_type")->alias("b")->join("good a","a.good_code = b.good_code","left")
  1053. ->where(["type_code"=>$value['good_code']])->field('cat_id')->find();
  1054. $value['wsm_name'] =isset($wsmcode['wsm_name']) ? $wsmcode['wsm_name']:"";
  1055. $value['wsm_supplier'] =isset($wsmcode['name']) ? $wsmcode['name']:"";
  1056. $value['wsm_supplierNo'] = isset($wsmcode['code']) ? $wsmcode['code']:"";
  1057. $value['addr']=isset($addr['addr']) ? $addr['addr']:"";
  1058. $value['contactor']=isset($addr['contactor']) ? $addr['contactor']:"";
  1059. $value['mobile']=isset($addr['mobile']) ? $addr['mobile']:"";
  1060. $value['can']= isset($good['cat_id']) && $good['cat_id'] !=0 ? made($good['cat_id']):[];
  1061. $data[]=$value;
  1062. }
  1063. return app_show(0,"获取成功",['list'=>$data,'count'=>$count]);
  1064. }
  1065. public function outinfo(){
  1066. $outCode = isset($this->post['outCode']) && $this->post['outCode']!==""? trim($this->post['outCode']):"";
  1067. if($outCode==""){
  1068. return error_show(1002,"参数outcode不能为空");
  1069. }
  1070. $codeinfo = Db::name("order_out")->where(['outCode'=>$outCode])->find();
  1071. if(empty($codeinfo)){
  1072. return error_show(1002,"未找到出库数据");
  1073. }
  1074. $iem = Db::name("sale")->where(['orderCode'=>$codeinfo['orderCode']])->find();
  1075. $goon = Db::name('good')->alias('b')->join("good_type a","a.good_code=b.good_code","left")
  1076. ->where(['a.type_code'=> $iem['good_code']])->find();
  1077. if(empty($goon)){
  1078. return error_show(1003,"未找到商品数据");
  1079. }
  1080. $int= isset($goon['cat_id']) && $goon['cat_id'] !=0 ? made($goon['cat_id']):[];
  1081. $wsmcode = Db::name("warehouse_info")->alias("k")->leftJoin("supplier c", "k.supplierNo=c.code")
  1082. ->where(["k.wsm_code" => $codeinfo['wsm_code']])->field("k.name as wsm_name,c.name,c.code")->find();
  1083. $addr = Db::name("order_addr")->where(["id" => $codeinfo['addrid']])->find();
  1084. $item = Db::name("sale")->where(['orderCode'=>$codeinfo['orderCode']])->find();
  1085. $codeinfo['good_name'] = isset($item['good_name']) ? $item['good_name'] : "";
  1086. $codeinfo['good_num'] = isset($item['good_num']) ? $item['good_num'] : "";
  1087. $codeinfo['good_code'] = isset($item['good_code']) ? $item['good_code'] : "";
  1088. $codeinfo['wsm_name'] = isset($wsmcode['wsm_name']) ? $wsmcode['wsm_name'] : "";
  1089. $codeinfo['wsm_supplier'] = isset($wsmcode['name']) ? $wsmcode['name'] : "";
  1090. $codeinfo['wsm_supplierNo'] = isset($wsmcode['code']) ? $wsmcode['code'] : "";
  1091. $codeinfo['addr']=GetAddr($addr['addr_code']);
  1092. $codeinfo['addr'].= isset($addr['addr']) ? $addr['addr'] : "";
  1093. $codeinfo['addr_code'] = isset($addr['addr_code']) ? $addr['addr_code'] : "";
  1094. $codeinfo['contactor'] = isset($addr['contactor']) ? $addr['contactor'] : "";
  1095. $codeinfo['mobile'] = isset($addr['mobile']) ? $addr['mobile'] : "";
  1096. $codeinfo['can']=$int;
  1097. return app_show(0,"获取成功",$codeinfo);
  1098. }
  1099. }