Purchin.php 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331
  1. <?php
  2. namespace app\admin\controller;
  3. use app\BaseController;
  4. use Illuminate\Support\Facades\Date;
  5. use think\facade\Db;
  6. class Purchin 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 list(){
  15. }
  16. public function add(){
  17. $cgdNo = isset($this->post['cgdNo']) && $this->post['cgdNo']!=""? trim($this->post['cgdNo']):"";
  18. if($cgdNo==""){
  19. return error_show(1005,"参数cgdNo 不能为空");
  20. }
  21. $cgdinfo = Db::name("purchease_order")->where(['cgdNo'=>$cgdNo,'is_del'=>0])->find();
  22. if(empty($cgdinfo)){
  23. return error_show(1005,"未找到采购单数据");
  24. }
  25. if($cgdinfo['status']!=3){
  26. return error_show(1005,"采购单未发货");
  27. }
  28. $wsm_in_code = makeNo("IC");
  29. $wsm_code = isset($this->post['wsm_code'])&&$this->post['wsm_code']!="" ? trim($this->post['wsm_code']):"";
  30. if($wsm_code==""){
  31. return error_show(1004,"参数 wsm_code 不能为空");
  32. }
  33. $wsminfo = Db::name("warehouse_info")->where(["wsm_code"=>$wsm_code,"is_del"=>0])->find();
  34. if(empty($wsminfo)){
  35. return error_show(1004,"未找到仓库信息");
  36. }
  37. $recep = Db::name('warehouse_addr')->where(["wsm_code"=>$wsm_code,"is_del"=>0])->find();
  38. $wsm_code = isset($this->post['wsm_code'])&&$this->post['wsm_code']!="" ? trim($this->post['wsm_code']):"";
  39. if($wsm_code==""){
  40. return error_show(1004,"参数 wsm_code 不能为空");
  41. }
  42. $data = GetUserInfo($this->post['token']);
  43. if((!empty($data) && $data['code']!=0) ||empty($data) ){
  44. return error_show($data['code'],$data['message']);
  45. }
  46. $userinfo = $data['data'];
  47. $post_company = isset($this->post['post_company'])&&$this->post['post_company']!="" ? trim($this->post['post_company']):"";
  48. $post_code = isset($this->post['post_code'])&&$this->post['post_code']!="" ? trim($this->post['post_code']):"";
  49. $post_fee = isset($this->post['post_fee'])&&$this->post['post_fee']!="" ? $this->post['post_fee']:"0";
  50. $post_time = isset($this->post['post_time'])&&$this->post['post_time']!="" ? $this->post['post_time']:date("Y-m-d H:i:s");
  51. $send_num = isset($this->post['send_num'])&&$this->post['send_num']!="" ? intval($this->post['send_num']):"";
  52. $status = isset($this->post['status'])&&$this->post['status']!="" ? intval($this->post['status']):"0";
  53. if($send_num==''){
  54. return error_show(1004,"参数 send_num 不能为空或零");
  55. }
  56. if($send_num>$cgdinfo['wsend_num']){
  57. return error_show(1004,"采购单剩余未发货数量不足");
  58. }
  59. $orin = [
  60. "wsm_in_code"=>$wsm_in_code,
  61. "cgdNo"=>$cgdNo,
  62. "wsm_code"=>$wsm_in_code,
  63. "wsm_reaper"=>isset($recep)&& $recep['wsm_name']!=''? $recep['wsm_name']:"",
  64. "send_num"=>$send_num,
  65. "post_company"=>$post_company,
  66. "post_code"=>$post_code,
  67. "post_fee"=>$post_fee,
  68. "sendtime"=>$post_time,
  69. "apply_id"=>$userinfo['id'],
  70. "apply_name"=>$userinfo['nickname'],
  71. "wait_num"=>0,
  72. "status"=>$status,
  73. "addtime"=>date("Y-m-d H:i:s"),
  74. "updatetime"=>date("Y-m-d H:i:s")
  75. ];
  76. Db::startTrans();
  77. try{
  78. $win = Db::name("purchease_in")->insert($orin);
  79. if($win){
  80. if($status==1){
  81. $cgdinfo['wsend_num']-=$send_num;
  82. $cgdinfo['send_num']+=$send_num;
  83. $cgdinfo['updatetime']=date("Y-m-d H:i:s");
  84. $up=Db::name("purchease_order")->save($cgdinfo);
  85. if($up){
  86. Db::commit();
  87. return app_show(0,'新建成功');
  88. }else{
  89. Db::rollback();
  90. return error_show(1004,"新建失败");
  91. }
  92. }
  93. Db::commit();
  94. return app_show(0,'新建成功');
  95. }
  96. Db::rollback();
  97. return error_show(1004,"新建失败");
  98. }catch (\Exception $e){
  99. Db::rollback();
  100. return error_show(1004,$e->getMessage());
  101. }
  102. }
  103. public function info(){
  104. $incode = isset($this->post['wsm_in_code'])&&$this->post['wsm_in_code']!="" ? trim($this->post['wsm_in_code']) :"";
  105. if($incode==""){
  106. return error_show(1004,"参数wsm_in_code 不为空");
  107. }
  108. $info = Db::name("purchease_in")->where(['wsm_in_code'=>$incode,"is_del"=>0])->find();
  109. if(empty($info)){
  110. return error_show(1004,"未找到数据");
  111. }
  112. $wsmcode = Db::name("warehouse_info")->alias("a")->leftJoin("supplier b","a.supplierNo=b.code")->where(["a.wsm_code"=>$info['wsm_code']])->field("a.name as wsm_name,b.name")->find();
  113. $info['wsm_name'] =isset($wsmcode['wsm_name']) ? $wsmcode['wsm_name']:"";
  114. $info['wsm_supplier'] =isset($wsmcode['name']) ? $wsmcode['name']:"";
  115. $check = Db::name("purchease_info")->where(['wsm_in_code'=>$incode,"is_del"=>0])->select();
  116. $info['checkinfo']= $check;
  117. return app_show(0,'获取成功',$info);
  118. }
  119. public function check(){
  120. $incode = isset($this->post['wsm_in_code'])&&$this->post['wsm_in_code']!="" ? trim($this->post['wsm_in_code']) :"";
  121. if($incode==""){
  122. return error_show(1004,"参数wsm_in_code 不为空");
  123. }
  124. $info = Db::name("purchease_in")->where(['wsm_in_code'=>$incode,"is_del"=>0])->find();
  125. if(empty($info)){
  126. return error_show(1004,"未找到数据");
  127. }
  128. $order_num = isset($this->post['order_num']) && $this->post['order_num']!==''?intval($this->post['order_num'])
  129. :"";
  130. if($order_num!==""){
  131. return error_show(1004,"参数 order_num 不为空");
  132. }
  133. $error_list = isset($this->post['error_list']) && $this->post['error_list']!==''?$this->post['error_list']:"";
  134. $wait_num = isset($this->post['wait_num']) && $this->post['wait_num']!==''?intval($this->post['wait_num'])
  135. :"";
  136. if($wait_num===''){
  137. return error_show(1004,"参数 wait_num 不为空");
  138. }
  139. $result = GetUserInfo($this->post['token']);
  140. if((!empty($result) && $result['code']!=0) ||empty($result) ){
  141. return error_show($result['code'],$result['message']);
  142. }
  143. $userinfo = $result['data'];
  144. Db::startTrans();
  145. try{
  146. $info['wsm_num'] = $order_num;
  147. $info['wait_num'] = $wait_num;
  148. $info['checkid'] = $userinfo['id'];
  149. $info['check_name'] = $userinfo['nickname'];
  150. $info['error_num'] = $info['send_num']-$wait_num;
  151. $info['updatetime'] = date("Y-m-d H:i:s");
  152. $up =Db::name("purchease_in")->save($info);
  153. if($up){
  154. if(!empty($error_list)){
  155. $data=[];
  156. foreach ($error_list as $value ){
  157. $temp=[];
  158. $temp['wsm_in_code']=$info['wsm_in_code'];
  159. $temp['num']=$info['num'];
  160. $temp['error_code']=$info['error_code'];
  161. $temp['error_img']=$info['error_img'];
  162. $temp['remark']=$info['remark'];
  163. $temp['is_del']=0;
  164. $temp['addtime']=$info['addtime'];
  165. $temp['updatetime']=$info['updatetime'];
  166. $data[]=$temp;
  167. }
  168. $derr= Db::name("purchease_info")->insertAll($data);
  169. if($derr){
  170. Db::commit();
  171. return app_show(0,"验货完成");
  172. }else{
  173. Db::rollback();
  174. return error_show(1002,"验货数据保存失败");
  175. }
  176. }
  177. Db::commit();
  178. return app_show(0,"验货完成");
  179. }
  180. Db::rollback();
  181. return error_show(1002,"验货数据保存失败");
  182. }catch (\Exception $e){
  183. Db::rollback();
  184. return error_show(1002,$e->getMessage());
  185. }
  186. }
  187. public function status(){
  188. $incode = isset($this->post['wsm_in_code'])&&$this->post['wsm_in_code']!="" ? trim($this->post['wsm_in_code']) :"";
  189. if($incode==""){
  190. return error_show(1004,"参数wsm_in_code 不为空");
  191. }
  192. $info = Db::name("purchease_in")->where(['wsm_in_code'=>$incode,"is_del"=>0])->find();
  193. if(empty($info)){
  194. return error_show(1004,"未找到数据");
  195. }
  196. $status = isset($this->post['status'])&&$this->post['status']!=="" ? intval($this->post['status']):"";
  197. if($status===""){
  198. return error_show(1004,"参数status 不为空");
  199. }
  200. $remark = isset($this->post['remark'])&&$this->post['remark']!="" ? trim($this->post['remark']) :"";
  201. Db::rollback();
  202. try{
  203. $info['status'] = $status;
  204. $info['remark'] = $remark;
  205. $info['updatetime'] = date("Y-m-d H:i:s");
  206. $update = Db::name("purchease_in")->save($info);
  207. if($update){
  208. if($status==0){
  209. $cgdinfo=Db::name("purchease_order")->where(['cgdNo'=>$info['cgdNo'],"is_del"=>0])->find();
  210. if(empty($cgdinfo)){
  211. Db::rollback();
  212. return error_show(1002,"未找到采购单数据");
  213. }
  214. $cgdinfo['wsend_num']+=$info['send_num'];
  215. $cgdinfo['send_num']-=$info['send_num'];
  216. $cgdinfo['updatetime']=date("Y-m-d H:i:s");
  217. $up=Db::name("purchease_order")->save($cgdinfo);
  218. if($up){
  219. Db::commit();
  220. return app_show(0,'取消成功');
  221. }else{
  222. Db::rollback();
  223. return error_show(1002,"取消失败");
  224. }
  225. }
  226. if($status==1){
  227. $cgdinfo=Db::name("purchease_order")->where(['cgdNo'=>$info['cgdNo'],"is_del"=>0])->find();
  228. if(empty($cgdinfo)){
  229. Db::rollback();
  230. return error_show(1002,"未找到采购单数据");
  231. }
  232. $cgdinfo['wsend_num']-=$info['send_num'];
  233. $cgdinfo['send_num']+=$info['send_num'];
  234. $cgdinfo['updatetime']=date("Y-m-d H:i:s");
  235. $up=Db::name("purchease_order")->save($cgdinfo);
  236. if($up){
  237. Db::commit();
  238. return app_show(0,'发货成功');
  239. }else{
  240. Db::rollback();
  241. return error_show(1002,"发货失败");
  242. }
  243. }
  244. Db::commit();
  245. return app_show(0,"状态修改完成");
  246. }
  247. Db::rollback();
  248. return error_show(1002,"状态修改失败");
  249. }catch (\Exception $e){
  250. Db::rollback();
  251. return error_show(1002,"状态修改失败");
  252. }
  253. }
  254. public function ReturnAdd(){
  255. $incode = isset($this->post['wsm_in_code'])&&$this->post['wsm_in_code']!="" ? trim($this->post['wsm_in_code']) :"";
  256. if($incode==""){
  257. return error_show(1004,"参数wsm_in_code 不为空");
  258. }
  259. $info = Db::name("purchease_in")->where(['wsm_in_code'=>$incode,"is_del"=>0])->find();
  260. if(empty($info)){
  261. return error_show(1004,"未找到数据");
  262. }
  263. $wsm_num = isset($this->post['wsm_num']) &&$this->post['wsm_num']!=="" ? intval($this->post['wsm_num']):"" ;
  264. if($wsm_num===""){
  265. return error_show(1004,"参数wsm_num 不为空");
  266. }
  267. $reissue_num = isset($this->post['reissue_num']) &&$this->post['reissue_num']!=="" ? intval($this->post['reissue_num']):"0" ;
  268. $return_num = isset($this->post['return_num']) &&$this->post['return_num']!=="" ? intval($this->post['return_num']):"0" ;
  269. $contactor = isset($this->post['contactor']) &&$this->post['contactor']!=="" ? trim($this->post['contactor']):"" ;
  270. if($contactor==""){
  271. return error_show(1004,"参数contactor 不为空");
  272. }
  273. $addr = isset($this->post['addr']) &&$this->post['addr']!=="" ? trim($this->post['addr']):"" ;
  274. if($addr==""){
  275. return error_show(1004,"参数addr 不为空");
  276. }
  277. $mobile = isset($this->post['mobile']) &&$this->post['mobile']!=="" ? trim($this->post['mobile']):"" ;
  278. if($mobile==""){
  279. return error_show(1004,"参数mobile 不为空");
  280. }
  281. $error_remark = isset($this->post['error_remark']) &&$this->post['error_remark']!=="" ? trim($this->post['error_remark']):"" ;
  282. $post_code = isset($this->post['post_code']) &&$this->post['post_code']!=="" ? trim($this->post['post_code']):"" ;
  283. $post_company = isset($this->post['post_company']) &&$this->post['post_company']!=="" ? trim($this->post['post_company']):"" ;
  284. $result = GetUserInfo($this->post['token']);
  285. if((!empty($result) && $result['code']!=0) ||empty($result) ){
  286. return error_show($result['code'],$result['message']);
  287. }
  288. $userinfo = $result['data'];
  289. $data=[
  290. "wsm_in_code"=>$incode,
  291. "wsm_num"=>$wsm_num,
  292. "reissue_num"=>$reissue_num,
  293. "return_num"=>$return_num,
  294. "return_contactor"=>$contactor,
  295. "return_addr"=>$addr,
  296. "return_mobile"=>$mobile,
  297. "error_remark"=>$error_remark,
  298. "post_code"=>$post_code,
  299. "post_company"=>$post_company,
  300. "apply_id"=>$userinfo['id'],
  301. "apply_name"=>$userinfo['nickname'],
  302. "status"=>0,
  303. "addtime"=>date("Y-m-d H:i:s"),
  304. "updatetime"=>date("Y-m-d H:i:s")
  305. ];
  306. $res = Db::name("purchease_return")->insert($data);
  307. if($res){
  308. Db::commit();
  309. return app_show(0,"退货新建完成");
  310. }else{
  311. Db::rollback();
  312. return error_show(1002,"退货新建失败");
  313. }
  314. }
  315. }