PayBalanceAR.js 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682
  1. Ext.QuickTips.init();
  2. Ext.define('erp.controller.fa.arp.PayBalanceAR', {
  3. extend: 'Ext.app.Controller',
  4. FormUtil: Ext.create('erp.util.FormUtil'),
  5. GridUtil: Ext.create('erp.util.GridUtil'),
  6. BaseUtil: Ext.create('erp.util.BaseUtil'),
  7. views:[
  8. 'core.form.Panel','fa.arp.PayBalanceAR','core.grid.Panel2','core.toolbar.Toolbar',
  9. 'core.button.Save','core.button.Add','core.button.Close','core.button.Delete','core.button.Submit','core.button.ResAudit',
  10. 'core.button.Audit','core.button.ResSubmit','core.button.Post','core.button.ResPost','core.button.Update','core.button.DeleteDetail',
  11. 'core.trigger.DbfindTrigger','core.trigger.TextAreaTrigger','core.form.YnField','core.button.ResAccounted','core.button.AssMain','core.button.Accounted','core.button.StrikeBalance',
  12. 'core.grid.AssPanel','core.window.AssWindow','core.trigger.CateTreeDbfindTrigger','core.trigger.HrOrgTreeDbfindTrigger','core.button.Print','fa.arp.paybalancear.PayBalanceARGrid',
  13. 'core.button.AssDetail', 'core.form.SeparNumber'
  14. ],
  15. init:function(){
  16. var me = this;
  17. me.gridLastSelected = null;
  18. this.control({
  19. 'erpGridPanel2': {
  20. itemclick:function(selModel, record){
  21. me.onGridItemClick2(selModel, record);
  22. var btn = selModel.ownerCt.down('erpAssDetailButton');
  23. var ass = record.data['ca_asstype'];
  24. if(!Ext.isEmpty(ass)){
  25. btn.setDisabled(false);
  26. } else {
  27. btn.setDisabled(true);
  28. }
  29. }
  30. },
  31. 'recbalanceap': {
  32. itemclick:function(selModel, record){
  33. me.onGridItemClick2(selModel, record);
  34. var btn = selModel.ownerCt.down('erpAssDetailButton');
  35. var ass = record.data['ca_asstype'];
  36. if(!Ext.isEmpty(ass)){
  37. btn.setDisabled(false);
  38. } else {
  39. btn.setDisabled(true);
  40. }
  41. }
  42. },
  43. 'recbalanceAP': {
  44. itemclick: this.onGridItemClick1,
  45. afterrender:function(grid){
  46. grid.plugins[0].on('edit',function(e){
  47. me.sumAmount();
  48. });
  49. }
  50. },
  51. 'erpSaveButton': {
  52. click: function(btn){
  53. var form = me.getForm(btn);
  54. if(Ext.getCmp(form.codeField).value == null || Ext.getCmp(form.codeField).value == ''){
  55. me.BaseUtil.getRandomNumber();
  56. }
  57. this.getAramount();
  58. this.getApamount();
  59. //保存之前的一些前台的逻辑判定
  60. this.beforeSave(this);
  61. }
  62. },
  63. 'erpToolbar': {
  64. afterrender: function(tool){
  65. tool.add({
  66. xtype:'erpAssDetailButton',
  67. id: tool.id + '_assdetail',
  68. disabled:true
  69. });
  70. }
  71. },
  72. 'erpPostButton' : {
  73. afterrender: function(btn){
  74. var status = Ext.getCmp(me.getForm(btn).statusCode);
  75. if(status && status.value == 'UNPOST'){
  76. btn.show();
  77. }else{
  78. btn.hide();
  79. }
  80. },
  81. click: function(btn){
  82. me.beforePost(btn);
  83. }
  84. },
  85. 'erpResPostButton' : {
  86. afterrender: function(btn){
  87. var status = Ext.getCmp(me.getForm(btn).statusCode);
  88. if(status && status.value == 'POSTED'){
  89. btn.show();
  90. }else{
  91. btn.hide();
  92. }
  93. },
  94. click: function(btn){
  95. me.FormUtil.onResPost(Ext.getCmp('pb_id').value);
  96. }
  97. },
  98. 'erpDeleteButton' : {
  99. click: function(btn){
  100. me.FormUtil.onDelete(Ext.getCmp('pb_id').value);
  101. }
  102. },
  103. 'erpUpdateButton': {
  104. click: function(btn){
  105. me.getAramount();
  106. me.getApamount();
  107. this.beforeUpdate(this);
  108. }
  109. },
  110. 'erpAddButton': {
  111. click: function(){
  112. me.FormUtil.onAdd('addPayBalance', '新增应付冲应收单', 'jsps/fa/arp/payBalanceAR.jsp?whoami='+caller);
  113. }
  114. },
  115. 'erpCloseButton': {
  116. click: function(btn){
  117. me.FormUtil.beforeClose(me);
  118. }
  119. },
  120. 'erpSubmitButton': {
  121. afterrender: function(btn){
  122. var auditStatus = Ext.getCmp(me.getForm(btn).auditStatusCode);
  123. if(auditStatus && auditStatus.value != 'ENTERING'){
  124. btn.hide();
  125. }
  126. },
  127. click: function(btn){
  128. me.beforeSubmit(btn);
  129. }
  130. },
  131. 'erpResSubmitButton': {
  132. afterrender: function(btn){
  133. var auditStatus = Ext.getCmp(me.getForm(btn).auditStatusCode);
  134. if(auditStatus && auditStatus.value != 'COMMITED'){
  135. btn.hide();
  136. }
  137. },
  138. click: function(btn){
  139. me.FormUtil.onResSubmit(Ext.getCmp('pb_id').value);
  140. }
  141. },
  142. 'erpAuditButton': {
  143. afterrender: function(btn){
  144. var auditStatus = Ext.getCmp(me.getForm(btn).auditStatusCode);
  145. if(auditStatus && auditStatus.value != 'COMMITED'){
  146. btn.hide();
  147. }
  148. },
  149. click: function(btn){
  150. me.FormUtil.onAudit(Ext.getCmp('pb_id').value);
  151. }
  152. },
  153. 'erpResAuditButton': {
  154. afterrender: function(btn){
  155. var auditStatus = Ext.getCmp(me.getForm(btn).auditStatusCode);
  156. if(auditStatus && auditStatus.value != 'AUDITED'){
  157. btn.hide();
  158. }
  159. },
  160. click: function(btn){
  161. me.FormUtil.onResAudit(Ext.getCmp('pb_id').value);
  162. }
  163. },
  164. 'erpPrintButton': {
  165. click: function(btn){
  166. me.FormUtil.onPrint(Ext.getCmp('pb_id').value);
  167. }
  168. },
  169. 'dbfindtrigger[name=pbd_ordercode]': {
  170. aftertrigger: function(){
  171. var grid = Ext.getCmp('grid');
  172. var record = grid.selModel.lastSelected;
  173. var data = record.data['pbd_apamount']-record.data['pbd_havepay'];
  174. record.set('pbd_nowbalance', data);
  175. },
  176. afterrender:function(t){
  177. t.gridKey="pb_vendcode|pb_vmcurrency";
  178. t.mappinggirdKey="ab_vendcode|ab_currency";
  179. t.gridErrorMessage="请先选择供应商|请选择冲应付币别";
  180. }
  181. },
  182. 'dbfindtrigger[name=pbap_ordercode]': {
  183. aftertrigger: function(t){
  184. var grid = t.owner;
  185. var record = t.record;
  186. var data = record.data['pbap_amount']-record.data['pbap_havebalance'];
  187. record.set('pbap_nowbalance', data);
  188. me.sumAmount();
  189. },
  190. afterrender:function(t){
  191. t.gridKey="pb_vendorcode|pb_currency";
  192. t.mappinggirdKey="ab_vendcode|ab_currency";
  193. t.gridErrorMessage="请先选择供应商|请选择冲应付币别";
  194. }
  195. },
  196. //抓取应付发票信息
  197. 'button[name=catchap]':{
  198. click:function(btn){
  199. var params = new Object();
  200. var form = Ext.getCmp('form');
  201. var grid = Ext.getCmp('paybalancearDetailGrid');
  202. var items = grid.store.data.items;
  203. var array = new Array();
  204. var r = form.getValues();
  205. Ext.each(items,function(item,index){
  206. if(item.data[grid.necessaryField] != null && item.data[grid.necessaryField] != ''){
  207. array.push(item);
  208. }
  209. });
  210. var pb_id = Ext.getCmp('pb_id').value;
  211. if(!pb_id||(pb_id&&(pb_id == 0||pb_id==''||pb_id==null))){
  212. Ext.Msg.alert('请先保存单据');
  213. }else{
  214. if(array.length>0){
  215. Ext.Msg.alert('需要先清除明细行中的数据!');
  216. } else {
  217. params.formStore = unescape(Ext.JSON.encode(r).replace(/\\/g,"%"));
  218. //抓取
  219. Ext.Ajax.request({
  220. url : basePath + form.catchAPUrl,
  221. params : params,
  222. method : 'post',
  223. callback : function(options,success,response){
  224. me.FormUtil.getActiveTab().setLoading(false);
  225. var localJson = new Ext.decode(response.responseText);
  226. if(localJson.success){
  227. catchSuccess(function(){
  228. //add成功后刷新页面进入可编辑的页面
  229. var value = r[form.keyField];
  230. var condition = 'pbap_pbid='+value;
  231. grid.getMyData(condition);
  232. });
  233. } else if(localJson.exceptionInfo){
  234. } else{
  235. catchFailure();
  236. }
  237. }
  238. });
  239. }
  240. }
  241. }
  242. },
  243. //清除应付发票信息
  244. 'button[name=cleanap]':{
  245. click:function(btn){
  246. var grid = Ext.getCmp('paybalancearDetailGrid');
  247. warnMsg('确定清除所有明细行么?',function(t){
  248. if(t=='yes'){
  249. var form = Ext.getCmp('form');
  250. var r = form.getValues();
  251. var params = new Object();
  252. params.formStore = unescape(Ext.JSON.encode(r).replace(/\\/g,"%"));
  253. Ext.Ajax.request({
  254. url : basePath + form.cleanAPUrl,
  255. params : params,
  256. method : 'post',
  257. callback : function(options,success,response){
  258. me.FormUtil.getActiveTab().setLoading(false);
  259. var localJson = new Ext.decode(response.responseText);
  260. if(localJson.success){
  261. cleanSuccess(function(){
  262. //add成功后刷新页面进入可编辑的页面
  263. var value = r[form.keyField];
  264. var condition = 'pbap_pbid='+value;
  265. grid.getMyData(condition);
  266. });
  267. } else if(localJson.exceptionInfo){
  268. } else{
  269. cleanFailure();//@i18n/i18n.js
  270. }
  271. }
  272. });
  273. }else{
  274. return;
  275. }
  276. });
  277. }
  278. },
  279. //抓取应收发票信息
  280. 'button[name=catchar]':{
  281. click:function(btn){
  282. var params = new Object();
  283. var form = Ext.getCmp('form');
  284. var grid = Ext.getCmp('grid');
  285. var items = grid.store.data.items;
  286. var array = new Array();
  287. var r = form.getValues();
  288. Ext.each(items,function(item,index){
  289. if(item.data[grid.necessaryField] != null && item.data[grid.necessaryField] != ''){
  290. array.push(item);
  291. }
  292. });
  293. var pb_id = Ext.getCmp('pb_id').value;
  294. if(!pb_id||(pb_id&&(pb_id == 0||pb_id==''||pb_id==null))){
  295. Ext.Msg.alert('请先保存单据');
  296. }else{
  297. if(array.length>0){
  298. Ext.Msg.alert('需要先清除明细行中的数据!');
  299. } else {
  300. params.formStore = unescape(Ext.JSON.encode(r).replace(/\\/g,"%"));
  301. //抓取
  302. Ext.Ajax.request({
  303. url : basePath + form.catchARUrl,
  304. params : params,
  305. method : 'post',
  306. callback : function(options,success,response){
  307. me.FormUtil.getActiveTab().setLoading(false);
  308. var localJson = new Ext.decode(response.responseText);
  309. if(localJson.success){
  310. catchSuccess(function(){
  311. //add成功后刷新页面进入可编辑的页面
  312. var value = r[form.keyField];
  313. var params = {
  314. caller:'PayBalance!DWRC',
  315. condition:'pbd_pbid='+value
  316. };
  317. grid.GridUtil.loadNewStore(grid, params);
  318. });
  319. } else if(localJson.exceptionInfo){
  320. } else{
  321. catchFailure();
  322. }
  323. }
  324. });
  325. }
  326. }
  327. }
  328. },
  329. //清除应收发票信息
  330. 'button[name=cleanar]':{
  331. click:function(btn){
  332. var grid = Ext.getCmp('grid');
  333. warnMsg('确定清除所有明细行么?',function(t){
  334. if(t=='yes'){
  335. var form = Ext.getCmp('form');
  336. var r = form.getValues();
  337. var params = new Object();
  338. params.formStore = unescape(Ext.JSON.encode(r).replace(/\\/g,"%"));
  339. Ext.Ajax.request({
  340. url : basePath + form.cleanARUrl,
  341. params : params,
  342. method : 'post',
  343. callback : function(options,success,response){
  344. me.FormUtil.getActiveTab().setLoading(false);
  345. var localJson = new Ext.decode(response.responseText);
  346. if(localJson.success){
  347. cleanSuccess(function(){
  348. //add成功后刷新页面进入可编辑的页面
  349. var value = r[form.keyField];
  350. var params = {
  351. caller:'PayBalance!DWRC',
  352. condition:'pbd_pbid='+value
  353. };
  354. grid.GridUtil.loadNewStore(grid, params);
  355. });
  356. } else if(localJson.exceptionInfo){
  357. } else{
  358. cleanFailure();//@i18n/i18n.js
  359. }
  360. }
  361. });
  362. }else{
  363. return;
  364. }
  365. });
  366. }
  367. },
  368. //计算冲账汇率
  369. 'field[name=pb_vmamount]': {
  370. change: function(f) {
  371. var a = f.ownerCt.down('#pb_amount');
  372. if(!Ext.isEmpty(a.value)) {
  373. var r = f.ownerCt.down('#pb_vmrate'),
  374. rate = Ext.Number.toFixed(f.value/a.value, 8);
  375. if(r.value != rate)
  376. r.setValue(rate);
  377. }
  378. }
  379. },
  380. 'field[name=pb_amount]': {
  381. change: function(f) {
  382. var v = f.ownerCt.down('#pb_vmamount');
  383. if(!Ext.isEmpty(f.value)) {
  384. var r = f.ownerCt.down('#pb_vmrate'),
  385. rate = Ext.Number.toFixed(v.value/f.value, 8);
  386. if(r.value != rate)
  387. r.setValue(rate);
  388. }
  389. }
  390. }
  391. });
  392. },
  393. beforeSubmit:function(){
  394. var me = this;
  395. var grid1 = Ext.getCmp('paybalancearDetailGrid'),items1=grid1.store.data.items;
  396. var grid2 = Ext.getCmp('grid'),items2=grid2.store.data.items;
  397. var sameCurrency = true;
  398. var amount = Number(Ext.getCmp('pb_amount').getValue()); //冲应付金额
  399. var vmamount = Number(Ext.getCmp('pb_vmamount').getValue()); //冲应收金额
  400. var vmcurrency = Ext.getCmp('pb_vmcurrency').getValue(); //冲应收币别
  401. var vurrency = Ext.getCmp('pb_currency').getValue(); //冲应付币别
  402. var vmrate = Number(Ext.getCmp('pb_vmrate').getValue()); //冲账汇率
  403. var amountsum = 0;
  404. var vmamountsum = 0;
  405. Ext.each(items1,function(item,index){
  406. amountsum = amountsum+Number(item.data['pbar_nowbalance']);
  407. if(currency!=item.data['pbar_currency']){
  408. //从表币别有与主表币别不同的
  409. //抛出异常
  410. sameCurrency = false;
  411. }
  412. });
  413. Ext.each(items2,function(item,index){
  414. if(!me.GridUtil.isBlank(grid2, item.data)){
  415. vmamountsum = vmamountsum+Number(item.data['pbd_nowbalance']);
  416. if(vmcurrency!=item.data['pbd_currency']){
  417. //从表币别有与主表币别不同的
  418. //抛出异常
  419. sameCurrency = false;
  420. }
  421. }
  422. });
  423. if(Math.abs(vmamount-amount*vmrate)>=0.01){
  424. showError('冲账金额不正确,不能提交');return;
  425. }
  426. if(!sameCurrency){
  427. //从表币别有与主表币别不同的
  428. //抛出异常
  429. showError('明细行币别与币别不同,不能提交');return;
  430. }
  431. if(Math.abs(amount-amountsum)>=0.01){
  432. //冲账金额与明细行本次结算总和不等
  433. //抛出异常
  434. showError('应付发票明细行本次结算金额与冲应付金额不等,不能提交');return;
  435. }
  436. if(Math.abs(vmamount-vmamountsum)>=0.01){
  437. //冲账金额与明细行本次结算总和不等
  438. //抛出异常
  439. showError('应收发票明细行本次结算金额与冲应收金额不等,不能提交');return;
  440. }
  441. me.FormUtil.onSubmit(Ext.getCmp('pb_id').value);
  442. },
  443. beforePost:function(){
  444. var me = this;
  445. var grid1 = Ext.getCmp('paybalancearDetailGrid'),items1=grid1.store.data.items;
  446. var grid2 = Ext.getCmp('grid'),items2=grid2.store.data.items;
  447. var sameCurrency = true;
  448. var amount = Number(Ext.getCmp('pb_amount').getValue()); //冲应付金额
  449. var vmamount = Number(Ext.getCmp('pb_vmamount').getValue()); //冲应收金额
  450. var vmcurrency = Ext.getCmp('pb_vmcurrency').getValue(); //冲应收币别
  451. var currency = Ext.getCmp('pb_currency').getValue(); //冲应付币别
  452. var vmrate = Number(Ext.getCmp('pb_vmrate').getValue()); //冲账汇率
  453. var amountsum = 0;
  454. var vmamountsum = 0;
  455. Ext.each(items1,function(item,index){
  456. amountsum = amountsum+Number(item.data['pbar_nowbalance']);
  457. if(currency!=item.data['pbar_currency']){
  458. //从表币别有与主表币别不同的
  459. //抛出异常
  460. sameCurrency = false;
  461. }
  462. });
  463. Ext.each(items2,function(item,index){
  464. vmamountsum = vmamountsum+Number(item.data['rbd_nowbalance']);
  465. if(vmcurrency!=item.data['rbd_currency']){
  466. //从表币别有与主表币别不同的
  467. //抛出异常
  468. sameCurrency = false;
  469. }
  470. });
  471. if(Math.abs(vmamount-amount*vmrate)>=0.01){
  472. showError('应收冲账金额不正确,不能过账');return;
  473. }
  474. if(!sameCurrency){
  475. //从表币别有与主表币别不同的
  476. //抛出异常
  477. showError('明细行币别与币别不同,不能过账');return;
  478. }
  479. if(Math.abs(amount-amountsum)>=0.01){
  480. //冲账金额与明细行本次结算总和不等
  481. //抛出异常
  482. showError('应付发票明细行本次结算金额与冲应付金额不等,不能过账');return;
  483. }
  484. if(Math.abs(vmamount-vmamountsum)>=0.01){
  485. //冲账金额与明细行本次结算总和不等
  486. //抛出异常
  487. showError('应收发票明细行本次结算金额与冲应收金额不等,,不能过账');return;
  488. }
  489. me.FormUtil.onPost(Ext.getCmp('pb_id').value);
  490. },
  491. sumAmount:function(){
  492. var grid = Ext.getCmp('paybalancearDetailGrid');
  493. var items = grid.store.data.items;
  494. var sumamount = 0;
  495. var text='本次结算金额(sum):';
  496. Ext.each(items,function(item,index){
  497. if(item.data[grid.necessaryField] != null && item.data[grid.necessaryField] != ''){
  498. sumamount = sumamount + Ext.Number.from(item.data['pbar_nowbalance'],0);
  499. }
  500. });
  501. text=text+Ext.Number.from(sumamount,0);
  502. if(Ext.getCmp('pbar_nowbalance_sum')){
  503. Ext.getCmp('pbar_nowbalance_sum').setText(text);
  504. }
  505. },
  506. onGridItemClick1: function(selModel, record){//grid行选择
  507. this.gridLastSelected = record;
  508. var grid = Ext.getCmp('paybalancearDetailGrid');
  509. grid.lastSelectedRecord = record;
  510. if(record.data[grid.necessaryField] == null || record.data[grid.necessaryField] == ''){
  511. this.gridLastSelected.findable = true;//空数据可以在输入完code,并移开光标后,自动调出该条数据
  512. } else {
  513. this.gridLastSelected.findable = false;
  514. }
  515. this.GridUtil.onGridItemClick(selModel, record);
  516. },
  517. onGridItemClick2: function(selModel, record){//grid行选择
  518. this.gridLastSelected = record;
  519. var grid = Ext.getCmp('grid');
  520. if(record.data[grid.necessaryField] == null || record.data[grid.necessaryField] == ''){
  521. this.gridLastSelected.findable = true;//空数据可以在输入完code,并移开光标后,自动调出该条数据
  522. } else {
  523. this.gridLastSelected.findable = false;
  524. }
  525. this.GridUtil.onGridItemClick(selModel, record);
  526. },
  527. getForm: function(btn){
  528. return btn.ownerCt.ownerCt;
  529. },
  530. beforeUpdate:function(me){
  531. var mm = this;
  532. if(! mm.FormUtil.checkForm()){
  533. return;
  534. }
  535. var s1 = mm.FormUtil.checkFormDirty(form);
  536. var grid1 = Ext.getCmp('paybalancearDetailGrid'), grid2 = Ext.getCmp('grid');
  537. var param1 = me.GridUtil.getGridStore(grid1);
  538. var param2 = me.GridUtil.getGridStore(grid2);
  539. if(s1 == '' && (param1 == null || param1 == '') && (param2 == null || param2 == '')){
  540. warnMsg('未添加或修改数据,是否继续?', function(btn){
  541. if(btn == 'yes'){
  542. mm.onUpdate(param1, param2);
  543. } else {
  544. return;
  545. }
  546. });
  547. } else {
  548. mm.onUpdate(param1, param2);
  549. }
  550. },
  551. /**
  552. * 保存之前的判断
  553. */
  554. beforeSave: function(me){
  555. var mm = this;
  556. var form = Ext.getCmp('form');
  557. if(! mm.FormUtil.checkForm()){
  558. return;
  559. }
  560. if(form.keyField){
  561. if(Ext.getCmp(form.keyField).value == null || Ext.getCmp(form.keyField).value == ''){
  562. mm.FormUtil.getSeqId(form);
  563. }
  564. }
  565. var grid1 = Ext.getCmp('paybalancearDetailGrid'), grid2 = Ext.getCmp('grid');
  566. var param1 = me.GridUtil.getGridStore(grid1);
  567. var param2 = me.GridUtil.getGridStore(grid2);
  568. if((param1 == null || param1 == '') && (param2 == null || param2 == '')){
  569. warnMsg('明细表还未添加数据,是否继续?', function(btn){
  570. if(btn == 'yes'){
  571. mm.onSave(param1, param2);
  572. } else {
  573. return;
  574. }
  575. });
  576. } else {
  577. mm.onSave(param1, param2);
  578. }
  579. },
  580. onUpdate:function(param1,param2){
  581. var me = this;
  582. var form = Ext.getCmp('form');
  583. param1 = param1 == null ? [] : "[" + param1.toString() + "]";
  584. param2 = param2 == null ? [] : "[" + param2.toString() + "]";
  585. if(form.getForm().isValid()){
  586. //form里面数据
  587. Ext.each(form.items.items, function(item){
  588. if(item.xtype == 'numberfield'){
  589. //number类型赋默认值,不然sql无法执行
  590. if(item.value == null || item.value == ''){
  591. item.setValue(0);
  592. }
  593. }
  594. });
  595. var r = form.getValues();
  596. //去除ignore字段
  597. var keys = Ext.Object.getKeys(r), f;
  598. Ext.each(keys, function(k){
  599. f = form.down('#' + k);
  600. if(f && f.logic == 'ignore') {
  601. delete r[k];
  602. }
  603. });
  604. if(!me.FormUtil.contains(form.updateUrl, '?caller=', true)){
  605. form.updateUrl = form.updateUrl + "?caller=" + caller;
  606. }
  607. me.FormUtil.update(r, param1, param2);
  608. }else{
  609. me.FormUtil.checkForm();
  610. }
  611. },
  612. /**
  613. * 单据保存
  614. * @param param 传递过来的数据,比如gridpanel的数据
  615. */
  616. onSave: function(param1,param2){
  617. var me = this;
  618. var form = Ext.getCmp('form');
  619. param2 = param2 == null ? [] : "[" + param2.toString() + "]";
  620. if(form.getForm().isValid()){
  621. //form里面数据
  622. Ext.each(form.items.items, function(item){
  623. if(item.xtype == 'numberfield'){
  624. //number类型赋默认值,不然sql无法执行
  625. if(item.value == null || item.value == ''){
  626. item.setValue(0);
  627. }
  628. }
  629. });
  630. var r = form.getValues();
  631. //去除ignore字段
  632. var keys = Ext.Object.getKeys(r), f;
  633. Ext.each(keys, function(k){
  634. f = form.down('#' + k);
  635. if(f && f.logic == 'ignore') {
  636. delete r[k];
  637. }
  638. });
  639. if(!me.FormUtil.contains(form.saveUrl, '?caller=', true)){
  640. form.saveUrl = form.saveUrl + "?caller=" + caller;
  641. }
  642. me.FormUtil.save(r, param1, param2);
  643. }else{
  644. me.FormUtil.checkForm();
  645. }
  646. },
  647. //计算冲账收款金额 并写入主表应收挂账金额字段
  648. getAramount: function(){
  649. var grid = Ext.getCmp('grid');
  650. var items = grid.store.data.items;
  651. var aramount = 0;
  652. Ext.each(items,function(item,index){
  653. if(item.data['pbd_ordercode']!=null&&item.data['pbd_ordercode']!=""){
  654. aramount= aramount + Number(item.data['pbd_nowbalance']);
  655. }
  656. });
  657. Ext.getCmp('pb_aramount').setValue(Ext.Number.toFixed(aramount, 2));
  658. },
  659. //计算冲账付款金额 并写入主表 应付挂账金额字段
  660. getApamount: function(){
  661. var grid = Ext.getCmp('paybalancearDetailGrid');
  662. var items = grid.store.data.items;
  663. var apamount = 0;
  664. Ext.each(items,function(item,index){
  665. if(item.data['pbar_ordercode']!=null&&item.data['pbar_ordercode']!=""){
  666. apamount= apamount + Number(item.data['pbar_nowbalance']);
  667. }
  668. });
  669. Ext.getCmp('pb_apamount').setValue(Ext.Number.toFixed(apamount, 2));
  670. }
  671. });