VerifyApply.js 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628
  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. click: {
  220. fn:function(btn){
  221. me.turnQC();
  222. },
  223. lock:2000
  224. }
  225. },
  226. 'dbfindtrigger[name=vad_pucode]': {
  227. focus: function(t){
  228. t.setHideTrigger(false);
  229. t.setReadOnly(false);
  230. if(Ext.getCmp('va_vendcode')){
  231. var code = Ext.getCmp('va_vendcode').value;
  232. if(code == null || code == ''){
  233. showError("请先选择供应商!");
  234. t.setHideTrigger(true);
  235. t.setReadOnly(true);
  236. } else {
  237. var obj = me.getBaseCondition();
  238. if(obj.vendor){
  239. t.dbBaseCondition = obj.vendor + "='" + code + "'";
  240. }
  241. }
  242. }
  243. }
  244. },
  245. 'multidbfindtrigger[name=vad_pudetno]': {
  246. focus: function(t){
  247. t.setHideTrigger(false);
  248. t.setReadOnly(false);
  249. var record = Ext.getCmp('grid').selModel.getLastSelected();
  250. var code = record.data['vad_pucode'];
  251. if(code == null || code == ''){
  252. showError("请先选择关联单号!");
  253. t.setHideTrigger(true);
  254. t.setReadOnly(true);
  255. } else {
  256. var obj = me.getBaseCondition();
  257. if(obj.field){
  258. t.dbBaseCondition = obj.field + "='" + code + "'";
  259. }
  260. }
  261. }
  262. },
  263. 'dbfindtrigger[name=vad_pudetno]': {
  264. focus: function(t){
  265. t.setHideTrigger(false);
  266. t.setReadOnly(false);
  267. var record = Ext.getCmp('grid').selModel.getLastSelected();
  268. var code = record.data['vad_pucode'];
  269. if(code == null || code == ''){
  270. showError("请先选择关联单号!");
  271. t.setHideTrigger(true);
  272. t.setReadOnly(true);
  273. } else {
  274. var obj = me.getBaseCondition();
  275. if(obj.field){
  276. t.dbBaseCondition = obj.field + "='" + code + "'";
  277. }
  278. }
  279. }
  280. },
  281. 'erpProduceBatchButton':{
  282. // afterrender:function(btn){
  283. // var status=Ext.getCmp('va_statuscode');
  284. // if(status && status.value !='ENTERING'){
  285. // btn.hide();
  286. // }
  287. // },
  288. click:function(btn){
  289. var id=Ext.getCmp('va_id').value;
  290. me.FormUtil.setLoading(true);//loading...
  291. Ext.Ajax.request({
  292. url : basePath + 'scm/purchase/ProduceBatch.action',
  293. params: {
  294. id:id
  295. },
  296. method : 'post',
  297. callback: function(opt, s, r) {
  298. me.FormUtil.setLoading(false);
  299. var rs = Ext.decode(r.responseText);
  300. if(rs.exceptionInfo) {
  301. showError(rs.exceptionInfo);
  302. } else {
  303. showMessage('提示', '产生批号成功!',1000);
  304. var grid=Ext.getCmp('grid');
  305. var param={
  306. caller:caller,
  307. condition:gridCondition
  308. };
  309. me.GridUtil.loadNewStore(grid,param);
  310. }
  311. }
  312. });
  313. }
  314. },
  315. 'erpSubpackageButton':{
  316. afterrender: function(btn){
  317. var status = Ext.getCmp('va_statuscode');
  318. if(status && status.value != 'AUDITED'){
  319. btn.hide();
  320. }
  321. },
  322. click: function(btn){
  323. warnMsg("确定分装?", function(btn){
  324. if(btn == 'yes'){
  325. me.FormUtil.setLoading(true);//loading...
  326. Ext.Ajax.request({
  327. url : basePath + 'scm/purchase/Subpackage.action',
  328. params: {
  329. id: Ext.getCmp('va_id').value
  330. },
  331. method : 'post',
  332. callback: function(opt, s, r) {
  333. me.FormUtil.setLoading(false);
  334. var rs = Ext.decode(r.responseText);
  335. if(rs.exceptionInfo) {
  336. showError(rs.exceptionInfo);
  337. } else {
  338. if(rs.log)
  339. showMessage('提示', rs.log);
  340. }
  341. }
  342. });
  343. }
  344. });
  345. }
  346. },
  347. 'erpClearSubpackageButton':{
  348. afterrender: function(btn){
  349. var status = Ext.getCmp('va_statuscode');
  350. if(status && status.value != 'AUDITED'){
  351. btn.hide();
  352. }
  353. },
  354. click: function(btn){
  355. warnMsg("确定清除分装?", function(btn){
  356. if(btn == 'yes'){
  357. me.FormUtil.setLoading(true);//loading...
  358. Ext.Ajax.request({
  359. url : basePath + 'scm/purchase/ClearSubpackage.action',
  360. params: {
  361. id: Ext.getCmp('va_id').value
  362. },
  363. method : 'post',
  364. callback: function(opt, s, r) {
  365. me.FormUtil.setLoading(false);
  366. var rs = Ext.decode(r.responseText);
  367. if(rs.exceptionInfo) {
  368. showError(rs.exceptionInfo);
  369. } else {
  370. if(rs.log)
  371. showMessage('提示', rs.log);
  372. }
  373. }
  374. });
  375. }
  376. });
  377. }
  378. },
  379. 'erpPrintBarButton':{
  380. click: function(btn){
  381. var reportName = "bar_52";
  382. var condition = '{VerifyApplyDetailP.vadp_vacode}=' +"'"+ Ext.getCmp('va_code').value + "'";
  383. var id = Ext.getCmp('va_id').value;
  384. me.FormUtil.onwindowsPrint(id, reportName, condition);
  385. }
  386. },
  387. '#erpUpdateDetailWHCode':{
  388. click: function(btn) {
  389. var record = btn.ownerCt.ownerCt.getSelectionModel().getLastSelected();
  390. this.UpdateDetailWHCode(record);
  391. }
  392. },
  393. });
  394. },
  395. turnQC:function(){
  396. var me = this;
  397. var grid = Ext.getCmp('grid'),items = grid.store.data.items,data = new Array();
  398. var vaclass = Ext.getCmp('va_class').value,url="";
  399. if(vaclass == '采购收料单'){
  400. url = "scm/purchase/turnIQC.action";
  401. } else if(vaclass == '委外收料单'){
  402. url = "pm/make/turnFQC.action";
  403. }
  404. Ext.each(items, function(item){
  405. data.push({vad_id: item.data.vad_id});
  406. });
  407. grid.setLoading(true);//loading...
  408. Ext.Ajax.request({
  409. url : basePath + url,
  410. params: {
  411. data: Ext.encode(data)
  412. },
  413. method : 'post',
  414. callback : function(options,success,response){
  415. grid.setLoading(false);
  416. var localJson = new Ext.decode(response.responseText);
  417. if(localJson.exceptionInfo){
  418. showError(localJson.exceptionInfo);
  419. return "";
  420. }
  421. if(localJson.success){
  422. if(localJson.log){
  423. showMessage("提示", localJson.log);
  424. }
  425. window.location.reload();
  426. }
  427. }
  428. });
  429. },
  430. /**
  431. *修改明细仓库
  432. * */
  433. UpdateDetailWHCode:function(record){
  434. var me = this;
  435. var win=Ext.create('Ext.window.Window', {
  436. width: 430,
  437. height: 250,
  438. closeAction: 'destroy',
  439. title: '<h1>修改仓库信息</h1>',
  440. layout: {
  441. type: 'vbox'
  442. },
  443. items: [{
  444. margin: '5 0 0 5',
  445. xtype: 'dbfindtrigger',
  446. fieldLabel: '仓库编号',
  447. name: 'whcode',
  448. value: record.data.vad_whcode,
  449. id:'whcode'
  450. },
  451. {
  452. margin: '5 0 0 5',
  453. xtype: 'textfield',
  454. fieldLabel: '仓库名称',
  455. name: 'whname',
  456. value: record.data.vad_whname,
  457. id:'whname'
  458. },{
  459. margin: '5 0 0 5',
  460. xtype:'checkbox',
  461. fieldLabel:'是否修改所有明细',
  462. labelWidth:120,
  463. name:'isalldetail',
  464. id:'isalldetail'
  465. }],
  466. buttonAlign: 'center',
  467. buttons: [{
  468. xtype: 'button',
  469. text: '保存',
  470. width: 60,
  471. iconCls: 'x-button-icon-save',
  472. handler: function(btn) {
  473. var w = btn.up('window');
  474. me.saveWhInfo(w);
  475. win.close();
  476. win.destroy();
  477. }
  478. },
  479. {
  480. xtype: 'button',
  481. columnWidth: 0.1,
  482. text: '关闭',
  483. width: 60,
  484. iconCls: 'x-button-icon-close',
  485. margin: '0 0 0 10',
  486. handler: function(btn) {
  487. var win = btn.up('window');
  488. win.close();
  489. win.destroy();
  490. }
  491. }]
  492. });
  493. win.show();
  494. },
  495. saveWhInfo:function(w){
  496. var whcode = w.down('field[name=whcode]').getValue();
  497. var isalldetail = w.down('field[name=isalldetail]').getValue();
  498. grid = Ext.getCmp('grid'),
  499. record = grid.getSelectionModel().getLastSelected();
  500. if (!whcode) {
  501. showError('请先设置仓库信息!');
  502. return;
  503. } else {
  504. var dd = {
  505. whcode:whcode,
  506. whname:w.down('field[name=whname]').getValue(),
  507. vad_id: record.data.vad_id,
  508. vad_vaid: record.data.vad_vaid,
  509. isalldetail:isalldetail
  510. };
  511. Ext.Ajax.request({
  512. url: basePath + 'scm/qc/updateWhCodeInfo.action',
  513. params: {
  514. data: unescape(Ext.JSON.encode(dd)),
  515. caller: caller
  516. },
  517. method: 'post',
  518. callback: function(opt, s, res) {
  519. var r = new Ext.decode(res.responseText);
  520. if (r.success) {
  521. grid.GridUtil.loadNewStore(grid, {
  522. caller: caller,
  523. condition: gridCondition
  524. });
  525. showMessage('提示', '更新成功!', 1000);
  526. } else if (r.exceptionInfo) {
  527. showError(r.exceptionInfo);
  528. } else {
  529. saveFailure();
  530. }
  531. }
  532. });
  533. }
  534. },
  535. getForm: function(btn){
  536. return btn.ownerCt.ownerCt;
  537. },
  538. onGridItemClick: function(selModel, record){//grid行选择
  539. this.GridUtil.onGridItemClick(selModel, record);
  540. },
  541. getBaseCondition: function(){
  542. var field = null;
  543. var vendor = '';
  544. switch (caller) {
  545. case 'VerifyApply': //采购收料单
  546. field = "pd_code";
  547. vendor="pu_vendcode";
  548. break;
  549. case 'VerifyApply!OS': //委外收料单
  550. field = "mm_code";
  551. vendor="ma_vendcode";
  552. break;
  553. }
  554. var obj = new Object();
  555. obj.field = field;
  556. obj.vendor = vendor;
  557. return obj;
  558. },
  559. beforeSave: function(){
  560. var bool = true;
  561. var grid = Ext.getCmp('grid');
  562. var items = grid.store.data.items;
  563. Ext.each(items, function(item){
  564. if(item.dirty && item.data[grid.necessaryField] != null && item.data[grid.necessaryField] != ""){
  565. if(item.data['vad_qty'] == null || item.data['vad_qty'] == '' ||
  566. item.data['vad_qty'] == '0' || item.data['vad_qty'] == 0){
  567. bool = false;
  568. showError('明细表第' + item.data['vad_detno'] + '行的数量为空或0');return;
  569. }
  570. if(item.data['vad_unitpackage'] == null || item.data['vad_unitpackage'] == ''||
  571. item.data['vad_unitpackage'] == '0' || item.data['vad_unitpackage'] == 0){
  572. item.set('vad_unitpackage', item.data['vad_qty']);
  573. }
  574. }
  575. });
  576. if(bool){
  577. this.FormUtil.beforeSave(this);
  578. }
  579. },
  580. beforeUpdate: function(){
  581. var bool = true;
  582. var grid = Ext.getCmp('grid');
  583. var items = grid.store.data.items;
  584. if(Ext.getCmp('va_date').value > new Date()){
  585. bool = false;
  586. showError('收料日期大于系统当前日期');return;
  587. }
  588. Ext.each(items, function(item){
  589. if(item.dirty && item.data[grid.necessaryField] != null && item.data[grid.necessaryField] != ""){
  590. if(item.data['vad_qty'] == null || item.data['vad_qty'] == '' ||
  591. item.data['vad_qty'] == '0' || item.data['vad_qty'] == 0){
  592. bool = false;
  593. showError('明细表第' + item.data['vad_detno'] + '行的数量为空或0');return;
  594. }
  595. if(item.data['vad_unitpackage'] == null || item.data['vad_unitpackage'] == ''||
  596. item.data['vad_unitpackage'] == '0' || item.data['vad_unitpackage'] == 0){
  597. item.set('vad_unitpackage', item.data['vad_qty']);
  598. }
  599. }
  600. });
  601. if(bool){
  602. this.FormUtil.onUpdate(this);
  603. }
  604. },
  605. /**
  606. *条码维护
  607. **/
  608. EditSubpackage:function(record){
  609. var width = Ext.isIE ? screen.width*0.7*0.9 : '80%',
  610. height = Ext.isIE ? screen.height*0.75 : '100%';
  611. var vad_id = record.get('vad_id');
  612. var va_code = "'"+Ext.getCmp("va_code").value+"'";
  613. Ext.create('Ext.Window', {
  614. width: width,
  615. height: height,
  616. autoShow: true,
  617. layout: 'anchor',
  618. items: [{
  619. tag : 'iframe',
  620. frame : true,
  621. anchor : '100% 100%',
  622. layout : 'fit',
  623. html : '<iframe id="iframe_dbfind" src="' + basePath + 'jsps/scm/purchase/verifyApplyDetail.jsp?formCondition=vad_id='
  624. + 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>'
  625. }]
  626. });
  627. }
  628. });