Purchin.php 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332
  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,b.code")->find();
  113. $info['wsm_name'] =isset($wsmcode['wsm_name']) ? $wsmcode['wsm_name']:"";
  114. $info['wsm_supplier'] =isset($wsmcode['name']) ? $wsmcode['name']:"";
  115. $info['wsm_supplierNo'] =isset($wsmcode['code']) ? $wsmcode['code']:"";
  116. $check = Db::name("purchease_info")->where(['wsm_in_code'=>$incode,"is_del"=>0])->select();
  117. $info['checkinfo']= $check;
  118. return app_show(0,'获取成功',$info);
  119. }
  120. public function check(){
  121. $incode = isset($this->post['wsm_in_code'])&&$this->post['wsm_in_code']!="" ? trim($this->post['wsm_in_code']) :"";
  122. if($incode==""){
  123. return error_show(1004,"参数wsm_in_code 不为空");
  124. }
  125. $info = Db::name("purchease_in")->where(['wsm_in_code'=>$incode,"is_del"=>0])->find();
  126. if(empty($info)){
  127. return error_show(1004,"未找到数据");
  128. }
  129. $order_num = isset($this->post['order_num']) && $this->post['order_num']!==''?intval($this->post['order_num'])
  130. :"";
  131. if($order_num!==""){
  132. return error_show(1004,"参数 order_num 不为空");
  133. }
  134. $error_list = isset($this->post['error_list']) && $this->post['error_list']!==''?$this->post['error_list']:"";
  135. $wait_num = isset($this->post['wait_num']) && $this->post['wait_num']!==''?intval($this->post['wait_num'])
  136. :"";
  137. if($wait_num===''){
  138. return error_show(1004,"参数 wait_num 不为空");
  139. }
  140. $result = GetUserInfo($this->post['token']);
  141. if((!empty($result) && $result['code']!=0) ||empty($result) ){
  142. return error_show($result['code'],$result['message']);
  143. }
  144. $userinfo = $result['data'];
  145. Db::startTrans();
  146. try{
  147. $info['wsm_num'] = $order_num;
  148. $info['wait_num'] = $wait_num;
  149. $info['checkid'] = $userinfo['id'];
  150. $info['check_name'] = $userinfo['nickname'];
  151. $info['error_num'] = $info['send_num']-$wait_num;
  152. $info['updatetime'] = date("Y-m-d H:i:s");
  153. $up =Db::name("purchease_in")->save($info);
  154. if($up){
  155. if(!empty($error_list)){
  156. $data=[];
  157. foreach ($error_list as $value ){
  158. $temp=[];
  159. $temp['wsm_in_code']=$info['wsm_in_code'];
  160. $temp['num']=$value['num'];
  161. $temp['error_code']=$value['error_code'];
  162. $temp['error_img']=$value['error_img'];
  163. $temp['remark']=$value['remark'];
  164. $temp['is_del']=0;
  165. $temp['addtime']=date("Y-m-d H:i:s");
  166. $temp['updatetime']=date("Y-m-d H:i:s");
  167. $data[]=$temp;
  168. }
  169. $derr= Db::name("purchease_info")->insertAll($data);
  170. if($derr){
  171. Db::commit();
  172. return app_show(0,"验货完成");
  173. }else{
  174. Db::rollback();
  175. return error_show(1002,"验货数据保存失败");
  176. }
  177. }
  178. Db::commit();
  179. return app_show(0,"验货完成");
  180. }
  181. Db::rollback();
  182. return error_show(1002,"验货数据保存失败");
  183. }catch (\Exception $e){
  184. Db::rollback();
  185. return error_show(1002,$e->getMessage());
  186. }
  187. }
  188. public function status(){
  189. $incode = isset($this->post['wsm_in_code'])&&$this->post['wsm_in_code']!="" ? trim($this->post['wsm_in_code']) :"";
  190. if($incode==""){
  191. return error_show(1004,"参数wsm_in_code 不为空");
  192. }
  193. $info = Db::name("purchease_in")->where(['wsm_in_code'=>$incode,"is_del"=>0])->find();
  194. if(empty($info)){
  195. return error_show(1004,"未找到数据");
  196. }
  197. $status = isset($this->post['status'])&&$this->post['status']!=="" ? intval($this->post['status']):"";
  198. if($status===""){
  199. return error_show(1004,"参数status 不为空");
  200. }
  201. $remark = isset($this->post['remark'])&&$this->post['remark']!="" ? trim($this->post['remark']) :"";
  202. Db::rollback();
  203. try{
  204. $info['status'] = $status;
  205. $info['remark'] = $remark;
  206. $info['updatetime'] = date("Y-m-d H:i:s");
  207. $update = Db::name("purchease_in")->save($info);
  208. if($update){
  209. if($status==0){
  210. $cgdinfo=Db::name("purchease_order")->where(['cgdNo'=>$info['cgdNo'],"is_del"=>0])->find();
  211. if(empty($cgdinfo)){
  212. Db::rollback();
  213. return error_show(1002,"未找到采购单数据");
  214. }
  215. $cgdinfo['wsend_num']+=$info['send_num'];
  216. $cgdinfo['send_num']-=$info['send_num'];
  217. $cgdinfo['updatetime']=date("Y-m-d H:i:s");
  218. $up=Db::name("purchease_order")->save($cgdinfo);
  219. if($up){
  220. Db::commit();
  221. return app_show(0,'取消成功');
  222. }else{
  223. Db::rollback();
  224. return error_show(1002,"取消失败");
  225. }
  226. }
  227. if($status==1){
  228. $cgdinfo=Db::name("purchease_order")->where(['cgdNo'=>$info['cgdNo'],"is_del"=>0])->find();
  229. if(empty($cgdinfo)){
  230. Db::rollback();
  231. return error_show(1002,"未找到采购单数据");
  232. }
  233. $cgdinfo['wsend_num']-=$info['send_num'];
  234. $cgdinfo['send_num']+=$info['send_num'];
  235. $cgdinfo['updatetime']=date("Y-m-d H:i:s");
  236. $up=Db::name("purchease_order")->save($cgdinfo);
  237. if($up){
  238. Db::commit();
  239. return app_show(0,'发货成功');
  240. }else{
  241. Db::rollback();
  242. return error_show(1002,"发货失败");
  243. }
  244. }
  245. Db::commit();
  246. return app_show(0,"状态修改完成");
  247. }
  248. Db::rollback();
  249. return error_show(1002,"状态修改失败");
  250. }catch (\Exception $e){
  251. Db::rollback();
  252. return error_show(1002,"状态修改失败");
  253. }
  254. }
  255. public function ReturnAdd(){
  256. $incode = isset($this->post['wsm_in_code'])&&$this->post['wsm_in_code']!="" ? trim($this->post['wsm_in_code']) :"";
  257. if($incode==""){
  258. return error_show(1004,"参数wsm_in_code 不为空");
  259. }
  260. $info = Db::name("purchease_in")->where(['wsm_in_code'=>$incode,"is_del"=>0])->find();
  261. if(empty($info)){
  262. return error_show(1004,"未找到数据");
  263. }
  264. $wsm_num = isset($this->post['wsm_num']) &&$this->post['wsm_num']!=="" ? intval($this->post['wsm_num']):"" ;
  265. if($wsm_num===""){
  266. return error_show(1004,"参数wsm_num 不为空");
  267. }
  268. $reissue_num = isset($this->post['reissue_num']) &&$this->post['reissue_num']!=="" ? intval($this->post['reissue_num']):"0" ;
  269. $return_num = isset($this->post['return_num']) &&$this->post['return_num']!=="" ? intval($this->post['return_num']):"0" ;
  270. $contactor = isset($this->post['contactor']) &&$this->post['contactor']!=="" ? trim($this->post['contactor']):"" ;
  271. if($contactor==""){
  272. return error_show(1004,"参数contactor 不为空");
  273. }
  274. $addr = isset($this->post['addr']) &&$this->post['addr']!=="" ? trim($this->post['addr']):"" ;
  275. if($addr==""){
  276. return error_show(1004,"参数addr 不为空");
  277. }
  278. $mobile = isset($this->post['mobile']) &&$this->post['mobile']!=="" ? trim($this->post['mobile']):"" ;
  279. if($mobile==""){
  280. return error_show(1004,"参数mobile 不为空");
  281. }
  282. $error_remark = isset($this->post['error_remark']) &&$this->post['error_remark']!=="" ? trim($this->post['error_remark']):"" ;
  283. $post_code = isset($this->post['post_code']) &&$this->post['post_code']!=="" ? trim($this->post['post_code']):"" ;
  284. $post_company = isset($this->post['post_company']) &&$this->post['post_company']!=="" ? trim($this->post['post_company']):"" ;
  285. $result = GetUserInfo($this->post['token']);
  286. if((!empty($result) && $result['code']!=0) ||empty($result) ){
  287. return error_show($result['code'],$result['message']);
  288. }
  289. $userinfo = $result['data'];
  290. $data=[
  291. "wsm_in_code"=>$incode,
  292. "wsm_num"=>$wsm_num,
  293. "reissue_num"=>$reissue_num,
  294. "return_num"=>$return_num,
  295. "return_contactor"=>$contactor,
  296. "return_addr"=>$addr,
  297. "return_mobile"=>$mobile,
  298. "error_remark"=>$error_remark,
  299. "post_code"=>$post_code,
  300. "post_company"=>$post_company,
  301. "apply_id"=>$userinfo['id'],
  302. "apply_name"=>$userinfo['nickname'],
  303. "status"=>0,
  304. "addtime"=>date("Y-m-d H:i:s"),
  305. "updatetime"=>date("Y-m-d H:i:s")
  306. ];
  307. $res = Db::name("purchease_return")->insert($data);
  308. if($res){
  309. Db::commit();
  310. return app_show(0,"退货新建完成");
  311. }else{
  312. Db::rollback();
  313. return error_show(1002,"退货新建失败");
  314. }
  315. }
  316. }