CurrencysMonth.js 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263
  1. Ext.QuickTips.init();
  2. Ext.define('erp.controller.fa.fix.CurrencysMonth', {
  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. selectid : '',
  8. selectmf : Number(Ext.Date.format(new Date(), 'Ym')),
  9. views : [ 'fa.fix.CurrencysMonthGrid', 'core.button.Save', 'core.form.MonthDateField',
  10. 'core.trigger.DbfindTrigger', 'core.button.Delete', 'core.button.Close', 'core.button.Sync' ],
  11. init : function() {
  12. var me = this;
  13. me.gridLastSelected = null;
  14. this.control({
  15. 'button[name=getcrrate]' : {
  16. click: function (btn){
  17. var grid = Ext.getCmp('grid');
  18. console.log(grid);
  19. var items = grid.store.data.items;
  20. Ext.each(items,function(item,index){
  21. item.set("cm_endrate",item.data.cm_crrate);
  22. });
  23. }
  24. },
  25. 'currencysMonthGrid' : {
  26. itemclick : this.GridUtil.onGridItemClick
  27. },
  28. 'erpSaveButton' : {
  29. click : function(btn) {
  30. this.beforeUpdate();
  31. }
  32. },
  33. 'button[id=searchCurrency]' : {
  34. click : function(btn) {
  35. this.searchCurrency(btn);
  36. }
  37. },
  38. 'erpDeleteButton' : {
  39. afterrender : function(btn) {
  40. btn.setDisabled(true);
  41. },
  42. click : function(btn) {
  43. this.deleteRe();
  44. }
  45. },
  46. 'monthdatefield' : {
  47. afterrender: function(f) {
  48. Ext.defer(function(){
  49. var btn = f.ownerCt.down('erpSyncButton');
  50. btn && (btn.syncdatas = f.getValue());
  51. }, 100);
  52. },
  53. change : function(f) {
  54. me.selectmf = f.getValue();
  55. var btn = f.ownerCt.down('erpSyncButton');
  56. btn && (btn.syncdatas = f.getValue());
  57. }
  58. },
  59. 'button[name=getlastend]' : {
  60. click : function(b) {
  61. var v = b.ownerCt.down('#monthfield').getValue(), d = Ext.Date.parse(v, 'Ym'), y = 1900 + d
  62. .getYear(), m = d.getMonth(), e = Ext.Date.format(new Date(y, m - 1, 1), 'Ym');
  63. warnMsg('确定将上个月(' + e + ')末的汇率设置成本月(' + v + ')的月初汇率?', function(k) {
  64. if (k == 'ok' || k == 'yes') {
  65. me.getLastEnd(v, e, b.ownerCt.ownerCt);
  66. }
  67. });
  68. }
  69. }
  70. });
  71. },
  72. deleteRe : function(btn) {
  73. var me = this;
  74. var grid = Ext.getCmp('grid');
  75. Ext.Ajax.request({
  76. url : basePath + 'fa/fix/CurrencysController/deleteCurrencysMonth.action',
  77. params : {
  78. id : me.selectid
  79. },
  80. method : 'post',
  81. callback : function(options, success, response) {
  82. me.getActiveTab().setLoading(false);
  83. var localJson = new Ext.decode(response.responseText);
  84. if (localJson.success) {
  85. delSuccess(function() {
  86. // add成功后刷新页面进入可编辑的页面
  87. var gridCondition = 'cm_yearmonth=' + me.selectmf;
  88. var gridParam = {
  89. caller : caller,
  90. condition : gridCondition
  91. };
  92. me.GridUtil.getGridColumnsAndStore(grid, 'common/singleGridPanel.action', gridParam, "");
  93. });
  94. } else if (localJson.exceptionInfo) {
  95. var str = localJson.exceptionInfo;
  96. if (str.trim().substr(0, 12) == 'AFTERSUCCESS') {// 特殊情况:操作成功,但是出现警告,允许刷新页面
  97. str = str.replace('AFTERSUCCESS', '');
  98. delSuccess(function() {
  99. // add成功后刷新页面进入可编辑的页面
  100. var gridCondition = ' 1=1 and cm_yearmonth=' + me.selectmf;
  101. var gridParam = {
  102. caller : caller,
  103. condition : gridCondition
  104. };
  105. me.GridUtil.getGridColumnsAndStore(grid, 'common/singleGridPanel.action', gridParam, "");
  106. });
  107. showError(str);
  108. } else {
  109. showError(str);
  110. return;
  111. }
  112. } else {
  113. saveFailure();// @i18n/i18n.js
  114. }
  115. }
  116. });
  117. },
  118. searchCurrency : function(btn) {
  119. var me = this;
  120. Ext.getCmp('deletebutton').setDisabled(true);
  121. var gridParam = {
  122. caller : caller,
  123. condition : 'cm_yearmonth=' + me.selectmf
  124. };
  125. var grid = Ext.getCmp('grid');
  126. me.GridUtil.loadNewStore(grid, gridParam);
  127. },
  128. getForm : function(btn) {
  129. return btn.ownerCt.ownerCt;
  130. },
  131. beforeSave : function() {
  132. this.FormUtil.beforeSave(this);
  133. },
  134. beforeUpdate : function() {
  135. var grid = Ext.getCmp('grid');
  136. var me = this;
  137. var isnumber = true;
  138. Ext.each(grid.store.data.items, function(item, index) {
  139. if (!Ext.isEmpty(item.get('cm_crname'))) {
  140. if (Ext.Number.from(item.data['cm_crrate'], -1) < 0)
  141. isnumber = false;
  142. return;
  143. if (Ext.Number.from(item.data['cm_endrate'], -1) < 0)
  144. isnumber = false;
  145. return;
  146. }
  147. });
  148. if (!isnumber) {
  149. showError($I18N.common.msg.failure_isnotnumber);
  150. return;
  151. }
  152. var params = me.GridUtil.getGridStore(grid);
  153. params = params == null ? [] : "[" + params.toString().replace(/\\/g, "%") + "]";
  154. me.update(params);
  155. },
  156. getActiveTab : function() {
  157. var tab = null;
  158. if (Ext.getCmp("content-panel")) {
  159. tab = Ext.getCmp("content-panel").getActiveTab();
  160. }
  161. if (!tab && parent.Ext.getCmp("content-panel"))
  162. tab = parent.Ext.getCmp("content-panel").getActiveTab();
  163. if (!tab && parent.parent.Ext.getCmp("content-panel"))
  164. tab = parent.parent.Ext.getCmp("content-panel").getActiveTab();
  165. if (!tab) {
  166. var win = parent.Ext.ComponentQuery.query('window');
  167. if (win.length > 0) {
  168. tab = win[win.length - 1];
  169. }
  170. }
  171. return tab;
  172. },
  173. update : function(param) {
  174. var me = this;
  175. var mf = Ext.getCmp('monthfield') ? Ext.getCmp('monthfield').getValue() : Number(Ext.Date.format(new Date(),
  176. 'Ym'));
  177. me.getActiveTab().setLoading(true);// loading...
  178. Ext.Ajax.request({
  179. url : basePath + 'fa/fix/CurrencysController/updateCurrencysMonth.action',
  180. params : {
  181. param : param,
  182. mf : mf
  183. },
  184. method : 'post',
  185. callback : function(options, success, response) {
  186. me.getActiveTab().setLoading(false);
  187. var localJson = new Ext.decode(response.responseText);
  188. if (localJson.success) {
  189. saveSuccess(function() {
  190. // add成功后刷新页面进入可编辑的页面
  191. var grid = Ext.getCmp('grid');
  192. var gridCondition = ' 1=1 and cm_yearmonth=' + me.selectmf;
  193. var gridParam = {
  194. caller : caller,
  195. condition : gridCondition
  196. };
  197. me.GridUtil.getGridColumnsAndStore(grid, 'common/singleGridPanel.action', gridParam, "");
  198. });
  199. } else if (localJson.exceptionInfo) {
  200. var str = localJson.exceptionInfo;
  201. if (str.trim().substr(0, 12) == 'AFTERSUCCESS') {// 特殊情况:操作成功,但是出现警告,允许刷新页面
  202. str = str.replace('AFTERSUCCESS', '');
  203. saveSuccess(function() {
  204. var gridCondition = ' 1=1 and cm_yearmonth=' + me.selectmf;
  205. var gridParam = {
  206. caller : caller,
  207. condition : gridCondition
  208. };
  209. var grid = Ext.getCmp('grid');
  210. me.GridUtil.getGridColumnsAndStore(grid, 'common/singleGridPanel.action', gridParam, "");
  211. });
  212. showError(str);
  213. } else {
  214. showError(str);
  215. return;
  216. }
  217. } else {
  218. saveFailure();// @i18n/i18n.js
  219. }
  220. }
  221. });
  222. },
  223. getLastEnd : function(y, e, grid) {
  224. Ext.Ajax.request({
  225. url : basePath + 'fa/fix/lastrate.action',
  226. params : {
  227. yearmonth : y,
  228. last : e
  229. },
  230. callback : function(opt, s, res) {
  231. var r = Ext.decode(res.responseText);
  232. if (r.success && r.data) {
  233. var first = grid.store.first(), isEmpty = first && Ext.isEmpty(first.get('cm_crname'));
  234. if (isEmpty) {
  235. Ext.Array.each(r.data, function(d) {
  236. d.cm_crrate = d.cm_endrate;
  237. d.cm_endrate = 0;
  238. });
  239. grid.store.loadData(r.data);
  240. } else {
  241. Ext.Array.each(r.data, function(d) {
  242. var record = grid.store.findRecord('cm_crname', d.cm_crname);
  243. if (record) {
  244. record.set('cm_crrate', d.cm_endrate);
  245. } else {
  246. grid.store.add(d);
  247. }
  248. });
  249. }
  250. }
  251. }
  252. });
  253. }
  254. });