FormPanel.js 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583
  1. Ext.define('saas.view.money.verification.FormPanel', {
  2. extend: 'saas.view.core.form.FormPanel',
  3. // extend: 'Ext.panel.Panel',
  4. xtype: 'money-verification-formpanel',
  5. controller: 'money-verification-formpanel',
  6. viewModel: 'money-verification-formpanel',
  7. viewName: 'money-verification-formpanel',
  8. caller: 'Verification',
  9. //字段属性
  10. _title: '核销单',
  11. _idField: 'id',
  12. _codeField: 'vc_code',
  13. _statusField: 'vc_status',
  14. _statusCodeField: 'vc_statuscode',
  15. _readUrl: '/api/money/verification/read/',
  16. _saveUrl: '/api/money/verification/save/',
  17. _auditUrl: '/api/money/verification/audit/',
  18. _unAuditUrl: '/api/money/verification/unAudit/',
  19. _deleteUrl: '/api/money/verification/delete/',
  20. defatulType: 'receipts_offset_receivable',
  21. etc: {
  22. /**
  23. * 预收:receipts
  24. * 预付:prepaid
  25. * 应收:receivable
  26. * 应付:payable
  27. */
  28. // base
  29. base: [{
  30. xtype: 'combo',
  31. name: 'vc_kind',
  32. fieldLabel: '业务类型',
  33. editable: false,
  34. store: [
  35. ['receipts_offset_receivable', '预收冲应收'],
  36. ['prepaid_offset_payable', '预付冲应付'],
  37. ['receivable_offset_payable', '应收冲应付'],
  38. ['receivable_to_receivable', '应收转应收'],
  39. ['payable_to_payable', '应付转应付']
  40. ]
  41. }],
  42. detail1: {
  43. xtype: "detailGridField",
  44. storeModel: 'saas.model.money.Verification1',
  45. detnoColumn: 'vd_detno',
  46. deleteDetailUrl: '/api/money/verification/deleteDetail1/',
  47. columnWidth: 1,
  48. columns: [{
  49. text: 'ID',
  50. dataIndex: 'id',
  51. hidden: true
  52. }, {
  53. text: '来源ID',
  54. dataIndex: 'vd_slid',
  55. hidden: true
  56. }, {
  57. text: '来源单号',
  58. dataIndex: 'vd_slcode',
  59. width: 150,
  60. editor:{
  61. displayField : "display",
  62. editable : true,
  63. format : "",
  64. hideTrigger : false,
  65. maxLength : 100.0,
  66. minValue : null,
  67. positiveNum : false,
  68. queryMode : "local",
  69. store : null,
  70. valueField : "value",
  71. xtype : "oriOrderMutiDbfindTrigger"
  72. }
  73. }, {
  74. text: '业务类型',
  75. dataIndex: "vd_slkind",
  76. width: 110
  77. }, {
  78. text: "单据日期",
  79. dataIndex: "vd_sldate",
  80. xtype: 'datecolumn',
  81. width: 110
  82. }, {
  83. text: "单据金额",
  84. xtype: 'numbercolumn',
  85. dataIndex: "vd_amount",
  86. width: 110,
  87. renderer : function(v) {
  88. var arr = (v + '.').split('.');
  89. var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
  90. var format = '0,000.' + xr.join();
  91. return Ext.util.Format.number(v, format);
  92. },
  93. summaryType: 'sum',
  94. summaryRenderer: function(v) {
  95. var arr = (v + '.').split('.');
  96. var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
  97. var format = '0,000.' + xr.join();
  98. return Ext.util.Format.number(v, format);
  99. }
  100. }, {
  101. text: "已核销金额",
  102. xtype: 'numbercolumn',
  103. dataIndex: "sl_yamount",
  104. width: 110,
  105. ignore:true,
  106. renderer : function(v) {
  107. var arr = (v + '.').split('.');
  108. var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
  109. var format = '0,000.' + xr.join();
  110. return Ext.util.Format.number(v, format);
  111. },
  112. summaryType: 'sum',
  113. summaryRenderer: function(v) {
  114. var arr = (v + '.').split('.');
  115. var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
  116. var format = '0,000.' + xr.join();
  117. return Ext.util.Format.number(v, format);
  118. }
  119. }, {
  120. text: "未核销金额",
  121. xtype: 'numbercolumn',
  122. dataIndex: "sl_namount",
  123. width: 110,
  124. ignore:true,
  125. renderer : function(v) {
  126. var arr = (v + '.').split('.');
  127. var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
  128. var format = '0,000.' + xr.join();
  129. return Ext.util.Format.number(v, format);
  130. },
  131. summaryType: 'sum',
  132. summaryRenderer: function(v) {
  133. var arr = (v + '.').split('.');
  134. var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
  135. var format = '0,000.' + xr.join();
  136. return Ext.util.Format.number(v, format);
  137. }
  138. }, {
  139. text: "本次核销金额",
  140. xtype: 'numbercolumn',
  141. dataIndex: "vd_nowbalance",
  142. width: 150,
  143. editor : {
  144. xtype : "numberfield",
  145. decimalPrecision: 2
  146. },
  147. allowBlank : false,
  148. renderer : function(v) {
  149. var arr = (v + '.').split('.');
  150. var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
  151. var format = '0,000.' + xr.join();
  152. return Ext.util.Format.number(v, format);
  153. },
  154. summaryType: 'sum',
  155. summaryRenderer: function(v) {
  156. var arr = (v + '.').split('.');
  157. var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
  158. var format = '0,000.' + xr.join();
  159. return Ext.util.Format.number(v, format);
  160. }
  161. }]
  162. },
  163. detail2: {
  164. xtype: "detailGridField",
  165. storeModel: 'saas.model.money.Verification1',
  166. detnoColumn: 'vcd_detno',
  167. deleteDetailUrl: '/api/money/verification/deleteDetail2/',
  168. columnWidth: 1,
  169. columns: [{
  170. text: 'ID',
  171. dataIndex: 'id',
  172. hidden: true
  173. }, {
  174. text: '来源ID',
  175. dataIndex: 'vcd_slid',
  176. hidden: true
  177. }, {
  178. text: '来源单号',
  179. dataIndex: 'vcd_slcode',
  180. width: 150,
  181. editor:{
  182. displayField : "display",
  183. editable : true,
  184. format : "",
  185. hideTrigger : false,
  186. maxLength : 100.0,
  187. minValue : null,
  188. positiveNum : false,
  189. queryMode : "local",
  190. store : null,
  191. valueField : "value",
  192. xtype : "oriOrderMutiDbfindTrigger"
  193. }
  194. }, {
  195. text: '业务类型',
  196. dataIndex: "vcd_slkind",
  197. width: 110
  198. }, {
  199. text: "单据日期",
  200. dataIndex: "vcd_sldate",
  201. xtype: 'datecolumn',
  202. width: 110
  203. }, {
  204. text: "单据金额",
  205. xtype: 'numbercolumn',
  206. dataIndex: "vcd_amount",
  207. width: 110,
  208. renderer : function(v) {
  209. var arr = (v + '.').split('.');
  210. var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
  211. var format = '0,000.' + xr.join();
  212. return Ext.util.Format.number(v, format);
  213. },
  214. summaryType: 'sum',
  215. summaryRenderer: function(v) {
  216. var arr = (v + '.').split('.');
  217. var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
  218. var format = '0,000.' + xr.join();
  219. return Ext.util.Format.number(v, format);
  220. }
  221. }, {
  222. text: "已核销金额",
  223. xtype: 'numbercolumn',
  224. dataIndex: "sl_yamount",
  225. width: 110,
  226. ignore:true,
  227. renderer : function(v) {
  228. var arr = (v + '.').split('.');
  229. var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
  230. var format = '0,000.' + xr.join();
  231. return Ext.util.Format.number(v, format);
  232. },
  233. summaryType: 'sum',
  234. summaryRenderer: function(v) {
  235. var arr = (v + '.').split('.');
  236. var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
  237. var format = '0,000.' + xr.join();
  238. return Ext.util.Format.number(v, format);
  239. }
  240. }, {
  241. text: "未核销金额",
  242. xtype: 'numbercolumn',
  243. dataIndex: "sl_namount",
  244. width: 110,
  245. ignore:true,
  246. renderer : function(v) {
  247. var arr = (v + '.').split('.');
  248. var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
  249. var format = '0,000.' + xr.join();
  250. return Ext.util.Format.number(v, format);
  251. },
  252. summaryType: 'sum',
  253. summaryRenderer: function(v) {
  254. var arr = (v + '.').split('.');
  255. var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
  256. var format = '0,000.' + xr.join();
  257. return Ext.util.Format.number(v, format);
  258. }
  259. }, {
  260. text: "本次核销金额",
  261. dataIndex: "vcd_nowbalance",
  262. xtype: 'numbercolumn',
  263. editor : {
  264. xtype : "numberfield",
  265. decimalPrecision: 2
  266. },
  267. width: 110,
  268. renderer : function(v) {
  269. var arr = (v + '.').split('.');
  270. var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
  271. var format = '0,000.' + xr.join();
  272. return Ext.util.Format.number(v, format);
  273. },
  274. summaryType: 'sum',
  275. summaryRenderer: function(v) {
  276. var arr = (v + '.').split('.');
  277. var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
  278. var format = '0,000.' + xr.join();
  279. return Ext.util.Format.number(v, format);
  280. }
  281. }]
  282. },
  283. other: [{
  284. fieldLabel: '备注',
  285. xtype: 'textfield',
  286. columnWidth: 1,
  287. name: 'vc_remark'
  288. }],
  289. // 预收冲应收
  290. receipts_offset_receivable : {
  291. main: [{
  292. xtype: 'hidden',
  293. fieldLabel: '客户名称',
  294. name: 'vc_custid',
  295. allowBlank : false,
  296. listeners: {
  297. change: 'clearDetails'
  298. }
  299. }, {
  300. fieldLabel: '客户编号',
  301. xtype: 'hidden',
  302. name: 'vc_custcode',
  303. }, {
  304. fieldLabel: '客户名称',
  305. xtype: 'customerDbfindTrigger',
  306. name: 'vc_custname',
  307. }, {
  308. fieldLabel: '日期',
  309. xtype: 'datefield',
  310. defaultValue: new Date(),
  311. allowBlank : false,
  312. name: 'vc_date'
  313. }, {
  314. xtype: 'hidden',
  315. name: 'vc_amount1',
  316. fieldLabel: '核销金额'
  317. }, {
  318. xtype: "hidden",
  319. name: "vc_amount2",
  320. fieldLabel: "未核销金额"
  321. },],
  322. details: ['detail1', 'detail2']
  323. },
  324. // 预付冲应付
  325. prepaid_offset_payable: {
  326. main: [{
  327. xtype: 'hidden',
  328. name: 'vc_vendid',
  329. fieldLabel: '供应商名称',
  330. allowBlank : false,
  331. listeners: {
  332. change: 'clearDetails'
  333. }
  334. }, {
  335. xtype: "hidden",
  336. name: "vc_vendcode",
  337. fieldLabel: "供应商编号"
  338. }, {
  339. xtype: "vendorDbfindTrigger",
  340. name: "vc_vendname",
  341. fieldLabel: "供应商名称",
  342. allowBlank : false
  343. }, {
  344. fieldLabel: '日期',
  345. xtype: 'datefield',
  346. defaultValue: new Date(),
  347. allowBlank : false,
  348. name: 'vc_date'
  349. }],
  350. details: ['detail1', 'detail2']
  351. },
  352. // 应收冲应付
  353. receivable_offset_payable: {
  354. main: [{
  355. fieldLabel: '客户名称',
  356. xtype: 'textfield',
  357. name: 'vc_custid',
  358. hidden: true,
  359. listeners: {
  360. change: 'clearDetail0'
  361. }
  362. }, {
  363. fieldLabel: '客户编号',
  364. xtype: 'textfield',
  365. name: 'vc_custcode',
  366. hidden: true
  367. }, {
  368. fieldLabel: '客户名称',
  369. xtype: 'customerDbfindTrigger',
  370. name: 'vc_custname'
  371. }, {
  372. xtype: 'hidden',
  373. name: 'vc_vendid',
  374. fieldLabel: '供应商ID',
  375. listeners: {
  376. change: 'clearDetail1'
  377. }
  378. }, {
  379. xtype: "hidden",
  380. name: "vc_vendcode",
  381. fieldLabel: "供应商编号"
  382. }, {
  383. xtype: "vendorDbfindTrigger",
  384. name: "vc_vendname",
  385. fieldLabel: "供应商名称",
  386. allowBlank : false
  387. }, {
  388. fieldLabel: '日期',
  389. xtype: 'datefield',
  390. defaultValue: new Date(),
  391. allowBlank : false,
  392. name: 'vc_date'
  393. }],
  394. details: ['detail1', 'detail2']
  395. },
  396. // 应收转应收
  397. receivable_to_receivable: {
  398. main: [{
  399. fieldLabel: '转出客户',
  400. xtype: 'textfield',
  401. name: 'vc_outcustid',
  402. hidden: true,
  403. listeners: {
  404. change: 'clearDetail0'
  405. }
  406. }, {
  407. fieldLabel: '转出客户编号',
  408. xtype: 'textfield',
  409. name: 'vc_outcustcode',
  410. hidden: true
  411. }, {
  412. fieldLabel: '转出客户',
  413. xtype: 'customerDbfindTrigger',
  414. name: 'vc_outcustname'
  415. }, {
  416. fieldLabel: '转入客户id',
  417. xtype: 'textfield',
  418. name: 'vc_turncustid',
  419. hidden: true
  420. }, {
  421. fieldLabel: '转入客户编号',
  422. xtype: 'textfield',
  423. name: 'vc_turncustcode',
  424. hidden: true
  425. }, {
  426. fieldLabel: '转入客户',
  427. xtype: 'customerDbfindTrigger',
  428. name: 'vc_turncustname',
  429. }, {
  430. fieldLabel: '日期',
  431. xtype: 'datefield',
  432. defaultValue: new Date(),
  433. allowBlank : false,
  434. name: 'vc_date'
  435. }],
  436. details: ['detail1']
  437. },
  438. // 应付转应付
  439. payable_to_payable: {
  440. main: [{
  441. fieldLabel: '转出供应商',
  442. xtype: 'textfield',
  443. name: 'vc_outvendid',
  444. hidden: true,
  445. listeners: {
  446. change: 'clearDetail0'
  447. }
  448. }, {
  449. fieldLabel: '转出供应商编号',
  450. xtype: 'textfield',
  451. name: 'vc_outvendcode',
  452. hidden: true
  453. }, {
  454. fieldLabel: '转出供应商',
  455. xtype: 'vendorDbfindTrigger',
  456. name: 'vc_outvendname'
  457. }, {
  458. fieldLabel: '转入供应商id',
  459. xtype: 'textfield',
  460. name: 'vc_turnvendid',
  461. hidden: true
  462. }, {
  463. fieldLabel: '转入供应商编号',
  464. xtype: 'textfield',
  465. name: 'vc_turnvendcode',
  466. hidden: true
  467. }, {
  468. fieldLabel: '转入供应商',
  469. xtype: 'vendorDbfindTrigger',
  470. name: 'vc_turnvendname',
  471. }, {
  472. fieldLabel: '日期',
  473. xtype: 'datefield',
  474. defaultValue: new Date(),
  475. allowBlank : false,
  476. name: 'vc_date'
  477. }],
  478. details: ['detail1']
  479. },
  480. defaultConditions: {
  481. receipts_offset_receivable: ['ifnull(sl_custid,0)={vc_custid} and ifnull(sl_preamount,0)<>0 and ifnull(sl_namount,0)<>0',
  482. 'ifnull(sl_custid,0)={vc_custid} and ifnull(sl_preamount,0)=0 and ifnull(sl_namount,0)<>0 and sl_kind in (\'期初余额\',\'出货单\',\'销售退货单\')'],
  483. prepaid_offset_payable: ['ifnull(sl_vendid,0)={vc_vendid} and ifnull(sl_preamount,0)<>0 and ifnull(sl_namount,0)<>0',
  484. 'ifnull(sl_vendid,0)={vc_vendid} and ifnull(sl_preamount,0)=0 and ifnull(sl_namount,0)<>0'],
  485. receivable_offset_payable: ['ifnull(sl_custid,0)={vc_custid} and ifnull(sl_preamount,0)=0 and ifnull(sl_namount,0)<>0',
  486. 'ifnull(sl_vendid,0)={vc_vendid} and ifnull(sl_preamount,0)=0 and ifnull(sl_namount,0)<>0'],
  487. receivable_to_receivable: ['ifnull(sl_custid,0)={vc_outcustid} and ifnull(sl_preamount,0)=0 and ifnull(sl_namount,0)<>0'],
  488. payable_to_payable: ['ifnull(sl_vendtid,0)={vc_outvendid} and ifnull(sl_preamount,0)=0 and ifnull(sl_namount,0)<>0']
  489. }
  490. },
  491. // initComponent: function() {
  492. // this.callParent(arguments);
  493. // },
  494. initFormItems: function() {
  495. var me = this,
  496. cusItems = me.cusItems,
  497. defaultItems = me.getAcitveItems(),
  498. FormUtil = saas.util.FormUtil;
  499. me.detailCount = 0;
  500. if(cusItems) {
  501. var items = defaultItems || [];
  502. Ext.Array.each(cusItems, function(cusItem) {
  503. var item = items.find(function(item) {
  504. return item.name == cusItem.name;
  505. });
  506. Ext.apply(item, cusItem);
  507. });
  508. items = FormUtil.applyDefaultItems(me, items);
  509. me.removeAll();
  510. me.addItems(items);
  511. FormUtil.loadData(me);
  512. }else {
  513. FormUtil.applyCusItemConfig(me)
  514. .then(function(res) {
  515. if(res.success) {
  516. var config = res.data || true, items = defaultItems || [];
  517. if(config) {
  518. cusItems = config.items || [];
  519. me.cusItems = cusItems;
  520. Ext.Array.each(cusItems, function(cusItem) {
  521. var item = items.find(function(item) {
  522. return item.name == cusItem.name;
  523. });
  524. Ext.apply(item, cusItem);
  525. });
  526. items = FormUtil.applyDefaultItems(me, items);
  527. }
  528. me.removeAll();
  529. return me.addItems(items);
  530. }
  531. })
  532. .then(function(items) {
  533. me.fireEvent('afterSetItems', me, items);
  534. })
  535. .then(function() {
  536. FormUtil.loadData(me);
  537. })
  538. .catch(function(response) {
  539. saas.util.BaseUtil.showToast('错误:' + response.message);
  540. console.error(response);
  541. });
  542. }
  543. },
  544. getAcitveItems: function() {
  545. var me = this,
  546. acitveType = me.acitveType || me.defatulType,
  547. etc = me.etc,
  548. acitveEtc = etc[acitveType],
  549. mainItems = acitveEtc.main,
  550. details = acitveEtc.details,
  551. base = etc.base,
  552. detail1 = etc.detail1,
  553. detail2 = etc.detail2,
  554. other = etc.other,
  555. items = [];
  556. base[0].defaultValue = acitveType;
  557. items = Ext.Array.merge(base, mainItems, (details[0] ? [detail1] : []), (details[1] ? [detail2] : []), other );
  558. return items;
  559. },
  560. });