FormPanel.js 23 KB

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