GeneralLedger.js 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628
  1. Ext.QuickTips.init();
  2. Ext.define('erp.controller.fa.gla.GeneralLedger', {
  3. extend: 'Ext.app.Controller',
  4. BaseUtil: Ext.create('erp.util.BaseUtil'),
  5. views: ['core.trigger.DbfindTrigger', 'fa.gla.GeneralLedger', 'fa.gla.Ledger', 'core.form.MonthDateField',
  6. 'core.form.ConMonthDateField', 'core.form.YearDateField', 'core.trigger.CateTreeDbfindTrigger'],
  7. init:function(){
  8. var me = this;
  9. this.control({
  10. 'button[id=query]': {
  11. afterrender: function(btn) {
  12. setTimeout(function(){
  13. me.showFilterPanel(btn);
  14. me.getCateSetting();
  15. }, 200);
  16. },
  17. click: function(btn) {
  18. me.showFilterPanel(btn);
  19. }
  20. },
  21. 'ledger': {
  22. itemclick: function(selModel, record) {
  23. me.loadDetail(selModel.ownerCt.store, record);
  24. }
  25. },
  26. 'button[name=export]': {
  27. click: function() {
  28. var grid = Ext.getCmp('ledger');
  29. me.BaseUtil.exportGrid(grid, '总账');
  30. }
  31. },
  32. '#ak_asscode': {
  33. change: function(f) {
  34. if(!Ext.isEmpty(f.value)) {
  35. var ch = f.up('window').down('#chkall');
  36. if(!ch.value) {
  37. ch.setValue(true);
  38. }
  39. }
  40. }
  41. }
  42. });
  43. },
  44. showFilterPanel: function(btn) {
  45. var filter = Ext.getCmp(btn.getId() + '-filter');
  46. if(!filter) {
  47. filter = this.createFilterPanel(btn);
  48. }
  49. filter.show();
  50. },
  51. hideFilterPanel: function(btn) {
  52. var filter = Ext.getCmp(btn.getId() + '-filter');
  53. if(filter) {
  54. filter.hide();
  55. }
  56. },
  57. query: function(cond) {
  58. var grid = Ext.getCmp('ledger');
  59. if(cond.cm_yearmonth.end - cond.cm_yearmonth.begin > 1) {// 期间跨度大于2个月
  60. if(!cond.ca_code) {
  61. showError('当前期间跨度较大,请选择科目号.');
  62. return;
  63. }
  64. }
  65. grid.setLoading(true);
  66. Ext.Ajax.request({
  67. url: basePath + 'fa/ars/getGeneralLedger.action',
  68. params: {
  69. condition: Ext.encode(cond)
  70. },
  71. callback: function(opt, s, r) {
  72. var res = Ext.decode(r.responseText);
  73. if(grid && res.data) {
  74. var cmc_currency = grid.down('gridcolumn[dataIndex=cmc_currency]'),
  75. am_asscode = grid.down('gridcolumn[dataIndex=am_asscode]'),
  76. am_assname = grid.down('gridcolumn[dataIndex=am_assname]');
  77. grid.store.loadData(res.data);
  78. if(cond.cmc_currency != '0') {//显示原币
  79. if(!cmc_currency) {
  80. grid.reconfigure(grid.store, grid.doubleColumns);
  81. }
  82. } else {//只显示本币
  83. if(cmc_currency) {
  84. grid.reconfigure(grid.store, grid.defaultColumns);
  85. }
  86. }
  87. if(cond.chkall) {
  88. if(am_assname.hidden)
  89. am_assname.show();
  90. if(am_asscode.hidden)
  91. am_asscode.show();
  92. } else {
  93. if(!am_assname.hidden)
  94. am_assname.hide();
  95. if(!am_asscode.hidden)
  96. am_asscode.hide();
  97. }
  98. }
  99. grid.setLoading(false);
  100. }
  101. });
  102. },
  103. getCondition: function(pl) {
  104. var r = new Object(),v;
  105. Ext.each(pl.items.items, function(item){
  106. if(item.getValue !== undefined) {
  107. v = item.getValue();
  108. if(!Ext.isEmpty(v)) {
  109. r[item.id] = v;
  110. }
  111. }
  112. });
  113. var tb = Ext.getCmp('gl_info_ym');
  114. if(tb)
  115. tb.updateInfo(r);
  116. return r;
  117. },
  118. loadDetail: function(store, record) {
  119. var ym = record.get('cm_yearmonth'),
  120. caCode = this._getCaCode(store, record),
  121. cr = record.get('cmc_currency'),
  122. at = record.get('am_asstype'),
  123. ac = record.get('am_asscode'),
  124. an = record.get('am_assname'),
  125. un = Ext.getCmp('chkhaveun').value;
  126. this.BaseUtil.onAdd('GLDetail_' + ym + '_' + caCode, '明细账',
  127. 'jsps/fa/gla/glDetail.jsp?y=' + ym + '&c=' + caCode + '&cr=' + cr + '&at=' + at + '&ac=' + ac + '&an=' + an + '&un=' + un);
  128. },
  129. _getCaCode: function(store, record) {
  130. var c = record.get('ca_code');
  131. if(Ext.isEmpty(c)) {
  132. return this._getCaCode(store, store.getAt(store.indexOf(record) - 1));
  133. }
  134. return c;
  135. },
  136. getCateSetting : function() {
  137. var me = this;
  138. Ext.Ajax.request({
  139. url : basePath + 'common/getFieldData.action',
  140. params: {
  141. caller: 'Setting',
  142. field: 'se_value',
  143. condition: 'se_what=\'CateTreeSearch\''
  144. },
  145. method : 'post',
  146. async : false,
  147. callback : function(opt, s, res){
  148. var r = new Ext.decode(res.responseText);
  149. if(r.exceptionInfo){
  150. showError(r.exceptionInfo);
  151. } else if(r.success && r.data == 'true' ){
  152. me.CateTreeSearch = true;
  153. }
  154. }
  155. });
  156. },
  157. createYearmonthField : function() {
  158. return Ext.create('erp.view.core.form.ConMonthDateField', {
  159. id: 'cm_yearmonth',
  160. name: 'cm_yearmonth',
  161. fieldLabel: '期间',
  162. labelWidth: 80,
  163. margin: '10 2 2 10',
  164. columnWidth: .51,
  165. getValue: function() {
  166. if(!Ext.isEmpty(this.value)) {
  167. return {begin: this.firstVal, end: this.secondVal};
  168. }
  169. return null;
  170. }
  171. });
  172. },
  173. createCateLevelField : function() {
  174. return Ext.create('Ext.form.FieldContainer', {
  175. fieldLabel: '科目级别',
  176. labelWidth: 80,
  177. height: 23,
  178. layout: 'hbox',
  179. columnWidth: .51,
  180. id: 'cm_catelevel',
  181. defaults: {
  182. fieldStyle : "background:#FFFAFA;color:#515151;"
  183. },
  184. items: [{
  185. xtype: 'combo',
  186. flex: 1,
  187. editable: false,
  188. name: 'ca_level1',
  189. id: 'ca_level1',
  190. displayField: 'display',
  191. valueField: 'value',
  192. queryMode: 'local',
  193. value: 1,
  194. store: Ext.create('Ext.data.Store', {
  195. fields: ['display', 'value'],
  196. data : [
  197. {"display": 1, "value": 1},
  198. {"display": 2, "value": 2},
  199. {"display": 3, "value": 3},
  200. {"display": 4, "value": 4},
  201. {"display": 5, "value": 5}
  202. ]
  203. })
  204. },{
  205. xtype: 'combo',
  206. flex: 1,
  207. name: 'ca_level2',
  208. id: 'ca_level2',
  209. editable: false,
  210. displayField: 'display',
  211. valueField: 'value',
  212. queryMode: 'local',
  213. value: 5,
  214. store: Ext.create('Ext.data.Store', {
  215. fields: ['display', 'value'],
  216. data : [
  217. {"display": 1, "value": 1},
  218. {"display": 2, "value": 2},
  219. {"display": 3, "value": 3},
  220. {"display": 4, "value": 4},
  221. {"display": 5, "value": 5}
  222. ]
  223. })
  224. }],
  225. getValue: function() {
  226. var a = this.down('#ca_level1').value,b = this.down('#ca_level2').value;
  227. return {begin: Math.min(a, b), end: Math.max(a, b)};
  228. }
  229. });
  230. },
  231. createCateField : function() {
  232. var me = this ,t, t1;
  233. if (me.CateTreeSearch) {
  234. t = Ext.create('Ext.form.field.Trigger', {
  235. triggerCls: 'x-form-search-trigger',
  236. id: 'vd_catecode',
  237. name: 'vd_catecode',
  238. columnWidth: 0.4,
  239. onTriggerClick: function() {
  240. me.showCateTree(this);
  241. },
  242. listeners: {
  243. aftertrigger: function(t, d) {
  244. t.setValue(d[0].raw.data.ca_code);
  245. t.ownerCt.down('#vd_catename').setValue(d[0].raw.data.ca_name);
  246. }
  247. }
  248. });
  249. t1 = Ext.create('Ext.form.field.Trigger', {
  250. triggerCls: 'x-form-search-trigger',
  251. id: 'vd_catecode1',
  252. name: 'vd_catecode1',
  253. columnWidth: 0.4,
  254. onTriggerClick: function() {
  255. me.showCateTree(this);
  256. },
  257. listeners: {
  258. aftertrigger: function(t, d) {
  259. t.setValue(d[0].raw.data.ca_code);
  260. t.ownerCt.down('#vd_catename1').setValue(d[0].raw.data.ca_name);
  261. }
  262. }
  263. });
  264. } else {
  265. t = Ext.create('erp.view.core.trigger.DbfindTrigger', {
  266. id: 'vd_catecode',
  267. name: 'vd_catecode',
  268. columnWidth: 0.4,
  269. listeners: {
  270. aftertrigger: function(t, d) {
  271. t.setValue(d.data.ca_code);
  272. t.ownerCt.down('#vd_catename').setValue(d.data.ca_name);
  273. }
  274. }
  275. });
  276. t1 = Ext.create('erp.view.core.trigger.DbfindTrigger', {
  277. id: 'vd_catecode1',
  278. name: 'vd_catecode1',
  279. columnWidth: 0.4,
  280. listeners: {
  281. aftertrigger: function(t, d) {
  282. t.setValue(d.data.ca_code);
  283. t.ownerCt.down('#vd_catename1').setValue(d.data.ca_name);
  284. }
  285. }
  286. });
  287. }
  288. return Ext.create('Ext.form.FieldContainer', {
  289. fieldLabel: '科目编号',
  290. labelWidth: 80,
  291. layout: 'column',
  292. columnWidth: 1,
  293. height: 56,
  294. id: 'ca_code',
  295. defaults: {
  296. fieldStyle : "background:#FFFAFA;color:#515151;"
  297. },
  298. items: [t, {
  299. xtype: 'textfield',
  300. name: 'vd_catename',
  301. id: 'vd_catename',
  302. columnWidth: 0.6,
  303. readOnly: true,
  304. fieldStyle: 'background:#f1f1f1;'
  305. },t1,{
  306. xtype: 'textfield',
  307. name: 'vd_catename1',
  308. id: 'vd_catename1',
  309. columnWidth: 0.6,
  310. readOnly: true,
  311. fieldStyle: 'background:#f1f1f1;'
  312. }],
  313. getValue: function() {
  314. var a = this.down('#vd_catecode').value,b = this.down('#vd_catecode1').value,
  315. x = Ext.isEmpty(a), y = Ext.isEmpty(b);
  316. if(x && y) {
  317. return null;
  318. } else if(x && !y) {
  319. a = b;
  320. } else if(!x && y){
  321. b = a;
  322. }
  323. return {begin: a, end: b};
  324. }
  325. });
  326. },
  327. createCurrencyField : function() {
  328. var me = this;
  329. return Ext.create('Ext.form.field.ComboBox', {
  330. fieldLabel: '币别',
  331. labelWidth: 80,
  332. height: 23,
  333. layout: 'hbox',
  334. columnWidth: .51,
  335. id: 'cmc_currency',
  336. queryMode: 'local',
  337. displayField: 'display',
  338. valueField: 'value',
  339. editable: false,
  340. store: Ext.create('Ext.data.Store', {
  341. fields: ['display', 'value'],
  342. data : [
  343. {"display": '本位币', "value": '0'},
  344. {"display": '所有币别', "value": '99'}
  345. ]
  346. }),
  347. value: '0',
  348. listeners: {
  349. afterrender: function(f) {
  350. me.getCurrency(f);
  351. }
  352. }
  353. });
  354. },
  355. createAssField : function() {
  356. return Ext.create('Ext.form.FieldContainer', {
  357. fieldLabel: '辅助核算',
  358. labelWidth: 80,
  359. height: 23,
  360. layout: 'hbox',
  361. columnWidth: 1,
  362. id: 'vds_asscode',
  363. defaults: {
  364. fieldStyle : "background:#FFFAFA;color:#515151;"
  365. },
  366. items: [{
  367. labelWidth: 35,
  368. xtype: 'dbfindtrigger',
  369. flex: 0.2,
  370. id: 'ak_name',
  371. name: 'ak_name',
  372. listeners: {
  373. aftertrigger: function(f, r) {
  374. if(!Ext.isEmpty(f.value)) {
  375. f.asskind = r.data;
  376. var c = Ext.getCmp('ak_asscode'),
  377. n = Ext.getCmp('ak_assname');
  378. c.name = r.data.ak_asscode;
  379. n.name = r.data.ak_assname;
  380. } else {
  381. f.asskind = null;
  382. }
  383. },
  384. change: function() {
  385. var a = Ext.getCmp('ak_asscode'),
  386. b = Ext.getCmp('ak_assname');
  387. a.setValue(null);
  388. b.setValue(null);
  389. }
  390. }
  391. },{
  392. xtype: 'dbfindtrigger',
  393. id: 'ak_asscode',
  394. flex: 0.2,
  395. listeners: {
  396. beforetrigger: function(f) {
  397. var a = Ext.getCmp('ak_name');
  398. f.dbBaseCondition = null;
  399. if(!a.asskind) {
  400. a.focus(false, 200);
  401. showError('请先选择核算项!');
  402. return false;
  403. } else if(f.name == 'akd_asscode') {
  404. f.dbBaseCondition = 'ak_name=\'' + a.value + '\'';
  405. }
  406. },
  407. aftertrigger: function(f, r) {
  408. var a = Ext.getCmp('ak_name'),
  409. n = Ext.getCmp('ak_assname');
  410. if(a.asskind) {
  411. f.setValue(r.data[a.asskind.ak_asscode]);
  412. n.setValue(r.data[a.asskind.ak_assname]);
  413. }
  414. }
  415. }
  416. },{
  417. xtype: 'textfield',
  418. id: 'ak_assname',
  419. flex: 0.6,
  420. readOnly: true,
  421. fieldStyle: 'background:#f1f1f1;'
  422. }],
  423. getValue: function() {
  424. var a = Ext.getCmp('ak_name'),
  425. c = Ext.getCmp('ak_asscode');
  426. if(a.asskind) {
  427. return {am_asstype: a.asskind.ak_name, am_asscode: c.value};
  428. }
  429. return null;
  430. }
  431. });
  432. },
  433. createFilterPanel: function(btn) {
  434. var me = this;
  435. var filter = Ext.create('Ext.Window', {
  436. id: btn.getId() + '-filter',
  437. style: 'background:#f1f1f1',
  438. title: '筛选条件',
  439. width: 500,
  440. height: 415,
  441. layout: 'column',
  442. defaults: {
  443. margin: '2 2 2 10'
  444. },
  445. items: [me.createYearmonthField(), me.createCateLevelField(), me.createCateField(),
  446. me.createCurrencyField(), me.createAssField(),{
  447. xtype: 'checkbox',
  448. id: 'chkall',
  449. name: 'chkall',
  450. columnWidth: .5,
  451. boxLabel: '显示辅助核算'
  452. },{
  453. xtype: 'checkbox',
  454. id: 'chkno',
  455. name: 'chkno',
  456. columnWidth: .5,
  457. boxLabel: '无发生额不显示'
  458. },{
  459. xtype: 'checkbox',
  460. id: 'chkzeroandno',
  461. name: 'chkzeroandno',
  462. columnWidth: .5,
  463. boxLabel: '余额为零且无发生额不显示'
  464. },{
  465. xtype: 'checkbox',
  466. id: 'chkhaveun',
  467. name: 'chkhaveun',
  468. columnWidth: .5,
  469. boxLabel: '包含未记账凭证'
  470. },{
  471. xtype: 'checkbox',
  472. id: 'chktotal',
  473. name: 'chktotal',
  474. columnWidth: .5,
  475. boxLabel: '显示汇总信息'
  476. },{
  477. xtype: 'checkbox',
  478. id: 'chkDispLeaf',
  479. name: 'chkDispLeaf',
  480. columnWidth: .5,
  481. boxLabel: '只显示末级科目'
  482. },{
  483. xtype: 'checkbox',
  484. id: 'chkdis',
  485. name: 'chkdis',
  486. columnWidth: 1,
  487. boxLabel: '显示禁用科目'
  488. },{
  489. xtype: 'checkbox',
  490. id: 'yearbegin',
  491. name: 'yearbegin',
  492. columnWidth: .5,
  493. boxLabel: '显示年初余额',
  494. checked: true
  495. },{
  496. xtype: 'checkbox',
  497. id: 'monthbegin',
  498. name: 'monthbegin',
  499. columnWidth: .5,
  500. boxLabel: '显示期初余额',
  501. checked: true
  502. },{
  503. xtype: 'checkbox',
  504. id: 'monthaccount',
  505. name: 'monthaccount',
  506. columnWidth: .5,
  507. boxLabel: '显示本期合计',
  508. checked: true
  509. },{
  510. xtype: 'checkbox',
  511. id: 'yearaccount',
  512. name: 'yearaccount',
  513. columnWidth: .5,
  514. boxLabel: '显示本年累计',
  515. checked: true
  516. },{
  517. xtype: 'checkbox',
  518. id: 'yearend',
  519. name: 'yearend',
  520. columnWidth: .5,
  521. boxLabel: '显示年末余额',
  522. checked: true
  523. }],
  524. buttonAlign: 'center',
  525. buttons: [{
  526. text: '确定',
  527. width: 60,
  528. cls: 'x-btn-blue',
  529. handler: function(btn) {
  530. var fl = btn.ownerCt.ownerCt,
  531. con = me.getCondition(fl);
  532. me.query(con);
  533. fl.hide();
  534. }
  535. },{
  536. text: '关闭',
  537. width: 60,
  538. cls: 'x-btn-blue',
  539. handler: function(btn) {
  540. var fl = btn.ownerCt.ownerCt;
  541. fl.hide();
  542. }
  543. }]
  544. });
  545. this.getCurrentMonth(filter.down('#cm_yearmonth'));
  546. return filter;
  547. },
  548. getCurrency: function(f) {
  549. Ext.Ajax.request({
  550. url : basePath + 'common/getFieldDatas.action',
  551. async: false,
  552. params: {
  553. caller: 'Currencys',
  554. field: 'cr_name',
  555. condition: 'cr_statuscode=\'CANUSE\''
  556. },
  557. method : 'post',
  558. callback : function(options,success,response){
  559. var rs = new Ext.decode(response.responseText);
  560. if(rs.exceptionInfo){
  561. showError(rs.exceptionInfo);return null;
  562. }
  563. if(rs.success && rs.data){
  564. var cr = rs.data.split('#'),c = new Array();
  565. Ext.each(cr, function(r){
  566. c.push({display: r, value: r});
  567. });
  568. f.store.add(c);
  569. }
  570. }
  571. });
  572. },
  573. getCurrentMonth: function(f) {
  574. Ext.Ajax.request({
  575. url: basePath + 'fa/getMonth.action',
  576. params: {
  577. type: 'MONTH-A'
  578. },
  579. callback: function(opt, s, r) {
  580. var rs = Ext.decode(r.responseText);
  581. if(rs.data) {
  582. f.setValue(rs.data.PD_DETNO);
  583. }
  584. }
  585. });
  586. },
  587. showCateTree: function(f) {
  588. var cawin = f.win;
  589. if(!cawin) {
  590. f.win = cawin = new Ext.window.Window({
  591. title: '科目查找',
  592. height: "100%",
  593. width: "80%",
  594. maximizable : true,
  595. buttonAlign : 'center',
  596. layout : 'anchor',
  597. modal:true,
  598. items: [{
  599. tag : 'iframe',
  600. frame : true,
  601. anchor : '100% 100%',
  602. layout : 'fit',
  603. html : '<iframe src="'+basePath+'jsps/common/catetreepaneldbfind.jsp?key='+f.name+"&dbfind=&caller1="+caller+"&keyValue="+f.value+"&trigger="+f.id+'" height="100%" width="100%" frameborder="0" scrolling="no"></iframe>'
  604. }],
  605. buttons : [{
  606. text : '确 认',
  607. iconCls: 'x-button-icon-save',
  608. cls: 'x-btn-gray',
  609. handler : function(btn){
  610. var contentwindow = btn.ownerCt.ownerCt.body.dom.getElementsByTagName('iframe')[0].contentWindow;
  611. var tree = contentwindow.Ext.getCmp('tree-panel');
  612. var data = tree.getChecked();
  613. f.fireEvent('aftertrigger', f, data);
  614. btn.ownerCt.ownerCt.hide();
  615. }
  616. },{
  617. text : '关 闭',
  618. iconCls: 'x-button-icon-close',
  619. cls: 'x-btn-gray',
  620. handler : function(btn){
  621. btn.ownerCt.ownerCt.hide();
  622. }
  623. }]
  624. });
  625. }
  626. cawin.show();
  627. }
  628. });