Inquiry.js 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848
  1. Ext.QuickTips.init();
  2. Ext.define('erp.controller.scm.purchase.Inquiry', {
  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','scm.purchase.Inquiry','core.grid.Panel2','core.toolbar.Toolbar','core.form.FileField',
  9. 'core.button.Save','core.button.Update','core.button.Add','core.button.Submit','core.button.Print','core.button.Upload',
  10. 'core.button.Audit','core.button.Close','core.button.Delete','core.button.DeleteDetail','core.button.ResSubmit',
  11. 'core.button.ResAudit','core.button.HistoryQuotation','core.button.HistoryInPrice','core.button.UpdateMaxlimitInfo','core.button.UpdatePurcVendor',
  12. 'core.button.UpdateInfo','core.button.Nullify','core.button.CopyAll',
  13. 'core.trigger.DbfindTrigger','core.trigger.TextAreaTrigger','core.form.YnField','core.button.TurnPurcPrice','core.button.AgreePrice','core.grid.YnColumn'
  14. ],
  15. init:function(){
  16. var me = this;
  17. me.alloweditor = true;
  18. this.control({
  19. 'field[name=in_purpose]':{
  20. beforerender: function(field){
  21. field.setReadOnly(false);
  22. }
  23. },
  24. 'field[name=in_remark]':{
  25. beforerender: function(field){
  26. field.setReadOnly(false);
  27. }
  28. },
  29. 'erpUpdateInfoButton':{
  30. afterrender: function(btn){
  31. var status = Ext.getCmp('in_statuscode');
  32. if(status && status.value == 'NULLIFIED'){
  33. btn.hide();
  34. }
  35. },
  36. click:function(){
  37. var purpose= Ext.getCmp('in_purpose'), remark= Ext.getCmp('in_remark');
  38. if(purpose && remark){
  39. me.updateInfo(purpose.value, remark.value, Ext.getCmp('in_id').value);
  40. }
  41. }
  42. },
  43. 'erpNullifyButton':{
  44. afterrender: function(btn){
  45. var status = Ext.getCmp('in_statuscode'), checkstatuscode = Ext.getCmp('in_checkstatuscode');
  46. if(status && status.value != 'AUDITED'){
  47. btn.hide();
  48. }
  49. if(checkstatuscode && checkstatuscode.value == 'APPROVED'){
  50. btn.hide();
  51. }
  52. },
  53. click: function(btn){
  54. me.FormUtil.onNullify(Ext.getCmp('in_id').value);
  55. }
  56. },
  57. 'erpGridPanel2': {
  58. afterrender: function(grid){
  59. var status = Ext.getCmp('in_statuscode');
  60. if(status && status.value != 'ENTERING' && status.value != 'COMMITED'){
  61. Ext.each(grid.columns, function(c){
  62. c.setEditor(null);
  63. });
  64. }
  65. Ext.defer(function(){
  66. var f = Ext.getCmp('in_id');
  67. if(f && f.value > 0)
  68. me.getStepWise(f.value, function(data){
  69. grid.store.each(function(d){
  70. var dets = [], id = d.get('id_id');
  71. if(id && id > 0) {
  72. Ext.Array.each(data, function(t){
  73. if(t.idd_idid == id)
  74. dets.push(t);
  75. });
  76. d.set('dets', dets);
  77. }
  78. });
  79. });
  80. }, 50);
  81. },
  82. itemclick: this.onGridItemClick
  83. },
  84. 'gridcolumn[dataIndex=id_purcvendcode]':{
  85. beforerender:function(c){
  86. c.autoEdit=true;
  87. }
  88. },
  89. 'gridcolumn[dataIndex=id_purcvendname]':{
  90. beforerender:function(c){
  91. c.autoEdit=true;
  92. }
  93. },
  94. 'gridcolumn[dataIndex=id_purccurrency]':{
  95. beforerender:function(c){
  96. c.autoEdit=true;
  97. }
  98. },
  99. 'gridcolumn[dataIndex=id_purctaxrate]':{
  100. beforerender:function(c){
  101. c.autoEdit=true;
  102. }
  103. },
  104. 'gridcolumn[dataIndex=id_purcprice]':{
  105. beforerender:function(c){
  106. c.autoEdit=true;
  107. }
  108. },
  109. 'gridcolumn[dataIndex=id_remark]':{
  110. beforerender:function(c){
  111. c.autoEdit=true;
  112. }
  113. },
  114. 'field[name=in_currency]': {
  115. beforetrigger: function(field) {
  116. var t = field.up('form').down('field[name=in_date]'),
  117. value = t.getValue();
  118. if(value) {
  119. field.findConfig = 'cm_yearmonth=' + Ext.Date.format(value, 'Ym');
  120. }
  121. }
  122. },
  123. 'erpSaveButton': {
  124. click: function(btn){
  125. var form = me.getForm(btn);
  126. if(Ext.getCmp(form.codeField).value == null || Ext.getCmp(form.codeField).value == ''){
  127. me.BaseUtil.getRandomNumber();//自动添加编号
  128. }
  129. var bool = true;
  130. //供应商必填
  131. var grid = Ext.getCmp('grid'), start = Ext.getCmp('in_recorddate').value,
  132. end = Ext.getCmp('in_enddate').value;
  133. if(!Ext.isEmpty(end)){
  134. if(Ext.Date.format(end,'Y-m-d') < Ext.Date.format(new Date(),'Y-m-d')){
  135. bool=false;
  136. showError('有效期小于当前日期,不能保存!');return;
  137. }
  138. }
  139. grid.getStore().each(function(item){
  140. if(item.dirty && item.data[grid.necessaryField] != null && item.data[grid.necessaryField] != ""){
  141. if(item.data['id_vendcode'] == null || item.data['id_vendcode'] == ''){
  142. bool = false;
  143. showError('明细表第' + item.data['id_detno'] + '行的供应商为空');return;
  144. }
  145. if(item.data['id_myfromdate'] ==null){
  146. item.set('id_myfromdate', start);
  147. }
  148. if(!Ext.isEmpty(end)){
  149. if(item.data['id_mytodate'] == null){
  150. item.set('id_mytodate', end);
  151. }
  152. }
  153. }
  154. });
  155. if(bool){
  156. this.beforeSave();
  157. }
  158. }
  159. },
  160. 'erpUpdateButton': {
  161. click: function(btn){
  162. var bool = true;
  163. //供应商必填
  164. var grid = Ext.getCmp('grid'),
  165. fromDate = Ext.getCmp('in_recorddate').value,
  166. end = Ext.getCmp('in_enddate').value;
  167. if(!Ext.isEmpty(end)){
  168. if(Ext.Date.format(end,'Y-m-d') < Ext.Date.format(new Date(),'Y-m-d')){
  169. bool=false;
  170. showError('有效期小于当前日期,不能更新!');return;
  171. }
  172. }
  173. grid.getStore().each(function(item){
  174. if(item.dirty && item.data[grid.necessaryField] != null && item.data[grid.necessaryField] != ""){
  175. if(item.data['id_vendcode'] == null || item.data['id_vendcode'] == ''){
  176. bool = false;
  177. showError('明细表第' + item.data['id_detno'] + '行的供应商为空');return;
  178. }
  179. if(item.data['id_myfromdate'] ==null ){
  180. item.set('id_myfromdate',fromDate);
  181. }
  182. if(!Ext.isEmpty(end)){
  183. if(item.data['id_mytodate'] ==null){
  184. item.set('id_mytodate',end);
  185. }
  186. }
  187. }
  188. });
  189. if(bool){
  190. this.beforeUpdate();
  191. }
  192. }
  193. },
  194. 'erpUpdatePurcVendorButton': {
  195. afterrender: function(btn){
  196. var status = Ext.getCmp('in_statuscode');
  197. var checkstatus = Ext.getCmp('in_checkstatus').value;
  198. if((status && status.value != 'AUDITED')||(checkstatus&&checkstatus=="已批准")){
  199. btn.hide();
  200. }
  201. },
  202. click: function(btn){
  203. this.beforeUpdate();
  204. }
  205. },
  206. 'erpDeleteButton' : {
  207. click: function(btn){
  208. me.FormUtil.onDelete(Ext.getCmp('in_id').value);
  209. }
  210. },
  211. 'erpAddButton': {
  212. click: function(){
  213. me.FormUtil.onAdd('addInquiry', '新增询价单', 'jsps/scm/purchase/inquiry.jsp');
  214. }
  215. },
  216. 'erpUpdateMaxlimitInfoButton':{
  217. afterrender:function(btn){
  218. btn.setDisabled(true);
  219. },
  220. click: function(btn){
  221. var id=btn.ownerCt.ownerCt.ownerCt.items.items[1].selModel.selected.items[0].data["id_id"];
  222. var idstatus=btn.ownerCt.ownerCt.ownerCt.items.items[1].selModel.selected.items[0].data["id_status"];
  223. if(idstatus!='已报价'){
  224. showError("只能针对已报价的询价做限购");
  225. }else{
  226. var formCondition="id_id IS"+id;
  227. var linkCaller='InquiryMaxlimit';
  228. var win = new Ext.window.Window({
  229. id : 'win',
  230. height : '90%',
  231. width : '95%',
  232. maximizable : true,
  233. buttonAlign : 'center',
  234. layout : 'anchor',
  235. items : [ {
  236. tag : 'iframe',
  237. frame : true,
  238. anchor : '100% 100%',
  239. layout : 'fit',
  240. html : '<iframe id="iframe_'+linkCaller+'" src="'+basePath+'jsps/scm/purchase/inquiryMaxlimit.jsp?_noc=1&whoami='+linkCaller+'&formCondition='+formCondition+'" height="100%" width="100%" frameborder="0" scrolling="auto"></iframe>'
  241. } ],
  242. listeners:{
  243. 'beforeclose':function(view ,opt){
  244. //grid 刷新一次
  245. var grid=Ext.getCmp('grid');
  246. var gridParam = {caller: caller, condition: gridCondition};
  247. grid.GridUtil.getGridColumnsAndStore(grid, 'common/singleGridPanel.action', gridParam, "");
  248. Ext.getCmp('updateMaxlimitInfo').setDisabled(true);
  249. }
  250. }
  251. });
  252. win.show();
  253. }
  254. }
  255. },
  256. 'erpCloseButton': {
  257. click: function(btn){
  258. me.FormUtil.beforeClose(me);
  259. }
  260. },
  261. 'erpSubmitButton': {
  262. afterrender: function(btn){
  263. var status = Ext.getCmp('in_statuscode');
  264. var checkstatus = Ext.getCmp('in_checkstatuscode').value;
  265. if(status && status.value != 'AUDITED'){
  266. btn.hide();
  267. }else if(checkstatus&&checkstatus!=null&&checkstatus!='ENTERING'){
  268. btn.hide();
  269. }
  270. },
  271. click: function(btn){
  272. /*var end = Ext.getCmp('in_enddate').value;
  273. if(!Ext.isEmpty(end)){
  274. if(Ext.Date.format(end,'Y-m-d') < Ext.Date.format(new Date(),'Y-m-d')){
  275. bool=false;
  276. showError('有效期小于当前日期,不能提交!');return;
  277. }
  278. }*/
  279. var inclass = Ext.getCmp('in_class');
  280. if(inclass&&inclass.value=='主动报价'){
  281. me.FormUtil.getActiveTab().setLoading(true);
  282. Ext.Ajax.request({
  283. url : basePath + 'scm/purchase/submitInquiry.action',
  284. params: {
  285. id: Ext.getCmp('in_id').value
  286. },
  287. method : 'post',
  288. callback : function(options,success,response){
  289. me.FormUtil.getActiveTab().setLoading(false);
  290. var localJson = new Ext.decode(response.responseText);
  291. if(localJson.exceptionInfo){
  292. showError(localJson.exceptionInfo);
  293. }
  294. if(localJson.success){
  295. window.location.reload();
  296. }
  297. }
  298. });
  299. }else{
  300. me.FormUtil.onSubmit(Ext.getCmp('in_id').value);
  301. }
  302. }
  303. },
  304. 'erpResSubmitButton': {
  305. afterrender: function(btn){
  306. var status = Ext.getCmp('in_checkstatuscode');
  307. if(status && status.value != 'COMMITED'){
  308. btn.hide();
  309. }
  310. },
  311. click: function(btn){
  312. me.FormUtil.onResSubmit(Ext.getCmp('in_id').value);
  313. }
  314. },
  315. 'erpAuditButton': {
  316. afterrender: function(btn){
  317. var status = Ext.getCmp('in_statuscode');
  318. if(status && status.value != 'ENTERING'){
  319. btn.hide();
  320. }
  321. },
  322. click: function(btn){
  323. var end = Ext.getCmp('in_enddate').value;
  324. if(!Ext.isEmpty(end)){
  325. if(Ext.Date.format(end,'Y-m-d') < Ext.Date.format(new Date(),'Y-m-d')){
  326. bool=false;
  327. showError('有效期小于当前日期,不能审核!');return;
  328. }
  329. }
  330. me.FormUtil.onAudit(Ext.getCmp('in_id').value);
  331. }
  332. },
  333. 'erpResAuditButton': {
  334. afterrender: function(btn){
  335. var status = Ext.getCmp('in_statuscode');
  336. if(status && status.value != 'AUDITED'){
  337. btn.hide();
  338. }
  339. },
  340. click: function(btn){
  341. me.FormUtil.onResAudit(Ext.getCmp('in_id').value);
  342. }
  343. },
  344. 'erpPrintButton': {
  345. click: function(btn){
  346. me.FormUtil.onPrint(Ext.getCmp('in_id').value);
  347. }
  348. },
  349. 'erpAgreePriceButton': {
  350. afterrender: function(btn){
  351. var status = Ext.getCmp('in_statuscode');
  352. if(status && status.value != 'AUDITED'){
  353. btn.hide();
  354. }
  355. },
  356. click: function(btn){
  357. inid=Ext.getCmp('in_id').value;
  358. var url = basePath+'jsps/common/vastDatalist.jsp?_noc=1&whoami=ToPrice&urlcondition=id_inid='+inid+' and nvl(id_price,0)>0';
  359. var main = parent.parent.Ext.getCmp("content-panel");
  360. var panelId='Inquiry' + id;
  361. var title='采购询价转核价' + id;
  362. if(main){
  363. panelId = panelId == main.getActiveTab().id ? Math.random() : panelId;
  364. var panel = Ext.getCmp(panelId);
  365. if(!panel){
  366. var value = "";
  367. if (title.toString().length>5) {
  368. value = title.toString().substring(0,5);
  369. } else {
  370. value = title;
  371. }
  372. if(!contains(url, 'http://', true) && !contains(url, basePath, true)){
  373. url = basePath + url;
  374. }
  375. panel = {
  376. title : value,
  377. tag : 'iframe',
  378. tabConfig:{tooltip:title},
  379. frame : true,
  380. border : false,
  381. layout : 'fit',
  382. iconCls : 'x-tree-icon-tab-tab',
  383. html : '<iframe id="iframe_add_'+panelId+'" src="' + url+'" height="100%" width="100%" frameborder="0" scrolling="auto"></iframe>',
  384. closable : true
  385. };
  386. me.FormUtil.openTab(panel, panelId);
  387. } else {
  388. main.setActiveTab(panel);
  389. }
  390. } else {
  391. if(!contains(url, basePath, true)){
  392. url = basePath + url;
  393. }
  394. window.open(url);
  395. }
  396. //me.FormUtil.onPrint(Ext.getCmp('in_id').value);
  397. }
  398. },
  399. 'erpTurnPurcPriceButton': {
  400. afterrender: function(btn){
  401. var status = Ext.getCmp('in_statuscode');
  402. if(status && status.value != 'AUDITED'){
  403. btn.hide();
  404. }
  405. },
  406. click: function(btn){
  407. warnMsg("确定要转入物料核价单吗?", function(btn){
  408. if(btn == 'yes'){
  409. me.FormUtil.getActiveTab().setLoading(true);//loading...
  410. Ext.Ajax.request({
  411. url : basePath + 'scm/purchase/turnPurcPrice.action',
  412. params: {
  413. id: Ext.getCmp('in_id').value
  414. },
  415. method : 'post',
  416. callback : function(options,success,response){
  417. me.FormUtil.getActiveTab().setLoading(false);
  418. var localJson = new Ext.decode(response.responseText);
  419. if(localJson.exceptionInfo){
  420. showError(localJson.exceptionInfo);
  421. }
  422. if(localJson.success){
  423. turnSuccess(function(){
  424. var id = localJson.id;
  425. var url = "jsps/scm/purchase/purchasePrice.jsp?formCondition=pp_id=" + id +
  426. "&gridCondition=ppd_ppid=" + id;
  427. me.FormUtil.onAdd('PurchasePrice' + id, '物料核价单' + id, url);
  428. });
  429. }
  430. }
  431. });
  432. }
  433. });
  434. }
  435. },
  436. /**
  437. * 查看历史入库价
  438. */
  439. 'button[id=historyin]': {
  440. click: function(){
  441. var record = Ext.getCmp('grid').selModel.lastSelected;
  442. if(record){
  443. var prod = record.data['id_prodcode'];
  444. var win = Ext.getCmp('in-win');
  445. if(win == null){
  446. win = Ext.create('Ext.window.Window', {
  447. id: 'in-win',
  448. width: '80%',
  449. height: '100%',
  450. maximizable : true,
  451. layout: 'anchor',
  452. closeAction: 'hide',
  453. items: [Ext.create('erp.view.core.grid.Panel2', {
  454. id: 'inhistory',
  455. anchor: '100% 100%',
  456. caller: 'ProdInOut!In!History',
  457. condition: "pd_prodcode='" + prod + "' order by pd_prodmadedate desc",
  458. bbar: null
  459. })],
  460. setMyTitle: function(code){//@param code 料号
  461. this.setTitle('编号:<font color=blue>' + code + '</font>&nbsp;的历史入库价&nbsp;&nbsp;' +
  462. '<input type="button" value="上一条" onClick="javascript:Ext.getCmp(\'in-win\').prev();" style="cursor: pointer;color:gray;font-size:13px;"/>' +
  463. '<input type="button" value="下一条" onClick="javascript:Ext.getCmp(\'in-win\').next();" style="cursor: pointer;color:gray;font-size:13px;"/>');
  464. },
  465. reload: function(code){//@param code 料号
  466. var g = this.down('grid[id=inhistory]');
  467. g.GridUtil.loadNewStore(g, {
  468. caller: g.caller,
  469. condition: "pd_prodcode='" + code + "' order by pd_prodmadedate desc"
  470. });
  471. this.setMyTitle(code);
  472. },
  473. prev: function(){//查看上一条
  474. var item = Ext.getCmp('grid').prev();
  475. if(item != null){
  476. this.reload(item.data['id_prodcode']);
  477. }
  478. },
  479. next: function(){//查看下一条
  480. var item = Ext.getCmp('grid').next();
  481. if(item != null){
  482. this.reload(item.data['id_prodcode']);
  483. }
  484. }
  485. });
  486. win.setMyTitle(prod);
  487. win.show();
  488. } else {
  489. win.reload(prod);
  490. win.show();
  491. }
  492. } else {
  493. alert("请先选择明细!");
  494. }
  495. }
  496. },
  497. /**
  498. * 查看历史报价
  499. */
  500. 'button[id=historyquo]': {
  501. click: function(){
  502. var record = Ext.getCmp('grid').selModel.lastSelected;
  503. if(record){
  504. var prod = record.data['id_prodcode'];
  505. var win = Ext.getCmp('history-win');
  506. if(win == null){
  507. win = Ext.create('Ext.window.Window', {
  508. id: 'history-win',
  509. width: '80%',
  510. height: '100%',
  511. maximizable : true,
  512. layout: 'anchor',
  513. closeAction: 'hide',
  514. setMyTitle: function(code){//@param code 料号
  515. this.setTitle('编号:<font color=blue>' + code + '</font>&nbsp;的报价历史&nbsp;&nbsp;' +
  516. '<input type="button" value="上一条" onClick="javascript:Ext.getCmp(\'history-win\').prev();" style="cursor: pointer;color:gray;font-size:13px;"/>' +
  517. '<input type="button" value="下一条" onClick="javascript:Ext.getCmp(\'history-win\').next();" style="cursor: pointer;color:gray;font-size:13px;"/>');
  518. },
  519. reload: function(code){//@param code 料号
  520. var g = this.down('grid[id=history]');
  521. g.GridUtil.loadNewStore(g, {
  522. caller: g.caller,
  523. condition: "id_prodcode='" + code + "'"
  524. });
  525. g = this.down('grid[id=invid]');
  526. g.GridUtil.loadNewStore(g, {
  527. caller: g.caller,
  528. condition: "ppd_prodcode='" + code + "' AND ppd_statuscode='VALID'"
  529. });
  530. this.setMyTitle(code);
  531. },
  532. prev: function(){//查看上一条
  533. var item = Ext.getCmp('grid').prev();
  534. if(item != null){
  535. this.reload(item.data['id_prodcode']);
  536. }
  537. },
  538. next: function(){//查看下一条
  539. var item = Ext.getCmp('grid').next();
  540. if(item != null){
  541. this.reload(item.data['id_prodcode']);
  542. }
  543. }
  544. });
  545. win.setMyTitle(prod);
  546. win.show();
  547. win.add(Ext.create('erp.view.core.grid.Panel2', {
  548. id: 'history',
  549. anchor: '100% 60%',
  550. caller: 'Inquiry!History',
  551. condition: "id_prodcode='" + prod + "'",
  552. bbar: null,
  553. listeners: {
  554. reconfigure: function(){
  555. win.add(Ext.create('erp.view.core.grid.Panel2', {
  556. id: 'invid',
  557. title: '现有效价格',
  558. anchor: '100% 40%',
  559. caller: 'PurchasePrice!Invid',
  560. condition: "ppd_prodcode='" + prod + "' AND ppd_statuscode='VALID'",
  561. bbar: null
  562. }));
  563. }
  564. }
  565. }));
  566. } else {
  567. win.reload(prod);
  568. win.show();
  569. }
  570. } else {
  571. alert("请先选择明细!");
  572. }
  573. }
  574. },
  575. /**
  576. * 分段询价按钮
  577. */
  578. '#stepWiseInquiry' : {
  579. afterrender: function(b) {
  580. Ext.defer(function(){
  581. var f = Ext.getCmp('in_statuscode');
  582. if(f && f.value != 'ENTERING')
  583. b.hide();
  584. }, 100);
  585. },
  586. click: function(b) {
  587. var record = b.ownerCt.ownerCt.selModel.lastSelected;
  588. if(record)
  589. me.onStepWiseClick(record);
  590. }
  591. },
  592. 'erpCopyButton': {
  593. click: function(btn) {
  594. me.copy();
  595. }
  596. }
  597. });
  598. },
  599. onGridItemClick: function(selModel, record){//grid行选择
  600. this.GridUtil.onGridItemClick(selModel, record);
  601. var grid=selModel.ownerCt;
  602. var show = false;
  603. Ext.Array.each(grid.necessaryFields, function(field) {
  604. var fieldValue=record.data[field];
  605. if(fieldValue==undefined||fieldValue==""||fieldValue==null){
  606. show = true;
  607. return;
  608. }
  609. });
  610. if(show){
  611. var btn = Ext.getCmp('updateMaxlimitInfo');
  612. btn && btn.setDisabled(true);
  613. btn = Ext.getCmp('stepWiseInquiry');
  614. btn && btn.setDisabled(true);
  615. btn = Ext.getCmp('historyquo');
  616. btn && btn.setDisabled(true);
  617. btn = Ext.getCmp('historyin');
  618. btn && btn.setDisabled(true);
  619. } else {
  620. var btn = Ext.getCmp('updateMaxlimitInfo');
  621. btn && btn.setDisabled(false);
  622. btn = Ext.getCmp('stepWiseInquiry');
  623. btn && btn.setDisabled(false);
  624. btn = Ext.getCmp('historyquo');
  625. btn && btn.setDisabled(false);
  626. btn = Ext.getCmp('historyin');
  627. btn && btn.setDisabled(false);
  628. }
  629. },
  630. getForm: function(btn){
  631. return btn.ownerCt.ownerCt;
  632. },
  633. /**
  634. * 复制
  635. */
  636. copy: function() {
  637. var me = this,
  638. form = Ext.getCmp('form');
  639. var v = Ext.getCmp('in_id').value;
  640. if (v > 0) {
  641. form.setLoading(true);
  642. Ext.Ajax.request({
  643. url: basePath + 'scm/purchase/copyInquiry.action',
  644. params: {
  645. caller: caller,
  646. id: v
  647. },
  648. callback: function(opt, s, r) {
  649. form.setLoading(false);
  650. var res = Ext.decode(r.responseText);
  651. if (res.data) {
  652. var url = 'jsps/scm/purchase/inquiry.jsp?formCondition=in_idIS' + res.data.id + '&gridCondition=id_inidIS' + res.data.id;
  653. showMessage('提示', '复制成功', 2000);
  654. me.FormUtil.onAdd(null, '询价单', url);
  655. } else {
  656. showError(res.exceptionInfo);
  657. }
  658. }
  659. });
  660. }
  661. },
  662. /**
  663. * 分段询价
  664. */
  665. onStepWiseClick: function(record) {
  666. var fields = this.getStepFields(record.get('dets')), me = this;
  667. Ext.create('Ext.window.Window', {
  668. autoShow: true,
  669. title: '分段询价',
  670. width: 300,
  671. height: 400,
  672. layout: 'anchor',
  673. items: [{
  674. anchor: '100% 100%',
  675. xtype: 'form',
  676. items: fields,
  677. bodyStyle: 'background: #f1f2f5;',
  678. defaults: {
  679. margin: '5'
  680. }
  681. }],
  682. buttonAlign: 'center',
  683. buttons: [{
  684. text: '确定',
  685. handler: function(b) {
  686. me.onStepConfirm(record, b.ownerCt.ownerCt.down('form'), function(){
  687. b.ownerCt.ownerCt.close();
  688. });
  689. }
  690. }, {
  691. text: '取消',
  692. handler: function(b) {
  693. b.ownerCt.ownerCt.close();
  694. }
  695. }]
  696. });
  697. },
  698. getStepFields: function(dets) {
  699. if(!dets || dets.length == 0)
  700. dets = [{idd_lapqty: 0},{},{},{},{}];
  701. var fields = [], me = this;
  702. Ext.Array.each(dets, function(d){
  703. fields.push({
  704. xtype: 'numberfield',
  705. fieldLabel: '数量 ≥ ',
  706. labelWidth: 60,
  707. hideTrigger: true,
  708. name: 'idd_lapqty',
  709. value: d.idd_lapqty,
  710. dataId: d.idd_id,
  711. editable: (d.idd_lapqty == null || d.idd_lapqty > 0),
  712. flex: 1
  713. });
  714. });
  715. fields.push({
  716. xtype: 'button',
  717. iconCls: 'x-button-icon-add',
  718. handler: function(b) {
  719. me.onStepAdd(b.ownerCt);
  720. }
  721. });
  722. return fields;
  723. },
  724. onStepAdd: function(form) {
  725. var fields = form.items.items;
  726. if(fields.length > 11){
  727. showError('最多支持10个分段!');
  728. } else {
  729. form.insert(fields.length - 1, {
  730. xtype: 'numberfield',
  731. fieldLabel: '数量 ≥ ',
  732. labelWidth: 60,
  733. hideTrigger: true,
  734. name: 'idd_lapqty',
  735. flex: 1
  736. });
  737. }
  738. },
  739. onStepConfirm: function(record, form, callback) {
  740. var dets = [], steps = [], err = [];
  741. form.getForm().getFields().each(function(field){
  742. if('idd_lapqty' == field.name && field.value != null) {
  743. dets.push({idd_lapqty: field.value, idd_id: field.dataId});
  744. if(steps.indexOf(field.value) == -1)
  745. steps.push(field.value);
  746. else
  747. err.push('数量:' + field.value);
  748. }
  749. });
  750. if(err.length > 0) {
  751. showError('分段数量填写重复!<br>' + err.join('<br>'));
  752. return;
  753. }
  754. Ext.Array.sort(dets, function(a, b){
  755. return a.idd_lapqty > b.idd_lapqty;
  756. });
  757. record.set('dets', dets);
  758. record.dirty = true;
  759. record.modified = record.modified || {};
  760. record.modified['id_lapqty'] = true;
  761. callback.call(null);
  762. },
  763. beforeSave: function(){
  764. var me = this;
  765. var form = Ext.getCmp('form'), id = Ext.getCmp(form.keyField).value;
  766. if(! me.FormUtil.checkForm()){
  767. return;
  768. }
  769. if(Ext.isEmpty(id) || id == 0 || id == '0'){
  770. me.FormUtil.getSeqId(form);
  771. }
  772. var detail = Ext.getCmp('grid');
  773. var dets = [];
  774. detail.store.each(function(record, i){
  775. if(!me.GridUtil.isBlank(detail, record.data)) {
  776. if(record.get('id_id') == null || record.get('id_id') == 0){
  777. record.set('id_id', -1 * i);
  778. }
  779. var s = record.get('dets') || [];
  780. Ext.Array.each(s, function(t, i){
  781. t.idd_id = t.idd_id || 0;
  782. t.idd_idid = String(record.get('id_id'));
  783. dets.push(t);
  784. });
  785. }
  786. });
  787. me.FormUtil.beforeSave(me, Ext.encode(dets));
  788. },
  789. beforeUpdate: function(){
  790. var me = this;
  791. var form = Ext.getCmp('form');
  792. if(! me.FormUtil.checkForm()){
  793. return;
  794. }
  795. var detail = Ext.getCmp('grid');
  796. var dets = [];
  797. detail.store.each(function(record, i){
  798. if(!me.GridUtil.isBlank(detail, record.data)) {
  799. if(record.get('id_id') == null || record.get('id_id') == 0){
  800. record.set('id_id', -1 * i);
  801. }
  802. var s = record.get('dets') || [];
  803. Ext.Array.each(s, function(t, i){
  804. t.idd_id = t.idd_id || 0;
  805. t.idd_idid = String(record.get('id_id'));
  806. dets.push(t);
  807. });
  808. }
  809. });
  810. me.FormUtil.onUpdate(me, false, null, Ext.encode(dets));
  811. },
  812. getStepWise: function(in_id, callback) {
  813. Ext.Ajax.request({
  814. url: basePath + 'scm/purchase/inquiry/det.action',
  815. params: {
  816. in_id: in_id
  817. },
  818. callback: function(opt, s, r) {
  819. if(s) {
  820. var rs = Ext.decode(r.responseText);
  821. callback.call(null, rs);
  822. }
  823. }
  824. });
  825. },
  826. updateInfo:function(purpose, remark, id){
  827. Ext.Ajax.request({
  828. url : basePath + 'scm/purchase/inquiry/updateInfo.action',
  829. params: {
  830. purpose: purpose,
  831. remark: remark,
  832. id: id,
  833. caller: caller
  834. },
  835. method : 'post',
  836. async:false,
  837. callback : function(options,success,response){
  838. var res = new Ext.decode(response.responseText);
  839. if(res.exceptionInfo != null){
  840. showError(res.exceptionInfo);return;
  841. }
  842. showMessage("提示", '更新成功!');
  843. window.location.reload();
  844. }
  845. });
  846. }
  847. });