Sale.php 60 KB

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