VerifyApply.js 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622
  1. Ext.QuickTips.init();
  2. Ext.define('erp.controller.scm.purchase.VerifyApply', {
  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.VerifyApply','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.DeleteDetail',
  11. 'core.button.ResSubmit','core.button.TurnCheck','core.button.PrintBar',
  12. 'core.button.ClearSubpackage','core.button.Subpackage','core.button.ProduceBatch',
  13. 'core.button.GridWin','core.button.TurnPurcProdIO',
  14. 'core.trigger.DbfindTrigger','core.trigger.TextAreaTrigger','core.trigger.MultiDbfindTrigger','core.button.Barcode'
  15. ],
  16. init:function(){
  17. var me = this;
  18. me.allowinsert = true;
  19. this.control({
  20. 'erpGridPanel2': {
  21. itemclick: function(selModel, record){
  22. if(record.data.vad_id > 0){
  23. var btn = selModel.ownerCt.down('#erpEditSubpackageButton');
  24. if(btn && !btn.hidden)
  25. btn.setDisabled(false);
  26. btn = selModel.ownerCt.down('#erpUpdateDetailWHCode');
  27. if(btn && !btn.hidden)
  28. btn.setDisabled(false);
  29. }
  30. this.onGridItemClick(selModel, record);
  31. }
  32. },
  33. 'erpGridWinButton':{
  34. afterrender: function(btn){
  35. var id = Ext.getCmp('va_id').value;
  36. btn.setConfig({
  37. text: '费用明细',
  38. caller: 'ProdChargeDetail!AN',
  39. condition: 'pd_anid=' + id,
  40. paramConfig: {
  41. pd_anid: id
  42. }
  43. });
  44. },
  45. beforesave : function(btn) {
  46. var f = btn.ownerCt.ownerCt, p = f.down('field[name=va_turnstatuscode]');
  47. if (p && 'TURNIN' == p.getValue()) {
  48. Ext.Msg.alert("提示","该单据已入库,不能修改费用明细!");
  49. return false;
  50. }
  51. return true;
  52. }
  53. },
  54. 'erpSaveButton': {
  55. click: function(btn){
  56. var bool = true;
  57. if(Ext.getCmp('va_date').value > new Date()){
  58. bool = false;
  59. showError('收料日期大于系统当前日期');return;
  60. }
  61. if(bool){
  62. var form = me.getForm(btn);
  63. if(Ext.getCmp(form.codeField).value == null || Ext.getCmp(form.codeField).value == ''){
  64. me.BaseUtil.getRandomNumber();//自动添加编号
  65. }
  66. //保存之前的一些前台的逻辑判定
  67. this.beforeSave();
  68. }
  69. }
  70. },
  71. 'erpDeleteButton' : {
  72. click: function(btn){
  73. me.FormUtil.onDelete(Ext.getCmp('va_id').value);
  74. }
  75. },
  76. '#erpEditSubpackageButton': {
  77. click: function(btn){
  78. var record=btn.ownerCt.ownerCt.getSelectionModel().getLastSelected();
  79. me.EditSubpackage(record);
  80. }
  81. },
  82. 'erpUpdateButton': {
  83. afterrender: function(btn){
  84. var status = Ext.getCmp('va_statuscode');
  85. if(status && status.value != 'ENTERING' && status.value != 'COMMITED'){
  86. btn.hide();
  87. }
  88. },
  89. click: function(btn){
  90. me.beforeUpdate();
  91. }
  92. },
  93. 'erpAddButton': {
  94. click: function(){
  95. me.FormUtil.onAdd('addVerifyApply', '新增委外收料单', 'jsps/scm/purchase/verifyApply.jsp?whoami='+caller);
  96. }
  97. },
  98. 'erpCloseButton': {
  99. click: function(btn){
  100. me.FormUtil.beforeClose(me);
  101. }
  102. },
  103. 'erpSubmitButton': {
  104. afterrender: function(btn){
  105. var status = Ext.getCmp('va_statuscode');
  106. if(status && status.value != 'ENTERING'){
  107. btn.hide();
  108. }
  109. },
  110. click: function(btn){
  111. var bool = true;
  112. var grid = Ext.getCmp('grid');
  113. var items = grid.store.data.items;
  114. if(Ext.getCmp('va_date').value > new Date()){
  115. bool = false;
  116. showError('收料日期大于系统当前日期');return;
  117. }
  118. Ext.each(items, function(item){
  119. if(item.dirty && item.data[grid.necessaryField] != null && item.data[grid.necessaryField] != ""){
  120. if(item.data['vad_qty'] == null || item.data['vad_qty'] == '' ||
  121. item.data['vad_qty'] == '0' || item.data['vad_qty'] == 0){
  122. bool = false;
  123. showError('明细表第' + item.data['vad_detno'] + '行的数量为空或0');return;
  124. }
  125. }
  126. });
  127. if(bool){
  128. me.FormUtil.onSubmit(Ext.getCmp('va_id').value);
  129. }
  130. }
  131. },
  132. 'erpResSubmitButton': {
  133. afterrender: function(btn){
  134. var status = Ext.getCmp('va_statuscode');
  135. if(status && status.value != 'COMMITED'){
  136. btn.hide();
  137. }
  138. },
  139. click: function(btn){
  140. me.FormUtil.onResSubmit(Ext.getCmp('va_id').value);
  141. }
  142. },
  143. 'erpAuditButton': {
  144. afterrender: function(btn){
  145. var status = Ext.getCmp('va_statuscode');
  146. if(status && status.value != 'COMMITED'){
  147. btn.hide();
  148. }
  149. },
  150. click: function(btn){
  151. me.FormUtil.onAudit(Ext.getCmp('va_id').value);
  152. }
  153. },
  154. 'erpResAuditButton': {
  155. afterrender: function(btn){
  156. var status = Ext.getCmp('va_statuscode');
  157. if(status && status.value != 'AUDITED'){
  158. btn.hide();
  159. }
  160. },
  161. click: function(btn){
  162. me.FormUtil.onResAudit(Ext.getCmp('va_id').value);
  163. }
  164. },
  165. 'erpPrintButton': {
  166. click:function(btn){
  167. var reportName="VerifyApply";
  168. var condition='{VerifyApply.va_id}='+Ext.getCmp('va_id').value+'';
  169. var id=Ext.getCmp('va_id').value;
  170. me.FormUtil.onwindowsPrint2(id,reportName,condition);
  171. }
  172. },
  173. 'erpTurnPurcProdIOButton':{
  174. afterrender: function(btn){
  175. var status = Ext.getCmp('va_statuscode');
  176. if(status && status.value != 'AUDITED'){
  177. btn.hide();
  178. }
  179. },
  180. click: function(btn){
  181. warnMsg("确定要转入采购验收单吗?", function(btn){
  182. if(btn == 'yes'){
  183. var id = Ext.getCmp('va_id').value;
  184. me.FormUtil.setLoading(true);//loading...
  185. Ext.Ajax.request({
  186. url : basePath + 'scm/purchase/turnStorage.action',
  187. params: {
  188. id: id
  189. },
  190. method : 'post',
  191. callback : function(options,success,response){
  192. me.FormUtil.setLoading(false);
  193. var r = new Ext.decode(response.responseText);
  194. if(r.exceptionInfo){
  195. showError(r.exceptionInfo);
  196. } else {
  197. if(r.log) {
  198. showMessage('提示', r.log);
  199. var grid = Ext.getCmp('grid');
  200. grid.GridUtil.loadNewStore(grid, {
  201. caller: caller,
  202. condition: 'vad_vaid=' + id
  203. });
  204. }
  205. }
  206. }
  207. });
  208. }
  209. });
  210. }
  211. },
  212. 'erpTurnCheckButton': {
  213. afterrender: function(btn){
  214. var status = Ext.getCmp('va_statuscode');
  215. if(status && status.value != 'AUDITED'){
  216. btn.hide();
  217. }
  218. },
  219. buffer : 3000,
  220. click: function(btn){
  221. var grid = Ext.getCmp('grid'),items = grid.store.data.items,data = new Array();
  222. var vaclass = Ext.getCmp('va_class').value,url="";
  223. if(vaclass == '采购收料单'){
  224. url = "scm/purchase/turnIQC.action";
  225. } else if(vaclass == '委外收料单'){
  226. url = "pm/make/turnFQC.action";
  227. }
  228. Ext.each(items, function(item){
  229. data.push({vad_id: item.data.vad_id});
  230. });
  231. grid.setLoading(true);//loading...
  232. Ext.Ajax.request({
  233. url : basePath + url,
  234. params: {
  235. data: Ext.encode(data)
  236. },
  237. method : 'post',
  238. callback : function(options,success,response){
  239. grid.setLoading(false);
  240. var localJson = new Ext.decode(response.responseText);
  241. if(localJson.exceptionInfo){
  242. showError(localJson.exceptionInfo);
  243. return "";
  244. }
  245. if(localJson.success){
  246. if(localJson.log){
  247. showMessage("提示", localJson.log);
  248. }
  249. window.location.reload();
  250. }
  251. }
  252. });
  253. }
  254. },
  255. 'dbfindtrigger[name=vad_pucode]': {
  256. focus: function(t){
  257. t.setHideTrigger(false);
  258. t.setReadOnly(false);
  259. if(Ext.getCmp('va_vendcode')){
  260. var code = Ext.getCmp('va_vendcode').value;
  261. if(code == null || code == ''){
  262. showError("请先选择供应商!");
  263. t.setHideTrigger(true);
  264. t.setReadOnly(true);
  265. } else {
  266. var obj = me.getBaseCondition();
  267. if(obj.vendor){
  268. t.dbBaseCondition = obj.vendor + "='" + code + "'";
  269. }
  270. }
  271. }
  272. }
  273. },
  274. 'multidbfindtrigger[name=vad_pudetno]': {
  275. focus: function(t){
  276. t.setHideTrigger(false);
  277. t.setReadOnly(false);
  278. var record = Ext.getCmp('grid').selModel.getLastSelected();
  279. var code = record.data['vad_pucode'];
  280. if(code == null || code == ''){
  281. showError("请先选择关联单号!");
  282. t.setHideTrigger(true);
  283. t.setReadOnly(true);
  284. } else {
  285. var obj = me.getBaseCondition();
  286. if(obj.field){
  287. t.dbBaseCondition = obj.field + "='" + code + "'";
  288. }
  289. }
  290. }
  291. },
  292. 'dbfindtrigger[name=vad_pudetno]': {
  293. focus: function(t){
  294. t.setHideTrigger(false);
  295. t.setReadOnly(false);
  296. var record = Ext.getCmp('grid').selModel.getLastSelected();
  297. var code = record.data['vad_pucode'];
  298. if(code == null || code == ''){
  299. showError("请先选择关联单号!");
  300. t.setHideTrigger(true);
  301. t.setReadOnly(true);
  302. } else {
  303. var obj = me.getBaseCondition();
  304. if(obj.field){
  305. t.dbBaseCondition = obj.field + "='" + code + "'";
  306. }
  307. }
  308. }
  309. },
  310. 'erpProduceBatchButton':{
  311. // afterrender:function(btn){
  312. // var status=Ext.getCmp('va_statuscode');
  313. // if(status && status.value !='ENTERING'){
  314. // btn.hide();
  315. // }
  316. // },
  317. click:function(btn){
  318. var id=Ext.getCmp('va_id').value;
  319. me.FormUtil.setLoading(true);//loading...
  320. Ext.Ajax.request({
  321. url : basePath + 'scm/purchase/ProduceBatch.action',
  322. params: {
  323. id:id
  324. },
  325. method : 'post',
  326. callback: function(opt, s, r) {
  327. me.FormUtil.setLoading(false);
  328. var rs = Ext.decode(r.responseText);
  329. if(rs.exceptionInfo) {
  330. showError(rs.exceptionInfo);
  331. } else {
  332. showMessage('提示', '产生批号成功!',1000);
  333. var grid=Ext.getCmp('grid');
  334. var param={
  335. caller:caller,
  336. condition:gridCondition
  337. };
  338. me.GridUtil.loadNewStore(grid,param);
  339. }
  340. }
  341. });
  342. }
  343. },
  344. 'erpSubpackageButton':{
  345. afterrender: function(btn){
  346. var status = Ext.getCmp('va_statuscode');
  347. if(status && status.value != 'AUDITED'){
  348. btn.hide();
  349. }
  350. },
  351. click: function(btn){
  352. warnMsg("确定分装?", function(btn){
  353. if(btn == 'yes'){
  354. me.FormUtil.setLoading(true);//loading...
  355. Ext.Ajax.request({
  356. url : basePath + 'scm/purchase/Subpackage.action',
  357. params: {
  358. id: Ext.getCmp('va_id').value
  359. },
  360. method : 'post',
  361. callback: function(opt, s, r) {
  362. me.FormUtil.setLoading(false);
  363. var rs = Ext.decode(r.responseText);
  364. if(rs.exceptionInfo) {
  365. showError(rs.exceptionInfo);
  366. } else {
  367. if(rs.log)
  368. showMessage('提示', rs.log);
  369. }
  370. }
  371. });
  372. }
  373. });
  374. }
  375. },
  376. 'erpClearSubpackageButton':{
  377. afterrender: function(btn){
  378. var status = Ext.getCmp('va_statuscode');
  379. if(status && status.value != 'AUDITED'){
  380. btn.hide();
  381. }
  382. },
  383. click: function(btn){
  384. warnMsg("确定清除分装?", function(btn){
  385. if(btn == 'yes'){
  386. me.FormUtil.setLoading(true);//loading...
  387. Ext.Ajax.request({
  388. url : basePath + 'scm/purchase/ClearSubpackage.action',
  389. params: {
  390. id: Ext.getCmp('va_id').value
  391. },
  392. method : 'post',
  393. callback: function(opt, s, r) {
  394. me.FormUtil.setLoading(false);
  395. var rs = Ext.decode(r.responseText);
  396. if(rs.exceptionInfo) {
  397. showError(rs.exceptionInfo);
  398. } else {
  399. if(rs.log)
  400. showMessage('提示', rs.log);
  401. }
  402. }
  403. });
  404. }
  405. });
  406. }
  407. },
  408. 'erpPrintBarButton':{
  409. click: function(btn){
  410. var reportName = "bar_52";
  411. var condition = '{VerifyApplyDetailP.vadp_vacode}=' +"'"+ Ext.getCmp('va_code').value + "'";
  412. var id = Ext.getCmp('va_id').value;
  413. me.FormUtil.onwindowsPrint(id, reportName, condition);
  414. }
  415. },
  416. '#erpUpdateDetailWHCode':{
  417. click: function(btn) {
  418. var record = btn.ownerCt.ownerCt.getSelectionModel().getLastSelected();
  419. this.UpdateDetailWHCode(record);
  420. }
  421. },
  422. });
  423. },
  424. /**
  425. *修改明细仓库
  426. * */
  427. UpdateDetailWHCode:function(record){
  428. var me = this;
  429. var win=Ext.create('Ext.window.Window', {
  430. width: 430,
  431. height: 250,
  432. closeAction: 'destroy',
  433. title: '<h1>修改仓库信息</h1>',
  434. layout: {
  435. type: 'vbox'
  436. },
  437. items: [{
  438. margin: '5 0 0 5',
  439. xtype: 'dbfindtrigger',
  440. fieldLabel: '仓库编号',
  441. name: 'whcode',
  442. value: record.data.vad_whcode,
  443. id:'whcode'
  444. },
  445. {
  446. margin: '5 0 0 5',
  447. xtype: 'textfield',
  448. fieldLabel: '仓库名称',
  449. name: 'whname',
  450. value: record.data.vad_whname,
  451. id:'whname'
  452. },{
  453. margin: '5 0 0 5',
  454. xtype:'checkbox',
  455. fieldLabel:'是否修改所有明细',
  456. labelWidth:120,
  457. name:'isalldetail',
  458. id:'isalldetail'
  459. }],
  460. buttonAlign: 'center',
  461. buttons: [{
  462. xtype: 'button',
  463. text: '保存',
  464. width: 60,
  465. iconCls: 'x-button-icon-save',
  466. handler: function(btn) {
  467. var w = btn.up('window');
  468. me.saveWhInfo(w);
  469. win.close();
  470. win.destroy();
  471. }
  472. },
  473. {
  474. xtype: 'button',
  475. columnWidth: 0.1,
  476. text: '关闭',
  477. width: 60,
  478. iconCls: 'x-button-icon-close',
  479. margin: '0 0 0 10',
  480. handler: function(btn) {
  481. var win = btn.up('window');
  482. win.close();
  483. win.destroy();
  484. }
  485. }]
  486. });
  487. win.show();
  488. },
  489. saveWhInfo:function(w){
  490. var whcode = w.down('field[name=whcode]').getValue();
  491. var isalldetail = w.down('field[name=isalldetail]').getValue();
  492. grid = Ext.getCmp('grid'),
  493. record = grid.getSelectionModel().getLastSelected();
  494. if (!whcode) {
  495. showError('请先设置仓库信息!');
  496. return;
  497. } else {
  498. var dd = {
  499. whcode:whcode,
  500. whname:w.down('field[name=whname]').getValue(),
  501. vad_id: record.data.vad_id,
  502. vad_vaid: record.data.vad_vaid,
  503. isalldetail:isalldetail
  504. };
  505. Ext.Ajax.request({
  506. url: basePath + 'scm/qc/updateWhCodeInfo.action',
  507. params: {
  508. data: unescape(Ext.JSON.encode(dd)),
  509. caller: caller
  510. },
  511. method: 'post',
  512. callback: function(opt, s, res) {
  513. var r = new Ext.decode(res.responseText);
  514. if (r.success) {
  515. grid.GridUtil.loadNewStore(grid, {
  516. caller: caller,
  517. condition: gridCondition
  518. });
  519. showMessage('提示', '更新成功!', 1000);
  520. } else if (r.exceptionInfo) {
  521. showError(r.exceptionInfo);
  522. } else {
  523. saveFailure();
  524. }
  525. }
  526. });
  527. }
  528. },
  529. getForm: function(btn){
  530. return btn.ownerCt.ownerCt;
  531. },
  532. onGridItemClick: function(selModel, record){//grid行选择
  533. this.GridUtil.onGridItemClick(selModel, record);
  534. },
  535. getBaseCondition: function(){
  536. var field = null;
  537. var vendor = '';
  538. switch (caller) {
  539. case 'VerifyApply': //采购收料单
  540. field = "pd_code";
  541. vendor="pu_vendcode";
  542. break;
  543. case 'VerifyApply!OS': //委外收料单
  544. field = "mm_code";
  545. vendor="ma_vendcode";
  546. break;
  547. }
  548. var obj = new Object();
  549. obj.field = field;
  550. obj.vendor = vendor;
  551. return obj;
  552. },
  553. beforeSave: function(){
  554. var bool = true;
  555. var grid = Ext.getCmp('grid');
  556. var items = grid.store.data.items;
  557. Ext.each(items, function(item){
  558. if(item.dirty && item.data[grid.necessaryField] != null && item.data[grid.necessaryField] != ""){
  559. if(item.data['vad_qty'] == null || item.data['vad_qty'] == '' ||
  560. item.data['vad_qty'] == '0' || item.data['vad_qty'] == 0){
  561. bool = false;
  562. showError('明细表第' + item.data['vad_detno'] + '行的数量为空或0');return;
  563. }
  564. if(item.data['vad_unitpackage'] == null || item.data['vad_unitpackage'] == ''||
  565. item.data['vad_unitpackage'] == '0' || item.data['vad_unitpackage'] == 0){
  566. item.set('vad_unitpackage', item.data['vad_qty']);
  567. }
  568. }
  569. });
  570. if(bool){
  571. this.FormUtil.beforeSave(this);
  572. }
  573. },
  574. beforeUpdate: function(){
  575. var bool = true;
  576. var grid = Ext.getCmp('grid');
  577. var items = grid.store.data.items;
  578. if(Ext.getCmp('va_date').value > new Date()){
  579. bool = false;
  580. showError('收料日期大于系统当前日期');return;
  581. }
  582. Ext.each(items, function(item){
  583. if(item.dirty && item.data[grid.necessaryField] != null && item.data[grid.necessaryField] != ""){
  584. if(item.data['vad_qty'] == null || item.data['vad_qty'] == '' ||
  585. item.data['vad_qty'] == '0' || item.data['vad_qty'] == 0){
  586. bool = false;
  587. showError('明细表第' + item.data['vad_detno'] + '行的数量为空或0');return;
  588. }
  589. if(item.data['vad_unitpackage'] == null || item.data['vad_unitpackage'] == ''||
  590. item.data['vad_unitpackage'] == '0' || item.data['vad_unitpackage'] == 0){
  591. item.set('vad_unitpackage', item.data['vad_qty']);
  592. }
  593. }
  594. });
  595. if(bool){
  596. this.FormUtil.onUpdate(this);
  597. }
  598. },
  599. /**
  600. *条码维护
  601. **/
  602. EditSubpackage:function(record){
  603. var width = Ext.isIE ? screen.width*0.7*0.9 : '80%',
  604. height = Ext.isIE ? screen.height*0.75 : '100%';
  605. var vad_id = record.get('vad_id');
  606. var va_code = "'"+Ext.getCmp("va_code").value+"'";
  607. Ext.create('Ext.Window', {
  608. width: width,
  609. height: height,
  610. autoShow: true,
  611. layout: 'anchor',
  612. items: [{
  613. tag : 'iframe',
  614. frame : true,
  615. anchor : '100% 100%',
  616. layout : 'fit',
  617. html : '<iframe id="iframe_dbfind" src="' + basePath + 'jsps/scm/purchase/verifyApplyDetail.jsp?formCondition=vad_id='
  618. + vad_id + ' and vad_code='+va_code+'&gridCondition=vadp_vadid=' + vad_id + ' and vadp_vacode='+va_code+'" height="100%" width="100%" frameborder="0" scrolling="no"></iframe>'
  619. }]
  620. });
  621. }
  622. });