FormPanel.js 23 KB

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