FormPanelController.js 13 KB

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