MaterialLackForNotify.js 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405
  1. Ext.QuickTips.init();
  2. Ext.define('erp.controller.pm.make.MaterialLackForNotify', {
  3. extend: 'Ext.app.Controller',
  4. requires: ['erp.util.FormUtil', 'erp.util.GridUtil', 'erp.util.BaseUtil', 'erp.util.RenderUtil'],
  5. views:[
  6. 'common.batchDeal.Viewport','common.batchDeal.Form','pm.mps.MRPThrowGrid',
  7. 'core.trigger.DbfindTrigger','core.form.FtField','core.form.FtFindField','core.form.ConDateField',
  8. 'core.trigger.TextAreaTrigger','core.form.YnField', 'core.form.MonthDateField','core.form.ConMonthDateField',
  9. 'core.grid.YnColumn','core.button.PurchaseNotifyCancel','core.button.PurchaseNotifyCancelAll',
  10. 'core.button.PurchaseNotifyCancelById','core.button.PurchaseNotifyCancelByCondition','core.button.PurchaseNotifyAllCancel'
  11. ],
  12. init:function(){
  13. var me = this;
  14. me.resized = false;
  15. this.control({
  16. 'erpBatchDealFormPanel': {
  17. alladded: function(form){
  18. var grid = Ext.getCmp('batchDealGridPanel');
  19. me.resize(form, grid);
  20. var thiscondition=grid.defaultCondition;
  21. var n=thiscondition.indexOf("1=1", 0);
  22. if (n>=0){
  23. thiscondition=thiscondition.substring(0, n-1);
  24. }
  25. if (thiscondition==null || thiscondition==''){
  26. thiscondition+="1=1";
  27. }
  28. if(caller=='PurchaseNotify!Cancel'){
  29. if(Ext.getCmp('cmdstatus').value=='NOW') grid.defaultCondition=thiscondition+" and ((pr_ltinstock=-1 and (months_between(last_day(sysdate),pn_delivery)>=0 or (TO_CHAR(SYSDATE,'DD')>25 and months_between(pn_delivery,last_day(sysdate))<=1))) or (NVL(pr_ltinstock,0)>=0 and sysdate+NVL(pr_ltinstock,0)+1>pn_delivery))";
  30. else if (Ext.getCmp('cmdstatus').value=='WAIT') grid.defaultCondition=thiscondition+" and not ((pr_ltinstock=-1 and (months_between(last_day(sysdate),pn_delivery)>=0 or (TO_CHAR(SYSDATE,'DD')>25 and months_between(pn_delivery,last_day(sysdate))<=1))) or (NVL(pr_ltinstock,0)>=0 and sysdate+NVL(pr_ltinstock,0)+1>pn_delivery))";
  31. }
  32. }
  33. },
  34. 'erpBatchDealGridPanel': {
  35. afterrender: function(grid){
  36. var form = Ext.getCmp('dealform');
  37. me.resize(form, grid);
  38. }
  39. },
  40. 'combo[name=cmdstatus]':{
  41. change:function(field){
  42. var grid = Ext.getCmp('batchDealGridPanel');
  43. var thiscondition=grid.defaultCondition;
  44. var n=thiscondition.indexOf("1=1", 0);
  45. if (n>=0){
  46. thiscondition=thiscondition.substring(0, n-1);
  47. }
  48. if (thiscondition==null || thiscondition==''){
  49. thiscondition+="1=1";
  50. }
  51. if(Ext.getCmp('cmdstatus').value=='NOW') grid.defaultCondition=thiscondition+" and ((pr_ltinstock=-1 and (months_between(last_day(sysdate),pn_delivery)>=0 or (TO_CHAR(SYSDATE,'DD')>25 and months_between(pn_delivery,last_day(sysdate))<=1))) or (NVL(pr_ltinstock,0)>=0 and sysdate+NVL(pr_ltinstock,0)+1>pn_delivery))";
  52. else if (Ext.getCmp('cmdstatus').value=='WAIT') grid.defaultCondition=thiscondition+" and not ((pr_ltinstock=-1 and (months_between(last_day(sysdate),pn_delivery)>=0 or (TO_CHAR(SYSDATE,'DD')>25 and months_between(pn_delivery,last_day(sysdate))<=1))) or (NVL(pr_ltinstock,0)>=0 and sysdate+NVL(pr_ltinstock,0)+1>pn_delivery))";
  53. else{
  54. grid.defaultCondition=thiscondition;
  55. }
  56. Ext.getCmp('dealform').onQuery();
  57. }
  58. },
  59. 'erpVastDealButton': {
  60. click: function(btn){
  61. me.vastDeal(btn.ownerCt.ownerCt.dealUrl);
  62. }
  63. },
  64. 'erpVastAnalyseButton': {
  65. click: function(btn){
  66. me.vastDeal(btn.ownerCt.ownerCt.dealUrl);
  67. }
  68. },
  69. 'erpVastPrintButton': {
  70. click: function(btn){
  71. me.vastDeal(btn.ownerCt.ownerCt.dealUrl);
  72. }
  73. },
  74. 'erpVastAllotButton':{
  75. click:function(btn){
  76. me.vastDeal(btn.ownerCt.ownerCt.dealUrl);
  77. }
  78. },
  79. 'erpEndCRMButton':{
  80. click:function(btn){
  81. me.vastDeal('crm/chanceTurnEnd.action');
  82. }
  83. },
  84. 'monthdatefield': {
  85. afterrender: function(f) {
  86. var type = '', con = null;
  87. if(f.name == 'vo_yearmonth' && caller == 'Voucher!Audit!Deal') {
  88. type = 'MONTH-A';
  89. con = Ext.getCmp('condatefield');
  90. } else if(f.name == 'vo_yearmonth' && caller == 'Voucher!ResAudit!Deal') {
  91. type = 'MONTH-A';
  92. con = Ext.getCmp('condatefield');
  93. }
  94. if(type != '') {
  95. this.getCurrentMonth(f, type, con);
  96. }
  97. }
  98. }
  99. });
  100. },
  101. resize: function(form, grid){
  102. if(!this.resized && form && grid && form.items.items.length > 0){
  103. var height = window.innerHeight;
  104. if(Ext.isIE){
  105. height = screen.height*0.75;
  106. }
  107. var cw = 0;
  108. Ext.each(form.items.items, function(){
  109. if(!this.hidden && this.xtype != 'hidden') {
  110. cw += this.columnWidth;
  111. }
  112. });
  113. cw = Math.ceil(cw);
  114. if(cw == 0){
  115. cw = 5;
  116. } else if(cw > 2 && cw <= 5){
  117. cw -= 1;
  118. } else if(cw > 5 && cw < 8){
  119. cw = 4;
  120. }
  121. cw = Math.min(cw, 5);
  122. form.setHeight(height*cw/10 + 10);
  123. grid.setHeight(height*(10 - cw)/10 - 10);
  124. this.resized = true;
  125. }
  126. },
  127. countGrid: function(){
  128. //重新计算合计栏值
  129. var grid = Ext.getCmp('batchDealGridPanel');
  130. Ext.each(grid.columns, function(column){
  131. if(column.summary){
  132. var sum = 0;
  133. Ext.each(grid.store.data.items, function(item){
  134. if(item.value != null && item.value != ''){
  135. sum += Number(item.value);
  136. }
  137. });
  138. Ext.getCmp(column.dataIndex + '_sum').setText(column.text + '(sum):' + sum);
  139. } else if(column.average) {
  140. var average = 0;
  141. Ext.each(grid.store.data.items, function(item){
  142. if(item.value != null && item.value != ''){
  143. average += Number(item.value);
  144. }
  145. });
  146. average = average/grid.store.data.items.length;
  147. Ext.getCmp(column.dataIndex + '_average').setText(column.text + '(average):' + average);
  148. } else if(column.count) {
  149. var count = 0;
  150. Ext.each(grid.store.data.items, function(item){
  151. if(item.value != null && item.value != ''){
  152. count++;
  153. }
  154. });
  155. Ext.getCmp(column.dataIndex + '_count').setText(column.text + '(count):' + count);
  156. }
  157. });
  158. },
  159. vastDeal: function(url){
  160. var grid = Ext.getCmp('batchDealGridPanel');
  161. var items = grid.selModel.getSelection();
  162. Ext.each(items, function(item, index){
  163. if(this.data[grid.keyField] != null && this.data[grid.keyField] != ''
  164. && this.data[grid.keyField] != '0' && this.data[grid.keyField] != 0){
  165. item.index = this.data[grid.keyField];
  166. grid.multiselected.push(item);
  167. }
  168. });
  169. var form = Ext.getCmp('dealform');
  170. var records = Ext.Array.unique(grid.multiselected);
  171. if(records.length > 0){
  172. if('common/form/vastPost.action' == url) {
  173. this.vastPost(grid, records, url);
  174. return;
  175. }
  176. var params = new Object();
  177. params.id=new Array();
  178. params.caller = caller;
  179. var data = new Array();
  180. var bool = false;
  181. Ext.each(records, function(record, index){
  182. var f = form.fo_detailMainKeyField;
  183. if((grid.keyField && this.data[grid.keyField] != null && this.data[grid.keyField] != ''
  184. && this.data[grid.keyField] != '0' && this.data[grid.keyField] != 0)
  185. ||(f && this.data[f] != null && this.data[f] != ''
  186. && this.data[f] != '0' && this.data[f] != 0)){
  187. bool = true;
  188. var o = new Object();
  189. if(grid.keyField){
  190. o[grid.keyField] = record.data[grid.keyField];
  191. } else {
  192. params.id[index] = record.data[form.fo_detailMainKeyField];
  193. }
  194. if(grid.toField){
  195. Ext.each(grid.toField, function(f, index){
  196. var v = Ext.getCmp(f).value;
  197. if(v != null && v.toString().trim() != '' && v.toString().trim() != 'null'){
  198. o[f] = v;
  199. }
  200. });
  201. }
  202. if(grid.necessaryFields){
  203. Ext.each(grid.necessaryFields, function(f, index){
  204. var v = record.data[f];
  205. if(Ext.isDate(v)){
  206. v = Ext.Date.toString(v);
  207. }
  208. o[f] = v;
  209. });
  210. }
  211. data.push(o);
  212. }
  213. });
  214. if(bool){
  215. params.data = unescape(Ext.JSON.encode(data).replace(/\\/g,"%"));;
  216. var main = parent.Ext.getCmp("content-panel");
  217. main.getActiveTab().setLoading(true);//loading...
  218. Ext.Ajax.request({
  219. url : basePath + url,
  220. params: params,
  221. method : 'post',
  222. timeout: 6000000,
  223. callback : function(options,success,response){
  224. main.getActiveTab().setLoading(false);
  225. var localJson = new Ext.decode(response.responseText);
  226. if(localJson.exceptionInfo){
  227. var str = localJson.exceptionInfo;
  228. if(str.trim().substr(0, 12) == 'AFTERSUCCESS'){
  229. str = str.replace('AFTERSUCCESS', '');
  230. grid.multiselected = new Array();
  231. Ext.getCmp('dealform').onQuery();
  232. }
  233. showError(str);return;
  234. }
  235. if(localJson.success){
  236. if(localJson.log){
  237. showMessage("提示", localJson.log);
  238. }
  239. Ext.Msg.alert("提示", "处理成功!", function(){
  240. grid.multiselected = new Array();
  241. Ext.getCmp('dealform').onQuery();
  242. });
  243. }
  244. }
  245. });
  246. } else {
  247. showError("没有需要处理的数据!");
  248. }
  249. }
  250. },
  251. getCurrentMonth: function(f, type, con) {
  252. Ext.Ajax.request({
  253. url: basePath + 'fa/getMonth.action',
  254. params: {
  255. type: type
  256. },
  257. callback: function(opt, s, r) {
  258. var rs = Ext.decode(r.responseText);
  259. if(rs.data) {
  260. f.setValue(rs.data.PD_DETNO);
  261. if(con != null) {
  262. con.setMonthValue(rs.data.PD_DETNO);
  263. }
  264. }
  265. }
  266. });
  267. },
  268. vastPost: function(grid, records, url) {
  269. var me = this, win = Ext.getCmp('win-post');
  270. grid._postrecords = records;
  271. if(!win) {
  272. win = Ext.create('Ext.Window', {
  273. id: 'win-post',
  274. width: '70%',
  275. height: '60%',
  276. modal: true,
  277. layout: 'anchor',
  278. items: [{
  279. xtype: 'form',
  280. anchor: '100% 100%',
  281. bodyStyle: 'background: #f1f1f1;',
  282. layout: 'column',
  283. defaults: {
  284. xtype: 'checkbox',
  285. margin: '2 10 2 10',
  286. columnWidth: .33
  287. },
  288. items: [{
  289. xtype: 'displayfield',
  290. fieldLabel: '当前账套',
  291. id: 'ma_name'
  292. },{
  293. xtype: 'displayfield',
  294. fieldLabel: '账套描述',
  295. margin: '2 10 30 10',
  296. id: 'ma_function',
  297. },{
  298. xtype: 'displayfield',
  299. fieldLabel: '目标账套',
  300. columnWidth: 1
  301. },{
  302. boxLabel: '全选',
  303. columnWidth: 1,
  304. listeners: {
  305. change: function(f) {
  306. var form = f.up('form');
  307. form.getForm().getFields().each(function(a){
  308. if(a.xtype == 'checkbox' && a.id != f.id) {
  309. a.setValue(f.value);
  310. }
  311. });
  312. }
  313. }
  314. }]
  315. }],
  316. buttonAlign: 'center',
  317. buttons: [{
  318. text: $I18N.common.button.erpConfirmButton,
  319. cls: 'x-btn-blue',
  320. handler: function(btn) {
  321. var w = btn.ownerCt.ownerCt, form = w.down('form'),
  322. from = form.down('#ma_name').value,
  323. items = form.query('checkbox[checked=true]'),
  324. data = new Array();
  325. Ext.each(items, function(item){
  326. if (item.ma_name)
  327. data.push(item.ma_name);
  328. });
  329. if(data.length > 0)
  330. me.post(w, grid, url, from, data.join(','));
  331. }
  332. },{
  333. text: $I18N.common.button.erpCloseButton,
  334. cls: 'x-btn-blue',
  335. handler: function(btn) {
  336. btn.ownerCt.ownerCt.hide();
  337. }
  338. }]
  339. });
  340. this.getMasters(win);
  341. }
  342. win.show();
  343. },
  344. post: function(w, grid, url, from, to) {
  345. var records = grid._postrecords;
  346. w.setLoading(true);
  347. var d = new Array(), f = grid.keyField;
  348. Ext.each(records, function(r) {
  349. d.push(r.get(f));
  350. });
  351. Ext.Ajax.request({
  352. url: basePath + url,
  353. params: {
  354. caller: caller,
  355. data: d.join(','),
  356. to: to
  357. },
  358. callback: function(opt, s, r) {
  359. w.setLoading(false);
  360. if(s) {
  361. var rs = Ext.decode(r.responseText);
  362. if(rs.data) {
  363. showMessage('提示', rs.data);
  364. } else {
  365. alert('抛转成功!');
  366. }
  367. grid.multiselected = new Array();
  368. grid._postrecords = null;
  369. Ext.getCmp('dealform').onQuery();
  370. w.hide();
  371. }
  372. }
  373. });
  374. },
  375. /**
  376. * 加载系统所有账套
  377. */
  378. getMasters: function(win){
  379. Ext.Ajax.request({
  380. url: basePath + 'common/getMasters.action',
  381. method: 'get',
  382. callback: function(opt, s, res){
  383. var r = Ext.decode(res.responseText), c = r.currentMaster;
  384. if(r.masters){
  385. var form = win.down('form'), items = new Array();
  386. for(var i in r.masters) {
  387. var d = r.masters[i];
  388. if(d.ma_name != c) {
  389. if(d.ma_type == 3) {
  390. var o = {boxLabel: d.ma_name + '(' + d.ma_function + ')', ma_name: d.ma_name};
  391. items.push(o);
  392. }
  393. } else {
  394. form.down('#ma_name').setValue(c);
  395. form.down('#ma_function').setValue(d.ma_function);
  396. }
  397. }
  398. form.add(items);
  399. }
  400. }
  401. });
  402. }
  403. });