FormPanelController.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313
  1. Ext.define('saas.view.money.recBalance.FormPanelController', {
  2. extend: 'saas.view.core.form.FormPanelController',
  3. alias: 'controller.money-recbalance-formpanel',
  4. init: function (form) {
  5. var me = this;
  6. this.control({
  7. // 客户名称
  8. 'dbfindtrigger[name=rb_custname]':{
  9. beforerender:function(f){
  10. Ext.apply(f,{
  11. dbColumns: [{
  12. conditionCode: 'id',
  13. text: "客户ID",
  14. dataIndex: "id",
  15. hidden:true,
  16. xtype: "",
  17. }, {
  18. conditionCode: 'cu_code',
  19. text: "客户编号",
  20. dataIndex: "cu_code",
  21. width: 150,
  22. xtype: "",
  23. }, {
  24. conditionCode: 'cu_name',
  25. text: "客户名称",
  26. dataIndex: "cu_name",
  27. width: 200,
  28. xtype: "",
  29. }, {
  30. conditionCode: 'cu_type',
  31. text: "客户类型",
  32. dataIndex: "cu_type",
  33. width: 110,
  34. xtype: "",
  35. }, {
  36. text: "业务员编号",
  37. dataIndex: "cu_sellercode",
  38. width:110
  39. }, {
  40. text: "业务员",
  41. dataIndex: "cu_sellername",
  42. width:110
  43. }, {
  44. text: "税率(%)",
  45. dataIndex: "cu_taxrate",
  46. xtype: 'numbercolumn',
  47. width:80,
  48. renderer: function (v) {
  49. return saas.util.BaseUtil.numberFormat(v, 2, false);
  50. }
  51. },{
  52. text: "应收款余额",
  53. dataIndex: "cu_leftamount",
  54. width:110,
  55. xtype: 'numbercolumn',
  56. renderer : function(v) {
  57. return saas.util.BaseUtil.numberFormat(v, 2, true);
  58. }
  59. }, {
  60. text: "结算天数",
  61. dataIndex: "cu_promisedays",
  62. width:110,
  63. xtype: 'numbercolumn',
  64. renderer: function (v) {
  65. return Ext.util.Format.number(v, '0');
  66. }
  67. }, {
  68. text: "额度",
  69. dataIndex: "cu_credit",
  70. width:110,
  71. xtype: 'numbercolumn',
  72. }, {
  73. text: "客户地址",
  74. dataIndex: "ca_address",
  75. width: 250
  76. }],
  77. //赋值
  78. dbfinds:[{
  79. from: 'id', to: 'rb_custid',ignore:true
  80. }, {
  81. from:'cu_code', to:'rb_custcode'
  82. },{
  83. from:'cu_name', to:'rb_custname'
  84. },{
  85. from:'cu_leftamount', to:'cu_leftamount'
  86. }],
  87. }) ;
  88. }
  89. },
  90. // 资金账户
  91. 'dbfindtrigger[name=rd_bankname]':{
  92. beforerender:function(f){
  93. Ext.apply(f,{
  94. //赋值
  95. dbfinds:[{
  96. from: 'id', to: 'rd_bankid',ignore:true
  97. }, {
  98. from:'bk_bankcode', to:'rd_bankcode'
  99. },{
  100. from:'bk_bankname', to:'rd_bankname'
  101. }],
  102. }) ;
  103. },
  104. beforequery: function(f) {
  105. var me = this,
  106. viewModel = me.getViewModel(),
  107. rb_custname = viewModel.get('rb_custname');
  108. if(!rb_custname) {
  109. saas.util.BaseUtil.showErrorToast('请先选择【' + '<span style="color: red;">客户名称</span>】');
  110. return false;
  111. }
  112. },
  113. beforetriggerclick: function(f) {
  114. var me = this,
  115. viewModel = me.getViewModel(),
  116. rb_custname = viewModel.get('rb_custname');
  117. if(!rb_custname) {
  118. saas.util.BaseUtil.showErrorToast('请先选择【' + '<span style="color: red;">客户名称</span>】');
  119. return false;
  120. }
  121. }
  122. },
  123. // 来源单号
  124. 'oriOrderMutiDbfindTrigger[name=rbd_slcode]': {
  125. beforerender: function (f) {
  126. Ext.apply(f, {
  127. dbfinds: [{
  128. from: 'id',
  129. to: 'rbd_slid',ignore:true
  130. }, {
  131. from: 'sl_code',
  132. to: 'rbd_slcode'
  133. },{
  134. from: 'sl_orderamount',
  135. to: 'rbd_amount'
  136. },{
  137. from: 'sl_yamount',
  138. to: 'sl_yamount'
  139. },{
  140. from: 'sl_namount',
  141. to: 'sl_namount'
  142. },{
  143. from:'sl_date',
  144. to:'rbd_sldate'
  145. },{
  146. from:'sl_kind',
  147. to:'rbd_slkind'
  148. },{
  149. from: 'sl_namount',
  150. to: 'rbd_nowbalance'
  151. }],
  152. defaultCondition: "sl_custid<>0 and ((sl_kind in ('出货单','销售退货单')) or (sl_kind='期初余额' and sl_ym="+
  153. "'(select min(pd_detno) from periodsdetail where pd_status=0 and periodsdetail.companyid=subledger.companyid))) and sl_namount<>0'"
  154. });
  155. },
  156. beforequery: function(f) {
  157. var me = this,
  158. viewModel = me.getViewModel(),
  159. rb_custname = viewModel.get('rb_custname');
  160. if(!rb_custname) {
  161. saas.util.BaseUtil.showErrorToast('请先选择【' + '<span style="color: red;">客户名称</span>】');
  162. return false;
  163. }
  164. },
  165. beforetriggerclick: function(f) {
  166. var me = this,
  167. viewModel = me.getViewModel(),
  168. rb_custname = viewModel.get('rb_custname');
  169. if(!rb_custname) {
  170. saas.util.BaseUtil.showErrorToast('请先选择【' + '<span style="color: red;">客户名称</span>】');
  171. return false;
  172. }
  173. }
  174. },
  175. });
  176. },
  177. turnIn: function() {
  178. var me = this,
  179. form = me.getView(),
  180. id = form.getForm().findField(form._idField);
  181. form.setLoading(true);
  182. saas.util.BaseUtil.request({
  183. url: form._turnInUrl+id.value,
  184. method: 'GET',
  185. })
  186. .then(function(localJson) {
  187. form.setLoading(false);
  188. if(localJson.success){
  189. saas.util.BaseUtil.showSuccessToast('转单成功');
  190. }
  191. })
  192. .catch(function(res) {
  193. form.setLoading(false);
  194. console.error(res);
  195. saas.util.BaseUtil.showErrorToast('转单失败: ' + res.message);
  196. });
  197. },
  198. onSave: function() {
  199. var me = this,
  200. form = me.getView(),
  201. viewModel = me.getViewModel(),
  202. store1 = viewModel.get('detail0').detailStore,
  203. store2 = viewModel.get('detail1').detailStore;
  204. var valid = form.isValid();
  205. if(!valid) {
  206. saas.util.BaseUtil.showErrorToast(form.invalidText);
  207. return false;
  208. }
  209. var sum_rd_amount = store1.sum('rd_amount'); // 付款金额合计
  210. var rb_discounts = viewModel.get('rb_discounts'); // 折扣金额
  211. var sum_rbd_nowbalance = store2.sum('rbd_nowbalance'); // 本次核销金额合计
  212. var flag = sum_rd_amount + rb_discounts - sum_rbd_nowbalance;
  213. viewModel.set("rb_rbdamount",sum_rbd_nowbalance);
  214. viewModel.set("rb_rdamount",sum_rd_amount);
  215. viewModel.set("rb_preamount",sum_rd_amount-sum_rbd_nowbalance);
  216. viewModel.set("rb_preamount",flag);
  217. if(flag != 0) {
  218. var t = flag > 0 ? '大' : '小';
  219. saas.util.BaseUtil.showConfirm('提示', '收款金额' + t + '于本次核销金额,是否仍要保存?')
  220. .then(function(y) {
  221. if(y == 'yes') {
  222. me.save();
  223. }
  224. });
  225. }else {
  226. me.save();
  227. }
  228. },
  229. custnamechange:function(dbfindtrigger){
  230. var me = this,
  231. viewModel = me.getViewModel();
  232. var c = viewModel.get('rb_custname_change');
  233. if(c!=null&&c!=''){
  234. c = ' and sl_custid='+c;
  235. }else{
  236. c ='';
  237. }
  238. dbfindtrigger.defaultCondition="((sl_kind in ('出货单','销售退货单')) or (sl_kind='期初余额' and sl_ym="+
  239. "(select min(pd_detno) from periodsdetail where pd_status=0 and periodsdetail.companyid=subledger.companyid))) and sl_namount<>0 " + c
  240. },
  241. myInitCopyData: function(formData) {
  242. var main = formData.main;
  243. main.rb_auditman = '';
  244. main.rb_auditdate = null;
  245. return formData;
  246. },
  247. /**
  248. * 清空所有从表数据
  249. */
  250. clearDetails: function() {
  251. var me = this;
  252. me.clearDetail0();
  253. me.clearDetail1();
  254. },
  255. /**
  256. * 清空第一个从表数据
  257. */
  258. clearDetail0: function(f, n, o) {
  259. var me = this,
  260. form = me.getView(),
  261. grid = form.query('detailGridField')[0];
  262. me.clearDetail(grid);
  263. },
  264. /**
  265. * 清空第二个从表数据
  266. */
  267. clearDetail1: function() {
  268. var me = this,
  269. form = me.getView(),
  270. grid = form.query('detailGridField')[1];
  271. me.clearDetail(grid);
  272. },
  273. /**
  274. * 清空一个从表数据
  275. */
  276. clearDetail: function(grid) {
  277. var datas = [],
  278. emptyRows = grid.emptyRows,
  279. detnoColumn = grid.detnoColumn,
  280. detno = 0,
  281. store = grid.getStore();
  282. Ext.Array.each(new Array(emptyRows), function() {
  283. detno += 1;
  284. var data = {};
  285. data[detnoColumn] = detno;
  286. datas.push(data);
  287. })
  288. store.removeAll();
  289. store.add(datas);
  290. // 不写该方法合计列会错位,这里触发afterEdit事件用来刷新grid
  291. store.getAt(0) ? store.afterEdit(store.getAt(0), ['']) : null;
  292. },
  293. });