PayPlease2.js 46 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351
  1. Ext.QuickTips.init();
  2. Ext.define('erp.controller.fa.arp.PayPlease2', {
  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. ppdid:0,
  8. views:[
  9. 'core.form.Panel','fa.arp.PayPlease2','fa.arp.payplease.PayPleaseDetailDetGrid2','fa.arp.payplease.PayPleaseDetailGrid','core.button.Save','core.button.Add','core.button.Close','core.button.Delete','core.button.Update','core.button.DeleteDetail',
  10. 'core.trigger.DbfindTrigger','core.trigger.TextAreaTrigger','core.form.YnField','core.button.ResAccounted','core.button.AssMain','core.button.Accounted','core.form.FileField',
  11. 'core.button.StrikeBalance','core.grid.AssPanel','core.window.AssWindow','core.trigger.CateTreeDbfindTrigger','core.trigger.HrOrgTreeDbfindTrigger',
  12. 'core.button.Post','core.button.ResPost','core.button.Print','core.button.Submit','core.button.ResAudit','core.button.Audit','core.button.ResSubmit',
  13. 'erp.view.core.button.AddDetail','erp.view.core.button.DeleteDetail','erp.view.core.button.Copy','erp.view.core.button.Paste','erp.view.core.button.Up',
  14. 'erp.view.core.button.Down','erp.view.core.button.UpExcel','core.button.TurnPayBalance','core.button.TurnBankRegister','core.button.TurnBillAP','core.button.TurnBillARChange',
  15. 'core.trigger.MultiDbfindTrigger', 'core.form.SeparNumber','core.form.MultiField','core.button.GetSumAmount','core.button.End','core.button.ResEnd'
  16. ],
  17. init:function(){
  18. var me = this;
  19. me.gridLastSelected = null;
  20. this.control({
  21. 'textfield[name=pp_thispayamount]':{
  22. beforerender: function(field){
  23. field.readOnly=false;
  24. }
  25. },
  26. 'field[name=pp_thispaydate]':{
  27. beforerender: function(field){
  28. field.readOnly=false;
  29. //field.setValue(new Date());
  30. }
  31. },
  32. 'field[name=pp_refno]':{
  33. beforerender: function(field){
  34. field.readOnly=false;
  35. }
  36. },
  37. 'field[name=pp_paymentcode]':{
  38. beforerender: function(field){
  39. field.readOnly=false;
  40. }
  41. },
  42. 'erpGetSumAmountButton':{
  43. click: function(btn){
  44. var grid1 = Ext.getCmp("paypleasedetailGrid"),grid2 = Ext.getCmp("paypleasedetaildetGrid2"),items1 = grid1.store.data.items,items2 = grid2.store.data.items;
  45. var detailamount1 = 0;
  46. var detailamount2 = 0;
  47. Ext.each(items2,function(item,index){
  48. if(!me.GridUtil.isBlank(grid2,item.data)) {
  49. detailamount2 = detailamount2 + Number(item.data['ppdd_thisapplyamount']);
  50. }
  51. });
  52. me.gridLastSelected.set('ppd_applyamount',detailamount2);
  53. }
  54. },
  55. //第一个从表
  56. 'paypleasedetailGrid':{
  57. itemclick:me.onGridItemClick1,
  58. afterrender:function(grid){
  59. grid.plugins[0].on('afteredit',function(e){
  60. setTimeout(function(){
  61. var amount = 0;
  62. Ext.each(grid.store.data.items,function(item,index){
  63. amount=amount+Number(item.data['ppd_applyamount']);
  64. });
  65. Ext.getCmp('pp_total').setValue(Ext.util.Format.number(amount,'0.00'));
  66. },200);
  67. });
  68. }
  69. },
  70. //第二个从表
  71. 'paypleasedetaildetGrid2':{
  72. afterrender: function(g) {
  73. g.plugins[0].on('beforeedit', function(args) {
  74. var bool = true;
  75. if (args.field == "ppdd_pucode") {
  76. if (!Ext.isEmpty(args.record.get('ppdd_makecode'))){
  77. bool = false;
  78. }
  79. return bool;
  80. }
  81. if (args.field == "ppdd_makecode") {
  82. if (!Ext.isEmpty(args.record.get('ppdd_pucode'))){
  83. bool = false;
  84. }
  85. return bool;
  86. }
  87. });
  88. },
  89. itemclick:me.onGridItemClick2
  90. },
  91. //转付款单
  92. 'erpTurnPayBalanceButton':{
  93. click:function(btn){
  94. me.turnPayBalance();
  95. },
  96. afterrender: function(btn){
  97. var status = Ext.getCmp(me.getForm(btn).statuscodeField);
  98. if(status && status.value != 'AUDITED'){
  99. btn.hide();
  100. }
  101. }
  102. },
  103. //转银行登记
  104. 'erpTurnBankRegisterButton':{
  105. click:function(btn){
  106. me.turnBankRegister();
  107. },
  108. afterrender: function(btn){
  109. var status = Ext.getCmp(me.getForm(btn).statuscodeField);
  110. if(status && status.value != 'AUDITED'){
  111. btn.hide();
  112. }
  113. }
  114. },
  115. 'erpSaveButton': {
  116. click: function(btn){
  117. var form = me.getForm(btn);
  118. if(Ext.getCmp(form.codeField).value == null || Ext.getCmp(form.codeField).value == ''){
  119. me.BaseUtil.getRandomNumber();
  120. }
  121. //保存之前的一些前台的逻辑判定
  122. this.beforeSavePayPlease();
  123. }
  124. },
  125. 'erpDeleteButton' : {
  126. click: function(btn){
  127. me.FormUtil.onDelete(Ext.getCmp('pp_id').value);
  128. }
  129. },
  130. 'erpUpdateButton': {
  131. click: function(btn){
  132. this.beforeUpdatePayPlease();
  133. }
  134. },
  135. 'erpAddButton': {
  136. click: function(){
  137. me.FormUtil.onAdd('addPayPlease', '新增预付款申请单', 'jsps/fa/arp/payplease2.jsp');
  138. }
  139. },
  140. 'erpCloseButton': {
  141. click: function(btn){
  142. me.FormUtil.beforeClose(me);
  143. }
  144. },
  145. 'erpSubmitButton': {
  146. afterrender: function(btn){
  147. var status = Ext.getCmp(me.getForm(btn).statuscodeField);
  148. if(status && status.value != 'ENTERING'){
  149. btn.hide();
  150. }
  151. },
  152. click: function(btn){
  153. me.beforeSubmit(btn);
  154. }
  155. },
  156. 'erpResSubmitButton': {
  157. afterrender: function(btn){
  158. var status = Ext.getCmp(me.getForm(btn).statuscodeField);
  159. if(status && status.value != 'COMMITED'){
  160. btn.hide();
  161. }
  162. },
  163. click: function(btn){
  164. me.FormUtil.onResSubmit(Ext.getCmp('pp_id').value);
  165. }
  166. },
  167. 'erpAuditButton': {
  168. afterrender: function(btn){
  169. var status = Ext.getCmp(me.getForm(btn).statuscodeField);
  170. if(status && status.value != 'COMMITED'){
  171. btn.hide();
  172. }
  173. },
  174. click: function(btn){
  175. me.FormUtil.onAudit(Ext.getCmp('pp_id').value);
  176. }
  177. },
  178. 'erpResAuditButton': {
  179. afterrender: function(btn){
  180. var status = Ext.getCmp(me.getForm(btn).statuscodeField);
  181. if(status && status.value != 'AUDITED'){
  182. btn.hide();
  183. }
  184. },
  185. click: function(btn){
  186. me.FormUtil.onResAudit(Ext.getCmp('pp_id').value);
  187. }
  188. },
  189. 'erpPrintButton': {
  190. click: function(btn){
  191. var reportName="APPay_app2";
  192. var condition = '{PayPlease.pp_id}=' + Ext.getCmp('pp_id').value + '';
  193. var id = Ext.getCmp('pp_id').value;
  194. me.FormUtil.onwindowsPrint(id, reportName, condition);
  195. }
  196. },
  197. //应付票据付款
  198. 'erpTurnBillAPButton':{
  199. click:function(btn){
  200. me.turnBillAP();
  201. },
  202. afterrender: function(btn){
  203. var status = Ext.getCmp(me.getForm(btn).statuscodeField);
  204. if(status && status.value != 'AUDITED'){
  205. btn.hide();
  206. }
  207. }
  208. },
  209. //应付票据付款
  210. 'erpTurnBillARChangeButton':{
  211. click:function(btn){
  212. me.turnBillARChange();
  213. },
  214. afterrender: function(btn){
  215. var status = Ext.getCmp(me.getForm(btn).statuscodeField);
  216. if(status && status.value != 'AUDITED'){
  217. btn.hide();
  218. }
  219. }
  220. },
  221. 'erpEndButton': {
  222. afterrender: function(btn) {
  223. var status = Ext.getCmp('pp_statuscode');
  224. if (status && status.value != 'AUDITED') {
  225. btn.hide();
  226. }
  227. },
  228. click: function(btn) {
  229. warnMsg("确定结案?", function(btn){
  230. if(btn == 'yes'){
  231. me.FormUtil.getActiveTab().setLoading(true);//loading...
  232. Ext.Ajax.request({
  233. url : basePath + 'fa/arp/endPayPlease.action',
  234. params: {
  235. caller: caller,
  236. id: Ext.getCmp('pp_id').value
  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. alert("结案成功!");
  247. window.location.reload();
  248. }
  249. }
  250. });
  251. }
  252. });
  253. }
  254. },
  255. 'erpResEndButton': {
  256. afterrender: function(btn) {
  257. var status = Ext.getCmp('pp_statuscode');
  258. if (status && status.value != 'FINISH') {
  259. btn.hide();
  260. }
  261. },
  262. click: function(btn) {
  263. warnMsg("确定反结案?", function(btn){
  264. if(btn == 'yes'){
  265. me.FormUtil.getActiveTab().setLoading(true);//loading...
  266. Ext.Ajax.request({
  267. url : basePath + 'fa/arp/resEndPayPlease.action',
  268. params: {
  269. caller: caller,
  270. id: Ext.getCmp('pp_id').value
  271. },
  272. method : 'post',
  273. callback : function(options,success,response){
  274. me.FormUtil.getActiveTab().setLoading(false);
  275. var localJson = new Ext.decode(response.responseText);
  276. if(localJson.exceptionInfo){
  277. showError(localJson.exceptionInfo);
  278. }
  279. if(localJson.success){
  280. alert("反结案成功!");
  281. window.location.reload();
  282. }
  283. }
  284. });
  285. }
  286. });
  287. }
  288. },
  289. 'dbfindtrigger[name=ppd_bankaccount]':{
  290. focus: function(t){
  291. var vecode = t.record.data['ppd_vendcode'];
  292. if(vecode != ''){
  293. t.dbBaseCondition = " vpd_vecode='"+vecode+"' ";
  294. }
  295. }
  296. },
  297. 'dbfindtrigger[name=ppdd_pucode]':{
  298. focus: function(t){
  299. t.setHideTrigger(false);
  300. t.setReadOnly(false);
  301. var record = Ext.getCmp('paypleasedetailGrid').selModel.selected.first();
  302. if(!record || !record.data['ppd_vendcode']) {
  303. showError("请先选择供应商!");
  304. t.setHideTrigger(true);
  305. t.setReadOnly(true);
  306. } else {
  307. var code = record.data['ppd_vendcode'];
  308. t.dbBaseCondition = " pu_vendcode = '" + code + "'";
  309. }
  310. }
  311. },
  312. 'multidbfindtrigger[name=ppdd_pucode]':{
  313. focus: function(t){
  314. t.setHideTrigger(false);
  315. t.setReadOnly(false);
  316. var record = Ext.getCmp('paypleasedetailGrid').selModel.selected.first();
  317. if(!record || !record.data['ppd_vendcode']) {
  318. showError("请先选择供应商!");
  319. t.setHideTrigger(true);
  320. t.setReadOnly(true);
  321. } else {
  322. var code = record.data['ppd_vendcode'];
  323. t.dbBaseCondition = " pu_vendcode = '" + code + "'";
  324. }
  325. }
  326. },
  327. 'dbfindtrigger[name=ppdd_makecode]':{
  328. focus: function(t){
  329. t.setHideTrigger(false);
  330. t.setReadOnly(false);
  331. var record = Ext.getCmp('paypleasedetailGrid').selModel.selected.first();
  332. if(!record || !record.data['ppd_vendcode']) {
  333. showError("请先选择供应商!");
  334. t.setHideTrigger(true);
  335. t.setReadOnly(true);
  336. } else {
  337. var code = record.data['ppd_vendcode'];
  338. t.dbBaseCondition = " ma_vendcode = '" + code + "'";
  339. }
  340. }
  341. },
  342. 'multidbfindtrigger[name=ppdd_makecode]':{
  343. focus: function(t){
  344. t.setHideTrigger(false);
  345. t.setReadOnly(false);
  346. var record = Ext.getCmp('paypleasedetailGrid').selModel.selected.first();
  347. if(!record || !record.data['ppd_vendcode']) {
  348. showError("请先选择供应商!");
  349. t.setHideTrigger(true);
  350. t.setReadOnly(true);
  351. } else {
  352. var code = record.data['ppd_vendcode'];
  353. t.dbBaseCondition = " ma_vendcode = '" + code + "'";
  354. }
  355. }
  356. }
  357. });
  358. },
  359. turnPayBalance: function(){
  360. var grid = Ext.getCmp('paypleasedetailGrid');
  361. var items = grid.selModel.getSelection();
  362. if(items.length==0){
  363. Ext.Msg.alert('警告','请勾选需要转预付款单的明细行!');
  364. return;
  365. }
  366. Ext.each(items, function(item, index){
  367. if(this.data[grid.keyField] != null && this.data[grid.keyField] != ''
  368. && this.data[grid.keyField] != '0' && this.data[grid.keyField] != 0){
  369. grid.multiselected.push(item);
  370. }
  371. });
  372. var form = Ext.getCmp('form');
  373. var records = Ext.Array.unique(grid.multiselected);
  374. var r = form.getValues();
  375. if(records.length > 0){
  376. var params = new Object();
  377. params.caller = caller;
  378. var data = new Array();
  379. params.formStore = unescape(Ext.JSON.encode(r).replace(/\\/g,"%"));
  380. var bool = false;
  381. Ext.each(records, function(record, index){
  382. var f = form.fo_detailMainKeyField;
  383. if(((grid.keyField && this.data[grid.keyField] != null && this.data[grid.keyField] != ''
  384. && this.data[grid.keyField] != '0' && this.data[grid.keyField] != 0)
  385. ||(f && this.data[f] != null && this.data[f] != ''
  386. && this.data[f] != '0' && this.data[f] != 0))&&(record.data['ppd_statuscode']!='TURNPP')){
  387. bool = true;
  388. var o = new Object();
  389. if(grid.keyField){
  390. o[grid.keyField] = record.data[grid.keyField];
  391. } else {
  392. params.id[index] = record.data[form.fo_detailMainKeyField];
  393. }
  394. if(grid.toField){
  395. Ext.each(grid.toField, function(f, index){
  396. var v = Ext.getCmp(f).value;
  397. if(v != null && v.toString().trim() != '' && v.toString().trim() != 'null'){
  398. o[f] = v;
  399. }
  400. });
  401. }
  402. if(grid.necessaryFields){
  403. Ext.each(grid.necessaryFields, function(f, index){
  404. var v = record.data[f];
  405. if(Ext.isDate(v)){
  406. v = Ext.Date.toString(v);
  407. }
  408. o[f] = v;
  409. });
  410. }
  411. data.push(o);
  412. }
  413. });
  414. if(bool){
  415. params.data = Ext.encode(data);
  416. var main = parent.Ext.getCmp("content-panel");
  417. main.getActiveTab().setLoading(true);//loading...
  418. Ext.Ajax.request({
  419. url : basePath + 'fa/PayPleaseController/turnPayBalance.action',
  420. params: params,
  421. method : 'post',
  422. callback : function(options,success,response){
  423. main.getActiveTab().setLoading(false);
  424. var localJson = new Ext.decode(response.responseText);
  425. if(localJson.exceptionInfo){
  426. showError(localJson.exceptionInfo);
  427. return "";
  428. }
  429. if(localJson.success){
  430. if(localJson.log){
  431. showMessage("提示", localJson.log);
  432. }
  433. Ext.Msg.alert("提示", "处理成功!", function(){
  434. var me = this;
  435. //add成功后刷新页面进入可编辑的页面
  436. var value = r[form.keyField];
  437. var formCondition = form.keyField + "IS" + value ;
  438. if(me.contains(window.location.href, '?', true)){
  439. window.location.href = window.location.href + '&formCondition=' +
  440. formCondition;
  441. } else {
  442. window.location.href = window.location.href + '?formCondition=' +
  443. formCondition;
  444. }
  445. });
  446. }
  447. }
  448. });
  449. } else {
  450. showError("没有需要处理的数据!");
  451. }
  452. }
  453. },
  454. //点击第一个grid
  455. onGridItemClick1: function(selModel,record){
  456. var me = this;
  457. me.gridLastSelected = record;
  458. var ppd_id = record.data['ppd_id'];
  459. this.ppdid = ppd_id;
  460. var grid = Ext.getCmp('paypleasedetailGrid');
  461. var ppddgrid = Ext.getCmp('paypleasedetaildetGrid2');
  462. if(ppd_id > 0 && !me.GridUtil.isBlank(grid,record.data)){
  463. var condition = "ppdd_ppdid='"+ppd_id+"'";
  464. ppddgrid.getMyData(condition);
  465. }
  466. this.onGridItemClick(selModel,record,'paypleasedetailGrid');
  467. },
  468. //点击第二个GRID
  469. onGridItemClick2: function(selModel,record){
  470. this.onGridItemClick(selModel,record,'paypleasedetaildetGrid2');
  471. },
  472. onGridItemClick: function(selModel, record,id){//grid行选择
  473. this.GridUtil.onGridItemClick(selModel, record,id);
  474. },
  475. getForm: function(btn){
  476. return btn.ownerCt.ownerCt;
  477. },
  478. beforeSavePayPlease: function(){
  479. this.beforeSave();
  480. },
  481. beforeUpdatePayPlease:function(){
  482. var s = ' ';
  483. var ppdgrid = Ext.getCmp('paypleasedetailGrid');
  484. var items = ppdgrid.store.data.items;
  485. var bool = true;
  486. var amount = 0;
  487. Ext.each(items,function(item){
  488. var keys = Ext.Object.getKeys(item.modified);
  489. Ext.each(keys,function(key){
  490. if(key=='ppd_auditamount'||key=='ppd_ifpay'){
  491. item.set('ppd_editor',em_name);
  492. item.set('ppd_editorid',em_uu);
  493. }
  494. });
  495. var applyamount = item.data['ppd_applyamount'];
  496. var auditamount = item.data['ppd_auditamount'];
  497. if(applyamount<auditamount){
  498. s=s+(item.index+1)+' ';
  499. bool=false;
  500. }
  501. amount=amount+Number(applyamount);
  502. });
  503. if(bool){
  504. this.beforeUpdate();
  505. }else{
  506. showError($I18N.common.grid.auditApplyPayPlease1 + s + $I18N.common.grid.auditApplyPayPlease2);
  507. }
  508. },
  509. /**
  510. * 检查form未完善的字段
  511. */
  512. checkForm: function(){
  513. var s = '';
  514. var form = Ext.getCmp('form');
  515. form.getForm().getFields().each(function (item,index,length){
  516. if(!item.isValid()){
  517. if(s != ''){
  518. s = s + ',';
  519. }
  520. if(item.fieldLabel){
  521. s = s + item.fieldLabel.replace(/&nbsp;/g,'');
  522. }
  523. }
  524. });
  525. if(s == ''){
  526. return true;
  527. }
  528. showError($I18N.common.form.necessaryInfo1 + '(<font color=green>'+s+'</font>)' + $I18N.common.form.necessaryInfo2);
  529. return false;
  530. },
  531. beforeUpdate: function(me){
  532. var mm = this;
  533. if(! this.checkForm()){
  534. return;
  535. }
  536. var grids = Ext.ComponentQuery.query('paypleasedetailGrid');
  537. var gridsDet = Ext.ComponentQuery.query('paypleasedetaildetGrid2');
  538. var currency1 = '';
  539. if(this.gridLastSelected){
  540. if(this.gridLastSelected.data['ppd_id']){
  541. currency1 = this.gridLastSelected.data['ppd_currency'];
  542. mm.ppdid = this.gridLastSelected.data['ppd_id'];
  543. }
  544. }else{
  545. currency1 = grids[0].store.data.items[0].data['ppd_currency'];
  546. }
  547. var sameCurrency = true;
  548. Ext.each(gridsDet[0].store.data.items,function(item, index){
  549. if(item.dirty && !mm.GridUtil.isBlank(gridsDet[0], item.data)){
  550. var thisapplyamount = item.data['ppdd_thisapplyamount'];
  551. if(thisapplyamount == 0 || thisapplyamount == null){
  552. showError('明细表第' + item.data['ppdd_detno'] + '行本次申请金额不能为空!');return;
  553. return;
  554. }
  555. if(!Ext.isEmpty(currency1) && item.data['ppdd_currency'] != currency1){
  556. sameCurrency = false;
  557. }
  558. }
  559. });
  560. if(!sameCurrency){
  561. showError($I18N.common.msg.failure_update_currency);
  562. return;
  563. }
  564. if(mm.ppdid == 0 || mm.ppdid == null){
  565. if(grids[0]){
  566. mm.ppdid = grids[0].store.data.items[0].data['ppd_id'];
  567. }else{
  568. mm.ppdid = 0;
  569. }
  570. }
  571. //如果ppdid == 0 则次页面为新建页面 活着以前也没有在grid1中添加数据
  572. //grid1 中的数据
  573. var param1 = mm.GridUtil.getGridStore(grids[0]);
  574. //grid2中的数据
  575. var param2 = mm.getGridStoreDet(gridsDet[0]);
  576. //ppdid==0的情况为 grid1第一条没有数据的情况 次情况只能保存grid1中的数据 grid2中的数据保存不上
  577. //如果ppdid!=0 则可能的情况为 1.点击grid1选择了一条数据 2.没有点击grid1 但是grid1中有数据 此时
  578. //grid2中的数据自动保存在grid1中第一条数据下
  579. if(mm.ppdid == 0){
  580. if(param2 == null || param2 == ''){
  581. //此时grid2数据为空 可以保存grid1的数据
  582. mm.onUpdate(param1);
  583. }else{
  584. warnMsg('不能保存从表二中的数据,是否只保存从表一?',function(btn){
  585. if(btn =='yes'){
  586. //保存从表一中的数据
  587. mm.onUpdate(param1);
  588. }else{
  589. //return
  590. return;
  591. }
  592. });
  593. }
  594. }else{
  595. if(param2 ==null||param2==''){
  596. mm.onUpdate(param1);
  597. }else{
  598. mm.onUpdate(param1,param2);
  599. }
  600. }
  601. },
  602. beforeSave: function(me){
  603. var mm = this;
  604. var form = Ext.getCmp('form');
  605. if(! this.checkForm()){
  606. return;
  607. }
  608. if(Ext.getCmp(form.keyField).value == null || Ext.getCmp(form.keyField).value == ''){
  609. mm.FormUtil.getSeqId(form);
  610. }
  611. var grids = Ext.getCmp('paypleasedetailGrid');
  612. var gridsDet = Ext.getCmp('paypleasedetaildetGrid2');
  613. var currency1 = '';
  614. if(this.gridLastSelected){
  615. currency1 = this.gridLastSelected.data['ppd_currency'];
  616. mm.ppdid = this.gridLastSelected.data['ppd_id'];
  617. } else{
  618. currency1 = grids.store.first().data['ppd_currency'];
  619. }
  620. var sameCurrency = true;
  621. Ext.each(gridsDet.store.data.items,function(item, index){
  622. if(item.dirty && !mm.GridUtil.isBlank(gridsDet,item.data)){
  623. if(!Ext.isEmpty(currency1) && item.data['ppdd_currency'] != currency1){
  624. sameCurrency = false;
  625. }
  626. }
  627. });
  628. if(mm.ppdid == 0 || mm.ppdid == null){
  629. if(grids[0]){
  630. mm.ppdid = grids[0].store.data.items[0].data['ppd_id'];
  631. }else{
  632. mm.ppdid = 0;
  633. }
  634. }
  635. //如果ppdid == 0 则次页面为新建页面 活着以前也没有在grid1中添加数据
  636. //grid1 中的数据
  637. var param1 = mm.GridUtil.getGridStore(grids);
  638. //grid2中的数据
  639. var param2 = mm.getGridStoreDet(gridsDet);
  640. //ppdid==0的情况为 grid1第一条没有数据的情况 次情况只能保存grid1中的数据 grid2中的数据保存不上
  641. //如果ppdid!=0 则可能的情况为 1.点击grid1选择了一条数据 2.没有点击grid1 但是grid1中有数据 此时
  642. //grid2中的数据自动保存在grid1中第一条数据下
  643. if(mm.ppdid == 0){
  644. if(param2 == null || param2 == ''){
  645. //此时grid2数据为空 可以保存grid1的数据
  646. mm.onSave(param1);
  647. }else{
  648. warnMsg('不能保存从表二中的数据,是否只保存从表一?',function(btn){
  649. if(btn =='yes'){
  650. //保存从表一中的数据
  651. mm.onSave(param1);
  652. }else{
  653. //return
  654. return;
  655. }
  656. });
  657. }
  658. }else{
  659. if(param2 ==null||param2==''){
  660. mm.onSave(param1);
  661. }else{
  662. mm.onSave(param1,param2);
  663. }
  664. }
  665. },
  666. beforeSubmit: function(){
  667. var me = this;
  668. var grid2 = Ext.getCmp('paypleasedetaildetGrid2'),items2=grid2.store.data.items;
  669. var bool = true;
  670. Ext.each(items2,function(item,index){
  671. if(!me.GridUtil.isBlank(grid2, item.data)){
  672. if(Math.abs(Number(item.data['ppdd_billamount']))<Math.abs(Number(item.data['ppdd_account']))){
  673. bool = false;
  674. showError('采购单的已预付金额大于采购金额,不能提交');return;
  675. }
  676. if(!Ext.isEmpty(item.get('ppdd_ordercode'))) {
  677. if(Math.abs(Number(item.data['ppdd_billamount'])-Number(item.data['ppdd_account'])) < Math.abs(Number(item.data['ppdd_thisapplyamount']))){
  678. bool = false;
  679. showError('本次预付金额大于采购单未付的金额,不能提交');return;
  680. }
  681. }
  682. }
  683. });
  684. if(bool)
  685. me.FormUtil.onSubmit(Ext.getCmp('pp_id').value);
  686. },
  687. /**
  688. * 拿到grid里面要提交的数据
  689. */
  690. getGridStoreDet: function(grid){
  691. if(grid == null){
  692. grid = Ext.getCmp('grid');
  693. }
  694. var jsonGridData = new Array();
  695. var s = grid.getStore().data.items;//获取store里面的数据
  696. var dd;
  697. for(var i=0;i<s.length;i++){//将grid里面各行的数据获取并拼成jsonGridData
  698. var data = s[i].data;
  699. dd = new Object();
  700. if(s[i].dirty && !grid.GridUtil.isBlank(grid, data)){
  701. Ext.each(grid.columns, function(c){
  702. if(c.logic != 'ignore'){//只需显示,无需后台操作的字段,自动略去
  703. if(c.xtype == 'datecolumn'){
  704. if(Ext.isDate(data[c.dataIndex])){
  705. dd[c.dataIndex] = Ext.Date.toString(data[c.dataIndex]);//在这里把GMT日期转化成Y-m-d格式日期
  706. } else {
  707. dd[c.dataIndex] = Ext.Date.format(new Date(), 'Y-m-d');//如果用户没输入日期,或输入有误,就给个默认日期,
  708. //或干脆return;并且提示一下用户
  709. }
  710. } else if(c.xtype == 'datetimecolumn'){
  711. if(Ext.isDate(data[c.dataIndex])){
  712. dd[c.dataIndex] = Ext.Date.format(data[c.dataIndex], 'Y-m-d H:i:s');//在这里把GMT日期转化成Y-m-d H:i:s格式日期
  713. } else {
  714. dd[c.dataIndex] = Ext.Date.format(new Date(), 'Y-m-d H:i:s');//默认日期,
  715. }
  716. } else if(c.xtype == 'numbercolumn'){//赋个默认值0吧,不然不好保存
  717. if(data[c.dataIndex] == null || data[c.dataIndex] == ''){
  718. dd[c.dataIndex] = '0';//也可以从data里面去掉这些字段
  719. } else {
  720. dd[c.dataIndex] = String(s[i].data[c.dataIndex]);
  721. }
  722. } else {
  723. dd[c.dataIndex] = s[i].data[c.dataIndex];
  724. }
  725. }
  726. });
  727. if(grid.mainField){//例如,将pu_id的值赋给pd_puid
  728. dd[grid.mainField] = this.ppdid;
  729. }
  730. jsonGridData.push(Ext.JSON.encode(dd));
  731. }
  732. }
  733. return jsonGridData;
  734. },
  735. onUpdate:function(param1,param2){
  736. var me = this;
  737. var form =Ext.getCmp('form');
  738. param1 = param1 == null ? [] : "[" + param1.toString() + "]";
  739. param2 = param2 == null ? [] : "[" + param2.toString() + "]";
  740. if(form.getForm().isValid()){
  741. //form里面数据
  742. Ext.each(form.items.items, function(item){
  743. if(item.xtype == 'numberfield'){
  744. //number类型赋默认值,不然sql无法执行
  745. if(item.value == null || item.value == ''){
  746. item.setValue(0);
  747. }
  748. }
  749. });
  750. var r = form.getValues();
  751. if(!me.contains(form.updateUrl, '?caller=', true)){
  752. form.updateUrl = form.updateUrl + "?caller=" + caller;
  753. }
  754. // 去除ignore字段
  755. var keys = Ext.Object.getKeys(r), f;
  756. var reg = /[!@#$%^&*()'":,\/?]/;
  757. Ext.each(keys, function(k){
  758. f = form.down('#' + k);
  759. if(f && f.logic == 'ignore') {
  760. delete r[k];
  761. }
  762. if(f) {
  763. if(f.logic != 'ignore' && f.logic){
  764. r[f.logic] = r[k];
  765. delete r[k];
  766. }
  767. }
  768. });
  769. me.update(r, param1,param2);
  770. }else{
  771. me.checkForm();
  772. }
  773. },
  774. onSave:function(param1,param2){
  775. var me = this;
  776. var form =Ext.getCmp('form');
  777. param1 = param1 == null ? [] : "[" + param1.toString() + "]";
  778. param2 = param2 == null ? [] : "[" + param2.toString() + "]";
  779. if(form.getForm().isValid()){
  780. //form里面数据
  781. Ext.each(form.items.items, function(item){
  782. if(item.xtype == 'numberfield'){
  783. //number类型赋默认值,不然sql无法执行
  784. if(item.value == null || item.value == ''){
  785. item.setValue(0);
  786. }
  787. }
  788. });
  789. var r = form.getValues();
  790. if(!me.contains(form.saveUrl, '?caller=', true)){
  791. form.saveUrl = form.saveUrl + "?caller=" + caller;
  792. }
  793. // 去除ignore字段
  794. var keys = Ext.Object.getKeys(r), f;
  795. var reg = /[!@#$%^&*()'":,\/?]/;
  796. Ext.each(keys, function(k){
  797. f = form.down('#' + k);
  798. if(f && f.logic == 'ignore') {
  799. delete r[k];
  800. }
  801. if(f) {
  802. if(f.logic != 'ignore' && f.logic){
  803. r[f.logic] = r[k];
  804. delete r[k];
  805. }
  806. }
  807. });
  808. me.save(r, param1,param2);
  809. }else{
  810. me.checkForm();
  811. }
  812. },
  813. /*
  814. * 修改
  815. */
  816. update:function(){
  817. var params = new Object();
  818. var r = arguments[0];
  819. Ext.each(Ext.Object.getKeys(r), function(k){//去掉页面非表单定义字段
  820. if(contains(k, 'ext-', true)){
  821. delete r[k];
  822. }
  823. });
  824. params.formStore = unescape(Ext.JSON.encode(r).replace(/\\/g,"%"));
  825. params.param1 = unescape(arguments[1].toString().replace(/\\/g,"%"));
  826. for(var i=2; i<arguments.length; i++) { //兼容多参数
  827. params['param' + i] = unescape(arguments[i].toString().replace(/\\/g,"%"));
  828. }
  829. var me = this;
  830. var form = Ext.getCmp('form');
  831. me.getActiveTab().setLoading(true);//loading...
  832. Ext.Ajax.request({
  833. url : basePath + form.updateUrl,
  834. params : params,
  835. method : 'post',
  836. callback : function(options,success,response){
  837. me.getActiveTab().setLoading(false);
  838. var localJson = new Ext.decode(response.responseText);
  839. if(localJson.success){
  840. saveSuccess(function(){
  841. //add成功后刷新页面进入可编辑的页面
  842. var value = r[form.keyField];
  843. var formCondition = form.keyField + "IS" + value ;
  844. if(me.contains(window.location.href, '?', true)){
  845. window.location.href = window.location.href + '&formCondition=' +
  846. formCondition;
  847. } else {
  848. window.location.href = window.location.href + '?formCondition=' +
  849. formCondition;
  850. }
  851. });
  852. } else if(localJson.exceptionInfo){
  853. var str = localJson.exceptionInfo;
  854. if(str.trim().substr(0, 12) == 'AFTERSUCCESS'){//特殊情况:操作成功,但是出现警告,允许刷新页面
  855. str = str.replace('AFTERSUCCESS', '');
  856. saveSuccess(function(){
  857. //add成功后刷新页面进入可编辑的页面
  858. var value = r[form.keyField];
  859. var formCondition = form.keyField + "IS" + value ;
  860. if(me.contains(window.location.href, '?', true)){
  861. window.location.href = window.location.href + '&formCondition=' +
  862. formCondition;
  863. } else {
  864. window.location.href = window.location.href + '?formCondition=' +
  865. formCondition;
  866. }
  867. });
  868. showError(str);
  869. } else {
  870. showError(str);
  871. return;
  872. }
  873. } else{
  874. saveFailure();//@i18n/i18n.js
  875. }
  876. }
  877. });
  878. },
  879. /**
  880. * 保存
  881. */
  882. save: function(){
  883. var params = new Object();
  884. var r = arguments[0];
  885. Ext.each(Ext.Object.getKeys(r), function(k){//去掉页面非表单定义字段
  886. if(contains(k, 'ext-', true)){
  887. delete r[k];
  888. }
  889. });
  890. params.formStore = unescape(Ext.JSON.encode(r).replace(/\\/g,"%"));
  891. params.param1 = unescape(arguments[1].toString().replace(/\\/g,"%"));
  892. for(var i=2; i<arguments.length; i++) { //兼容多参数
  893. params['param' + i] = unescape(arguments[i].toString().replace(/\\/g,"%"));
  894. }
  895. var me = this;
  896. var form = Ext.getCmp('form');
  897. me.getActiveTab().setLoading(true);//loading...
  898. Ext.Ajax.request({
  899. url : basePath + form.saveUrl,
  900. params : params,
  901. method : 'post',
  902. callback : function(options,success,response){
  903. me.getActiveTab().setLoading(false);
  904. var localJson = new Ext.decode(response.responseText);
  905. if(localJson.success){
  906. saveSuccess(function(){
  907. //add成功后刷新页面进入可编辑的页面
  908. var value = r[form.keyField];
  909. var formCondition = form.keyField + "IS" + value ;
  910. if(me.contains(window.location.href, '?', true)){
  911. window.location.href = window.location.href + '&formCondition=' +
  912. formCondition;
  913. } else {
  914. window.location.href = window.location.href + '?formCondition=' +
  915. formCondition;
  916. }
  917. });
  918. } else if(localJson.exceptionInfo){
  919. var str = localJson.exceptionInfo;
  920. if(str.trim().substr(0, 12) == 'AFTERSUCCESS'){//特殊情况:操作成功,但是出现警告,允许刷新页面
  921. str = str.replace('AFTERSUCCESS', '');
  922. saveSuccess(function(){
  923. //add成功后刷新页面进入可编辑的页面
  924. var value = r[form.keyField];
  925. var formCondition = form.keyField + "IS" + value ;
  926. if(me.contains(window.location.href, '?', true)){
  927. window.location.href = window.location.href + '&formCondition=' +
  928. formCondition;
  929. } else {
  930. window.location.href = window.location.href + '?formCondition=' +
  931. formCondition;
  932. }
  933. });
  934. showError(str);
  935. } else {
  936. showError(str);
  937. return;
  938. }
  939. } else{
  940. saveFailure();//@i18n/i18n.js
  941. }
  942. }
  943. });
  944. },
  945. getActiveTab: function(){
  946. var tab = null;
  947. if(Ext.getCmp("content-panel")){
  948. tab = Ext.getCmp("content-panel").getActiveTab();
  949. }
  950. if(!tab && parent.Ext.getCmp("content-panel"))
  951. tab = parent.Ext.getCmp("content-panel").getActiveTab();
  952. if(!tab && parent.parent.Ext.getCmp("content-panel"))
  953. tab = parent.parent.Ext.getCmp("content-panel").getActiveTab();
  954. if(!tab){
  955. var win = parent.Ext.ComponentQuery.query('window');
  956. if(win.length > 0){
  957. tab = win[win.length-1];
  958. }
  959. }
  960. return tab;
  961. },
  962. /**
  963. * string:原始字符串
  964. * substr:子字符串
  965. * isIgnoreCase:忽略大小写
  966. */
  967. contains: function(string,substr,isIgnoreCase){
  968. if(isIgnoreCase){
  969. string=string.toLowerCase();
  970. substr=substr.toLowerCase();
  971. }
  972. var startChar=substr.substring(0,1);
  973. var strLen=substr.length;
  974. for(var j=0;j<string.length-strLen+1;j++){
  975. if(string.charAt(j)==startChar){//如果匹配起始字符,开始查找
  976. if(string.substring(j,j+strLen)==substr){//如果从j开始的字符与str匹配,那ok
  977. return true;
  978. }
  979. }
  980. }
  981. return false;
  982. },
  983. turnBankRegister: function(){
  984. var grid = Ext.getCmp('paypleasedetailGrid'), catecode = Ext.getCmp('pp_paymentcode').value;
  985. var items = grid.selModel.getSelection();
  986. var thisamount = Ext.getCmp('pp_thispayamount').value, amount = 0;
  987. var ppamount = Ext.getCmp('pp_total').value;
  988. var thispaydate = Ext.getCmp('pp_thispaydate').value;
  989. if(Ext.isEmpty(thispaydate)){
  990. Ext.Msg.alert('警告','请填写本次付款日期!');
  991. return;
  992. }
  993. Ext.each(grid.store.data.items,function(item,index){
  994. amount=amount+Number(item.data['ppd_account']);
  995. });
  996. if(thisamount-(ppamount-amount)>0.01){
  997. Ext.Msg.alert('警告','本次付款金额超过剩余未转金额!未转金额:'+ (ppamount-amount));
  998. return;
  999. }
  1000. if(items.length==0){
  1001. Ext.Msg.alert('警告','请勾选需要转银行登记的明细行!');
  1002. return;
  1003. }
  1004. if(catecode == null || catecode == ''){
  1005. Ext.Msg.alert('警告','请填写需要转银行登记的付款方信息!');
  1006. return;
  1007. }
  1008. if(thisamount == null || thisamount=='' || thisamount==0){
  1009. Ext.Msg.alert('警告','本次付款金额未填写!');
  1010. return;
  1011. }
  1012. Ext.each(items, function(item, index){
  1013. if(this.data[grid.keyField] != null && this.data[grid.keyField] != ''
  1014. && this.data[grid.keyField] != '0' && this.data[grid.keyField] != 0){
  1015. grid.multiselected.push(item);
  1016. }
  1017. });
  1018. var form = Ext.getCmp('form');
  1019. var records = Ext.Array.unique(grid.multiselected);
  1020. var r = form.getValues();
  1021. if(records.length > 0){
  1022. var params = new Object();
  1023. params.caller = caller;
  1024. var data = new Array();
  1025. params.formStore = unescape(Ext.JSON.encode(r).replace(/\\/g,"%"));
  1026. var bool = false;
  1027. Ext.each(records, function(record, index){
  1028. var f = form.fo_detailMainKeyField;
  1029. if(((grid.keyField && this.data[grid.keyField] != null && this.data[grid.keyField] != ''
  1030. && this.data[grid.keyField] != '0' && this.data[grid.keyField] != 0)
  1031. ||(f && this.data[f] != null && this.data[f] != ''
  1032. && this.data[f] != '0' && this.data[f] != 0))&&(record.data['ppd_statuscode']!='TURNPB')){
  1033. bool = true;
  1034. var o = new Object();
  1035. if(grid.keyField){
  1036. o[grid.keyField] = record.data[grid.keyField];
  1037. } else {
  1038. params.id[index] = record.data[form.fo_detailMainKeyField];
  1039. }
  1040. if(grid.toField){
  1041. Ext.each(grid.toField, function(f, index){
  1042. var v = Ext.getCmp(f).value;
  1043. if(v != null && v.toString().trim() != '' && v.toString().trim() != 'null'){
  1044. o[f] = v;
  1045. }
  1046. });
  1047. }
  1048. if(grid.necessaryFields){
  1049. Ext.each(grid.necessaryFields, function(f, index){
  1050. var v = record.data[f];
  1051. if(Ext.isDate(v)){
  1052. v = Ext.Date.toString(v);
  1053. }
  1054. o[f] = v;
  1055. });
  1056. }
  1057. data.push(o);
  1058. }
  1059. });
  1060. if(bool){
  1061. params.data = Ext.encode(data);
  1062. var main = parent.Ext.getCmp("content-panel");
  1063. main.getActiveTab().setLoading(true);//loading...
  1064. Ext.Ajax.request({
  1065. url : basePath + 'fa/PayPleaseController/turnBankRegister.action',
  1066. params: params,
  1067. method : 'post',
  1068. callback : function(options,success,response){
  1069. main.getActiveTab().setLoading(false);
  1070. var localJson = new Ext.decode(response.responseText);
  1071. if(localJson.exceptionInfo){
  1072. showError(localJson.exceptionInfo);
  1073. return "";
  1074. }
  1075. if(localJson.success){
  1076. if(localJson.log){
  1077. showMessage("提示", localJson.log);
  1078. }
  1079. Ext.Msg.alert("提示", "处理成功!", function(){
  1080. var me = this;
  1081. //add成功后刷新页面进入可编辑的页面
  1082. var value = r[form.keyField];
  1083. var formCondition = form.keyField + "IS" + value ;
  1084. if(me.contains(window.location.href, '?', true)){
  1085. window.location.href = window.location.href + '&formCondition=' +
  1086. formCondition;
  1087. } else {
  1088. window.location.href = window.location.href + '?formCondition=' +
  1089. formCondition;
  1090. }
  1091. });
  1092. }
  1093. }
  1094. });
  1095. } else {
  1096. showError("没有需要处理的数据!");
  1097. }
  1098. }
  1099. },
  1100. turnBillAP: function(){
  1101. var grid = Ext.getCmp('paypleasedetailGrid'), catecode = Ext.getCmp('pp_paymentcode').value;
  1102. var items = grid.selModel.getSelection();
  1103. var thisamount = Ext.getCmp('pp_thispayamount').value, amount = 0;
  1104. var ppamount = Ext.getCmp('pp_total').value;
  1105. var thispaydate = Ext.getCmp('pp_thispaydate').value;
  1106. if(Ext.isEmpty(thispaydate)){
  1107. Ext.Msg.alert('警告','请填写本次付款日期!');
  1108. return;
  1109. }
  1110. Ext.each(grid.store.data.items,function(item,index){
  1111. amount=amount+Number(item.data['ppd_account']);
  1112. });
  1113. if(thisamount-(ppamount-amount)>0.01){
  1114. Ext.Msg.alert('警告','本次付款金额超过剩余未转金额!未转金额:'+ (ppamount-amount));
  1115. return;
  1116. }
  1117. if(items.length==0){
  1118. Ext.Msg.alert('警告','请勾选需要转应付票据的明细行!');
  1119. return;
  1120. }
  1121. if(catecode == null || catecode == ''){
  1122. Ext.Msg.alert('警告','请填写需要转应付票据的付款方信息!');
  1123. return;
  1124. }
  1125. if(thisamount == null || thisamount=='' || thisamount==0){
  1126. Ext.Msg.alert('警告','本次付款金额未填写!');
  1127. return;
  1128. }
  1129. Ext.each(items, function(item, index){
  1130. if(this.data[grid.keyField] != null && this.data[grid.keyField] != ''
  1131. && this.data[grid.keyField] != '0' && this.data[grid.keyField] != 0){
  1132. grid.multiselected.push(item);
  1133. }
  1134. });
  1135. var form = Ext.getCmp('form');
  1136. var records = Ext.Array.unique(grid.multiselected);
  1137. var r = form.getValues();
  1138. if(records.length > 0){
  1139. var params = new Object();
  1140. params.caller = caller;
  1141. var data = new Array();
  1142. params.formStore = unescape(Ext.JSON.encode(r).replace(/\\/g,"%"));
  1143. var bool = false;
  1144. Ext.each(records, function(record, index){
  1145. var f = form.fo_detailMainKeyField;
  1146. if(((grid.keyField && this.data[grid.keyField] != null && this.data[grid.keyField] != ''
  1147. && this.data[grid.keyField] != '0' && this.data[grid.keyField] != 0)
  1148. ||(f && this.data[f] != null && this.data[f] != ''
  1149. && this.data[f] != '0' && this.data[f] != 0))&&(record.data['ppd_statuscode']!='TURNPB')){
  1150. bool = true;
  1151. var o = new Object();
  1152. if(grid.keyField){
  1153. o[grid.keyField] = record.data[grid.keyField];
  1154. } else {
  1155. params.id[index] = record.data[form.fo_detailMainKeyField];
  1156. }
  1157. if(grid.toField){
  1158. Ext.each(grid.toField, function(f, index){
  1159. var v = Ext.getCmp(f).value;
  1160. if(v != null && v.toString().trim() != '' && v.toString().trim() != 'null'){
  1161. o[f] = v;
  1162. }
  1163. });
  1164. }
  1165. if(grid.necessaryFields){
  1166. Ext.each(grid.necessaryFields, function(f, index){
  1167. var v = record.data[f];
  1168. if(Ext.isDate(v)){
  1169. v = Ext.Date.toString(v);
  1170. }
  1171. o[f] = v;
  1172. });
  1173. }
  1174. data.push(o);
  1175. }
  1176. });
  1177. if(bool){
  1178. params.data = Ext.encode(data);
  1179. var main = parent.Ext.getCmp("content-panel");
  1180. main.getActiveTab().setLoading(true);//loading...
  1181. Ext.Ajax.request({
  1182. url : basePath + 'fa/PayPleaseController/turnBillAP.action',
  1183. params: params,
  1184. method : 'post',
  1185. callback : function(options,success,response){
  1186. main.getActiveTab().setLoading(false);
  1187. var localJson = new Ext.decode(response.responseText);
  1188. if(localJson.exceptionInfo){
  1189. showError(localJson.exceptionInfo);
  1190. return "";
  1191. }
  1192. if(localJson.success){
  1193. if(localJson.log){
  1194. showMessage("提示", localJson.log);
  1195. }
  1196. Ext.Msg.alert("提示", "处理成功!", function(){
  1197. var me = this;
  1198. //add成功后刷新页面进入可编辑的页面
  1199. var value = r[form.keyField];
  1200. var formCondition = form.keyField + "IS" + value ;
  1201. if(me.contains(window.location.href, '?', true)){
  1202. window.location.href = window.location.href + '&formCondition=' +
  1203. formCondition;
  1204. } else {
  1205. window.location.href = window.location.href + '?formCondition=' +
  1206. formCondition;
  1207. }
  1208. });
  1209. }
  1210. }
  1211. });
  1212. } else {
  1213. showError("没有需要处理的数据!");
  1214. }
  1215. }
  1216. },
  1217. turnBillARChange: function(){
  1218. var grid = Ext.getCmp('paypleasedetailGrid'), catecode = Ext.getCmp('pp_paymentcode').value;
  1219. var items = grid.selModel.getSelection();
  1220. var thisamount = Ext.getCmp('pp_thispayamount').value, amount = 0;
  1221. var ppamount = Ext.getCmp('pp_total').value;
  1222. var thispaydate = Ext.getCmp('pp_thispaydate').value;
  1223. if(Ext.isEmpty(thispaydate)){
  1224. Ext.Msg.alert('警告','请填写本次付款日期!');
  1225. return;
  1226. }
  1227. Ext.each(grid.store.data.items,function(item,index){
  1228. amount=amount+Number(item.data['ppd_account']);
  1229. });
  1230. if(thisamount-(ppamount-amount)>0.01){
  1231. Ext.Msg.alert('警告','本次付款金额超过剩余未转金额!未转金额:'+ (ppamount-amount));
  1232. return;
  1233. }
  1234. if(items.length==0){
  1235. Ext.Msg.alert('警告','请勾选需要转应付票据的明细行!');
  1236. return;
  1237. }
  1238. /* if(catecode == null || catecode == ''){
  1239. Ext.Msg.alert('警告','请填写需要转应付票据的付款方信息!');
  1240. return;
  1241. }*/
  1242. if(thisamount == null || thisamount=='' || thisamount==0){
  1243. Ext.Msg.alert('警告','本次付款金额未填写!');
  1244. return;
  1245. }
  1246. Ext.each(items, function(item, index){
  1247. if(this.data[grid.keyField] != null && this.data[grid.keyField] != ''
  1248. && this.data[grid.keyField] != '0' && this.data[grid.keyField] != 0){
  1249. grid.multiselected.push(item);
  1250. }
  1251. });
  1252. var form = Ext.getCmp('form');
  1253. var records = Ext.Array.unique(grid.multiselected);
  1254. var r = form.getValues();
  1255. if(records.length > 0){
  1256. var params = new Object();
  1257. params.caller = caller;
  1258. var data = new Array();
  1259. params.formStore = unescape(Ext.JSON.encode(r).replace(/\\/g,"%"));
  1260. var bool = false;
  1261. Ext.each(records, function(record, index){
  1262. var f = form.fo_detailMainKeyField;
  1263. if(((grid.keyField && this.data[grid.keyField] != null && this.data[grid.keyField] != ''
  1264. && this.data[grid.keyField] != '0' && this.data[grid.keyField] != 0)
  1265. ||(f && this.data[f] != null && this.data[f] != ''
  1266. && this.data[f] != '0' && this.data[f] != 0))&&(record.data['ppd_statuscode']!='TURNPB')){
  1267. bool = true;
  1268. var o = new Object();
  1269. if(grid.keyField){
  1270. o[grid.keyField] = record.data[grid.keyField];
  1271. } else {
  1272. params.id[index] = record.data[form.fo_detailMainKeyField];
  1273. }
  1274. if(grid.toField){
  1275. Ext.each(grid.toField, function(f, index){
  1276. var v = Ext.getCmp(f).value;
  1277. if(v != null && v.toString().trim() != '' && v.toString().trim() != 'null'){
  1278. o[f] = v;
  1279. }
  1280. });
  1281. }
  1282. if(grid.necessaryFields){
  1283. Ext.each(grid.necessaryFields, function(f, index){
  1284. var v = record.data[f];
  1285. if(Ext.isDate(v)){
  1286. v = Ext.Date.toString(v);
  1287. }
  1288. o[f] = v;
  1289. });
  1290. }
  1291. data.push(o);
  1292. }
  1293. });
  1294. if(bool){
  1295. params.data = Ext.encode(data);
  1296. var main = parent.Ext.getCmp("content-panel");
  1297. main.getActiveTab().setLoading(true);//loading...
  1298. Ext.Ajax.request({
  1299. url : basePath + 'fa/PayPleaseController/turnBillARChange.action',
  1300. params: params,
  1301. method : 'post',
  1302. callback : function(options,success,response){
  1303. main.getActiveTab().setLoading(false);
  1304. var localJson = new Ext.decode(response.responseText);
  1305. if(localJson.exceptionInfo){
  1306. showError(localJson.exceptionInfo);
  1307. return "";
  1308. }
  1309. if(localJson.success){
  1310. if(localJson.log){
  1311. showMessage("提示", localJson.log);
  1312. }
  1313. Ext.Msg.alert("提示", "处理成功!", function(){
  1314. var me = this;
  1315. //add成功后刷新页面进入可编辑的页面
  1316. var value = r[form.keyField];
  1317. var formCondition = form.keyField + "IS" + value ;
  1318. if(me.contains(window.location.href, '?', true)){
  1319. window.location.href = window.location.href + '&formCondition=' +
  1320. formCondition;
  1321. } else {
  1322. window.location.href = window.location.href + '?formCondition=' +
  1323. formCondition;
  1324. }
  1325. });
  1326. }
  1327. }
  1328. });
  1329. } else {
  1330. showError("没有需要处理的数据!");
  1331. }
  1332. }
  1333. }
  1334. });