FormPanelController.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292
  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. if(!v) {
  36. return 0;
  37. }
  38. var arr = (v + '.').split('.');
  39. var xr = (new Array(arr[1].length > 3 ? 3 : arr[1].length)).fill('0');
  40. var format = '0.' + xr.join('');
  41. return Ext.util.Format.number(v, format);
  42. }
  43. }, {
  44. text: "应付款余额",
  45. dataIndex: "ve_leftamount",
  46. width:110,
  47. xtype: 'numbercolumn',
  48. renderer : function(v) {
  49. if(!v) {
  50. return 0;
  51. }
  52. var arr = (v + '.').split('.');
  53. var xr = (new Array(arr[1].length > 3 ? 3 : arr[1].length)).fill('0');
  54. var format = '0.' + xr.join('');
  55. return Ext.util.Format.number(v, format);
  56. }
  57. },{
  58. text: "结算天数",
  59. dataIndex: "ve_promisedays",
  60. width: 110,
  61. xtype: 'numbercolumn',
  62. align: 'end',
  63. renderer : function(v) {
  64. return Ext.util.Format.number(v, '0');
  65. }
  66. }, {
  67. text: "纳税人识别号",
  68. dataIndex: "ve_nsrzh",
  69. width: 150
  70. }, {
  71. text: "开户银行",
  72. dataIndex: "ve_bankcode",
  73. width: 150
  74. }, {
  75. text: "银行账户",
  76. dataIndex: "ve_bankaccount",
  77. width: 200
  78. }],
  79. dbfinds: [{
  80. from: 've_code',
  81. to: 'pb_vendcode'
  82. }, {
  83. from: 've_name',
  84. to: 'pb_vendname'
  85. },{
  86. from: 've_leftamount',
  87. to: 've_leftamount'
  88. },{
  89. from: 'id',
  90. to: 'pb_vendid',
  91. ignore:true
  92. }],
  93. });
  94. }
  95. },
  96. // 来源单号
  97. 'oriOrderMutiDbfindTrigger[name=pbd_slcode]': {
  98. beforerender: function (f) {
  99. Ext.apply(f, {
  100. dbfinds: [{
  101. from: 'id',
  102. to: 'pbd_slid'
  103. }, {
  104. from: 'sl_code',
  105. to: 'pbd_slcode'
  106. },{
  107. from: 'sl_orderamount',
  108. to: 'pbd_amount'
  109. },{
  110. from: 'sl_yamount',
  111. to: 'sl_yamount'
  112. },{
  113. from: 'sl_namount',
  114. to: 'sl_namount'
  115. },{
  116. from:'sl_date',
  117. to:'pbd_sldate'
  118. },{
  119. from:'sl_kind',
  120. to:'pbd_slkind'
  121. },{
  122. from:'sl_namount',
  123. to:'pbd_nowbalance'
  124. }],
  125. defaultCondition: "sl_vendid<>0 and ((sl_kind in ('采购验收单','采购验退单')) or (sl_kind='期初余额' and sl_ym="+
  126. "'(select min(pd_detno) from periodsdetail where pd_status=0 and periodsdetail.companyid=subledger.companyid))) and sl_namount<>0'"
  127. });
  128. },
  129. beforequery: function(f) {
  130. var me = this,
  131. viewModel = me.getViewModel(),
  132. rb_custname = viewModel.get('rb_custname');
  133. if(!rb_custname) {
  134. saas.util.BaseUtil.showErrorToast('请先录入主表字段【' + '<span style="color: red;">供应商名称</span>】');
  135. return false;
  136. }
  137. },
  138. beforetriggerclick: function(f) {
  139. var me = this,
  140. viewModel = me.getViewModel(),
  141. rb_custname = viewModel.get('rb_custname');
  142. if(!rb_custname) {
  143. saas.util.BaseUtil.showErrorToast('请先录入主表字段【' + '<span style="color: red;">供应商名称</span>】');
  144. return false;
  145. }
  146. }
  147. },
  148. // 资金账户
  149. 'dbfindtrigger[name=pd_bankname]':{
  150. beforerender: function (f) {
  151. Ext.apply(f, {
  152. dbfinds: [{
  153. from: 'id',
  154. to: 'pd_bankid',ignore:true
  155. }, {
  156. from: 'bk_bankcode',
  157. to: 'pd_bankcode'
  158. },{
  159. from: 'bk_bankname',
  160. to: 'pd_bankname'
  161. }],
  162. });
  163. },
  164. beforequery: function(f) {
  165. var me = this,
  166. viewModel = me.getViewModel(),
  167. rb_custname = viewModel.get('rb_custname');
  168. if(!rb_custname) {
  169. saas.util.BaseUtil.showErrorToast('请先录入主表字段【' + '<span style="color: red;">供应商名称</span>】');
  170. return false;
  171. }
  172. },
  173. beforetriggerclick: function(f) {
  174. var me = this,
  175. viewModel = me.getViewModel(),
  176. rb_custname = viewModel.get('rb_custname');
  177. if(!rb_custname) {
  178. saas.util.BaseUtil.showErrorToast('请先录入主表字段【' + '<span style="color: red;">供应商名称</span>】');
  179. return false;
  180. }
  181. }
  182. }
  183. });
  184. },
  185. addCombo:function(){
  186. var combo=this.ownerCmp;
  187. Ext.create('Ext.window.Window',{
  188. layout:'vbox',
  189. bodyPadding: 15,
  190. width:500,
  191. items:[{
  192. fieldLabel:'实际值',
  193. xtype:'textfield'
  194. },{
  195. fieldLabel:'显示值',
  196. xtype:'textfield'
  197. }],
  198. buttons:[{
  199. text:'确认',
  200. handler:function(b){
  201. combo.setValue('ok');
  202. b.up('window').close();
  203. }
  204. }],
  205. renderTo:this.ownerCmp.ownerCt.getEl()
  206. }).show();
  207. },
  208. turnIn: function() {
  209. var me = this,
  210. form = me.getView(),
  211. id = form.getForm().findField(form._idField);
  212. form.setLoading(true);
  213. saas.util.BaseUtil.request({
  214. url: form._turnInUrl+id.value,
  215. method: 'GET',
  216. })
  217. .then(function(localJson) {
  218. form.setLoading(false);
  219. if(localJson.success){
  220. saas.util.BaseUtil.showSuccessToast('转单成功');
  221. }
  222. })
  223. .catch(function(res) {
  224. form.setLoading(false);
  225. console.error(res);
  226. saas.util.BaseUtil.showErrorToast('转单失败: ' + res.message);
  227. });
  228. },
  229. onSave: function() {
  230. var me = this,
  231. form = me.getView(),
  232. viewModel = me.getViewModel(),
  233. store1 = viewModel.get('detail0').detailStore,
  234. store2 = viewModel.get('detail1').detailStore;
  235. var valid = form.isValid();
  236. if(!valid) {
  237. saas.util.BaseUtil.showErrorToast(form.invalidText);
  238. return false;
  239. }
  240. var sum_pd_amount = store1.sum('pd_amount'); // 付款金额合计
  241. var pb_discounts = viewModel.get('pb_discounts'); // 折扣金额
  242. var sum_pbd_nowbalance = store2.sum('pbd_nowbalance'); // 本次核销金额合计
  243. var flag = sum_pd_amount + pb_discounts - sum_pbd_nowbalance;
  244. viewModel.set("pb_pbdamount",sum_pbd_nowbalance);
  245. viewModel.set("pb_pdamount",sum_pd_amount);
  246. viewModel.set("pb_preamount",flag);
  247. if(flag != 0) {
  248. var t = flag > 0 ? '大' : '小';
  249. saas.util.BaseUtil.showConfirm('提示', '付款金额' + t + '于本次核销金额,是否仍要保存?')
  250. .then(function(y) {
  251. if(y == 'yes') {
  252. me.save();
  253. }
  254. });
  255. }else {
  256. me.save();
  257. }
  258. },
  259. vendnamechange:function(dbfindtrigger){
  260. var me = this,
  261. viewModel = me.getViewModel();
  262. var c = viewModel.get('pb_vendname_change');
  263. if(c!=null&&c!=''){
  264. c = ' and sl_vendid='+c;
  265. }else{
  266. c ='';
  267. }
  268. dbfindtrigger.defaultCondition="((sl_kind in ('采购验收单','采购验退单')) or (sl_kind='期初余额' and sl_ym="+
  269. "(select min(pd_detno) from periodsdetail where pd_status=0 and periodsdetail.companyid=subledger.companyid))) and sl_namount<>0" + c
  270. },
  271. myInitCopyData: function(formData) {
  272. var main = formData.main;
  273. main.pb_auditman = '';
  274. main.pb_auditdate = null;
  275. return formData;
  276. }
  277. });