CurrencysMonth.js 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289
  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. me.getCurrentMonth(function(data){
  49. var ym = data ? data.PD_DETNO : Ext.Date.format(new Date(), 'Ym');
  50. f.setValue(ym);
  51. });
  52. Ext.defer(function(){
  53. var btn = f.ownerCt.down('erpSyncButton');
  54. btn && (btn.syncdatas = f.getValue());
  55. }, 100);
  56. },
  57. change : function(f) {
  58. me.selectmf = f.getValue();
  59. var btn = f.ownerCt.down('erpSyncButton');
  60. btn && (btn.syncdatas = f.getValue());
  61. me.searchCurrency();
  62. }
  63. },
  64. 'button[name=getlastend]' : {
  65. click : function(b) {
  66. var v = b.ownerCt.down('#monthfield').getValue(), d = Ext.Date.parse(v + '01', 'Ymd'), y = d
  67. .getFullYear(), m = d.getMonth(), e = Ext.Date.format(new Date(y, m - 1, 1), 'Ym');
  68. warnMsg('确定将上个月(' + e + ')末的汇率设置成本月(' + v + ')的月初汇率?', function(k) {
  69. if (k == 'ok' || k == 'yes') {
  70. me.getLastEnd(v, e, b.ownerCt.ownerCt);
  71. }
  72. });
  73. }
  74. }
  75. });
  76. },
  77. getCurrentMonth: function(callback) {
  78. Ext.Ajax.request({
  79. url: basePath + 'fa/getMonth.action',
  80. params: {
  81. type: 'MONTH-A'
  82. },
  83. callback: function(opt, s, r) {
  84. var rs = Ext.decode(r.responseText);
  85. if(rs.data) {
  86. callback.call(null, rs.data);
  87. }
  88. }
  89. });
  90. },
  91. deleteRe : function(btn) {
  92. var me = this;
  93. var grid = Ext.getCmp('grid');
  94. Ext.Ajax.request({
  95. url : basePath + 'fa/fix/CurrencysController/deleteCurrencysMonth.action',
  96. params : {
  97. id : me.selectid
  98. },
  99. method : 'post',
  100. callback : function(options, success, response) {
  101. me.getActiveTab().setLoading(false);
  102. var localJson = new Ext.decode(response.responseText);
  103. if (localJson.success) {
  104. delSuccess(function() {
  105. // add成功后刷新页面进入可编辑的页面
  106. var gridCondition = 'cm_yearmonth=' + me.selectmf;
  107. var gridParam = {
  108. caller : caller,
  109. condition : gridCondition
  110. };
  111. console.log(caller+":"+gridCondition);
  112. me.GridUtil.getGridColumnsAndStore(grid, 'common/singleGridPanel.action', gridParam, "");
  113. });
  114. } else if (localJson.exceptionInfo) {
  115. var str = localJson.exceptionInfo;
  116. if (str.trim().substr(0, 12) == 'AFTERSUCCESS') {// 特殊情况:操作成功,但是出现警告,允许刷新页面
  117. str = str.replace('AFTERSUCCESS', '');
  118. delSuccess(function() {
  119. // add成功后刷新页面进入可编辑的页面
  120. var gridCondition = ' 1=1 and cm_yearmonth=' + me.selectmf;
  121. var gridParam = {
  122. caller : caller,
  123. condition : gridCondition
  124. };
  125. me.GridUtil.getGridColumnsAndStore(grid, 'common/singleGridPanel.action', gridParam, "");
  126. });
  127. showError(str);
  128. } else {
  129. showError(str);
  130. return;
  131. }
  132. } else {
  133. saveFailure();// @i18n/i18n.js
  134. }
  135. }
  136. });
  137. },
  138. searchCurrency : function(btn) {
  139. var me = this;
  140. Ext.getCmp('deletebutton').setDisabled(true);
  141. var gridParam = {
  142. caller : caller,
  143. condition : 'cm_yearmonth=' + me.selectmf
  144. };
  145. var grid = Ext.getCmp('grid');
  146. me.GridUtil.loadNewStore(grid, gridParam);
  147. },
  148. getForm : function(btn) {
  149. return btn.ownerCt.ownerCt;
  150. },
  151. beforeSave : function() {
  152. this.FormUtil.beforeSave(this);
  153. },
  154. beforeUpdate : function() {
  155. var grid = Ext.getCmp('grid');
  156. var me = this;
  157. var isnumber = true;
  158. Ext.each(grid.store.data.items, function(item, index) {
  159. if (!Ext.isEmpty(item.get('cm_crname'))) {
  160. if (Ext.Number.from(item.data['cm_crrate'], -1) < 0)
  161. isnumber = false;
  162. return;
  163. if (Ext.Number.from(item.data['cm_endrate'], -1) < 0)
  164. isnumber = false;
  165. return;
  166. }
  167. });
  168. if (!isnumber) {
  169. showError($I18N.common.msg.failure_isnotnumber);
  170. return;
  171. }
  172. var params = me.GridUtil.getAllGridStore(grid);
  173. console.log(params);
  174. params = params == null ? [] : "[" + params.toString().replace(/\\/g, "%") + "]";
  175. me.update(params);
  176. },
  177. getActiveTab : function() {
  178. var tab = null;
  179. if (Ext.getCmp("content-panel")) {
  180. tab = Ext.getCmp("content-panel").getActiveTab();
  181. }
  182. if (!tab && parent.Ext.getCmp("content-panel"))
  183. tab = parent.Ext.getCmp("content-panel").getActiveTab();
  184. if (!tab && parent.parent.Ext.getCmp("content-panel"))
  185. tab = parent.parent.Ext.getCmp("content-panel").getActiveTab();
  186. if (!tab) {
  187. var win = parent.Ext.ComponentQuery.query('window');
  188. if (win.length > 0) {
  189. tab = win[win.length - 1];
  190. }
  191. }
  192. return tab;
  193. },
  194. update : function(param) {
  195. var me = this;
  196. var mf = Ext.getCmp('monthfield') ? Ext.getCmp('monthfield').getValue() : Number(Ext.Date.format(new Date(),
  197. 'Ym'));
  198. me.getActiveTab().setLoading(true);// loading...
  199. Ext.Ajax.request({
  200. url : basePath + 'fa/fix/CurrencysController/updateCurrencysMonth.action',
  201. params : {
  202. param : param,
  203. mf : mf
  204. },
  205. method : 'post',
  206. callback : function(options, success, response) {
  207. me.getActiveTab().setLoading(false);
  208. var localJson = new Ext.decode(response.responseText);
  209. if (localJson.success) {
  210. saveSuccess(function() {
  211. // add成功后刷新页面进入可编辑的页面
  212. var grid = Ext.getCmp('grid');
  213. var gridCondition = ' 1=1 and cm_yearmonth=' + me.selectmf;
  214. var gridParam = {
  215. caller : caller,
  216. condition : gridCondition
  217. };
  218. me.GridUtil.getGridColumnsAndStore(grid, 'common/singleGridPanel.action', gridParam, "");
  219. });
  220. } else if (localJson.exceptionInfo) {
  221. var str = localJson.exceptionInfo;
  222. if (str.trim().substr(0, 12) == 'AFTERSUCCESS') {// 特殊情况:操作成功,但是出现警告,允许刷新页面
  223. str = str.replace('AFTERSUCCESS', '');
  224. saveSuccess(function() {
  225. var gridCondition = ' 1=1 and cm_yearmonth=' + me.selectmf;
  226. var gridParam = {
  227. caller : caller,
  228. condition : gridCondition
  229. };
  230. var grid = Ext.getCmp('grid');
  231. me.GridUtil.getGridColumnsAndStore(grid, 'common/singleGridPanel.action', gridParam, "");
  232. });
  233. showError(str);
  234. } else {
  235. showError(str);
  236. return;
  237. }
  238. } else {
  239. saveFailure();// @i18n/i18n.js
  240. }
  241. }
  242. });
  243. },
  244. getLastEnd : function(y, e, grid) {
  245. Ext.Ajax.request({
  246. url : basePath + 'fa/fix/lastrate.action',
  247. params : {
  248. yearmonth : y,
  249. last : e
  250. },
  251. callback : function(opt, s, res) {
  252. var r = Ext.decode(res.responseText);
  253. if (r.success && r.data) {
  254. grid.store.each(function(record){
  255. if(Ext.isEmpty(record.get('cm_crname')))
  256. grid.store.remove(record);
  257. });
  258. var first = grid.store.first(), isEmpty = first && Ext.isEmpty(first.get('cm_crname'));
  259. if (isEmpty) {
  260. Ext.Array.each(r.data, function(d) {
  261. d.cm_crrate = d.cm_endrate;
  262. d.cm_endrate = 0;
  263. });
  264. grid.store.loadData(r.data);
  265. } else {
  266. Ext.Array.each(r.data, function(d) {
  267. var record = grid.store.findRecord('cm_crname', d.cm_crname);
  268. if (record) {
  269. record.set('cm_crrate', d.cm_endrate);
  270. } else {
  271. d.cm_crrate = d.cm_endrate;
  272. d.cm_endrate = 0;
  273. grid.store.add(d);
  274. }
  275. });
  276. }
  277. }
  278. }
  279. });
  280. }
  281. });