RecBalanceAP.js 27 KB

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