BillARChange.js 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706
  1. Ext.QuickTips.init();
  2. Ext.define('erp.controller.fa.gs.BillARChange', {
  3. extend: 'Ext.app.Controller',
  4. FormUtil: Ext.create('erp.util.FormUtil'),
  5. GridUtil: Ext.create('erp.util.GridUtil'),
  6. BaseUtil: Ext.create('erp.util.BaseUtil'),
  7. views:[
  8. 'core.form.Panel','fa.gs.BillARChange','core.grid.Panel2','core.toolbar.Toolbar','core.form.MultiField',
  9. 'core.button.Save','core.button.Add','core.button.Submit','core.button.Print','core.button.ResAudit',
  10. 'core.button.Audit','core.button.Close','core.button.Delete','core.button.Update','core.button.DeleteDetail',
  11. 'core.button.ResSubmit','core.button.Flow','core.trigger.MultiDbfindTrigger','core.button.Accounted','core.button.ResAccounted',
  12. 'core.trigger.DbfindTrigger','core.trigger.TextAreaTrigger','core.form.YnField','core.form.SeparNumber',
  13. 'core.window.AssWindow', 'core.button.AssDetail','core.button.AssMain'
  14. ],
  15. init:function(){
  16. var me = this;
  17. this.control({
  18. 'erpGridPanel2': {
  19. itemclick: this.onGridItemClick
  20. },
  21. 'field[name=ca_asstype]':{
  22. change: function(f){
  23. var btn = Ext.getCmp('assmainbutton');
  24. if(Ext.getCmp('brc_kind').value != '其他收款'){
  25. btn.hide();
  26. } else {
  27. btn.show();
  28. btn && btn.setDisabled(Ext.isEmpty(f.value));
  29. }
  30. }
  31. },
  32. 'erpAssMainButton':{
  33. afterrender:function(btn){
  34. if(Ext.getCmp('brc_kind').value != '其他收款'){
  35. btn.hide();
  36. } else {
  37. if(Ext.getCmp('ca_asstype') && Ext.isEmpty(Ext.getCmp('ca_asstype').getValue())){
  38. btn.setDisabled(true);
  39. } else {
  40. btn.setDisabled(false);
  41. }
  42. }
  43. }
  44. },
  45. 'erpFormPanel' : {
  46. afterload : function(form) {
  47. var t = form.down('#brc_kind');
  48. this.hidecolumns(t);
  49. }
  50. },
  51. 'field[name=brc_currency]': {
  52. beforetrigger: function(field) {
  53. var t = field.up('form').down('field[name=brc_date]'),
  54. value = t.getValue();
  55. if(value) {
  56. field.findConfig = 'cm_yearmonth=' + Ext.Date.format(value, 'Ym');
  57. }
  58. }
  59. },
  60. 'textfield[name=brc_amount]':{
  61. beforerender: function(field){
  62. if(Ext.getCmp('brc_ppcode')&&Ext.getCmp('brc_ppcode').value!=""){
  63. field.readOnly=true;
  64. }
  65. }
  66. },
  67. 'field[name=bap_vendcode]':{
  68. beforerender: function(field){
  69. if(Ext.getCmp('brc_ppcode')&& !Ext.isEmpty(Ext.getCmp('brc_ppcode').value)){
  70. field.readOnly=true;
  71. }
  72. }
  73. },
  74. 'erpSaveButton': {
  75. click: function(btn){
  76. var form = me.getForm(btn), bool = true;
  77. if(Ext.getCmp(form.codeField).value == null || Ext.getCmp(form.codeField).value == ''){
  78. me.BaseUtil.getRandomNumber();//自动添加编号
  79. }
  80. if(Ext.getCmp('brc_kind').value == '背书转让'){
  81. var brc_billkind2 = Ext.getCmp('brc_billkind2'), brc_vendcode = Ext.getCmp('brc_vendcode');
  82. if(brc_billkind2 && Ext.isEmpty(brc_billkind2.value)){
  83. bool = false;
  84. showError('付款类型未填写');return;
  85. }
  86. if(brc_vendcode && Ext.isEmpty(brc_vendcode.value)){
  87. bool = false;
  88. showError('被背书人未填写');return;
  89. }
  90. }
  91. var grid = Ext.getCmp('grid'), items = grid.store.data.items;
  92. //贷方金额不能大于票面余额
  93. Ext.each(items, function(item){
  94. if(!Ext.isEmpty(item.data['brd_barcode'])){
  95. if(item.data['brd_amount'] > item.data['bar_leftamount']){
  96. bool = false;
  97. showError('明细表第' + item.data['brd_detno'] + '行的贷方金额不能大于票面余额');return;
  98. }
  99. }
  100. });
  101. this.getAmount();
  102. if(bool){
  103. if(! me.FormUtil.checkForm()){
  104. return;
  105. }
  106. if(Ext.getCmp(form.keyField).value == null || Ext.getCmp(form.keyField).value == ''){
  107. me.FormUtil.getSeqId(form);
  108. }
  109. var detail = Ext.getCmp('grid');
  110. var param2 = new Array();
  111. if(Ext.getCmp('assmainbutton')){
  112. Ext.each(Ext.Object.getKeys(Ext.getCmp('assmainbutton').cacheStoreForm), function(key){
  113. Ext.each(Ext.getCmp('assmainbutton').cacheStoreForm[key], function(d){
  114. d['ass_conid'] = key;
  115. param2.push(d);
  116. });
  117. });
  118. }
  119. var param1 = me.GridUtil.getGridStore(detail);
  120. if(Ext.isEmpty(me.FormUtil.checkFormDirty(form)) && (param1.length == 0) && param2.length == 0){
  121. showError($I18N.common.grid.emptyDetail);
  122. return;
  123. } else {
  124. param1 = param1 == null ? [] : "[" + param1.toString().replace(/\\/g,"%") + "]";
  125. param2 = param2 == null ? [] : Ext.encode(param2).replace(/\\/g,"%");
  126. if(form.getForm().isValid()){
  127. Ext.each(form.items.items, function(item){
  128. if(item.xtype == 'numberfield'){
  129. if(item.value == null || item.value == ''){
  130. item.setValue(0);
  131. }
  132. }
  133. });
  134. var r = form.getValues();
  135. form.getForm().getFields().each(function(){
  136. if(this.logic == 'ignore') {
  137. delete r[this.name];
  138. }
  139. });
  140. me.FormUtil.save(r, param1, param2);
  141. }else{
  142. me.FormUtil.checkForm();
  143. }
  144. }
  145. }
  146. }
  147. },
  148. 'erpDeleteButton' : {
  149. click: function(btn){
  150. me.FormUtil.onDelete(Ext.getCmp('brc_id').value);
  151. }
  152. },
  153. 'erpUpdateButton': {
  154. click: function(btn){
  155. me.beforeUpdate(me.getForm(btn));
  156. }
  157. },
  158. 'erpAddButton': {
  159. click: function(){
  160. me.FormUtil.onAdd('addBillARChange', '新增应收票据异动作业', 'jsps/fa/gs/billARChange.jsp');
  161. }
  162. },
  163. 'erpCloseButton': {
  164. click: function(btn){
  165. me.FormUtil.beforeClose(me);
  166. }
  167. },
  168. 'erpSubmitButton': {
  169. afterrender: function(btn){
  170. var status = Ext.getCmp('brc_statuscode');
  171. if(status && status.value != 'ENTERING'){
  172. btn.hide();
  173. }
  174. },
  175. click: function(btn){
  176. var grid = Ext.getCmp('grid'), items = grid.store.data.items, bool = true;
  177. if(Ext.getCmp('brc_kind').value == '背书转让'){
  178. var brc_billkind2 = Ext.getCmp('brc_billkind2'), brc_vendcode = Ext.getCmp('brc_vendcode');
  179. if(brc_billkind2 && Ext.isEmpty(brc_billkind2.value)){
  180. bool = false;
  181. showError('付款类型未填写');return;
  182. }
  183. if(brc_vendcode && Ext.isEmpty(brc_vendcode.value)){
  184. bool = false;
  185. showError('被背书人未填写');return;
  186. }
  187. }
  188. if(Ext.getCmp('brc_kind').value == '贴现'){
  189. if(!Ext.isEmpty(Ext.getCmp('brc_netdiscount').value)){
  190. if(Ext.getCmp('brc_amount').value > 0 && Ext.getCmp('brc_netdiscount').value > Ext.getCmp('brc_amount').value){
  191. bool = false;
  192. showError('贴现净额不能大于贷方总额!');return;
  193. }
  194. }
  195. }
  196. //贷方金额不能大于票面余额
  197. Ext.each(items, function(item){
  198. if(!Ext.isEmpty(item.data['brd_barcode'])){
  199. if(item.data['brd_amount'] > item.data['bar_leftamount']){
  200. bool = false;
  201. showError('明细表第' + item.data['brd_detno'] + '行的贷方金额不能大于票面余额');return;
  202. }
  203. }
  204. });
  205. this.getAmount();
  206. if(bool)
  207. me.FormUtil.onSubmit(Ext.getCmp('brc_id').value, false, this.beforeUpdate, this, me.getForm(btn));
  208. }
  209. },
  210. 'erpResSubmitButton': {
  211. afterrender: function(btn){
  212. var status = Ext.getCmp('brc_statuscode');
  213. if(status && status.value != 'COMMITED'){
  214. btn.hide();
  215. }
  216. },
  217. click: function(btn){
  218. me.FormUtil.onResSubmit(Ext.getCmp('brc_id').value);
  219. }
  220. },
  221. 'erpAuditButton': {
  222. afterrender: function(btn){
  223. var status = Ext.getCmp('brc_statuscode');
  224. if(status && status.value != 'COMMITED'){
  225. btn.hide();
  226. }
  227. },
  228. click: function(btn){
  229. var grid = Ext.getCmp('grid'), items = grid.store.data.items, bool = true;
  230. if(Ext.getCmp('brc_kind').value == '背书转让'){
  231. var brc_billkind2 = Ext.getCmp('brc_billkind2'), brc_vendcode = Ext.getCmp('brc_vendcode');
  232. if(brc_billkind2 && Ext.isEmpty(brc_billkind2.value)){
  233. bool = false;
  234. showError('付款类型未填写');return;
  235. }
  236. if(brc_vendcode && Ext.isEmpty(brc_vendcode.value)){
  237. bool = false;
  238. showError('被背书人未填写');return;
  239. }
  240. }
  241. //贷方金额不能大于票面余额
  242. Ext.each(items, function(item){
  243. if(!Ext.isEmpty(item.data['brd_barcode'])){
  244. if(item.data['brd_amount'] > item.data['bar_leftamount']){
  245. bool = false;
  246. showError('明细表第' + item.data['brd_detno'] + '行的贷方金额不能大于票面余额');return;
  247. }
  248. }
  249. });
  250. if(bool)
  251. me.FormUtil.onAudit(Ext.getCmp('brc_id').value);
  252. }
  253. },
  254. 'erpResAuditButton': {
  255. afterrender: function(btn){
  256. var status = Ext.getCmp('brc_statuscode');
  257. if(status && status.value != 'AUDITED'){
  258. btn.hide();
  259. }
  260. },
  261. click: function(btn){
  262. me.FormUtil.onResAudit(Ext.getCmp('brc_id').value);
  263. }
  264. },
  265. 'erpAccountedButton': {
  266. afterrender: function(btn){
  267. var status = Ext.getCmp('brc_statuscode');
  268. if(status && status.value != 'AUDITED' && status.value != 'COMMITED'){
  269. btn.hide();
  270. }
  271. },
  272. click: function(btn){
  273. var grid = Ext.getCmp('grid'), items = grid.store.data.items, bool = true;
  274. if(Ext.getCmp('brc_kind').value == '背书转让'){
  275. var brc_billkind2 = Ext.getCmp('brc_billkind2'), brc_vendcode = Ext.getCmp('brc_vendcode');
  276. if(brc_billkind2 && Ext.isEmpty(brc_billkind2.value)){
  277. bool = false;
  278. showError('付款类型未填写');return;
  279. }
  280. if(brc_vendcode && Ext.isEmpty(brc_vendcode.value)){
  281. bool = false;
  282. showError('被背书人未填写');return;
  283. }
  284. }
  285. if(Ext.getCmp('brc_kind').value == '贴现'){
  286. if(!Ext.isEmpty(Ext.getCmp('brc_netdiscount').value)){
  287. if(Ext.getCmp('brc_amount').value > 0 && Ext.getCmp('brc_netdiscount').value > Ext.getCmp('brc_amount').value){
  288. bool = false;
  289. showError('贴现净额不能大于贷方总额!');return;
  290. }
  291. }
  292. }
  293. //贷方金额不能大于票面余额
  294. Ext.each(items, function(item){
  295. if(!Ext.isEmpty(item.data['brd_barcode'])){
  296. if(item.data['brd_amount'] > item.data['bar_leftamount']){
  297. bool = false;
  298. showError('明细表第' + item.data['brd_detno'] + '行的贷方金额不能大于票面余额');return;
  299. }
  300. }
  301. });
  302. if(bool)
  303. me.FormUtil.onAccounted(Ext.getCmp('brc_id').value);
  304. }
  305. },
  306. 'erpResAccountedButton': {
  307. afterrender: function(btn){
  308. var status = Ext.getCmp('brc_statuscode');
  309. if(status && status.value != 'POSTED'){
  310. btn.hide();
  311. }
  312. },
  313. click: function(btn){
  314. me.FormUtil.onResAccounted(Ext.getCmp('brc_id').value);
  315. }
  316. },
  317. 'erpPrintButton': {
  318. click: function(btn){
  319. me.FormUtil.onPrint(Ext.getCmp('brc_id').value);
  320. }
  321. },
  322. 'combo[name=brc_kind]': {
  323. afterrender: function(m){
  324. Ext.defer(function(){
  325. var btn = Ext.getCmp('assmainbutton');
  326. if(Ext.getCmp('brc_kind').value != '其他收款'){
  327. btn.hide();
  328. } else {
  329. btn.show();
  330. }
  331. }, 200);
  332. },
  333. change: function(m){
  334. var btn = Ext.getCmp('assmainbutton');
  335. if(Ext.getCmp('brc_kind').value != '其他收款'){
  336. btn.hide();
  337. } else {
  338. btn.show();
  339. }
  340. this.hidecolumns(m);
  341. }
  342. },
  343. 'numberfield[name=brc_amount]':{
  344. beforerender:function(num){
  345. num.minValue = Number.NEGATIVE_INFINITY;
  346. num.setMinValue(num.minValue);
  347. b = num.baseChars+"";
  348. b += num.decimalSeparator;
  349. b += "-";
  350. b = Ext.String.escapeRegex(b);
  351. num.maskRe = new RegExp("[" + b + "]");
  352. },
  353. change: function(f) {
  354. var v1 = (f.value || 0),
  355. v2 = (Ext.getCmp('brc_cmamount').value || 0);
  356. if(v1 == 0) {
  357. Ext.getCmp('brc_cmrate').setValue(0);
  358. } else {
  359. Ext.getCmp('brc_cmrate').setValue(Ext.Number.toFixed(v2/v1, 8));
  360. }
  361. }
  362. },
  363. 'numberfield[name=brc_cmamount]':{
  364. beforerender:function(num){
  365. num.minValue = Number.NEGATIVE_INFINITY;
  366. num.setMinValue(num.minValue);
  367. b = num.baseChars+"";
  368. b += num.decimalSeparator;
  369. b += "-";
  370. b = Ext.String.escapeRegex(b);
  371. num.maskRe = new RegExp("[" + b + "]");
  372. },
  373. change: function(f) {
  374. var v1 = (Ext.getCmp('brc_amount').value || 0),
  375. v2 = (f.value || 0);
  376. if(v1 == 0) {
  377. Ext.getCmp('brc_cmrate').setValue(0);
  378. } else {
  379. Ext.getCmp('brc_cmrate').setValue(Ext.Number.toFixed(v2/v1, 8));
  380. }
  381. }
  382. },
  383. 'numberfield[name=brc_netdiscount]':{
  384. change: function(f) {
  385. var v1 = (Ext.getCmp('brc_amount').value || 0),
  386. v2 = (f.value || 0);
  387. if(v1 == 0) {
  388. Ext.getCmp('brc_discountamount').setValue(0);
  389. } else {
  390. Ext.getCmp('brc_discountamount').setValue(Ext.Number.toFixed(v1-v2, 2));
  391. }
  392. }
  393. },
  394. 'numberfield[name=brc_amount]':{
  395. change: function(f) {
  396. var v1 = (Ext.getCmp('brc_netdiscount').value || 0),
  397. v2 = (f.value || 0);
  398. if(v1 == 0) {
  399. Ext.getCmp('brc_discountamount').setValue(0);
  400. } else {
  401. Ext.getCmp('brc_discountamount').setValue(Ext.Number.toFixed(v2-v1, 2));
  402. }
  403. }
  404. },
  405. 'dbfindtrigger[name=brd_barcode]': {
  406. focus: function(t){
  407. t.setHideTrigger(false);
  408. t.setReadOnly(false);
  409. if(Ext.getCmp('brc_custcode')){
  410. var code = Ext.getCmp('brc_custcode').value;
  411. if(code != null && code != ''){
  412. var obj = me.getCodeCondition();
  413. if(obj && obj.field){
  414. t.dbBaseCondition = obj.field + "='" + code + "'";
  415. }
  416. }
  417. }
  418. },
  419. aftertrigger: function(t){
  420. if(Ext.getCmp('brc_custcode')){
  421. var obj = me.getCodeCondition();
  422. if(obj && obj.fields){
  423. me.FormUtil.getFieldsValue(obj.tablename, obj.fields, obj.myfield + "='" + t.value + "'", obj.tFields);
  424. }
  425. }
  426. if(Ext.getCmp('brc_catecode')){
  427. var obj = me.getCateCondition();
  428. if(obj && obj.fields){
  429. me.FormUtil.getFieldsValue(obj.tablename, obj.fields, obj.myfield + "='" + t.value + "'", obj.tFields);
  430. }
  431. }
  432. }
  433. }
  434. });
  435. },
  436. hidecolumns:function(m){
  437. if(!Ext.isEmpty(m.getValue())) {
  438. var form = m.ownerCt;
  439. if(m.value == '背书转让'){
  440. form.down('#brc_vendcode').show();
  441. form.down('#brc_vendname').show();
  442. form.down('#brc_billkind2').show();
  443. form.down('#brc_billkind1').hide();
  444. form.down('#brc_custcode').show();
  445. form.down('#brc_custname').show();
  446. form.down('#brc_feecatecode') && form.down('#brc_feecatecode').hide();
  447. form.down('#brc_feecatename') && form.down('#brc_feecatename').hide();
  448. form.down('#brc_netdiscount') && form.down('#brc_netdiscount').hide();
  449. form.down('#brc_discountrate') && form.down('#brc_discountrate').hide();
  450. form.down('#brc_discountamount') && form.down('#brc_discountamount').hide();
  451. form.down('#brc_currency') && form.down('#brc_currency').show();
  452. form.down('#brc_rate') && form.down('#brc_rate').show();
  453. form.down('#brc_cmcurrency') && form.down('#brc_cmcurrency').show();
  454. form.down('#brc_cmrate') && form.down('#brc_cmrate').show();
  455. form.down('#brc_cmamount') && form.down('#brc_cmamount').show();
  456. form.down('#brc_ppcode') && form.down('#brc_ppcode').show();
  457. if(Ext.isEmpty(Ext.getCmp('brc_cmcurrency').value)){
  458. Ext.getCmp('brc_cmcurrency').setValue('RMB');
  459. Ext.getCmp('brc_cmrate').setValue('1');
  460. }
  461. if(Ext.isEmpty(Ext.getCmp('brc_currency').value)){
  462. Ext.getCmp('brc_currency').setValue('RMB');
  463. Ext.getCmp('brc_rate').setValue('1');
  464. }
  465. Ext.getCmp('brc_cmamount').setValue(Ext.getCmp('brc_amount').value);
  466. form.down('#brc_catecode') && form.down('#brc_catecode').hide();
  467. form.down('#brc_catename') && form.down('#brc_catename').hide();
  468. } else if(m.value == '背书借'){
  469. form.down('#brc_vendcode').hide();
  470. form.down('#brc_vendname').hide();
  471. form.down('#brc_billkind2').hide();
  472. form.down('#brc_billkind1').show();
  473. form.down('#brc_custcode').show();
  474. form.down('#brc_custname').show();
  475. form.down('#brc_feecatecode') && form.down('#brc_feecatecode').hide();
  476. form.down('#brc_feecatename') && form.down('#brc_feecatename').hide();
  477. form.down('#brc_netdiscount') && form.down('#brc_netdiscount').hide();
  478. form.down('#brc_discountrate') && form.down('#brc_discountrate').hide();
  479. form.down('#brc_discountamount') && form.down('#brc_discountamount').hide();
  480. form.down('#brc_currency') && form.down('#brc_currency').hide();
  481. form.down('#brc_rate') && form.down('#brc_rate').hide();
  482. form.down('#brc_cmcurrency') && form.down('#brc_cmcurrency').hide();
  483. form.down('#brc_cmrate') && form.down('#brc_cmrate').hide();
  484. form.down('#brc_cmamount') && form.down('#brc_cmamount').hide();
  485. form.down('#brc_ppcode') && form.down('#brc_ppcode').hide();
  486. }else if(m.value == '贴现'){
  487. form.down('#brc_vendcode').hide();
  488. form.down('#brc_vendname').hide();
  489. form.down('#brc_custcode').show();
  490. form.down('#brc_custname').show();
  491. form.down('#brc_billkind2').hide();
  492. form.down('#brc_billkind1').hide();
  493. form.down('#brc_feecatecode') && form.down('#brc_feecatecode').show();
  494. form.down('#brc_feecatename') && form.down('#brc_feecatename').show();
  495. form.down('#brc_netdiscount') && form.down('#brc_netdiscount').show();
  496. form.down('#brc_discountrate') && form.down('#brc_discountrate').show();
  497. form.down('#brc_discountamount') && form.down('#brc_discountamount').show();
  498. form.down('#brc_currency') && form.down('#brc_currency').hide();
  499. form.down('#brc_rate') && form.down('#brc_rate').hide();
  500. form.down('#brc_cmcurrency') && form.down('#brc_cmcurrency').hide();
  501. form.down('#brc_cmrate') && form.down('#brc_cmrate').hide();
  502. form.down('#brc_cmamount') && form.down('#brc_cmamount').hide();
  503. form.down('#brc_ppcode') && form.down('#brc_ppcode').hide();
  504. }else if (m.value == '收款'){
  505. form.down('#brc_vendcode').hide();
  506. form.down('#brc_vendname').hide();
  507. form.down('#brc_custcode').show();
  508. form.down('#brc_custname').show();
  509. form.down('#brc_billkind2').hide();
  510. form.down('#brc_billkind1').hide();
  511. form.down('#brc_feecatecode') && form.down('#brc_feecatecode').hide();
  512. form.down('#brc_feecatename') && form.down('#brc_feecatename').hide();
  513. form.down('#brc_netdiscount') && form.down('#brc_netdiscount').hide();
  514. form.down('#brc_discountrate') && form.down('#brc_discountrate').hide();
  515. form.down('#brc_discountamount') && form.down('#brc_discountamount').hide();
  516. form.down('#brc_currency') && form.down('#brc_currency').hide();
  517. form.down('#brc_rate') && form.down('#brc_rate').hide();
  518. form.down('#brc_cmcurrency') && form.down('#brc_cmcurrency').hide();
  519. form.down('#brc_cmrate') && form.down('#brc_cmrate').hide();
  520. form.down('#brc_cmamount') && form.down('#brc_cmamount').hide();
  521. form.down('#brc_ppcode') && form.down('#brc_ppcode').hide();
  522. } else if (m.value == '退票'){
  523. form.down('#brc_vendcode').hide();
  524. form.down('#brc_vendname').hide();
  525. form.down('#brc_custcode').show();
  526. form.down('#brc_custname').show();
  527. form.down('#brc_billkind2').hide();
  528. form.down('#brc_billkind1').hide();
  529. form.down('#brc_feecatecode') && form.down('#brc_feecatecode').hide();
  530. form.down('#brc_feecatename') && form.down('#brc_feecatename').hide();
  531. form.down('#brc_netdiscount') && form.down('#brc_netdiscount').hide();
  532. form.down('#brc_discountrate') && form.down('#brc_discountrate').hide();
  533. form.down('#brc_discountamount') && form.down('#brc_discountamount').hide();
  534. form.down('#brc_currency') && form.down('#brc_currency').hide();
  535. form.down('#brc_rate') && form.down('#brc_rate').hide();
  536. form.down('#brc_cmcurrency') && form.down('#brc_cmcurrency').hide();
  537. form.down('#brc_cmrate') && form.down('#brc_cmrate').hide();
  538. form.down('#brc_cmamount') && form.down('#brc_cmamount').hide();
  539. form.down('#brc_ppcode') && form.down('#brc_ppcode').hide();
  540. form.down('#brc_catecode') && form.down('#brc_catecode').hide();
  541. form.down('#brc_catename') && form.down('#brc_catename').hide();
  542. } else{
  543. form.down('#brc_vendcode').hide();
  544. form.down('#brc_vendname').hide();
  545. form.down('#brc_custcode').hide();
  546. form.down('#brc_custname').hide();
  547. form.down('#brc_billkind2').hide();
  548. form.down('#brc_billkind1').hide();
  549. form.down('#brc_feecatecode') && form.down('#brc_feecatecode').hide();
  550. form.down('#brc_feecatename') && form.down('#brc_feecatename').hide();
  551. form.down('#brc_netdiscount') && form.down('#brc_netdiscount').hide();
  552. form.down('#brc_discountrate') && form.down('#brc_discountrate').hide();
  553. form.down('#brc_discountamount') && form.down('#brc_discountamount').hide();
  554. form.down('#brc_currency') && form.down('#brc_currency').hide();
  555. form.down('#brc_rate') && form.down('#brc_rate').hide();
  556. form.down('#brc_cmcurrency') && form.down('#brc_cmcurrency').hide();
  557. form.down('#brc_cmrate') && form.down('#brc_cmrate').hide();
  558. form.down('#brc_cmamount') && form.down('#brc_cmamount').hide();
  559. form.down('#brc_ppcode') && form.down('#brc_ppcode').hide();
  560. }
  561. }
  562. },
  563. //计算借方金额 并写入主表借方总额字段
  564. getAmount: function(){
  565. var grid = Ext.getCmp('grid');
  566. var items = grid.store.data.items;
  567. var amount = 0;
  568. var netdiscount = 0;
  569. var kind = Ext.getCmp('brc_kind').value;
  570. var ppcode = Ext.getCmp('brc_ppcode').value;
  571. Ext.each(items,function(item,index){
  572. if(item.data['brd_barcode']!=null&&item.data['brd_barcode']!=""){
  573. amount= amount + Number(item.data['brd_amount']);
  574. }
  575. });
  576. if(Ext.isEmpty(ppcode)){
  577. Ext.getCmp('brc_amount').setValue(Ext.Number.toFixed(amount, 2));
  578. }
  579. if(typeof (f = Ext.getCmp('brc_netdiscount')) != 'undefined' && typeof (f = Ext.getCmp('brc_discountamount')) != 'undefined'){
  580. netdiscount = Ext.getCmp('brc_netdiscount').value;
  581. Ext.getCmp('brc_discountamount').setValue(Ext.Number.toFixed(Ext.getCmp('brc_amount').value-netdiscount, 2));
  582. }
  583. if(kind == '背书转让'){
  584. Ext.getCmp('brc_cmamount').setValue(Ext.getCmp('brc_amount').value);
  585. }
  586. },
  587. beforeSubmit:function(btn){
  588. var me = this;
  589. var grid = Ext.getCmp('grid'),items=grid.store.data.items;
  590. var amount = Number(Ext.getCmp('brc_amount').getValue());
  591. var detailamount = 0;
  592. Ext.each(items,function(item,index){
  593. detailamount = detailamount+Number(item.data['brd_amount']);
  594. if(Ext.Number.toFixed(amount, 2) != Ext.Number.toFixed(detailamount, 2)){
  595. //抛出异常
  596. showError('明细行贷方金额与贷方总额不等,不能提交');return;
  597. }
  598. me.FormUtil.onSubmit(Ext.getCmp('brc_id').value);
  599. });
  600. },
  601. onGridItemClick: function(selModel, record){//grid行选择
  602. this.GridUtil.onGridItemClick(selModel, record);
  603. },
  604. getForm: function(btn){
  605. return btn.ownerCt.ownerCt;
  606. },
  607. getCodeCondition: function(){
  608. var field = "bar_custcode";
  609. var tFields = 'brc_custcode,brc_custname';
  610. var fields = 'bar_custcode,bar_custname';
  611. var tablename = 'BillAR';
  612. var myfield = 'bar_code';
  613. var obj = new Object();
  614. obj.field = field;
  615. obj.fields = fields;
  616. obj.tFields = tFields;
  617. obj.tablename = tablename;
  618. obj.myfield = myfield;
  619. return obj;
  620. },
  621. getCateCondition: function(){
  622. var field = "bar_bankcode";
  623. var tFields = 'brc_catecode,brc_catename';
  624. var fields = 'bar_bankcode,bar_bank';
  625. var tablename = 'BillAR';
  626. var myfield = 'bar_code';
  627. var obj = new Object();
  628. obj.field = field;
  629. obj.fields = fields;
  630. obj.tFields = tFields;
  631. obj.tablename = tablename;
  632. obj.myfield = myfield;
  633. return obj;
  634. },
  635. beforeUpdate: function(form){
  636. var me = this;
  637. var grid = Ext.getCmp('grid'), items = grid.store.data.items, bool = true;
  638. if(Ext.getCmp('brc_kind').value == '背书转让'){
  639. var brc_billkind2 = Ext.getCmp('brc_billkind2'), brc_vendcode = Ext.getCmp('brc_vendcode');
  640. if(brc_billkind2 && Ext.isEmpty(brc_billkind2.value)){
  641. bool = false;
  642. showError('付款类型未填写');return;
  643. }
  644. if(brc_vendcode && Ext.isEmpty(brc_vendcode.value)){
  645. bool = false;
  646. showError('被背书人未填写');return;
  647. }
  648. }
  649. //贷方金额不能大于票面余额
  650. Ext.each(items, function(item){
  651. if(!Ext.isEmpty(item.data['brd_barcode'])){
  652. if(item.data['brd_amount'] > item.data['bar_leftamount']){
  653. bool = false;
  654. showError('明细表第' + item.data['brd_detno'] + '行的贷方金额不能大于票面余额');return;
  655. }
  656. }
  657. });
  658. this.getAmount();
  659. if(bool){
  660. if(! me.FormUtil.checkForm()){
  661. return;
  662. }
  663. if(Ext.getCmp(form.keyField).value == null || Ext.getCmp(form.keyField).value == ''){
  664. me.FormUtil.getSeqId(form);
  665. }
  666. var detail = Ext.getCmp('grid');
  667. var param2 = new Array();
  668. if(Ext.getCmp('assmainbutton')){
  669. Ext.each(Ext.Object.getKeys(Ext.getCmp('assmainbutton').cacheStoreForm), function(key){
  670. Ext.each(Ext.getCmp('assmainbutton').cacheStoreForm[key], function(d){
  671. d['ass_conid'] = key;
  672. param2.push(d);
  673. });
  674. });
  675. }
  676. var param1 = me.GridUtil.getGridStore(detail);
  677. if(Ext.isEmpty(me.FormUtil.checkFormDirty(form)) && (param1.length == 0)
  678. && param2.length == 0){
  679. showError($I18N.common.grid.emptyDetail);
  680. return;
  681. } else {
  682. param1 = param1 == null ? [] : "[" + param1.toString().replace(/\\/g,"%") + "]";
  683. param2 = param2 == null ? [] : Ext.encode(param2).replace(/\\/g,"%");
  684. if(form.getForm().isValid()){
  685. Ext.each(form.items.items, function(item){
  686. if(item.xtype == 'numberfield'){
  687. if(item.value == null || item.value == ''){
  688. item.setValue(0);
  689. }
  690. }
  691. });
  692. var r = form.getValues();
  693. form.getForm().getFields().each(function(){
  694. if(this.logic == 'ignore') {
  695. delete r[this.name];
  696. }
  697. });
  698. me.FormUtil.update(r, param1, param2);
  699. }else{
  700. me.FormUtil.checkForm();
  701. }
  702. }
  703. }
  704. }
  705. });