MRPOnHandThrow.js 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481
  1. Ext.QuickTips.init();
  2. Ext.define('erp.controller.pm.mps.MRPOnHandThrow', {
  3. extend: 'Ext.app.Controller',
  4. requires: ['erp.util.FormUtil', 'erp.util.GridUtil', 'erp.util.BaseUtil', 'erp.util.RenderUtil'],
  5. views:[
  6. 'pm.mps.MRPOnHandThrow.Viewport','pm.mps.MRPOnHandThrow.Form','pm.mps.MRPOnHandThrow.MRPOnHandThrowGrid',
  7. 'core.trigger.DbfindTrigger','core.form.FtField','core.form.FtFindField','core.form.ConDateField','core.form.ConMonthDateField','core.form.YnField',
  8. 'core.form.FtDateField','core.trigger.TextAreaTrigger','core.form.YnField','core.grid.YnColumn','core.button.Close',
  9. 'core.form.MonthDateField','core.button.TurnGoodsUp','core.button.GetB2CProductKind','core.button.ExecuteOperation',
  10. 'core.button.TurnDeviceInApply'
  11. ],
  12. GridUtil:Ext.create('erp.util.GridUtil'),
  13. init:function(){
  14. var me = this;
  15. this.FormUtil = Ext.create('erp.util.FormUtil');
  16. this.control({
  17. 'erpBatchDealGridPanel': {
  18. afterrender: function(grid){
  19. var form = Ext.getCmp('dealform');
  20. if(form && form.items.items.length > 0){
  21. //根据form字段的多少来调节form所占高度
  22. var height = window.innerHeight;
  23. if(Ext.isIE){
  24. height = screen.height*0.75;
  25. }
  26. var cw = 0;
  27. Ext.each(form.items.items, function(){
  28. cw += this.columnWidth;
  29. });
  30. cw = Math.ceil(cw);
  31. if(cw == 0){
  32. cw = 5;
  33. } else if(cw > 2 && cw <= 5){
  34. cw -= 1;
  35. } else if(cw > 5 && cw < 8){
  36. cw = 4;
  37. }
  38. cw = Math.min(cw, 5);
  39. form.setHeight(height*cw/10 + 10);
  40. grid.setHeight(height*(10 - cw)/10 - 10);
  41. }
  42. grid.down('#storeCount').update({
  43. count: grid.store.getCount()
  44. });
  45. grid.store.on('datachanged',function(store){
  46. grid.selModel.select(grid.multiselected);
  47. });
  48. },
  49. storeloaded:function(grid){
  50. grid.down('#storeCount').update({
  51. count: grid.store.getCount()
  52. });
  53. grid.multiselected=[];
  54. var remind = ''
  55. if(grid.store.getCount()>0){
  56. var records=grid.store.data.filterBy(function(record){
  57. return Ext.isEmpty(record.data['pr_uuid']) || record.data['pr_uuid']==0 ;
  58. });
  59. var remind=records.length>0?Ext.String.format('<p style="color:#436EEE;padding-left:20px;font-size:14px;">未匹配物料:{0}条;商城中不存在的品牌、器件,您可以提交品牌入库申请、器件入库申请 </p>',
  60. records.length
  61. ):'';
  62. }
  63. Ext.getCmp('dealform').down('#reminder').setText(remind);
  64. },
  65. edit:function(ed,d){
  66. if(d.field=='po_lockqty'){
  67. //发送请求更新物料锁库数
  68. me.updatelockqty(d);
  69. }
  70. },
  71. itemclick: function(view,record){
  72. me.itemclick(view,record,me);
  73. }
  74. },
  75. 'textfield[name=mdd_mpscode]':{
  76. afterrender:function(f){
  77. f.dbBaseCondition="mm_runkind ='B2C'";
  78. Ext.Ajax.request({ //获取最近一次时间的计划编号
  79. url : basePath + 'common/getFieldData.action',
  80. params: {
  81. field : "mm_code",
  82. caller : "(select * from mpsmain where mm_runenddate is not null and mm_runkind='B2C' order by mm_runenddate desc )",
  83. condition : "rownum=1"
  84. },
  85. method : 'post',
  86. callback : function(options,success,response){
  87. var res = new Ext.decode(response.responseText);
  88. if(res.exceptionInfo){
  89. return;
  90. }else if(res.success && res.data != null){
  91. f.setValue(res.data);
  92. f.autoDbfind('form', caller, f.name, f.name + ' like\'%' + f.value + '%\'');
  93. Ext.getCmp('dealform').onQuery();
  94. /*setTimeOut(function(){
  95. Ext.getCmp('dealform').onQuery();
  96. },500);*/
  97. }
  98. }
  99. });
  100. }
  101. },
  102. 'erpTurnGoodsUpButton':{//转上架申请
  103. click: function(btn){
  104. //币别税率必填
  105. var cy = Ext.getCmp("gu_currency");
  106. if(cy && (cy.value == null || cy.value == "")){
  107. showError("请选择的币别");
  108. return;
  109. }
  110. cy = Ext.getCmp("gd_taxrate");
  111. if(cy && (cy.value == null || cy.value == "")){
  112. showError("请填写税率");
  113. return;
  114. }
  115. var gridStore = me.NeedSelectThrow();
  116. if(gridStore != null){
  117. me.GoodsUp(gridStore,btn);
  118. };
  119. }
  120. },
  121. 'erpGetB2CProductKindButton':{
  122. afterrender:function(btn){
  123. btn.setDisabled(true);
  124. },
  125. click:function(){
  126. var record = Ext.getCmp('batchDealGridPanel').selModel.lastSelected;
  127. if(record && record.get("mdd_prodcode")){
  128. me.onCellItemClick(record);
  129. }
  130. }
  131. },
  132. 'erpExecuteOperationButton':{
  133. click:function(btn){
  134. me.ExecuteOperation();
  135. }
  136. },
  137. 'erpTurnDeviceInApplyButton':{//转器件入库申请
  138. click: function(btn){
  139. var gridStore = me.NeedSelectThrow();
  140. if(gridStore != null){
  141. me.TurnDeviceInApply(gridStore,btn);
  142. };
  143. }
  144. },
  145. });
  146. },
  147. countGrid: function(){
  148. //重新计算合计栏值
  149. var grid = Ext.getCmp('batchDealGridPanel');
  150. Ext.each(grid.columns, function(column){
  151. if(column.summary){
  152. var sum = 0;
  153. Ext.each(grid.store.data.items, function(item){
  154. if(item.value != null && item.value != ''){
  155. sum += Number(item.value);
  156. }
  157. });
  158. Ext.getCmp(column.dataIndex + '_sum').setText(column.text + '(sum):' + sum);
  159. } else if(column.average) {
  160. var average = 0;
  161. Ext.each(grid.store.data.items, function(item){
  162. if(item.value != null && item.value != ''){
  163. average += Number(item.value);
  164. }
  165. });
  166. average = average/grid.store.data.items.length;
  167. Ext.getCmp(column.dataIndex + '_average').setText(column.text + '(average):' + average);
  168. } else if(column.count) {
  169. var count = 0;
  170. Ext.each(grid.store.data.items, function(item){
  171. if(item.value != null && item.value != ''){
  172. count++;
  173. }
  174. });
  175. Ext.getCmp(column.dataIndex + '_count').setText(column.text + '(count):' + count);
  176. }
  177. });
  178. },
  179. NeedSelectThrow: function(){ //获取选取的需要操作的明细
  180. var grid = Ext.getCmp('batchDealGridPanel');
  181. var items = grid.getMultiSelected();
  182. var me = this;
  183. Ext.each(items, function(item, index){
  184. if(this.data[grid.keyField] != null && this.data[grid.keyField] != ''
  185. && this.data[grid.keyField] != '0' && this.data[grid.keyField] != 0){
  186. grid.multiselected.push(item);
  187. }
  188. });
  189. var records = Ext.Array.unique(grid.multiselected);
  190. var data = new Array();
  191. var form = Ext.getCmp("dealform");
  192. if(records.length>0){
  193. var bool = false;
  194. Ext.each(records, function(record, index){
  195. var f = form.fo_detailMainKeyField;
  196. if((grid.keyField && this.data[grid.keyField] != null && this.data[grid.keyField] != ''
  197. && this.data[grid.keyField] != '0' && this.data[grid.keyField] != 0)
  198. ||(f && this.data[f] != null && this.data[f] != ''
  199. && this.data[f] != '0' && this.data[f] != 0)){
  200. bool = true;
  201. var o = new Object();
  202. if(grid.keyField){
  203. o[grid.keyField] = record.data[grid.keyField];
  204. } else {
  205. params.id[index] = record.data[form.fo_detailMainKeyField];
  206. }
  207. if(grid.toField){
  208. Ext.each(grid.toField, function(f, index){
  209. var v = Ext.getCmp(f).value;
  210. if(v != null && v.toString().trim() != '' && v.toString().trim() != 'null'){
  211. if(Ext.isDate(v)){
  212. v = Ext.Date.toString(v);
  213. }
  214. o[f] = v;
  215. } else {
  216. o[f] = '';
  217. }
  218. });
  219. }
  220. if(grid.necessaryFields){
  221. Ext.each(grid.necessaryFields, function(f, index){
  222. var v = record.data[f];
  223. if(Ext.isDate(v)){
  224. v = Ext.Date.toString(v);
  225. }
  226. if(Ext.isNumber(v)){
  227. v = (v).toString();
  228. }
  229. o[f] = v;
  230. });
  231. }
  232. data.push(o);
  233. }
  234. });
  235. if(bool && !me.dealing){
  236. return data;
  237. }else {
  238. showError("没有需要处理的数据!");
  239. return ;
  240. }
  241. }else {
  242. showError("请勾选需要的明细!");
  243. return ;
  244. }
  245. },
  246. GoodsUp:function(store,btn){//转上架申请
  247. if(this.throwing) {
  248. alert('正在转上架...不要重复点击!');
  249. return;
  250. }
  251. var me = this, gridstore = store;
  252. var main = parent.Ext.getCmp("content-panel");
  253. main.getActiveTab().setLoading(true);//loading...
  254. if(btn) btn.setDisabled(true);
  255. this.throwing = true;
  256. console.log(unescape(Ext.JSON.encode(gridstore).replace(/\\/g,"%")));
  257. Ext.Ajax.request({
  258. url : basePath + "pm/MPSMain/TurnGoodsUp.action",
  259. params: {
  260. mainCode:Ext.getCmp('mdd_mpscode').value,
  261. caller:caller,
  262. gridStore:unescape(Ext.JSON.encode(gridstore).replace(/\\/g,"%")),
  263. toCode:""
  264. },
  265. timeout: 60000,
  266. method : 'post',
  267. callback : function(options,success,response){
  268. btn.setDisabled(false);
  269. me.throwing = false;
  270. main.getActiveTab().setLoading(false);
  271. var localJson = new Ext.decode(response.responseText);
  272. if(localJson.exceptionInfo){
  273. showError(localJson.exceptionInfo);
  274. return "";
  275. }
  276. if(localJson.success){
  277. if(localJson.log){
  278. showMessage("提示", localJson.log);
  279. }
  280. Ext.Msg.alert("提示", "处理成功!", function(){
  281. Ext.getCmp('dealform').onQuery();
  282. });
  283. }
  284. }
  285. });
  286. },
  287. updatelockqty:function(d){
  288. if(d.record.dirty){
  289. if(Ext.isNumber(d.value) && (d.value==0 ||d.value>0)){
  290. Ext.Ajax.request({
  291. url : basePath + "pm/mps/updatePoLockqty.action",
  292. params: {
  293. data:unescape(escape(Ext.JSON.encode(d.record.data))),
  294. caller:caller
  295. },
  296. method : 'post',
  297. callback : function(options,success,response){
  298. var localJson = new Ext.decode(response.responseText);
  299. if(localJson.exceptionInfo){
  300. d.record.set('po_lockqty',d.originalValue);
  301. showError(localJson.exceptionInfo);
  302. }
  303. if(localJson.success){
  304. d.record.commit();
  305. showMessage("提示", "修改成功");
  306. }
  307. }
  308. });
  309. }else{
  310. d.record.set('po_lockqty',d.originalValue);
  311. }
  312. }
  313. },
  314. itemclick:function(view,record,me){
  315. var show=0;
  316. me.GridUtil.onGridItemClick(view,record);
  317. var fieldValue=record.data["mdd_prodcode"];
  318. var btn = Ext.getCmp('getb2cproductkind');
  319. if(fieldValue==undefined||fieldValue==""||fieldValue==null){
  320. if(btn && !btn.disabled){
  321. btn.setDisabled(true);
  322. }
  323. }else{
  324. if(btn && btn.disabled){
  325. btn.setDisabled(false);
  326. }
  327. }
  328. },
  329. onCellItemClick:function(record){
  330. var me = this;
  331. // grid行选择
  332. var uuid = record.data['pr_uuid'] || record.data['mdd_uuid'];
  333. if(!Ext.isEmpty(uuid)){
  334. //根据uuid获取相关信息
  335. /*me.getByUUid(uuid,function(data){
  336. if(data != null){
  337. me.createWin(data);
  338. }
  339. }); */
  340. }else{
  341. var linkCaller = 'Product';
  342. var status= '';
  343. var win = new Ext.window.Window({
  344. id : 'uuWin',
  345. height : "100%",
  346. width : "80%",
  347. maximizable : true,
  348. closeAction : 'destroy',
  349. buttonAlign : 'center',
  350. layout : 'anchor',
  351. title : '获取编号',
  352. items : [{
  353. tag : 'iframe',
  354. anchor : '100% 100%',
  355. layout : 'fit',
  356. html : '<iframe id="iframe_'+linkCaller+'" src="'
  357. + basePath
  358. + 'jsps/scm/product/getUUid.jsp?type='
  359. + linkCaller+'&status='+status
  360. + '" height="100%" width="100%" frameborder="0"></iframe>'
  361. }]
  362. });
  363. win.show();
  364. }
  365. },
  366. /*createWin:function(data){
  367. var me = this, win = me.orWin;
  368. me.data=data;
  369. if (!win) {
  370. me.orWin=win = Ext.create('Ext.Window',{
  371. id : 'wind',
  372. title:'标准料号',
  373. height : '65%',
  374. width : '65%',
  375. maximizable : true,
  376. buttonAlign : 'center',
  377. closeAction:'hide',
  378. layout : 'anchor',
  379. items : [{
  380. xtype:'erpComponentGrid',
  381. anchor: '100% 100%'
  382. }],
  383. bbar: ['->',{
  384. text:'关闭',
  385. cls: 'x-btn-gray',
  386. iconCls: 'x-button-icon-close',
  387. listeners: {
  388. click: function(btn){
  389. btn.up('window').close();
  390. }
  391. }
  392. },'->'],
  393. listeners:{
  394. beforeshow:function(win){
  395. var g = win.down('erpComponentGrid');
  396. g.store.loadData(me.data);
  397. dataCount = data.length;
  398. Ext.getCmp('pagingtoolbar').afterOnLoad();
  399. }
  400. }
  401. });
  402. }
  403. win.show();
  404. }*/
  405. ExecuteOperation:function(){
  406. var code=Ext.getCmp('mdd_mpscode').getValue();
  407. /* var main = parent.Ext.getCmp('content-panel');*/
  408. var mb = new Ext.window.MessageBox();
  409. mb.wait('正在运算中','请稍后...',{
  410. interval: 10000,
  411. duration: 1000000,
  412. increment: 20,
  413. /* text: 'Runing...',*/
  414. scope: this
  415. });
  416. Ext.Ajax.request({//拿到grid的columns
  417. url : basePath + 'pm/mps/RunMrpAndGoods.action',
  418. params: {
  419. code:code,
  420. caller:caller
  421. },
  422. method : 'post',
  423. timeout: 600000,
  424. callback : function(options,success,response){
  425. mb.close();
  426. var res = new Ext.decode(response.responseText);
  427. if(res.exceptionInfo){
  428. showError(res.exceptionInfo);
  429. return;
  430. }else if(res.success){
  431. Ext.Msg.alert('提示',"运算成功",function(){
  432. var condition="mdd_mpscode='"+res.message+"' AND nvl(pr_supplytype,' ') <>'VIRTUAL' and mdd_action='UP'";
  433. window.location.href=basePath+'jsps/pm/mps/MRPOnHandThrow.jsp?whoami=MRPOnhandThrow&_noc=1&urlcondition='+condition+'&mdd_mpscode='+res.message;
  434. //window.location.href=basePath+"jsps/pm/mps/MpsAndGoodsUp.jsp?formCondition=mm_code='"+code+"'&mm_kind='B2C'";
  435. });
  436. }
  437. }
  438. });
  439. },
  440. TurnDeviceInApply:function(store,btn){//转上架申请
  441. if(this.throwing) {
  442. alert('正在转器件入库申请...不要重复点击!');
  443. return;
  444. }
  445. var me = this, gridstore = store;
  446. var main = parent.Ext.getCmp("content-panel");
  447. main.getActiveTab().setLoading(true);//loading...
  448. if(btn) btn.setDisabled(true);
  449. this.throwing = true;
  450. Ext.Ajax.request({
  451. url : basePath + "pm/MPSMain/TurnDeviceInApply.action",
  452. params: {
  453. caller:caller,
  454. gridStore:unescape(Ext.JSON.encode(gridstore).replace(/\\/g,"%")),
  455. },
  456. timeout: 60000,
  457. method : 'post',
  458. callback : function(options,success,response){
  459. btn.setDisabled(false);
  460. me.throwing = false;
  461. main.getActiveTab().setLoading(false);
  462. var localJson = new Ext.decode(response.responseText);
  463. if(localJson.exceptionInfo){
  464. showError(localJson.exceptionInfo);
  465. }
  466. if(localJson.success){
  467. if(localJson.log){
  468. showMessage("提示", localJson.log);
  469. Ext.getCmp('dealform').onQuery();
  470. var url = "jsps/common/datalist.jsp?whoami=DeviceInApply";
  471. me.FormUtil.onAdd('DeviceInApply', 'ERP器件入库申请列表', url);
  472. }
  473. }
  474. }
  475. });
  476. }
  477. });