RecBalanceAP.js 28 KB

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