FormPanelController.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332
  1. Ext.define('saas.view.money.payBalance.FormPanelController', {
  2. extend: 'saas.view.core.form.FormPanelController',
  3. alias: 'controller.money-paybalance-formpanel',
  4. init: function (form) {
  5. var me = this;
  6. this.control({
  7. // 供应商名称
  8. 'dbfindtrigger[name=pb_vendname]':{
  9. beforerender: function (f) {
  10. Ext.apply(f, {
  11. dbColumns:[{
  12. text: "供应商ID",
  13. hidden: true,
  14. dataIndex: "id",
  15. xtype: "numbercolumn"
  16. },{
  17. text: "供应商编号",
  18. dataIndex: "ve_code",
  19. width: 150
  20. }, {
  21. text: "供应商名称",
  22. dataIndex: "ve_name",
  23. width: 200
  24. }, {
  25. text: "供应商类型",
  26. dataIndex: "ve_type",
  27. width: 110,
  28. }, {
  29. text: "税率(%)",
  30. dataIndex: "ve_taxrate",
  31. width: 80,
  32. xtype: 'numbercolumn',
  33. align:'end',
  34. renderer : function(v) {
  35. return saas.util.BaseUtil.numberFormat(v, 2, false);
  36. }
  37. }, {
  38. text: "应付款余额",
  39. dataIndex: "ve_leftamount",
  40. width:110,
  41. xtype: 'numbercolumn',
  42. renderer : function(v) {
  43. return saas.util.BaseUtil.numberFormat(v, 2, true);
  44. }
  45. },{
  46. text: "结算天数",
  47. dataIndex: "ve_promisedays",
  48. width: 110,
  49. xtype: 'numbercolumn',
  50. align: 'end',
  51. renderer : function(v) {
  52. return Ext.util.Format.number(v, '0');
  53. }
  54. }, {
  55. text: "纳税人识别号",
  56. dataIndex: "ve_nsrzh",
  57. width: 150
  58. }, {
  59. text: "开户银行",
  60. dataIndex: "ve_bankcode",
  61. width: 150
  62. }, {
  63. text: "银行账户",
  64. dataIndex: "ve_bankaccount",
  65. width: 200
  66. }],
  67. dbfinds: [{
  68. from: 've_code',
  69. to: 'pb_vendcode'
  70. }, {
  71. from: 've_name',
  72. to: 'pb_vendname'
  73. },{
  74. from: 've_leftamount',
  75. to: 've_leftamount'
  76. },{
  77. from: 'id',
  78. to: 'pb_vendid',
  79. ignore:true
  80. }],
  81. });
  82. }
  83. },
  84. // 来源单号
  85. 'oriOrderMutiDbfindTrigger[name=pbd_slcode]': {
  86. beforerender: function (f) {
  87. Ext.apply(f, {
  88. dbfinds: [{
  89. from: 'id',
  90. to: 'pbd_slid'
  91. }, {
  92. from: 'sl_code',
  93. to: 'pbd_slcode'
  94. },{
  95. from: 'sl_orderamount',
  96. to: 'pbd_amount'
  97. },{
  98. from: 'sl_yamount',
  99. to: 'sl_yamount'
  100. },{
  101. from: 'sl_namount',
  102. to: 'sl_namount'
  103. },{
  104. from:'sl_date',
  105. to:'pbd_sldate'
  106. },{
  107. from:'sl_kind',
  108. to:'pbd_slkind'
  109. },{
  110. from:'sl_namount',
  111. to:'pbd_nowbalance'
  112. }],
  113. defaultCondition: "sl_vendid<>0 and ((sl_kind in ('采购验收单','采购验退单')) or (sl_kind='期初余额' and sl_ym="+
  114. "'(select min(pd_detno) from periodsdetail where pd_status=0 and periodsdetail.companyid=subledger.companyid))) and sl_namount<>0'"
  115. });
  116. },
  117. beforequery: function(f) {
  118. var me = this,
  119. viewModel = me.getViewModel(),
  120. pb_vendname = viewModel.get('pb_vendname');
  121. if(!pb_vendname) {
  122. saas.util.BaseUtil.showErrorToast('请先选择【' + '<span style="color: red;">供应商名称</span>】');
  123. return false;
  124. }
  125. },
  126. beforetriggerclick: function(f) {
  127. var me = this,
  128. viewModel = me.getViewModel(),
  129. pb_vendname = viewModel.get('pb_vendname');
  130. if(!pb_vendname) {
  131. saas.util.BaseUtil.showErrorToast('请先选择【' + '<span style="color: red;">供应商名称</span>】');
  132. return false;
  133. }
  134. }
  135. },
  136. // 资金账户
  137. 'dbfindtrigger[name=pd_bankname]':{
  138. beforerender: function (f) {
  139. Ext.apply(f, {
  140. dbfinds: [{
  141. from: 'id',
  142. to: 'pd_bankid',ignore:true
  143. }, {
  144. from: 'bk_bankcode',
  145. to: 'pd_bankcode'
  146. },{
  147. from: 'bk_bankname',
  148. to: 'pd_bankname'
  149. }],
  150. });
  151. },
  152. beforequery: function(f) {
  153. var me = this,
  154. viewModel = me.getViewModel(),
  155. rb_custname = viewModel.get('pb_vendname');
  156. if(!rb_custname) {
  157. saas.util.BaseUtil.showErrorToast('请先选择【' + '<span style="color: red;">供应商名称</span>】');
  158. return false;
  159. }
  160. },
  161. beforetriggerclick: function(f) {
  162. var me = this,
  163. viewModel = me.getViewModel(),
  164. rb_custname = viewModel.get('pb_vendname');
  165. if(!rb_custname) {
  166. saas.util.BaseUtil.showErrorToast('请先选择【' + '<span style="color: red;">供应商名称</span>】');
  167. return false;
  168. }
  169. }
  170. }
  171. });
  172. },
  173. addCombo:function(){
  174. var combo=this.ownerCmp;
  175. Ext.create('Ext.window.Window',{
  176. layout:'vbox',
  177. bodyPadding: 15,
  178. width:500,
  179. items:[{
  180. fieldLabel:'实际值',
  181. xtype:'textfield'
  182. },{
  183. fieldLabel:'显示值',
  184. xtype:'textfield'
  185. }],
  186. buttons:[{
  187. text:'确认',
  188. handler:function(b){
  189. combo.setValue('ok');
  190. b.up('window').close();
  191. }
  192. }],
  193. renderTo:this.ownerCmp.ownerCt.getEl()
  194. }).show();
  195. },
  196. turnIn: function() {
  197. var me = this,
  198. form = me.getView(),
  199. id = form.getForm().findField(form._idField);
  200. form.setLoading(true);
  201. saas.util.BaseUtil.request({
  202. url: form._turnInUrl+id.value,
  203. method: 'GET',
  204. })
  205. .then(function(localJson) {
  206. form.setLoading(false);
  207. if(localJson.success){
  208. saas.util.BaseUtil.showSuccessToast('转单成功');
  209. }
  210. })
  211. .catch(function(res) {
  212. form.setLoading(false);
  213. console.error(res);
  214. saas.util.BaseUtil.showErrorToast('转单失败: ' + res.message);
  215. });
  216. },
  217. onSave: function() {
  218. var me = this,
  219. form = me.getView(),
  220. viewModel = me.getViewModel(),
  221. store1 = viewModel.get('detail0').detailStore,
  222. store2 = viewModel.get('detail1').detailStore;
  223. var valid = form.isValid();
  224. if(!valid) {
  225. saas.util.BaseUtil.showErrorToast(form.invalidText);
  226. return false;
  227. }
  228. var sum_pd_amount = store1.sum('pd_amount'); // 付款金额合计
  229. var pb_discounts = viewModel.get('pb_discounts'); // 折扣金额
  230. var sum_pbd_nowbalance = store2.sum('pbd_nowbalance'); // 本次核销金额合计
  231. var flag = sum_pd_amount + pb_discounts - sum_pbd_nowbalance;
  232. viewModel.set("pb_pbdamount",sum_pbd_nowbalance);
  233. viewModel.set("pb_pdamount",sum_pd_amount);
  234. viewModel.set("pb_preamount",flag);
  235. if(flag != 0) {
  236. var t = flag > 0 ? '大' : '小';
  237. saas.util.BaseUtil.showConfirm('提示', '付款金额' + t + '于本次核销金额,是否仍要保存?')
  238. .then(function(y) {
  239. if(y == 'yes') {
  240. me.save();
  241. }
  242. });
  243. }else {
  244. me.save();
  245. }
  246. },
  247. vendnamechange:function(dbfindtrigger){
  248. var me = this,
  249. viewModel = me.getViewModel();
  250. var c = viewModel.get('pb_vendname_change');
  251. if(c!=null&&c!=''){
  252. c = ' and sl_vendid='+c;
  253. }else{
  254. c ='';
  255. }
  256. dbfindtrigger.defaultCondition="((sl_kind in ('采购验收单','采购验退单')) or (sl_kind='期初余额' and sl_ym="+
  257. "(select min(pd_detno) from periodsdetail where pd_status=0 and periodsdetail.companyid=subledger.companyid))) and sl_namount<>0" + c
  258. },
  259. myInitCopyData: function(formData) {
  260. var main = formData.main;
  261. main.pb_auditman = '';
  262. main.pb_auditdate = null;
  263. return formData;
  264. },
  265. /**
  266. * 清空所有从表数据
  267. */
  268. clearDetails: function() {
  269. var me = this;
  270. me.clearDetail0();
  271. me.clearDetail1();
  272. },
  273. /**
  274. * 清空第一个从表数据
  275. */
  276. clearDetail0: function(f, n, o) {
  277. var me = this,
  278. form = me.getView(),
  279. grid = form.query('detailGridField')[0];
  280. me.clearDetail(grid);
  281. },
  282. /**
  283. * 清空第二个从表数据
  284. */
  285. clearDetail1: function() {
  286. var me = this,
  287. form = me.getView(),
  288. grid = form.query('detailGridField')[1];
  289. me.clearDetail(grid);
  290. },
  291. /**
  292. * 清空一个从表数据
  293. */
  294. clearDetail: function(grid) {
  295. var datas = [],
  296. emptyRows = grid.emptyRows,
  297. detnoColumn = grid.detnoColumn,
  298. detno = 0,
  299. store = grid.getStore();
  300. Ext.Array.each(new Array(emptyRows), function() {
  301. detno += 1;
  302. var data = {};
  303. data[detnoColumn] = detno;
  304. datas.push(data);
  305. })
  306. store.removeAll();
  307. store.add(datas);
  308. // 不写该方法合计列会错位,这里触发afterEdit事件用来刷新grid
  309. store.getAt(0) ? store.afterEdit(store.getAt(0), ['']) : null;
  310. },
  311. });