BatchDeal.js 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823
  1. Ext.QuickTips.init();
  2. Ext.define('erp.controller.common.BatchDeal', {
  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','common.batchDeal.GridPanel','core.trigger.AddDbfindTrigger','core.button.CheckCustomerUU',
  7. 'core.trigger.DbfindTrigger','core.form.FtField','core.form.FtFindField','core.form.ConDateField','core.button.TurnMeetingButton','core.button.CheckVendorUU',
  8. 'core.trigger.TextAreaTrigger','core.form.YnField', 'core.form.MonthDateField','core.form.ConMonthDateField','core.trigger.SchedulerTrigger',
  9. 'core.grid.YnColumn','core.form.DateHourMinuteField','core.form.SeparNumber','core.grid.YnColumnNV'
  10. ],
  11. BaseUtil: Ext.create('erp.util.BaseUtil'),
  12. init:function(){
  13. var me = this;
  14. me.resized = false;
  15. this.control({
  16. '#addToTempStore':{
  17. click:function(){
  18. this.addToTempStore();
  19. }
  20. },
  21. '#checkTempStore':{
  22. click:function(){
  23. this.checkTempStore();
  24. }
  25. },
  26. 'erpBatchDealFormPanel': {
  27. alladded: function(form){
  28. var grid = Ext.getCmp('batchDealGridPanel');
  29. me.resize(form, grid);
  30. var items = form.items.items, autoQuery = false;
  31. Ext.each(items, function() {
  32. var val = getUrlParam(this.name);
  33. if(!Ext.isEmpty(val)) {
  34. this.setValue(val);
  35. autoQuery = true;
  36. if(this.xtype == 'dbfindtrigger') {
  37. this.autoDbfind('form', caller, this.name, this.name + " like '%" + val + "%'");
  38. }
  39. }
  40. });
  41. if(!form.tempStore){
  42. grid.columns[1].hide();
  43. }
  44. if(autoQuery) {
  45. setTimeout(function(){
  46. form.onQuery();
  47. }, 1000);
  48. }
  49. if(form.source=='allnavigation'){
  50. Ext.each(form.dockedItems.items[0].items.items,function(btn){
  51. btn.setDisabled(true);
  52. });
  53. }
  54. }
  55. },
  56. 'erpBatchDealGridPanel': {
  57. afterrender: function(grid){
  58. var form = Ext.getCmp('dealform');
  59. me.resize(form, grid);
  60. grid.store.on('datachanged', function(store){
  61. me.getProductWh(grid);
  62. });
  63. if(caller == 'ARBill!ToBillOut!Deal'||caller == 'APBill!ToBillOutAP!Deal'){
  64. grid.plugins[0].on('afteredit',function(){
  65. me.countAmount(grid);
  66. });
  67. grid.on('selectionchange',function(){
  68. me.countAmount(grid);
  69. });
  70. }
  71. },
  72. edit:function(ed,d){
  73. if(caller == "UpdateMakeSubMaterial" && d.field=='mp_canuseqty'){
  74. //发送请求更新可替代数
  75. me.updateMakeSub(d);
  76. }
  77. }
  78. },
  79. 'field[name=differ]': {
  80. change: function(field){
  81. var grid = Ext.getCmp('batchDealGridPanel');
  82. me.countAmount(grid);
  83. }
  84. },
  85. 'erpVastDealButton': {
  86. click: {
  87. fn: function(btn){
  88. me.vastDeal(btn.ownerCt.ownerCt.dealUrl);
  89. },
  90. lock: 2000
  91. }
  92. },
  93. 'erpVastAnalyseButton': {
  94. click: function(btn){
  95. me.vastDeal(btn.ownerCt.ownerCt.dealUrl);
  96. }
  97. },
  98. 'erpVastPrintButton': {
  99. click: function(btn){
  100. me.vastDeal(btn.ownerCt.ownerCt.dealUrl);
  101. }
  102. },
  103. 'erpVastAllotButton':{
  104. click:function(btn){
  105. me.vastDeal(btn.ownerCt.ownerCt.dealUrl);
  106. }
  107. },
  108. 'erpSaveCostDetailButton':{
  109. click:function(btn){
  110. me.vastDeal('cost/vastSaveCostDetail.action');
  111. }
  112. },
  113. 'erpDifferVoucherCreditButton':{
  114. click:function(btn){
  115. me.vastDeal('cost/vastDifferVoucherCredit.action');
  116. }
  117. },
  118. 'erpNowhVoucherCreditButton':{
  119. click:function(btn){
  120. me.vastDeal('cost/vastNowhVoucherCredit.action');
  121. }
  122. },
  123. 'SchedulerTrigger':{
  124. afterrender:function(trigger){
  125. trigger.setFields=[{field:'va_vecard',mappingfield:'ID'},{field:'va_driver',mappingfield:'VA_DRIVER'}];
  126. }
  127. },
  128. 'erpEndCRMButton':{
  129. click:function(btn){
  130. me.vastDeal('crm/chanceTurnEnd.action');
  131. }
  132. },
  133. 'monthdatefield': {
  134. afterrender: function(f) {
  135. var type = '', con = null;
  136. if(f.name == 'vo_yearmonth' && caller == 'Voucher!Audit!Deal') {
  137. type = 'MONTH-A';
  138. con = Ext.getCmp('condatefield');
  139. } else if(f.name == 'vo_yearmonth' && caller == 'Voucher!ResAudit!Deal') {
  140. type = 'MONTH-A';
  141. con = Ext.getCmp('condatefield');
  142. } else if(f.name == 'vo_yearmonth' && caller == 'CashFlowSet') {
  143. type = 'MONTH-A';
  144. con = Ext.getCmp('condatefield');
  145. } else if(f.name == 'vm_yearmonth' && caller == 'VendMonth!Cyf!Batch') {
  146. type = 'MONTH-V';
  147. con = Ext.getCmp('condatefield');
  148. } else if(f.name == 'cm_yearmonth' && caller == 'CustMonth!Cys!Batch') {
  149. type = 'MONTH-C';
  150. con = Ext.getCmp('condatefield');
  151. } else if(f.name == 'cd_yearmonth' && caller == 'Make!Cost!Deal') {
  152. type = 'MONTH-T';
  153. con = Ext.getCmp('condatefield');
  154. }
  155. if(type != '') {
  156. this.getCurrentMonth(f, type, con);
  157. }
  158. },
  159. change: function(f) {
  160. if(f.name == 'vo_yearmonth' &&( caller == 'Voucher!Audit!Deal'||caller == 'Voucher!ResAudit!Deal')){
  161. if(!Ext.isEmpty(f.value)) {
  162. var d = Ext.ComponentQuery.query('condatefield');
  163. if(d && d.length > 0)
  164. d[0].setMonthValue(f.value);
  165. }
  166. }
  167. }
  168. },
  169. 'erpRefreshQtyButton': {
  170. click : function() {
  171. this.refreshQty(caller);
  172. }
  173. },
  174. 'gridcolumn[dataIndex=md_canuseqty]':{
  175. beforerender:function(column){
  176. }
  177. }
  178. });
  179. },
  180. checkTempStore:function(){//查看暂存区
  181. var me = this, grid = Ext.getCmp('batchDealGridPanel');
  182. var checkdata=[];
  183. Ext.each(grid.tempStore,function(d){
  184. var keys=Ext.Object.getKeys(d);
  185. Ext.each(keys, function(k){
  186. checkdata.push(d[k].data);
  187. });
  188. });
  189. var checkwin=Ext.getCmp('checkwin'+caller);
  190. if(checkwin){
  191. checkwin.show();
  192. }else{
  193. var checkwin = Ext.create('Ext.Window', {
  194. id : 'checkwin'+caller,
  195. height: "100%",
  196. width: "80%",
  197. maximizable : true,
  198. buttonAlign : 'center',
  199. layout : 'anchor',
  200. items: [{
  201. tag : 'iframe',
  202. frame : true,
  203. anchor : '100% 100%',
  204. layout : 'fit',
  205. html : '<iframe id="iframe_' + caller + '" src="' + basePath + 'jsps/common/tempStore.jsp?caller=' + caller
  206. +"&condition= " +'' +'" height="100%" width="100%" frameborder="0" scrolling="no"></iframe>'
  207. }],
  208. buttons : [{
  209. name: 'cancle',
  210. text : $I18N.common.button.erpCancelButton,
  211. iconCls: 'x-button-icon-delete',
  212. cls: 'x-btn-gray',
  213. listeners: {
  214. click: function(btn) {
  215. var checkgrid=Ext.getCmp('checkwin'+caller).items.items[0].body.dom.getElementsByTagName('iframe')[0].contentWindow.Ext.getCmp("tempStoreGridPanel");
  216. checkgrid.setLoading(true);
  217. var grid=Ext.getCmp('batchDealGridPanel'),form=Ext.getCmp('dealform');
  218. var tempStore = grid.tempStore;
  219. var select=checkgrid.getMultiSelected();
  220. var keys=new Array();
  221. if(form.detailkeyfield){
  222. keys=form.detailkeyfield.split('#');
  223. }else{
  224. keys.push(grid.keyField);
  225. }
  226. var bool=false;
  227. Ext.each(select ,function(s){
  228. var key='';
  229. Ext.each(keys,function(k){
  230. key+=s.data[k];
  231. });
  232. delete tempStore[key];
  233. checkgrid.getStore().remove(s);
  234. Ext.each(grid.store.data.items, function(item){
  235. Ext.each(keys,function(k){
  236. if(item.data[k]==s.data[k]){
  237. bool=true;
  238. }else{
  239. bool=false;
  240. return false;
  241. }
  242. });
  243. if(bool){
  244. item.set('turned','否');
  245. }
  246. });
  247. });
  248. checkgrid.summary();
  249. checkgrid.setLoading(false);
  250. }
  251. }
  252. },{
  253. text :$I18N.common.button.erpExportButton,
  254. iconCls: 'x-button-icon-excel',
  255. cls: 'x-btn-gray',
  256. handler : function(btn){
  257. var checkgrid=Ext.getCmp('checkwin'+caller).items.items[0].body.dom.getElementsByTagName('iframe')[0].contentWindow.Ext.getCmp("tempStoreGridPanel");
  258. checkgrid.BaseUtil.exportGrid(checkgrid,checkgrid.title);
  259. }
  260. } , {
  261. text : $I18N.common.button.erpCloseButton,
  262. iconCls: 'x-button-icon-close',
  263. cls: 'x-btn-gray',
  264. handler : function(btn){
  265. btn.ownerCt.ownerCt.close();
  266. }
  267. }]
  268. });
  269. checkwin.show();
  270. }
  271. },
  272. addToTempStore:function(){
  273. var me = this,grid = Ext.getCmp('batchDealGridPanel'),form=Ext.getCmp('dealform');
  274. grid.setLoading(true);
  275. var keys=new Array();
  276. if(form.detailkeyfield){
  277. keys=form.detailkeyfield.split('#');//唯一标识
  278. }else{
  279. keys.push(grid.keyField);
  280. }
  281. var items = grid.getMultiSelected();
  282. Ext.each(items, function(item, index){
  283. if(this.data[grid.keyField] != null && this.data[grid.keyField] != ''
  284. && this.data[grid.keyField] != '0' && this.data[grid.keyField] != 0){
  285. var key='';
  286. var r=this.data;
  287. Ext.each(keys,function(k){
  288. key+=r[k];
  289. });
  290. grid.tempStore[key]=item;
  291. item.set('turned','是');//是否已暂存
  292. grid.getSelectionModel().deselect(item);//取消勾选
  293. }
  294. });
  295. grid.setLoading(false);
  296. },
  297. resize: function(form, grid){
  298. if(!this.resized && form && grid && form.items.items.length > 0){
  299. var height = window.innerHeight,
  300. fh = form.getEl().down('.x-panel-body>.x-column-inner').getHeight();
  301. if(Ext.isIE){
  302. height = screen.height*0.75;
  303. }
  304. form.setHeight(35 + fh);
  305. grid.setHeight(height - fh - 35);
  306. this.resized = true;
  307. }
  308. },
  309. countGrid: function(){
  310. //重新计算合计栏值
  311. var grid = Ext.getCmp('batchDealGridPanel');
  312. Ext.each(grid.columns, function(column){
  313. if(column.summary){
  314. var sum = 0;
  315. Ext.each(grid.store.data.items, function(item){
  316. if(item.value != null && item.value != ''){
  317. sum += Number(item.value);
  318. }
  319. });
  320. Ext.getCmp(column.dataIndex + '_sum').setText(column.text + '(sum):' + sum);
  321. } else if(column.average) {
  322. var average = 0;
  323. Ext.each(grid.store.data.items, function(item){
  324. if(item.value != null && item.value != ''){
  325. average += Number(item.value);
  326. }
  327. });
  328. average = average/grid.store.data.items.length;
  329. Ext.getCmp(column.dataIndex + '_average').setText(column.text + '(average):' + average);
  330. } else if(column.count) {
  331. var count = 0;
  332. Ext.each(grid.store.data.items, function(item){
  333. if(item.value != null && item.value != ''){
  334. count++;
  335. }
  336. });
  337. Ext.getCmp(column.dataIndex + '_count').setText(column.text + '(count):' + count);
  338. }
  339. });
  340. },
  341. vastDeal: function(url){
  342. var me = this, grid = Ext.getCmp('batchDealGridPanel');
  343. var checkdata=[];
  344. Ext.each(grid.tempStore,function(d){
  345. var keys=Ext.Object.getKeys(d);
  346. Ext.each(keys, function(k){
  347. checkdata.push(d[k]);
  348. });
  349. });
  350. var items = grid.getMultiSelected();
  351. if(checkdata.length>0&&items.length>0){
  352. showError('暂存区已经有数据,当前筛选界面勾选的数据无效,请取消勾选或添加到暂存区');
  353. return;
  354. }else if(items.length>0){
  355. Ext.each(items, function(item, index){
  356. if(this.data[grid.keyField] != null && this.data[grid.keyField] != ''
  357. && this.data[grid.keyField] != '0' && this.data[grid.keyField] != 0){
  358. item.index = this.data[grid.keyField];
  359. grid.multiselected.push(item);
  360. }
  361. });
  362. }else if(checkdata.length>0){
  363. grid.multiselected=checkdata;
  364. }
  365. var form = Ext.getCmp('dealform');
  366. var records = Ext.Array.unique(grid.multiselected);
  367. if(records.length > 0){
  368. if(contains(url,'common/form/vastPost.action',true) || contains(url,'common/vastPostProcess.action',true)) {//流程批量抛转
  369. this.vastPost(grid, records, url);
  370. return;
  371. }
  372. var params = new Object();
  373. params.id=new Array();
  374. params.caller = caller;
  375. var data = new Array();
  376. var bool = false;
  377. Ext.each(records, function(record, index){
  378. var f = form.fo_detailMainKeyField;
  379. if((grid.keyField && this.data[grid.keyField] != null && this.data[grid.keyField] != ''
  380. && this.data[grid.keyField] != '0' && this.data[grid.keyField] != 0)
  381. ||(f && this.data[f] != null && this.data[f] != ''
  382. && this.data[f] != '0' && this.data[f] != 0)){
  383. bool = true;
  384. var o = new Object();
  385. if(grid.keyField){
  386. o[grid.keyField] = record.data[grid.keyField];
  387. } else {
  388. params.id[index] = record.data[form.fo_detailMainKeyField];
  389. }
  390. if(grid.toField){
  391. Ext.each(grid.toField, function(f, index){
  392. var v = Ext.getCmp(f).value;
  393. if(v != null && v.toString().trim() != '' && v.toString().trim() != 'null'){
  394. if(Ext.isDate(v)){
  395. v = Ext.Date.toString(v);
  396. }
  397. o[f] = v;
  398. } else {
  399. o[f] = '';
  400. }
  401. });
  402. }
  403. if(grid.necessaryFields){
  404. Ext.each(grid.necessaryFields, function(f, index){
  405. var v = record.data[f];
  406. if(Ext.isDate(v)){
  407. v = Ext.Date.toString(v);
  408. }
  409. if(Ext.isNumber(v)){
  410. v = (v).toString();
  411. }
  412. o[f] = v;
  413. });
  414. }
  415. data.push(o);
  416. }
  417. });
  418. if(bool && !me.dealing){
  419. params.data = unescape(Ext.JSON.encode(data).replace(/\\/g,"%"));
  420. me.dealing = true;
  421. var main = parent.Ext.getCmp("content-panel");
  422. main.getActiveTab().setLoading(true);//loading...
  423. Ext.Ajax.request({
  424. url : basePath + url,
  425. params: params,
  426. method : 'post',
  427. timeout: 6000000,
  428. callback : function(options,success,response){
  429. main.getActiveTab().setLoading(false);
  430. me.dealing = false;
  431. var localJson = new Ext.decode(response.responseText);
  432. if(localJson.exceptionInfo){
  433. var str = localJson.exceptionInfo;
  434. if(str.trim().substr(0, 12) == 'AFTERSUCCESS'){
  435. str = str.replace('AFTERSUCCESS', '');
  436. grid.multiselected = new Array();
  437. Ext.getCmp('dealform').onQuery();
  438. }
  439. showError(str);return;
  440. }
  441. if(localJson.success){
  442. grid.tempStore={};//操作成功后清空暂存区数据
  443. if(localJson.log){
  444. showMessage("提示", localJson.log);
  445. }
  446. grid.multiselected = new Array();
  447. Ext.getCmp('dealform').onQuery();
  448. /*Ext.Msg.alert("提示", "处理成功!", function(){
  449. grid.multiselected = new Array();
  450. Ext.getCmp('dealform').onQuery();
  451. });*/
  452. }
  453. }
  454. });
  455. } else {
  456. showError("没有需要处理的数据!");
  457. }
  458. } else {
  459. showError("请勾选需要的明细!");
  460. }
  461. },
  462. getCurrentMonth: function(f, type, con) {
  463. Ext.Ajax.request({
  464. url: basePath + 'fa/getMonth.action',
  465. params: {
  466. type: type
  467. },
  468. callback: function(opt, s, r) {
  469. var rs = Ext.decode(r.responseText);
  470. if(rs.data) {
  471. f.setValue(rs.data.PD_DETNO);
  472. if(con != null) {
  473. con.setMonthValue(rs.data.PD_DETNO);
  474. }
  475. }
  476. }
  477. });
  478. },
  479. vastPost: function(grid, records, url) {
  480. var me = this, win = Ext.getCmp('win-post');
  481. grid._postrecords = records;
  482. if(!win) {
  483. win = Ext.create('Ext.Window', {
  484. id: 'win-post',
  485. width: '90%',
  486. height: '60%',
  487. modal: true,
  488. layout: 'anchor',
  489. items: [{
  490. xtype: 'form',
  491. anchor: '100% 100%',
  492. bodyStyle: 'background: #f1f1f1;',
  493. layout: 'column',
  494. autoScroll:true,
  495. defaults: {
  496. xtype: 'checkbox',
  497. margin: '2 10 2 10',
  498. columnWidth: .33
  499. },
  500. items: [{
  501. xtype: 'displayfield',
  502. fieldLabel: '当前账套',
  503. id: 'ma_name'
  504. },{
  505. xtype: 'displayfield',
  506. fieldLabel: '账套描述',
  507. margin: '2 10 30 10',
  508. id: 'ma_function',
  509. columnWidth: .65
  510. },{
  511. xtype: 'displayfield',
  512. fieldLabel: '目标账套',
  513. columnWidth: 1
  514. },{
  515. boxLabel: '全选',
  516. columnWidth: 1,
  517. listeners: {
  518. change: function(f) {
  519. var form = f.up('form');
  520. form.getForm().getFields().each(function(a){
  521. if(a.xtype == 'checkbox' && a.id != f.id) {
  522. a.setValue(f.value);
  523. }
  524. });
  525. }
  526. }
  527. }]
  528. }],
  529. buttonAlign: 'center',
  530. buttons: [{
  531. text: $I18N.common.button.erpConfirmButton,
  532. cls: 'x-btn-blue',
  533. handler: function(btn) {
  534. var w = btn.ownerCt.ownerCt, form = w.down('form'),
  535. from = form.down('#ma_name').value,
  536. items = form.query('checkbox[checked=true]'),
  537. data = new Array();
  538. Ext.each(items, function(item){
  539. if (item.ma_name)
  540. data.push(item.ma_name);
  541. });
  542. if(data.length > 0)
  543. me.post(w, grid, url, from, data.join(','));
  544. }
  545. },{
  546. text: $I18N.common.button.erpCloseButton,
  547. cls: 'x-btn-blue',
  548. handler: function(btn) {
  549. btn.ownerCt.ownerCt.hide();
  550. }
  551. }]
  552. });
  553. if(contains(url,'?_out=1',true)) this.getOutMasters(win);
  554. else this.getMasters(win);
  555. }
  556. win.show();
  557. },
  558. post: function(w, grid, url, from, to) {
  559. var records = grid._postrecords;
  560. w.setLoading(true);
  561. var d = new Array(), f = grid.keyField;
  562. Ext.each(records, function(r) {
  563. d.push(r.get(f));
  564. });
  565. Ext.Ajax.request({
  566. url: basePath + url,
  567. params: {
  568. caller: caller,
  569. data: d.join(','),
  570. to: to
  571. },
  572. callback: function(opt, s, r) {
  573. w.setLoading(false);
  574. if(s) {
  575. var rs = Ext.decode(r.responseText);
  576. if(rs.data) {
  577. showMessage('提示', rs.data);
  578. } else {
  579. alert('抛转成功!');
  580. }
  581. grid.multiselected = new Array();
  582. grid._postrecords = null;
  583. Ext.getCmp('dealform').onQuery();
  584. w.hide();
  585. }
  586. }
  587. });
  588. },
  589. /**
  590. * 加载系统所有账套
  591. */
  592. getMasters: function(win){
  593. Ext.Ajax.request({
  594. url: basePath + 'common/getMasters.action',
  595. method: 'get',
  596. callback: function(opt, s, res){
  597. var r = Ext.decode(res.responseText), c = r.currentMaster;
  598. if(r.masters){
  599. var form = win.down('form'), items = new Array();
  600. for(var i in r.masters) {
  601. var d = r.masters[i];
  602. if(d.ma_name != c) {
  603. if(d.ma_type == 3) {
  604. var o = {boxLabel: d.ma_name + '(' + d.ma_function + ')', ma_name: d.ma_name};
  605. items.push(o);
  606. }
  607. } else {
  608. form.down('#ma_name').setValue(c);
  609. form.down('#ma_function').setValue(d.ma_function);
  610. }
  611. }
  612. form.add(items);
  613. }
  614. }
  615. });
  616. },
  617. getOutMasters:function(win){
  618. Ext.Ajax.request({
  619. url: basePath + 'common/getOutMasters.action',
  620. method: 'get',
  621. callback: function(opt, s, res){
  622. var r = Ext.decode(res.responseText), c = r.currentMaster;
  623. if(r.data){
  624. var form = win.down('form'), items = new Array();
  625. Ext.Array.each(r.data,function(d){
  626. var o = {boxLabel: d.MO_LOCATION + '(' + d.MO_NAME + ')', ma_name: d.MO_LOCATION};
  627. items.push(o);
  628. });
  629. form.down('#ma_name').setValue(c);
  630. //form.down('#ma_function').setValue(d.ma_function);
  631. form.add(items);
  632. }
  633. }
  634. });
  635. },
  636. refreshQty : function(cal) {
  637. var tab = null;
  638. switch(cal) {
  639. case 'Purchase!ToCheckAccept!Deal' :
  640. tab = 'Purchase';
  641. break;
  642. case 'Purchase!ToNotify!Deal' :
  643. tab = 'Purchase';
  644. break;
  645. case 'Sale!ToAccept!Deal':
  646. tab = 'Sale';
  647. break;
  648. case 'SendNotify!ToProdIN!Deal':
  649. tab = 'SendNotify';
  650. break;
  651. }
  652. var form = Ext.getCmp('dealform');
  653. form.setLoading(true);
  654. Ext.Ajax.request({
  655. url : basePath + 'common/resetqty.action',
  656. params : {
  657. tab : tab
  658. },
  659. callback : function(opt, s, res) {
  660. form.setLoading(false);
  661. var r = Ext.decode(res.responseText);
  662. if (r.success) {
  663. alert('已转数量重置成功!');
  664. // form.onQuery();
  665. }
  666. }
  667. });
  668. },
  669. getProductWh: function(grid) {
  670. var prodfield = grid.getProdField();
  671. if(prodfield) {
  672. var codes = [];
  673. grid.store.each(function(d){
  674. codes.push("'" + d.get(prodfield) + "'");
  675. });
  676. Ext.Ajax.request({
  677. url: basePath + 'scm/product/getProductwh.action',
  678. params: {
  679. codes: codes.join(',')
  680. },
  681. callback: function (opt, s, r) {
  682. if(s) {
  683. var rs = Ext.decode(r.responseText);
  684. if(rs.data) {
  685. grid.productwh = rs.data;
  686. }
  687. }
  688. }
  689. });
  690. }
  691. },
  692. countAmount: function(grid){
  693. var me = this;
  694. var items = grid.selModel.selected.items;
  695. var countamount=0;
  696. var taxsum = 0,
  697. differ = Ext.getCmp('differ');
  698. priceFormat = grid.down('gridcolumn[dataIndex=abd_thisvoprice]').format,
  699. fsize = (priceFormat && priceFormat.indexOf('.') > -1) ?
  700. priceFormat.substr(priceFormat.indexOf('.') + 1).length : 6;
  701. Ext.each(items,function(item,index){
  702. var a = Number(item.data['abd_thisvoprice']);
  703. var b = Number(item.data['abd_thisvoqty']);
  704. var rate = Number(item.data['abd_taxrate']);
  705. countamount = countamount + Number(grid.BaseUtil.numberFormat(a*b,2));
  706. taxsum = taxsum + Number(grid.BaseUtil.numberFormat((a*b*rate/100)/(1+rate/100),2));
  707. });
  708. //金额合计 不能填写 自动显示所选数据条目的本次发票数*本次发票单价 的总和
  709. Ext.getCmp('pi_amounttotal').setValue(Ext.util.Format.number(countamount, "0.00"));
  710. if(differ && !Ext.isEmpty(differ.value)){
  711. Ext.getCmp('taxsum').setValue(Ext.util.Format.number(taxsum+differ.value, "0.00"));
  712. } else {
  713. Ext.getCmp('taxsum').setValue(Ext.util.Format.number(taxsum, "0.00"));
  714. }
  715. },
  716. //确认投放数量,在修改完计划投放数量时候点击按钮,将选中行的数量保存,并且限制不能超过建议变更数
  717. ConfirmThrowQty:function(){
  718. var grid = Ext.getCmp('batchDealGridPanel');
  719. var count=0;
  720. if(grid.multiselected.length==0){
  721. var items = grid.selModel.getSelection();
  722. Ext.each(items, function(item, index){
  723. if(this.data[grid.keyField] != null && this.data[grid.keyField] != ''
  724. && this.data[grid.keyField] != '0' && this.data[grid.keyField] != 0){
  725. grid.multiselected.push(item);
  726. }
  727. });
  728. }
  729. var records = Ext.Array.unique(grid.multiselected);
  730. var gridStore = new Array();
  731. var dd;
  732. if(records.length>0){
  733. Ext.each(records, function(records, index){
  734. if(records.data.md_prodcode!=''){
  735. dd=new Object();
  736. dd['mr_mpsid']=records.data.mr_mpsid;
  737. gridStore[index] = Ext.JSON.encode(dd);
  738. count++;
  739. }
  740. });
  741. this.ConfirmThrow(gridStore);
  742. } else {
  743. showError("没有需要处理的数据!");
  744. }
  745. },
  746. ComfirmThrow:function(store){
  747. if(this.throwing) {
  748. alert('正在执行...不要重复点击!');
  749. return;
  750. }
  751. var me = this, gridstore = store;
  752. var main = parent.Ext.getCmp("content-panel");
  753. main.getActiveTab().setLoading(true);//loading...
  754. var btn = Ext.getCmp('erpConfirmThrowQtyButton');
  755. if(btn) btn.setDisabled(true);
  756. this.throwing = true;
  757. Ext.Ajax.request({
  758. url : basePath + "pm/MPSMain/NeedThrow.action",
  759. params: {
  760. mainCode:Ext.getCmp('md_mpscode').value,
  761. caller:caller,
  762. gridStore:unescape(gridstore.toString().replace(/\\/g,"%")),
  763. toWhere:'AUTO',
  764. toCode:Ext.getCmp('md_ordercode').value,
  765. condition:''
  766. },
  767. timeout: 60000,
  768. method : 'post',
  769. callback : function(options,success,response){
  770. btn.setDisabled(false);
  771. me.throwing = false;
  772. main.getActiveTab().setLoading(false);
  773. var localJson = new Ext.decode(response.responseText);
  774. if(localJson.exceptionInfo){
  775. showError(localJson.exceptionInfo);
  776. return "";
  777. }
  778. if(localJson.success){
  779. if(localJson.log){
  780. showMessage("提示", localJson.log);
  781. }
  782. Ext.Msg.alert("提示", "处理成功!", function(){
  783. Ext.getCmp('dealform').onQuery();
  784. });
  785. }
  786. }
  787. });
  788. },
  789. updateMakeSub:function(d){
  790. if(d.record.dirty){
  791. if(Ext.isNumber(d.value) && (d.value==0 ||d.value>0)){
  792. Ext.Ajax.request({
  793. url : basePath + "pm/make/updateMakeSubMaterial.action",
  794. params: {
  795. data:unescape(escape(Ext.JSON.encode(d.record.data))),
  796. caller:caller
  797. },
  798. method : 'post',
  799. callback : function(options,success,response){
  800. var localJson = new Ext.decode(response.responseText);
  801. if(localJson.exceptionInfo){
  802. d.record.set('mp_canuseqty',d.originalValue);
  803. showError(localJson.exceptionInfo);
  804. }
  805. if(localJson.success){
  806. d.record.commit();
  807. showMessage("提示", "修改锁库数量成功");
  808. }
  809. }
  810. });
  811. }else{
  812. d.record.set('mp_canuseqty',d.originalValue);
  813. }
  814. }
  815. }
  816. });