Filing.php 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432
  1. <?php
  2. namespace app\admin\controller;
  3. use app\abutment\logic\Filing as FilingLogic;
  4. use think\Exception;use think\facade\Db;
  5. use think\facade\Validate;
  6. //报备单
  7. class Filing extends Base
  8. {
  9. //列表
  10. public function getList()
  11. {
  12. $param = $this->request->only(['page' => 1, 'size' => 10, 'cat_id' => '', 'start_date' => '', 'end_date' => '', 'filingCode' => '', 'status' => '', 'good_name' => '', 'companyName' => '', 'companyCode' => '', 'orderCode' => '', 'supplierNo' => ''], 'post');
  13. return FilingLogic::list($param);
  14. }
  15. //详情
  16. public function detail()
  17. {
  18. $param = $this->request->only(['id' => 0], 'post', 'trim');
  19. return FilingLogic::detail($param);
  20. }
  21. //审核
  22. public function status()
  23. {
  24. $param = $this->request->only(['id', 'status', 'companyCode', 'plat_code' => '', 'service_charge', 'service_proportion','platform_id'], 'post');
  25. $val = Validate::rule([
  26. 'id' => 'require|number|gt:0',
  27. 'status|状态' => 'require|number|in:1,2',
  28. 'companyCode|客户' => 'require|length:18',
  29. 'service_charge|服务费' => 'require|float|egt:0|max:99999999.99',
  30. 'service_proportion|服务费比例' => 'require|float|egt:0',
  31. 'platform_id|平台id' => 'require|number|gt:0',
  32. ]);
  33. if (!$val->check($param)) return json_show(1004, $val->getError());
  34. return FilingLogic::status($param);
  35. }
  36. //订单录入
  37. public function orderAdd(){
  38. $param=$this->request->param([
  39. "companyNo"=>'',
  40. "poCode"=>"",
  41. "workCode"=>"",
  42. "khNo"=>"",
  43. "qrdType"=>3,
  44. "goodName"=>"",
  45. "tax"=>"",
  46. "goodNum"=>"",
  47. "goodPrice"=>"",
  48. "goodUnit"=>"",
  49. "mobile"=>"",
  50. "addr"=>"",
  51. "addr_code"=>"",
  52. "contactor"=>"",
  53. "buyerid"=>"",
  54. "buyer_name"=>"",
  55. "sendtime"=>"",
  56. "cat_id"=>'',
  57. "supplierNo"=>"",
  58. "cgd_tax"=>"",
  59. "pay_id"=>"0",
  60. ],"post","trim");
  61. $valid=Validate::rule([
  62. // "sale_id|销售员"=>"require|number|gt:0",
  63. "companyNo|业务公司编号"=>"require|max:255|min:1",
  64. "supplierNo|业务公司编号"=>"require|max:255|min:1",
  65. "poCode|PO编号"=>"require|max:255|min:1",
  66. // "workCode|单据编号"=>"require|max:255|min:1",
  67. "khNo|客户公司编号"=>"require|max:255|min:1",
  68. "qrdType|订单类型"=>"require|number|in:1,2,3",
  69. "goodName|商品名称"=>"require|max:255|min:1",
  70. "goodUnit|商品单位"=>"require|number|gt:0",
  71. "tax|税率"=>"require|number|gt:0",
  72. "goodNum|商品数量"=>"require|number|gt:0",
  73. "goodPrice|商品单价"=>"require|float|gt:0",
  74. "mobile|联系人电话"=>"require|number|mobile",
  75. "contactor|联系人"=>"require|max:255|min:1",
  76. "addr|收货地址"=>"require|max:255|min:1",
  77. "buyerid|采购员ID"=>"require|number|gt:0",
  78. "buyer_name|采购员"=>"require|max:255|min:1",
  79. "sendtime|发货时间"=>"require|date",
  80. "cat_id|商品分类id"=>"require|number|gt:0",
  81. "cgd_tax|采购毛利率"=>"require|float|gt:0",
  82. "pay_id|支付渠道"=>"require|number"
  83. ]);
  84. if($valid->check($param)==false) return error_show(1004,$valid->getError());
  85. $qrdcode =makeNo("QR");
  86. $cgddcode =makeNo("CG");
  87. $goodCode =makeNo("SKU");
  88. $customer =Db::name("customer_info")->where('companyNo', "=", $param['khNo'])->find();
  89. if($customer==false) return error_show(1004,"客户信息未找到");
  90. $supplierName =Db::name("supplier")->where('code', "=", $param['supplierNo'])->value("name","");
  91. if($supplierName=='') return error_show(1004,"供应商信息未找到");
  92. $companyName =Db::name("supplier")->where('code', "=", $param['companyNo'])->value("name","");
  93. if($companyName=='') return error_show(1004,"业务公司信息未找到");
  94. if($param['pay_id']!=0){
  95. $payinfo =Db::name("pay")->where("id",$param['pay_id'])->findOrEmpty();
  96. if(empty($payinfo)) return error_show(1004, "支付渠道信息未找到");
  97. if($payinfo['status']!=1)return error_show(1004, "支付渠道已禁用");
  98. $supplierArr =Db::name("pay_rate")->where(["pay_id"=>$param['pay_id'],"status"=>1,"is_del"=>0])->column("companyNo");
  99. if(in_array($param['companyNo'],$supplierArr)) return error_show(1004, "支付渠道含有该业务公司,支付渠道无法使用!");
  100. }
  101. $param["cgd_tax"]=$param["cgd_tax"]/100;
  102. $cgdPrice= round( $param['goodPrice']*(1-$param['cgd_tax']),2);
  103. $qrddata=[
  104. "orderCode"=>$qrdcode,
  105. "apply_id"=>$this->uid,
  106. "apply_name"=>$this->uname,
  107. "order_type"=>$param['qrdType'],
  108. "order_source"=>9,
  109. "platform_id"=>0,
  110. "good_code"=>$goodCode,
  111. "skuCode"=>'',
  112. "cat_id"=>$param['cat_id'],
  113. "good_name"=>$param['goodName'],
  114. "good_num"=>$param['goodNum'],
  115. "good_type"=>1,
  116. "origin_price"=>$cgdPrice,
  117. "sale_price"=>$param['goodPrice'],
  118. "total_price"=>round( $param['goodPrice']*$param['goodNum'],2),
  119. "post_fee"=>0,
  120. "is_diff"=>0,
  121. "is_activity"=>0,
  122. "activity_code"=>'',
  123. "is_stock"=>0,
  124. "arrive_time"=>$param['sendtime'],
  125. "customer_code"=>$param['khNo'],
  126. "supplierNo"=>$param['companyNo'],
  127. "platform_order"=>$param['poCode'],
  128. "send_num"=>$param['goodNum'],
  129. "wsend_num"=>0,
  130. "send_status"=>3,
  131. "send_type"=>1,
  132. "status"=>2,
  133. "is_del"=>0,
  134. "pay_id"=>$param['pay_id'],
  135. "workNo"=>$param['workCode'],
  136. "addtime"=>date("Y-m-d H:i:s"),
  137. "updatetime"=>date("Y-m-d H:i:s"),
  138. "cgderid"=>$param['buyerid'],
  139. "cgder"=>$param['buyer_name'],
  140. "good_createrid"=>$this->uid,
  141. "good_creater"=>$this->uname
  142. ];
  143. $orderCgd=[
  144. "orderCode"=>$qrdcode,
  145. "cgdNo"=>$cgddcode,
  146. "spuCode"=>$goodCode,
  147. "good_num"=>$param['goodNum'],
  148. "wsend_num"=>0,
  149. "send_num"=>$param['goodNum'],
  150. "wait_num"=>0
  151. ];
  152. $cgddata=[
  153. "cgdNo"=>$cgddcode,
  154. "bkcode"=>'',
  155. "wsm_code"=>"",
  156. "cgder_id"=>$param['buyerid'],
  157. 'cgder'=>$param['buyer_name'],
  158. "spuCode"=>$goodCode,
  159. "good_name"=>$param['goodName'],
  160. "good_num"=>$param['goodNum'],
  161. "good_price"=>$cgdPrice,
  162. "total_fee"=>round($cgdPrice*$param['goodNum'],2 ),
  163. "supplierNo"=>$param['supplierNo'],
  164. "supplier_name"=>$supplierName,
  165. "companyNo"=>$param['companyNo'],
  166. "send_status"=>3,
  167. "send_num"=>$param['goodNum'],
  168. "wsend_num"=>0,
  169. "status"=>3,
  170. "lasttime"=>date("Y-m-d H:i:s"),
  171. "order_type"=>$param['qrdType'],
  172. "order_source"=>9,
  173. "addtime"=>date("Y-m-d H:i:s"),
  174. "updatetime"=>date("Y-m-d H:i:s"),
  175. "good_createrid"=>$this->uid,
  176. "good_creater"=>$this->uname,
  177. ];
  178. $goodinfo =[
  179. "spuCode"=>$goodCode,
  180. "good_name"=>$param['goodName'],
  181. "brand_id"=>0,
  182. "cat_id"=>$param['cat_id'],
  183. "good_unit"=>$param['goodUnit'],
  184. "good_type"=>1,
  185. "moq"=>1,
  186. "customized"=>0,
  187. "tax"=>$param['tax'],
  188. "supplierNo"=>$param['supplierNo'],
  189. "is_auth"=>1,
  190. "craft_desc"=>'',
  191. "good_remark"=>'',
  192. "good_img"=>'',
  193. "good_thumb_img"=>'',
  194. "good_info_img"=>'',
  195. "createrid"=>$this->uid,
  196. "creater"=>$this->uname,
  197. "specinfo"=>'',
  198. "work_day"=>0,
  199. "noble_metal"=>0,
  200. "good_weight"=>0,
  201. "config"=>"",
  202. "weight"=>0,
  203. "supply_area"=>0,
  204. "is_diff"=>0,
  205. "pay_way"=>0,
  206. "send_way"=>0,
  207. "companyNo"=>$param['companyNo'],
  208. "addtime"=>date("Y-m-d H:i:s"),
  209. "updatetime"=>date("Y-m-d H:i:s"),
  210. ];
  211. $orderAddr=[
  212. "orderCode"=>$qrdcode,
  213. "addr"=>$param['addr'],
  214. "addr_code"=>$param['addr_code'],
  215. "contactor"=>$param['contactor'],
  216. "mobile"=>$param['mobile'],
  217. "arrive_time"=>$param['sendtime'],
  218. "customer_code"=>$param['khNo'],
  219. "receipt_quantity"=>$param['goodNum'],
  220. "addtime"=>date("Y-m-d H:i:s"),
  221. "updatetime"=>date("Y-m-d H:i:s"),
  222. ];
  223. Db::startTrans();
  224. try{
  225. $qrd =Db::name("sale")->insert($qrddata);
  226. if($qrd==false) throw new Exception("销售单生成失败");
  227. $qrd =Db::name("order_num")->insert($orderCgd);
  228. if($qrd==false) throw new Exception("销售单采购管联生成失败");
  229. $qrd =Db::name("purchease_order")->insert($cgddata);
  230. if($qrd==false) throw new Exception("采购单生成失败");
  231. $qrd =Db::name("good_zixun")->insert($goodinfo);
  232. if($qrd==false) throw new Exception("商品信息录入生成失败");
  233. $qrd =Db::name("order_addr")->insert($orderAddr);
  234. if($qrd==false) throw new Exception("销售单地址生成失败");
  235. if($param['pay_id']!=0){
  236. pay_log($param['pay_id'],$param['companyNo'],$qrdcode);
  237. }
  238. Db::commit();
  239. return app_show(0,'订单生成成功');
  240. }catch (\Exception $exception){
  241. Db::rollback();
  242. return error_show(1004,$exception->getMessage());
  243. }
  244. }
  245. public function orderInfo(){
  246. $param=$this->request->param(["orderCode"],"post","trim");
  247. if($param['orderCode']=='')return error_show(1004,"订单编号不能为空");
  248. $saleinfo =Db::name("sale")->where(["orderCode"=>$param['orderCode']])->findOrEmpty();
  249. if(empty($saleinfo)) return error_show(1004,"销售单不存在");
  250. if($saleinfo['order_source']!=9) return error_show(1004,"销售单来源不是网络录入");
  251. $cgd = Db::name("purchease_order")->alias("a")
  252. ->leftJoin("order_num b","a.cgdNo=b.cgdNo")
  253. ->where(["b.orderCode"=>$param['orderCode']])
  254. ->field("a.*")
  255. ->findOrEmpty();
  256. if(empty($cgd)) return error_show(1004,"采购单不存在");
  257. $goodinfo =Db::name("good_zixun")->where(["spuCode"=>$saleinfo['good_code']])->findOrEmpty();
  258. if(empty($goodinfo)) return error_show(1004,"商品信息不存在");
  259. $addr =Db::name("order_addr")->where(["orderCode"=>$param['orderCode']])->findOrEmpty();
  260. if(empty($addr)) return error_show(1004,"地址信息不存在");
  261. $addinfo =$addr['addr_code']!=''?json_decode($addr['addr_code'],true)??$addr['addr_code']: '' ;
  262. if(is_string($addinfo)&&$addinfo!=''){
  263. $addinfo=["provice_code"=>'',"city_code"=>'',"area_code"=>''];
  264. list($addinfo['provice_code'],$addinfo['city_code'],$addinfo['area_code']) = explode(",",$addr['addr_code']);
  265. }
  266. $data=[
  267. "orderCode"=>$saleinfo['orderCode'],
  268. "companyNo"=>$saleinfo['supplierNo'],
  269. "companyName"=>Db::name("supplier")->where(["code"=>$saleinfo['supplierNo']])->value("name",''),
  270. "poCode"=>$saleinfo['platform_order'],
  271. "workCode"=>$saleinfo['workNo'],
  272. "khNo"=>$saleinfo['customer_code'],
  273. "khName"=>Db::name("customer_info")->where(["companyNo"=>$saleinfo['customer_code']])->value("companyName",''),
  274. "qrdType"=>$saleinfo['order_type'],
  275. "goodName"=>$saleinfo['good_name'],
  276. "tax"=>$goodinfo['tax'],
  277. "goodUnit"=>$goodinfo['good_unit'],
  278. "unitName"=>Db::name("unit")->where(["id"=>$goodinfo['good_unit']])->value("unit",""),
  279. "goodNum"=>$saleinfo['good_num'],
  280. "goodPrice"=>$saleinfo['sale_price'],
  281. "mobile"=>$addr['mobile'],
  282. "addr"=>$addr['addr'],
  283. "addr_cn"=>GetAddr(json_encode($addinfo)),
  284. "addr_code"=>$addr['addr_code'],
  285. "contactor"=>$addr['contactor'],
  286. "buyerid"=>$saleinfo['cgderid'],
  287. "buyer_name"=>$saleinfo['cgder'],
  288. "sendtime"=>$saleinfo['arrive_time'],
  289. "cat_id"=>made($saleinfo['cat_id']),
  290. "cat_name"=>Db::name("cat")->where(["id"=>$saleinfo['cat_id']])->value("cat_name",''),
  291. "supplierNo"=>$cgd['supplierNo'],
  292. "supplierNanme"=>$cgd['supplier_name'],
  293. "cgd_tax"=>round(($saleinfo['sale_price'] - $saleinfo['origin_price'])/$saleinfo['sale_price'],4)*100,
  294. "pay_id"=>$saleinfo['pay_id'],
  295. "pay_name"=>Db::name("pay")->where(["id"=>$saleinfo['pay_id']])->value("pay_name","")
  296. ];
  297. return app_show(0,"获取成功",$data);
  298. }
  299. public function orderEdit(){
  300. $param=$this->request->param([
  301. "orderCode"=>"",
  302. "companyNo"=>'',
  303. "poCode"=>"",
  304. "workCode"=>"",
  305. "khNo"=>"",
  306. "tax"=>"",
  307. "goodUnit"=>"",
  308. "mobile"=>"",
  309. "addr"=>"",
  310. "addr_code"=>"",
  311. "contactor"=>"",
  312. "buyerid"=>"",
  313. "buyer_name"=>"",
  314. "sendtime"=>"",
  315. "supplierNo"=>"",
  316. "cgd_tax"=>""
  317. ],"post","trim");
  318. $valid=Validate::rule([
  319. "orderCode|销售单号"=>"require|max:255",
  320. // "companyNo|业务公司编号"=>"require|max:255|min:1",
  321. "supplierNo|供应商公司编号"=>"require|max:255|min:1",
  322. "poCode|PO编号"=>"require|max:255|min:1",
  323. // "workCode|业务编号"=>"require|max:255|min:1",
  324. // "khNo|客户公司编号"=>"require|max:255|min:1",
  325. "mobile|联系人电话"=>"require|number|mobile",
  326. "goodUnit|商品单位"=>"require|number|gt:0",
  327. "contactor|联系人"=>"require|max:255|min:1",
  328. "addr|收货地址"=>"require|max:255|min:1",
  329. "addr_code|收货省市区"=>"require|max:255|min:1",
  330. "buyerid|采购员ID"=>"require|number|gt:0",
  331. "buyer_name|采购员"=>"require|max:255|min:1",
  332. "sendtime|发货时间"=>"require|date",
  333. "tax|商品利率"=>"require|number",
  334. "cgd_tax|采购毛利率"=>"require|float|gt:0",
  335. ]);
  336. if($valid->check($param)==false) return error_show(1004,$valid->getError());
  337. $customer =Db::name("customer_info")->where('companyNo', "=", $param['khNo'])->find();
  338. if($customer==false) return error_show(1004,"客户信息未找到");
  339. $supplierName =Db::name("supplier")->where('code', "=", $param['supplierNo'])->value("name","");
  340. if($supplierName=='') return error_show(1004,"供应商信息未找到");
  341. $companyName =Db::name("supplier")->where('code', "=", $param['companyNo'])->value("name","");
  342. if($companyName=='') return error_show(1004,"业务公司信息未找到");
  343. $param["cgd_tax"]=$param["cgd_tax"]/100;
  344. $saleinfo =Db::name("sale")->where(["orderCode"=>$param['orderCode']])->findOrEmpty();
  345. if(empty($saleinfo)) return error_show(1004,"销售单不存在");
  346. if($saleinfo['order_source']!=9) return error_show(1004,"销售单来源不是网络录入");
  347. $cgd = Db::name("purchease_order")->alias("a")
  348. ->leftJoin("order_num b","a.cgdNo=b.cgdNo")
  349. ->where(["b.orderCode"=>$param['orderCode']])
  350. ->field("a.*")
  351. ->findOrEmpty();
  352. if(empty($cgd)) return error_show(1004,"采购单不存在");
  353. $good =Db::name("good_zixun")->where(["spuCode"=>$saleinfo['good_code']])->findOrEmpty();
  354. if(empty($good)) return error_show(1004,"商品信息不存在");
  355. $addr =Db::name("order_addr")->where(["orderCode"=>$param['orderCode']])->findOrEmpty();
  356. if(empty($addr)) return error_show(1004,"地址信息不存在");
  357. $cgdPrice= round( $saleinfo['sale_price']*(1-$param['cgd_tax']),2);
  358. if($saleinfo['pay_id']!=0){
  359. $supplierArr =Db::name("pay_rate")->where(["pay_id"=>$saleinfo['pay_id'],"status"=>1,"is_del"=>0])->column("companyNo");
  360. if(in_array($param['companyNo'],$supplierArr)) return error_show(1004, "支付渠道含有该业务公司,支付渠道无法使用!");
  361. }
  362. $qrddata=[
  363. "origin_price"=>$cgdPrice,
  364. "arrive_time"=>$param['sendtime'],
  365. // "customer_code"=>$param['khNo'],
  366. // "supplierNo"=>$param['companyNo'],
  367. "platform_order"=>$param['poCode'],
  368. "workNo"=>$param['workCode'],
  369. "updatetime"=>date("Y-m-d H:i:s"),
  370. "cgderid"=>$param['buyerid'],
  371. "cgder"=>$param['buyer_name']
  372. ];
  373. $cgddata=[
  374. "cgder_id"=>$param['buyerid'],
  375. 'cgder'=>$param['buyerid'],
  376. "good_price"=>$cgdPrice,
  377. "total_fee"=>round($cgdPrice*$saleinfo['good_num'],2),
  378. "supplierNo"=>$param['supplierNo'],
  379. "supplier_name"=>$supplierName,
  380. // "companyNo"=>$param['companyNo'],
  381. "updatetime"=>date("Y-m-d H:i:s"),
  382. ];
  383. $goodinfo =[
  384. "good_unit"=>$param['goodUnit'],
  385. "tax"=>$param['tax'],
  386. "supplierNo"=>$param['supplierNo'],
  387. "companyNo"=>$param['companyNo'],
  388. "updatetime"=>date("Y-m-d H:i:s"),
  389. ];
  390. $orderAddr=[
  391. "addr"=>$param['addr'],
  392. "addr_code"=>$param['addr_code'],
  393. "contactor"=>$param['contactor'],
  394. "mobile"=>$param['mobile'],
  395. "arrive_time"=>$param['sendtime'],
  396. "customer_code"=>$param['khNo'],
  397. "updatetime"=>date("Y-m-d H:i:s"),
  398. ];
  399. Db::startTrans();
  400. try{
  401. $qrd =Db::name("sale")->where($saleinfo)->update($qrddata);
  402. if($qrd==false) throw new Exception("销售单更新失败");
  403. $qrd =Db::name("purchease_order")->where($cgd)->update($cgddata);
  404. if($qrd==false) throw new Exception("采购单更新失败");
  405. $qrd =Db::name("good_zixun")->where($good)->update($goodinfo);
  406. if($qrd==false) throw new Exception("商品信息更新失败");
  407. $qrd =Db::name("order_addr")->where($addr)->update($orderAddr);
  408. if($qrd==false) throw new Exception("销售单地址更新失败");
  409. Db::commit();
  410. return app_show(0,'订单更新成功');
  411. }catch (\Exception $exception){
  412. Db::rollback();
  413. return error_show(1004,$exception->getMessage());
  414. }
  415. }
  416. }