ARBill.js 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738
  1. Ext.QuickTips.init();
  2. Ext.define('erp.controller.fa.ars.ARBill', {
  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.ars.ARBill','core.grid.Panel2','core.toolbar.Toolbar','core.form.MultiField',
  9. 'core.button.Save','core.button.Add','core.button.Submit','core.button.Print','core.button.Upload','core.button.ResAudit',
  10. 'core.button.Audit','core.button.Close','core.button.Delete','core.button.Update','core.button.ResSubmit',
  11. 'core.button.Post','core.button.ResPost','core.trigger.CateTreeDbfindTrigger',
  12. 'core.trigger.DbfindTrigger','core.trigger.TextAreaTrigger','core.form.YnField','core.button.AutoInvoice',
  13. 'core.form.MonthDateField','core.button.AssDetail','core.button.ConfirmXJSK','core.button.ConfirmYJSK',
  14. 'core.button.CancelSK','core.form.SeparNumber','core.button.PrintVoucherCode', 'core.button.CopyAll', 'core.button.TicketTaxes'
  15. ],
  16. init:function(){
  17. var me = this;
  18. me.gridLastSelected = null;
  19. this.control({
  20. 'erpGridPanel2': {
  21. itemclick:function(selModel, record){
  22. me.onGridItemClick(selModel, record);
  23. if(caller =='ARBill!OTRS'){
  24. var btn = Ext.getCmp('assdetail');
  25. var ass = record.data['ca_asstype'];
  26. if(!Ext.isEmpty(ass)){
  27. btn.setDisabled(false);
  28. } else {
  29. btn.setDisabled(true);
  30. }
  31. }
  32. },
  33. afterrender:function(grid){
  34. grid.plugins[0].on('afteredit',function(e){
  35. if(e.context.field=='abd_aramount'){
  36. if(Number(e.context.record.data["abd_thisvoprice"]) == 0 && Number(e.context.record.data["abd_qty"]) != 0){
  37. var price = Number(e.context.record.data["abd_aramount"])/Number(e.context.record.data["abd_qty"]);
  38. e.context.record.set('abd_thisvoprice',price);
  39. }
  40. }
  41. setTimeout(function(){
  42. var amount = 0;
  43. Ext.each(grid.store.data.items,function(item,index){
  44. amount=amount+Number(item.data['abd_aramount']);
  45. });
  46. Ext.getCmp('ab_aramount').setValue(Ext.util.Format.number(amount,'0.00'));
  47. },200);
  48. });
  49. }
  50. },
  51. 'erpDeleteDetailButton': {
  52. afterrender: function(btn){
  53. if(caller =='ARBill!OTRS'){
  54. //辅助核算
  55. btn.ownerCt.add({
  56. xtype:'erpAssDetailButton',
  57. disabled:true
  58. });
  59. }
  60. }
  61. },
  62. 'field[name=ab_currency]': {
  63. beforetrigger: function(field) {
  64. var t = field.up('form').down('field[name=ab_date]'),
  65. value = t.getValue();
  66. if(value) {
  67. field.findConfig = 'cm_yearmonth=' + Ext.Date.format(value, 'Ym');
  68. }
  69. }
  70. },
  71. 'erpSaveButton': {
  72. click: function(btn){
  73. var form = me.getForm(btn);
  74. if(Ext.getCmp(form.codeField).value == null || Ext.getCmp(form.codeField).value == ''){
  75. me.BaseUtil.getRandomNumber();
  76. }
  77. //保存之前的一些前台的逻辑判定
  78. this.beforeSaveARBill();
  79. }
  80. },
  81. 'erpDeleteButton' : {
  82. afterrender: function(btn){
  83. var poststatus = Ext.getCmp('ab_statuscode');
  84. if(poststatus && poststatus.value == 'POSTED'){
  85. btn.hide();
  86. }
  87. },
  88. click: function(btn){
  89. me.FormUtil.onDelete(Ext.getCmp('ab_id').value);
  90. }
  91. },
  92. 'erpUpdateButton': {
  93. afterrender: function(btn){
  94. var poststatus = Ext.getCmp('ab_statuscode');
  95. if(poststatus && poststatus.value == 'POSTED'){
  96. btn.hide();
  97. }
  98. },
  99. click: function(btn){
  100. me.beforeUpdateARBill();
  101. }
  102. },
  103. 'erpAddButton': {
  104. click: function(){
  105. var form = Ext.getCmp('form');
  106. var title = '新增';
  107. if(form){
  108. if(form.title){
  109. title = title+form.title;
  110. }
  111. }
  112. me.FormUtil.onAdd('addARBill', title, 'jsps/fa/ars/arbill.jsp?whoami='+caller);
  113. }
  114. },
  115. 'erpCloseButton': {
  116. click: function(btn){
  117. me.FormUtil.beforeClose(me);
  118. }
  119. },
  120. 'erpSubmitButton': {
  121. afterrender: function(btn){
  122. var auditStatus = Ext.getCmp(me.getForm(btn).auditStatusCode);
  123. if(auditStatus && auditStatus.value != 'ENTERING'){
  124. btn.hide();
  125. }
  126. var poststatus = Ext.getCmp('ab_statuscode');
  127. if(poststatus && poststatus.value == 'POSTED'){
  128. btn.hide();
  129. }
  130. },
  131. click: function(btn){
  132. me.FormUtil.onSubmit(Ext.getCmp('ab_id').value, false, this.beforeUpdateARBill, this, me.getForm(btn));
  133. }
  134. },
  135. 'erpResSubmitButton': {
  136. afterrender: function(btn){
  137. var auditStatus = Ext.getCmp(me.getForm(btn).auditStatusCode);
  138. if(auditStatus && auditStatus.value != 'COMMITED'){
  139. btn.hide();
  140. }
  141. var poststatus = Ext.getCmp('ab_statuscode');
  142. if(poststatus && poststatus.value == 'POSTED'){
  143. btn.hide();
  144. }
  145. },
  146. click: function(btn){
  147. me.FormUtil.onResSubmit(Ext.getCmp('ab_id').value);
  148. }
  149. },
  150. 'erpAuditButton': {
  151. afterrender: function(btn){
  152. var auditStatus = Ext.getCmp(me.getForm(btn).auditStatusCode);
  153. if(auditStatus && auditStatus.value != 'COMMITED'){
  154. btn.hide();
  155. }
  156. var poststatus = Ext.getCmp('ab_statuscode');
  157. if(poststatus && poststatus.value == 'POSTED'){
  158. btn.hide();
  159. }
  160. },
  161. click: function(btn){
  162. me.FormUtil.onAudit(Ext.getCmp('ab_id').value);
  163. }
  164. },
  165. 'erpResAuditButton': {
  166. afterrender: function(btn){
  167. var auditStatus = Ext.getCmp(me.getForm(btn).auditStatusCode);
  168. if(auditStatus && auditStatus.value != 'AUDITED'){
  169. btn.hide();
  170. }
  171. var poststatus = Ext.getCmp('ab_statuscode');
  172. if(poststatus && poststatus.value == 'POSTED'){
  173. btn.hide();
  174. }
  175. },
  176. click: function(btn){
  177. me.FormUtil.onResAudit(Ext.getCmp('ab_id').value);
  178. }
  179. },
  180. 'erpPrintButton': {
  181. click: function(btn){
  182. var reportName="SaleInvoice";
  183. var id=Ext.getCmp('ab_id').value;
  184. var condition = '{ARBill.ab_id}=' + Ext.getCmp('ab_id').value;
  185. console.log(condition);
  186. me.FormUtil.onwindowsPrint(id, reportName, condition);
  187. }
  188. },
  189. 'erpPrintVoucherCodeButton': {
  190. click: function(btn){
  191. if(Ext.getCmp('ab_vouchercode').value ==null || Ext.getCmp('ab_vouchercode').value ==''){
  192. showError('当前发票还没有制作凭证,不能打印');
  193. }else{
  194. var reportName = '';
  195. reportName = "SaleInvoice";
  196. var condition = '{APBill.ab_vouchercode}=\'' + Ext.getCmp('ab_vouchercode').value +'\'';
  197. var id=Ext.getCmp('ab_id').value;
  198. me.FormUtil.onwindowsPrint(id, reportName, condition);
  199. }
  200. }
  201. },
  202. 'erpPostButton': {
  203. afterrender: function(btn){
  204. var status = Ext.getCmp(me.getForm(btn).statusCode);
  205. if(status && status.value == 'UNPOST'){
  206. btn.show();
  207. }else{
  208. btn.hide();
  209. }
  210. },
  211. click: function(btn){
  212. me.FormUtil.onPost(Ext.getCmp('ab_id').value);
  213. }
  214. },
  215. 'erpResPostButton': {
  216. afterrender: function(btn){
  217. var status = Ext.getCmp(me.getForm(btn).statusCode);
  218. if(status && status.value == 'POSTED'){
  219. btn.show();
  220. }else{
  221. btn.hide();
  222. }
  223. },
  224. click: function(btn){
  225. me.FormUtil.onResPost(Ext.getCmp('ab_id').value);
  226. }
  227. },
  228. 'erpAutoInvoiceButton': {
  229. click: function(btn){
  230. var abcode=Ext.getCmp('ab_code').value;
  231. var abdate=Ext.getCmp('ab_date').value;
  232. Ext.Ajax.request({
  233. url : basePath + 'fa/ars/createVoucherARO.action',
  234. params: {
  235. abcode: abcode,
  236. abdate: abdate
  237. },
  238. method : 'post',
  239. callback : function(options,success,response){
  240. me.FormUtil.getActiveTab().setLoading(false);
  241. var localJson = new Ext.decode(response.responseText);
  242. if(localJson.exceptionInfo){
  243. showError(localJson.exceptionInfo);
  244. }
  245. if(localJson.success){
  246. turnSuccess(function(){
  247. //var id = localJson.id;
  248. //var url = "jsps/scm/purchase/purchasePrice.jsp?formCondition=pp_id=" + id +
  249. //"&gridCondition=ppd_ppid=" + id;
  250. //me.FormUtil.onAdd('PurchasePrice' + id, '物料核价单' + id, url);
  251. });
  252. }
  253. }
  254. });
  255. }
  256. },
  257. 'erpCopyButton': {
  258. click: function(btn) {
  259. this.copy();
  260. }
  261. },
  262. 'erpConfirmXJSKButton': {
  263. afterrender: function(btn){
  264. var status = Ext.getCmp(me.getForm(btn).statusCode),
  265. pricekind = Ext.getCmp('ab_pricekind');
  266. if(status && status.value == 'POSTED'){
  267. btn.show();
  268. }else{
  269. btn.hide();
  270. }
  271. if(pricekind && pricekind.value == '现金收款'){
  272. btn.hide();
  273. }
  274. },
  275. click: function(btn){
  276. var aramount = Ext.getCmp('ab_aramount').value,
  277. payamount = Ext.getCmp('ab_payamount').value;
  278. if(Ext.isEmpty(aramount) || aramount == 0){
  279. showError('当前发票应收金额为0,不能确认收款!');
  280. return;
  281. }
  282. if(payamount != 0){
  283. showError('当前发票已收款,不能确认收款!');
  284. return;
  285. }
  286. warnMsg("确定现金收款?", function(btn){
  287. if(btn == 'yes'){
  288. me.FormUtil.setLoading(true);//loading...
  289. Ext.Ajax.request({
  290. url : basePath + 'fa/ars/confirmXJSK.action',
  291. params: {
  292. id: Ext.getCmp('ab_id').value,
  293. catecode:Ext.getCmp('ab_catecode').value
  294. },
  295. method : 'post',
  296. callback: function(opt, s, r) {
  297. me.FormUtil.setLoading(false);
  298. var rs = Ext.decode(r.responseText);
  299. if(rs.exceptionInfo) {
  300. showError(rs.exceptionInfo);
  301. } else {
  302. if(rs.log)
  303. showMessage('提示', rs.log);
  304. }
  305. }
  306. });
  307. }
  308. });
  309. }
  310. },
  311. 'erpConfirmYJSKButton': {
  312. afterrender: function(btn){
  313. var status = Ext.getCmp(me.getForm(btn).statusCode),
  314. pricekind = Ext.getCmp('ab_pricekind');
  315. if(status && status.value == 'POSTED'){
  316. btn.show();
  317. }else{
  318. btn.hide();
  319. }
  320. if(pricekind && pricekind.value == '样机收款'){
  321. btn.hide();
  322. }
  323. },
  324. click: function(btn){
  325. var aramount = Ext.getCmp('ab_aramount').value,
  326. payamount = Ext.getCmp('ab_payamount').value;
  327. if(Ext.isEmpty(aramount) || aramount == 0){
  328. showError('当前发票应收金额为0,不能确认收款!');
  329. return;
  330. }
  331. if(payamount != 0){
  332. showError('当前发票已收款,不能确认收款!');
  333. return;
  334. }
  335. warnMsg("确定样机收款?", function(btn){
  336. if(btn == 'yes'){
  337. me.FormUtil.setLoading(true);//loading...
  338. Ext.Ajax.request({
  339. url : basePath + 'fa/ars/confirmYJSK.action',
  340. params: {
  341. id: Ext.getCmp('ab_id').value
  342. },
  343. method : 'post',
  344. callback: function(opt, s, r) {
  345. me.FormUtil.setLoading(false);
  346. var rs = Ext.decode(r.responseText);
  347. if(rs.exceptionInfo) {
  348. showError(rs.exceptionInfo);
  349. } else {
  350. if(rs.log)
  351. showMessage('提示', rs.log);
  352. }
  353. window.location.reload();
  354. }
  355. });
  356. }
  357. });
  358. }
  359. },
  360. 'erpCancelSKButton': {
  361. afterrender: function(btn){
  362. var status = Ext.getCmp(me.getForm(btn).statusCode),
  363. pricekind = Ext.getCmp('ab_pricekind');
  364. if(status && status.value == 'POSTED'){
  365. btn.show();
  366. }else{
  367. btn.hide();
  368. }
  369. if(pricekind && pricekind.value){
  370. btn.show();
  371. } else {
  372. btn.hide();
  373. }
  374. },
  375. click: function(btn){
  376. warnMsg("取消收款?", function(btn){
  377. if(btn == 'yes'){
  378. me.FormUtil.setLoading(true);//loading...
  379. Ext.Ajax.request({
  380. url : basePath + 'fa/ars/cancelSK.action',
  381. params: {
  382. id: Ext.getCmp('ab_id').value
  383. },
  384. method : 'post',
  385. callback: function(opt, s, r) {
  386. me.FormUtil.setLoading(false);
  387. var rs = Ext.decode(r.responseText);
  388. if(rs.exceptionInfo) {
  389. showError(rs.exceptionInfo);
  390. } else {
  391. if(rs.log)
  392. showMessage('提示', rs.log);
  393. }
  394. window.location.reload();
  395. }
  396. });
  397. }
  398. });
  399. }
  400. },
  401. 'erpTicketTaxesButton': {
  402. click: function(btn){
  403. var me = this, win = Ext.getCmp('ticketTaxes-win');
  404. if(!win){
  405. var ab_refno = Ext.getCmp('ab_refno').value, ab_remark = Ext.getCmp('ab_remark').value,
  406. win = Ext.create('Ext.Window', {
  407. id: 'ticketTaxes-win',
  408. title: '更新税票信息',
  409. height: 200,
  410. width: 400,
  411. items: [{
  412. xtype: 'form',
  413. height: '100%',
  414. width: '100%',
  415. bodyStyle: 'background:#f1f2f5;',
  416. items: [{
  417. margin: '10 0 0 0',
  418. xtype: 'textfield',
  419. fieldLabel: '税票编号',
  420. name:'ab_refno',
  421. value: ab_refno
  422. },{
  423. margin: '10 0 0 0',
  424. xtype: 'textfield',
  425. fieldLabel: '备注',
  426. name:'ab_remark',
  427. value: ab_remark
  428. }],
  429. closeAction: 'hide',
  430. buttonAlign: 'center',
  431. layout: {
  432. type: 'vbox',
  433. align: 'center'
  434. },
  435. buttons: [{
  436. text: $I18N.common.button.erpConfirmButton,
  437. cls: 'x-btn-blue',
  438. handler: function(btn) {
  439. var form = btn.ownerCt.ownerCt,
  440. a = form.down('textfield[name=ab_refno]'),
  441. b = form.down('textfield[name=ab_remark]');
  442. if(form.getForm().isDirty()) {
  443. me.updateTaxcode(Ext.getCmp('ab_id').value, a.value, b.value);
  444. }
  445. }
  446. }, {
  447. text: $I18N.common.button.erpCloseButton,
  448. cls: 'x-btn-blue',
  449. handler: function(btn) {
  450. btn.up('window').hide();
  451. }
  452. }]
  453. }]
  454. });
  455. }
  456. win.show();
  457. }
  458. },
  459. 'numberfield[name=ab_aramount]':{
  460. beforerender:function(num){
  461. num.minValue = Number.NEGATIVE_INFINITY;
  462. num.setMinValue(num.minValue);
  463. b = num.baseChars+"";
  464. b += num.decimalSeparator;
  465. b += "-";
  466. b = Ext.String.escapeRegex(b);
  467. num.maskRe = new RegExp("[" + b + "]");
  468. }
  469. },
  470. 'dbfindtrigger[name=ab_paymentcode]': {
  471. afterrender:function(trigger){
  472. if(trigger.fieldConfig == 'PT') {
  473. trigger.dbKey='ab_custcode';
  474. trigger.mappingKey='cu_code';
  475. trigger.dbMessage='请先选客户编号!';
  476. }
  477. }
  478. },
  479. 'field[name=ab_catecode]':{
  480. afterrender:function(field){
  481. if(caller =='ARBill!IRMA'){
  482. field.setReadOnly(false);
  483. }
  484. }
  485. },
  486. 'field[name=ab_payments]': {
  487. /*change: function(f){
  488. if(f.value == null || f.value == ''){
  489. f.value = 0;
  490. }
  491. if(Ext.getCmp('ab_date')){
  492. var date = Ext.util.Format.date(Ext.getCmp('ab_date').value, 'Y-m-d');// 格式化日期控件值
  493. var payments= Ext.util.Format.date(Ext.getCmp('ab_payments').value, 'Y-m-d');// 格式化日期控件值
  494. var date = new Date(date);
  495. var payments = new Date(payments);
  496. var paydate = date + payments;
  497. Ext.getCmp('ab_paydate').setValue(paydate);
  498. }
  499. }*/
  500. },
  501. 'field[name=ab_differ]':{/*
  502. change:function(field){
  503. if(Ext.getCmp('ab_differ')){
  504. var sum = 0;
  505. var v_differ = Ext.isNumber(Ext.getCmp('ab_differ').getValue())?Ext.getCmp('ab_differ').getValue():'0';
  506. var grid = Ext.getCmp('grid');
  507. Ext.each(grid.store.data.items,function(item,index){
  508. if(item.dirty && me.GridUtil.isBlank(grid, item.data)){
  509. sum += Number(item.data['abd_taxamount']);
  510. }
  511. });
  512. sum += Number(v_differ);
  513. Ext.getCmp('ab_taxamount').setValue(sum);
  514. }
  515. }
  516. */}
  517. });
  518. },
  519. //此CALLER为 应收发票维护界面 修改单据需要把明细行中开票数据还原
  520. // //在此做还原操作
  521. onGridItemClick: function(selModel, record){//grid行选择
  522. this.gridLastSelected = record;
  523. var grid = Ext.getCmp('grid');
  524. if(record.data[grid.necessaryField] == null || record.data[grid.necessaryField] == ''){
  525. this.gridLastSelected.findable = true;//空数据可以在输入完code,并移开光标后,自动调出该条数据
  526. } else {
  527. this.gridLastSelected.findable = false;
  528. }
  529. this.GridUtil.onGridItemClick(selModel, record);
  530. },
  531. getForm: function(btn){
  532. return btn.ownerCt.ownerCt;
  533. },
  534. beforeSaveARBill: function(){
  535. if(caller =='ARBill!IRMA'){
  536. var date_s = Ext.getCmp('ab_date').rawValue;
  537. var date_str = date_s.replace("-","");
  538. if(date_str.length>=6){
  539. date_str = date_str.substring(0,6);
  540. }else{
  541. var myDate = new Date();
  542. var dateString = Ext.Date.format(myDate,'Ymd');
  543. date_str = dateString.substring(0,6);
  544. }
  545. Ext.getCmp('ab_yearmonth').setValue(date_str);
  546. }
  547. this.BaseUtil.getPaydate('ab_paymentmethodid','ab_date','ab_plancollection');
  548. //保存ARBill
  549. /*if(bool)*/
  550. this.beforeSave(this);
  551. },
  552. beforeSave: function(){
  553. var me = this;
  554. var form = Ext.getCmp('form');
  555. if(! me.FormUtil.checkForm()){
  556. return;
  557. }
  558. if(Ext.getCmp(form.keyField).value == null || Ext.getCmp(form.keyField).value == ''){
  559. me.FormUtil.getSeqId(form);
  560. }
  561. var detail = Ext.getCmp('grid');
  562. var param2 = new Array();
  563. var param3 = new Array();
  564. if(Ext.getCmp('assdetail')){
  565. Ext.each(Ext.Object.getKeys(Ext.getCmp('assdetail').cacheStoreGrid), function(key){
  566. Ext.each(Ext.getCmp('assdetail').cacheStoreGrid[key], function(d){
  567. d['dass_condid'] = key;
  568. param2.push(d);
  569. });
  570. });
  571. }
  572. if(Ext.getCmp('assmainbutton')){
  573. // Ext.each(Ext.Object.getKeys(Ext.getCmp('assmainbutton').cacheStoreForm), function(key){
  574. // Ext.each(Ext.getCmp('assmainbutton').cacheStoreForm[key], function(d){
  575. // d['ass_conid'] = key;
  576. // param3.push(d);
  577. // });
  578. // });
  579. }
  580. Ext.each(detail.store.data.items, function(item){
  581. if(item.data.prd_id == null || item.data.prd_id == 0){
  582. item.data.prd_id = -item.index;
  583. }
  584. });
  585. var param1 = me.GridUtil.getGridStore(detail);
  586. me.onSave(form, param1, param2,param3);
  587. },
  588. onSave: function(form, param1, param2,param3){
  589. var me = this;
  590. param1 = param1 == null ? [] : "[" + param1.toString().replace(/\\/g,"%") + "]";
  591. param2 = param2 == null ? [] : Ext.encode(param2).replace(/\\/g,"%");
  592. param3 = param3 == null ? [] : Ext.encode(param3).replace(/\\/g,"%");
  593. if(form.getForm().isValid()){
  594. Ext.each(form.items.items, function(item){
  595. if(item.xtype == 'numberfield'){
  596. if(item.value == null || item.value == ''){
  597. item.setValue(0);
  598. }
  599. }
  600. });
  601. me.FormUtil.save(form.getValues(), param1, param2,param3);
  602. }else{
  603. me.FormUtil.checkForm();
  604. }
  605. },
  606. beforeUpdateARBill: function(){
  607. var grid = Ext.getCmp('grid');
  608. if(caller =='ARBill!IRMA'){
  609. var date_s = Ext.getCmp('ab_date').rawValue;
  610. var date_str = date_s.replace("-","");
  611. if(date_str.length>=6){
  612. date_str = date_str.substring(0,6);
  613. }else{
  614. var myDate = new Date();
  615. var dateString = Ext.Date.format(myDate,'Ymd');
  616. date_str = dateString.substring(0,6);
  617. }
  618. Ext.getCmp('ab_yearmonth').setValue(date_str);
  619. }
  620. this.BaseUtil.getPaydate('ab_paymentmethodid','ab_date','ab_plancollection');
  621. Ext.Array.each(grid.store.data.items, function(item){
  622. item.set('abd_abid',Ext.getCmp('ab_id').value);
  623. });
  624. //采购价格不能为0
  625. var bool = true;
  626. //保存
  627. if(bool)
  628. this.beforeUpdate();
  629. },
  630. beforeUpdate: function(){
  631. var me = this;
  632. var form = Ext.getCmp('form');
  633. if(! me.FormUtil.checkForm()){
  634. return;
  635. }
  636. var detail = Ext.getCmp('grid');
  637. Ext.each(detail.store.data.items, function(item){
  638. if(item.data.prd_id == null || item.data.prd_id == 0){
  639. item.data.prd_id = -item.index;
  640. }
  641. });
  642. var param1 = me.GridUtil.getGridStore(detail);
  643. var param2 = new Array();
  644. var param3 = new Array();
  645. if(Ext.getCmp('assdetail')){
  646. Ext.each(Ext.Object.getKeys(Ext.getCmp('assdetail').cacheStoreGrid), function(key){
  647. Ext.each(Ext.getCmp('assdetail').cacheStoreGrid[key], function(d){
  648. d['dass_condid'] = key;
  649. param2.push(d);
  650. });
  651. });
  652. }
  653. if(Ext.getCmp('assmainbutton')){
  654. // Ext.each(Ext.Object.getKeys(Ext.getCmp('assmainbutton').cacheStoreForm), function(key){
  655. // Ext.each(Ext.getCmp('assmainbutton').cacheStoreForm[key], function(d){
  656. // d['ass_conid'] = key;
  657. // param3.push(d);
  658. // });
  659. // });
  660. }
  661. if(me.FormUtil.checkFormDirty(form) == '' && detail.necessaryField.length > 0 && (param1.length == 0)
  662. && param2.length == 0&& param3.length == 0){
  663. showError($I18N.common.grid.emptyDetail);
  664. return;
  665. } else {
  666. param1 = param1 == null ? [] : "[" + param1.toString().replace(/\\/g,"%") + "]";
  667. param2 = param2 == null ? [] : Ext.encode(param2).replace(/\\/g,"%");
  668. param3 = param3 == null ? [] : Ext.encode(param3).replace(/\\/g,"%");
  669. if(form.getForm().isValid()){
  670. Ext.each(form.items.items, function(item){
  671. if(item.xtype == 'numberfield'){
  672. if(item.value == null || item.value == ''){
  673. item.setValue(0);
  674. }
  675. }
  676. });
  677. me.FormUtil.update(form.getValues(), param1, param2,param3);
  678. }else{
  679. me.FormUtil.checkForm();
  680. }
  681. }
  682. },
  683. updateTaxcode: function(abid, val1, val2) {
  684. var me = this;
  685. Ext.Ajax.request({
  686. url: basePath + 'fa/ars/updateARBillTaxcode.action',
  687. params: {
  688. caller: caller,
  689. ab_id: abid,
  690. ab_refno: val1,
  691. ab_remark: val2
  692. },
  693. callback: function(opt, s, r) {
  694. var rs = Ext.decode(r.responseText);
  695. if(rs.exceptionInfo) {
  696. showError(rs.exceptionInfo);
  697. } else {
  698. alert('更新成功!');
  699. window.location.reload();
  700. }
  701. }
  702. });
  703. },
  704. copy: function(){
  705. var me = this;
  706. var form = Ext.getCmp('form');
  707. var v = form.down('#ab_id').value;
  708. if(v > 0) {
  709. form.setLoading(true);
  710. Ext.Ajax.request({
  711. url: basePath + 'fa/ars/copyARBill.action',
  712. params: {
  713. id: v
  714. },
  715. callback: function(opt, s, r){
  716. form.setLoading(false);
  717. var res = Ext.decode(r.responseText);
  718. if(res.ab) {
  719. turnSuccess(function(){
  720. var id = res.ab.ab_id;
  721. var url = "jsps/fa/ars/arbill.jsp?formCondition=ab_idIS" +
  722. + id + "&gridCondition=abd_abidIS" + id + "&whoami="+caller;
  723. me.FormUtil.onAdd('arbill' + id, '应收' + id, url);
  724. });
  725. } else {
  726. showError(res.exceptionInfo);
  727. }
  728. }
  729. });
  730. }
  731. }
  732. });