MaterialLackForNotify.js 13 KB

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