Model_logic_u9bh.php 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  1. <?php
  2. /**
  3. * 系统自动处理在途库存的香港问题
  4. */
  5. class Model_logic_u9bh extends Lin_Model {
  6. //切记要修改token_120的token真正的token!!!!
  7. function __construct(){
  8. parent::__construct();
  9. $this->load->_model('Model_settingtest','settingtest');
  10. $this->load->_model("Model_apiyyv1","apiyyv1");
  11. $this->load->_model("Model_logic_ding","logic_ding");
  12. $this->load->_model("Model_zzquque_u9","zzquque_u9");
  13. $this->load->_model("Model_zzququeu9_logs","zzququeu9_logs");
  14. $this->load->_model('Model_logic_tools','logic_tools');
  15. $this->load->_model('Model_whlabel_bh_transfer','whlabel_bh_transfer');
  16. }
  17. public function getToken($type){
  18. $name = "get_yytoken_".$type;
  19. $token = $this->settingtest->$name();
  20. return $token;
  21. }
  22. public function doAction(){
  23. $list = $this->zzquque_u9->find_all("type = 21 and bzsh_status= 0 and dc_status = 0 and dr_status = 0");
  24. foreach ($list as $key => $value) {
  25. $this->dpCprk($value);
  26. }
  27. sleep(3);
  28. $list = $this->zzquque_u9->find_all("type = 21 and bzsh_status= 1 and dc_status = 0 and dr_status = 0");
  29. foreach ($list as $key => $value) {
  30. $this->checkCprk($value);
  31. }
  32. $list = $this->zzquque_u9->find_all("type = 21 and bzsh_status= 3 and dc_status = 0 and dr_status = 0");
  33. foreach ($list as $key => $value) {
  34. $this->doDcd($value);
  35. }
  36. $list = $this->zzquque_u9->find_all("type = 21 and bzsh_status= 3 and dc_status = 1 and dr_status = 0");
  37. foreach ($list as $key => $value) {
  38. $this->cxDrd($value);
  39. }
  40. $list = $this->zzquque_u9->find_all("type = 21 and bzsh_status= 3 and dc_status = 3 and dr_status = 0");
  41. foreach ($list as $key => $value) {
  42. $this->checkDrd($value);
  43. }
  44. }
  45. public function dpCprk($data){
  46. $token = $this->getToken(120);
  47. if(empty($data['child_order_no'])){
  48. $this->editData($data['id'],['bzsh_status'=>-1,'update_time'=>time()],$data['order_no'],20,1,'scrk_cj',$data,[
  49. 'code'=>-1,
  50. 'msg'=>'没有找到子订单号'
  51. ]);
  52. return $this->logic_tools->ret_arr(-1,"没有找到子订单号");
  53. }
  54. $info = $this->whlabel_bh_transfer->read($data['child_order_no']);
  55. $sc = explode('~',$info['scid']);
  56. $info['rkid'] = $sc[0];//配货的生产id
  57. $info['rkcode'] = $sc[1];//配货的生产单号
  58. $params = [
  59. 'org_code'=>'120',
  60. "org_wh_code"=>'02',
  61. 'rec_code'=>'120',
  62. 'rev_wh_code'=>'02',
  63. 'rkid'=>$info['rkid'],
  64. 'rkcode'=>$info['rkcode'],
  65. 'number'=>$info['number'],
  66. 'shipremarks'=>$info['shipremarks'],
  67. 'list'=>[
  68. [
  69. 'sl'=>1,
  70. 'jm'=>$info['jm'],
  71. ]
  72. ]
  73. ];
  74. $res = $this->apiyyv1->cprkCreate($params,$token);
  75. if(isset($res[0]['Data'][0]['m_isSucess'])&& $res[0]['Data'][0]['m_isSucess'] == 1){
  76. $this->editData($data['id'],['bzsh_no'=>$res[0]['Data'][0]['m_code'],'bzsh_status'=>1,'update_time'=>time()],$info['number'],20,1,'scrk_cj',$res[1],$res[0]);
  77. return $this->logic_tools->ret_arr(1,"成品入库单创建成功");
  78. }else{
  79. $this->editData($data['id'],['bzsh_status'=>-1,'update_time'=>time()],$info['number'],20,1,'scrk_cj',$res[1],$res[0]);
  80. return $this->logic_tools->ret_arr(-1,"成品入库单创建失败");
  81. }
  82. }
  83. public function checkCprk($info){
  84. $token = $this->getToken(120);
  85. $params = [
  86. [
  87. "DocNo"=>$info['bzsh_no']
  88. ]
  89. ];
  90. $res = $this->apiyyv1->cprkApprove($params,$token);
  91. //如果入库审核失败 先查询 如果不存在就标记 存在就再次审核
  92. if(!(isset($res[0]['Data'][0]['m_isSucess']) && $res[0]['Data'][0]['m_isSucess'] == 1)){
  93. //查询单子是否存在
  94. sleep(1);
  95. $res = $this->apiyyv1->cprkCx($params,$token);
  96. if(!(isset($res[0]['Data'][0]['m_isSucess']) && $res[0]['Data'][0]['m_isSucess'] == 1)){
  97. //查询失败 这里不做状态变更 只是做记录
  98. $this->editData($info['id'],['update_time'=>time()],$info['order_no'],20,2,'scrk_ck',$res[1],$res[0]);
  99. return $this->logic_tools->ret_arr(-1,"成品入库单还未审核,请稍后审核");
  100. }
  101. $res = $this->apiyyv1->cprkApprove($params,$token);
  102. }
  103. //如果再错误就 没办法了
  104. if(isset($res[0]['Data'][0]['m_isSucess']) && $res[0]['Data'][0]['m_isSucess'] == 1){
  105. $this->editData($info['id'],['bzsh_status'=>3,'update_time'=>time()],$info['order_no'],20,3,'scrk_sh',$res[1],$res[0]);
  106. return $this->logic_tools->ret_arr(-1,"成品入库单还未审核,请联系到u9核对成品入库单的状态");
  107. }
  108. }
  109. public function doDcd($data){
  110. $info = $this->whlabel_bh_transfer->read($data['child_order_no']);
  111. $time = time();
  112. $list = [
  113. [
  114. 'jm'=>$info['jm'],
  115. 'bm'=>$info['bm'],
  116. 'zh'=>$info['pm'],
  117. 'final_price'=>1,//目前先不设置 等后期财务说了再说
  118. 'title'=>$info['title'],
  119. 'dcsl'=>1,
  120. 'is_register'=>0,//商品是否被注册 先都当没注册 后面会先确认下
  121. ]
  122. ];
  123. $sc = explode('~',$info['scid']);
  124. $info['rkid'] = $sc[0];//配货的生产id
  125. $info['rkcode'] = $sc[1];//配货的生产单号
  126. $dcck = $sc[2];
  127. $dc_params = [
  128. 'gys'=>'98001',//供应商 龙盈
  129. 'number'=>$info['orderinfo'],//erp订单编码
  130. "TransOutDocType_Code"=>"TransOut001",//组织间调拨
  131. "time"=>$time,
  132. 'TransferDirection'=>0,//普通
  133. 'yyid'=>'98001',//备货都是卖给了龙熠
  134. 'shipremarks'=>$info['shipremarks'],//订单的备注
  135. 'dcckbm'=>$dcck,//调出仓库编码 完成库
  136. 'drckbm'=>"13001",//调入仓库编码 成品库
  137. 'drzz_code'=>"130",//调入组织Code
  138. 'owner_code'=>"120",//货主组织Code
  139. //'ztcode'=>$this->ztcode,//账套
  140. //'tb_org_arr'=>$this->tb_org_arr,//要同步的组织列表
  141. 'list'=>$list
  142. ];
  143. //创建调出单
  144. $dcd_res = $this->apiyyv1->dcdCrate($dc_params,$this->getToken(120));
  145. if(empty($dcd_res[0]['Data'][0]["Code"])){
  146. $this->editData($data['id'],['dc_status'=>-1,'update_time'=>time()],$info['orderinfo'],1,1,'dc',$dcd_res[1],$dcd_res[0]);
  147. return ;
  148. }
  149. //更新
  150. $dcd_no = $dcd_res[0]['Data'][0]["Code"];
  151. $this->editData($data['id'],['dc_no'=>$dcd_no,'dc_status'=>1,'update_time'=>time()],$info['orderinfo'],1,1,'dc',$dcd_res[1],$dcd_res[0]);
  152. }
  153. public function cxDrd($info){
  154. $r = $this->apiyyv1->xdlsCxDcd($info['dc_no'],$this->getToken(130));
  155. if(empty($r[0]['Data'])){
  156. return ;
  157. }
  158. //更新销售单数据
  159. //$xs_no = json_encode($r[0]['Data']);
  160. $this->editData($info['id'],['dc_status'=>3,'update_time'=>time()],$info['order_no'],8,1,'dc_xc',$r[1],$r[0]);
  161. }
  162. public function checkDrd($info){
  163. $r = $this->apiyyv1->drdcxBydcd($info['dc_no'],$this->getToken(130));
  164. //如果获取对应调入单没有成功
  165. if(empty($r[0]['Data'][0]['docno'])){
  166. $this->editData($info['id'],['dr_status'=>-1,'update_time'=>time()],$info['order_no'],6,1,'dr',$r[1],$r[0]);
  167. return ;
  168. }
  169. $dr_no = $r[0]['Data'][0]["docno"];
  170. $this->editData($info['id'],['dr_no'=>$dr_no,'dr_status'=>1,'update_time'=>time()],$info['order_no'],6,1,'dr',$r[1],$r[0]);
  171. //提交调入单
  172. $rr = $this->apiyyv1->drdSubmit(['number'=>$dr_no],$this->getToken(130));
  173. if(!$rr[0]['Data'][0]['IsSucess']){
  174. $this->editData($info['id'],['dr_status'=>-2,'update_time'=>time()],$info['order_no'],6,2,'dr',$rr[1],$rr[0]);
  175. return;
  176. }
  177. $this->editData($info['id'],['dr_status'=>2,'update_time'=>time()],$info['order_no'],6,2,'dr',$rr[1],$rr[0]);
  178. //审核调入单
  179. $rrr = $this->apiyyv1->drdApprove(['number'=>$dr_no],$this->getToken(130));
  180. if(!$rrr[0]['Data'][0]['IsSucess']){
  181. $this->editData($info['id'],['dr_status'=>-3,'update_time'=>time()],$info['order_no'],6,3,'dr',$rrr[1],$rrr[0]);
  182. return;
  183. }
  184. $this->editData($info['id'],['dr_status'=>3,'update_time'=>time()],$info['order_no'],6,3,'dr',$rrr[1],$rrr[0]);
  185. }
  186. protected function editData($zq_u9_id,$z_qu_arr,$number,$one_type,$two_type,$apply_api,$apply_data,$ret_data){
  187. $this->zzquque_u9->save($z_qu_arr,$zq_u9_id);
  188. $this->zzququeu9_logs->insert([
  189. 'oid'=>$zq_u9_id,
  190. 'number'=>$number,
  191. 'one_type'=>$one_type,
  192. 'two_type'=>$two_type,
  193. 'apply_api'=>$apply_api,
  194. 'apply_data'=>json_encode($apply_data,JSON_UNESCAPED_UNICODE),
  195. 'ret_data'=>json_encode($ret_data,JSON_UNESCAPED_UNICODE),
  196. 'create_time'=>time(),
  197. 'read_time'=>date("Y-m-d H:i:s")
  198. ]);
  199. }
  200. }