PayBalanceAR.js 23 KB

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