ProdInOutApply.js 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394
  1. Ext.QuickTips.init();
  2. Ext.define('erp.controller.scm.reserve.ProdInOutApply', {
  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.reserve.ProdInOutApply','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.TurnProdOut',
  12. 'core.trigger.DbfindTrigger','core.trigger.TextAreaTrigger','core.form.YnField'
  13. ],
  14. init:function(){
  15. var me = this;
  16. this.control({
  17. 'erpGridPanel2': {
  18. itemclick: function(selModel, record){
  19. if(caller == 'ProdInOutApply!CGYT'){
  20. if(record.data.pd_id > 0 && Ext.isEmpty(record.data.pd_ordercode)){
  21. var btn = selModel.ownerCt.down('#erpGetPurcPrice');
  22. if(btn && !btn.hidden)
  23. btn.setDisabled(false);
  24. }
  25. }
  26. this.onGridItemClick
  27. }
  28. },
  29. '#erpGetPurcPrice': {
  30. click: function(btn){
  31. var record=btn.ownerCt.ownerCt.getSelectionModel().getLastSelected();
  32. me.getPurcPrice(record);
  33. }
  34. },
  35. 'erpSaveButton': {
  36. click: function(btn){
  37. var form = me.getForm(btn);
  38. if(Ext.getCmp(form.codeField).value == null || Ext.getCmp(form.codeField).value == ''){
  39. me.BaseUtil.getRandomNumber();//自动添加编号
  40. }
  41. this.FormUtil.beforeSave(this);
  42. }
  43. },
  44. 'field[name=pi_currency]': {
  45. beforetrigger: function(field) {
  46. var t = field.up('form').down('field[name=pi_date]'),
  47. value = t.getValue();
  48. if(value) {
  49. field.findConfig = 'cm_yearmonth=' + Ext.Date.format(value, 'Ym');
  50. }
  51. }
  52. },
  53. 'erpDeleteButton' : {
  54. afterrender: function(btn){
  55. var status = Ext.getCmp('pi_statuscode');
  56. if(status && status.value != 'ENTERING'){
  57. btn.hide();
  58. }
  59. },
  60. click: function(btn){
  61. me.FormUtil.onDelete(Ext.getCmp('pi_id').value);
  62. }
  63. },
  64. 'erpUpdateButton': {
  65. afterrender: function(btn){
  66. var status = Ext.getCmp('pi_statuscode');
  67. if(status && status.value != 'ENTERING'){
  68. btn.hide();
  69. }
  70. },
  71. click: function(btn){
  72. this.FormUtil.onUpdate(this);
  73. }
  74. },
  75. 'erpAddButton': {
  76. click: function(){
  77. me.FormUtil.onAdd('addProdInOutApply', '新增验退申请单', 'jsps/scm/reserve/prodInOutApply.jsp?whoami=' + caller);
  78. }
  79. },
  80. 'erpCloseButton': {
  81. click: function(btn){
  82. me.FormUtil.beforeClose(me);
  83. }
  84. },
  85. 'erpSubmitButton': {
  86. afterrender: function(btn){
  87. var status = Ext.getCmp('pi_statuscode');
  88. if(status && status.value != 'ENTERING'){
  89. btn.hide();
  90. }
  91. },
  92. click: function(btn){
  93. me.FormUtil.onSubmit(Ext.getCmp('pi_id').value);
  94. }
  95. },
  96. 'erpResSubmitButton': {
  97. afterrender: function(btn){
  98. var status = Ext.getCmp('pi_statuscode');
  99. if(status && status.value != 'COMMITED'){
  100. btn.hide();
  101. }
  102. },
  103. click: function(btn){
  104. me.FormUtil.onResSubmit(Ext.getCmp('pi_id').value);
  105. }
  106. },
  107. 'erpAuditButton': {
  108. afterrender: function(btn){
  109. var status = Ext.getCmp('pi_statuscode');
  110. if(status && status.value != 'COMMITED'){
  111. btn.hide();
  112. }
  113. },
  114. click: function(btn){
  115. me.FormUtil.onAudit(Ext.getCmp('pi_id').value);
  116. }
  117. },
  118. 'erpResAuditButton': {
  119. afterrender: function(btn){
  120. var status = Ext.getCmp('pi_statuscode');
  121. if(status && status.value != 'AUDITED'){
  122. btn.hide();
  123. }
  124. },
  125. click: function(btn){
  126. me.FormUtil.onResAudit(Ext.getCmp('pi_id').value);
  127. }
  128. },
  129. 'dbfindtrigger[name=pd_ordercode]': {
  130. focus: function(t){
  131. t.setHideTrigger(false);
  132. t.setReadOnly(false);
  133. if(Ext.getCmp('pi_cardcode')){
  134. var code = Ext.getCmp('pi_cardcode').value;
  135. if(code != null && code != ''){
  136. var obj = me.getCodeCondition();
  137. if(obj && obj.field){
  138. t.dbBaseCondition = obj.field + "='" + code + "'";
  139. }
  140. }
  141. }
  142. if(caller=='ProdInOut!OutReturn'){//借货归还单
  143. var code = Ext.getCmp('pi_cardcode').value;
  144. if(code != null && code != ''){
  145. if(t.dbBaseCondition==null||t.dbBaseCondition==''){
  146. t.dbBaseCondition= "pi_cardcode='"+code+"'";
  147. }else{
  148. t.dbBaseCondition=t.dbBaseCondition+" and pi_cardcode='"+code+"'";
  149. }
  150. }
  151. }
  152. },
  153. aftertrigger: function(t){
  154. if(Ext.getCmp('pi_cardcode')){
  155. var obj = me.getCodeCondition();
  156. if(obj && obj.fields){
  157. me.FormUtil.getFieldsValue(obj.tablename, obj.fields, obj.myfield + "='" + t.value + "'", obj.tFields);
  158. }
  159. }
  160. }
  161. },
  162. 'dbfindtrigger[name=pd_orderdetno]': {
  163. focus: function(t){
  164. t.setHideTrigger(false);
  165. t.setReadOnly(false);//用disable()可以,但enable()无效
  166. var record = Ext.getCmp('grid').selModel.lastSelected;
  167. var code = record.data['pd_ordercode'];
  168. if(code == null || code == ''){
  169. showError("请先选择关联单号!");
  170. t.setHideTrigger(true);
  171. t.setReadOnly(true);
  172. } else {
  173. var field = me.getBaseCondition();
  174. if(field){
  175. t.dbBaseCondition = field + "='" + code + "'";
  176. }
  177. }
  178. }
  179. },
  180. 'dbfindtrigger[name=pd_whcode]':{
  181. aftertrigger: function(t){
  182. if(caller=='ProdInOut!AppropriationOut'||caller=='ProdInOut!Sale'||caller=='ProdInOut!AppropriationIn'){
  183. var inwhcode=t.value;
  184. var record = Ext.getCmp('grid').selModel.lastSelected;
  185. var prodcode=record.data['pd_prodcode'];
  186. if(prodcode&&inwhcode){
  187. var obj = {tablename:'productWH',fields:'pw_onhand'};
  188. me.FormUtil.getFieldsValue(obj.tablename, obj.fields,"pw_whcode='"+inwhcode+"' AND pw_prodcode='"+prodcode+"'" , "pd_inqty",record);
  189. }
  190. }
  191. }
  192. },
  193. 'multidbfindtrigger[name=pd_orderdetno]': {
  194. focus: function(t){
  195. t.setHideTrigger(false);
  196. t.setReadOnly(false);//用disable()可以,但enable()无效
  197. var record = Ext.getCmp('grid').selModel.lastSelected;
  198. var code = record.data['pd_ordercode'];
  199. if(code == null || code == ''){
  200. showError("请先选择关联单号!");
  201. t.setHideTrigger(true);
  202. t.setReadOnly(true);
  203. } else {
  204. var field = me.getBaseCondition();
  205. if(field){
  206. t.dbBaseCondition = field + "='" + code + "'";
  207. }
  208. }
  209. }
  210. },
  211. 'dbfindtrigger[name=pd_batchcode]': {
  212. focus: function(t){
  213. t.setHideTrigger(false);
  214. t.setReadOnly(false);//用disable()可以,但enable()无效
  215. var record = Ext.getCmp('grid').selModel.lastSelected;
  216. var pr = record.data['pd_prodcode'];
  217. if(pr == null || pr == ''){
  218. showError("请先选择料号!");
  219. t.setHideTrigger(true);
  220. t.setReadOnly(true);
  221. } else {
  222. var code = record.data['pd_whcode'];
  223. if(code == null || code == ''){
  224. if(Ext.getCmp('pi_whcode')) {
  225. code = Ext.getCmp('pi_whcode').value;
  226. if(code == null || code == ''){
  227. showError("请先选择仓库!");
  228. t.setHideTrigger(true);
  229. t.setReadOnly(true);
  230. } else {
  231. t.dbBaseCondition = "ba_whcode='" + code + "' AND ba_prodcode='" + pr + "'";
  232. }
  233. } else {
  234. t.dbBaseCondition = "ba_prodcode='" + pr + "'";
  235. }
  236. } else {
  237. t.dbBaseCondition = "ba_whcode='" + code + "' AND ba_prodcode='" + pr + "'";
  238. }
  239. }
  240. }
  241. },
  242. 'erpTurnProdOutButton':{
  243. afterrender: function(btn){
  244. btn.setText('转验退单');
  245. var status = Ext.getCmp("pi_statuscode");
  246. if(status && status.value != 'AUDITED'){
  247. btn.hide();
  248. }
  249. },
  250. click: function(m){
  251. //转采购验退单
  252. if(caller == 'ProdInOutApply!CGYT'){
  253. me.batchdeal('ProdInOutApply!ToProdPurcOut!Deal', ' pd_piid=' + Ext.getCmp('pi_id').value +' and nvl(pd_yqty,0) < nvl(pd_outqty,0)', 'scm/reserve/applyTurnProdIO.action?type=ProdInOut!PurcCheckout');
  254. }
  255. //转委外验退单
  256. if(caller == 'ProdInOutApply!WWYT'){
  257. me.batchdeal('ProdInOutApply!ToProdOSOut!Deal', ' pd_piid=' + Ext.getCmp('pi_id').value +' and nvl(pd_yqty,0) < nvl(pd_outqty,0)', 'scm/reserve/applyTurnProdIO.action?type=ProdInOut!OutesideCheckReturn');
  258. }
  259. }
  260. }
  261. });
  262. },
  263. onGridItemClick: function(selModel, record){//grid行选择
  264. this.GridUtil.onGridItemClick(selModel, record);
  265. },
  266. getForm: function(btn){
  267. return btn.ownerCt.ownerCt;
  268. },
  269. batchdeal: function(nCaller, condition, url){
  270. var win = new Ext.window.Window({
  271. id : 'win',
  272. height: "100%",
  273. width: "80%",
  274. maximizable : true,
  275. buttonAlign : 'center',
  276. layout : 'anchor',
  277. items: [{
  278. tag : 'iframe',
  279. frame : true,
  280. anchor : '100% 100%',
  281. layout : 'fit',
  282. html : '<iframe id="iframe_' + caller + '" src="' + basePath + 'jsps/common/editorColumn.jsp?caller=' + nCaller
  283. + "&condition=" + condition +'" height="100%" width="100%" frameborder="0" scrolling="no"></iframe>'
  284. }],
  285. buttons : [{
  286. name: 'confirm',
  287. text : $I18N.common.button.erpConfirmButton,
  288. iconCls: 'x-button-icon-confirm',
  289. cls: 'x-btn-gray',
  290. listeners: {
  291. buffer: 500,
  292. click: function(btn) {
  293. var grid = Ext.getCmp('win').items.items[0].body.dom.getElementsByTagName('iframe')[0].contentWindow.Ext.getCmp("editorColumnGridPanel");
  294. btn.setDisabled(true);
  295. grid.updateAction(url);
  296. }
  297. }
  298. }, {
  299. text : $I18N.common.button.erpCloseButton,
  300. iconCls: 'x-button-icon-close',
  301. cls: 'x-btn-gray',
  302. handler : function(){
  303. Ext.getCmp('win').close();
  304. }
  305. }]
  306. });
  307. win.show();
  308. },
  309. getBaseCondition: function(){
  310. var field = null;
  311. switch (caller) {
  312. case 'ProdInOutApply!CGYT': //采购验退申请单
  313. field = "pd_code";break;
  314. case 'ProdInOutApply!WWYT': //委外验退申请单
  315. field = "mm_code";break;
  316. }
  317. return field;
  318. },
  319. getCodeCondition: function(){
  320. var field = null;
  321. var fields = '';
  322. var tablename = '';
  323. var myfield = '';
  324. var tFields = '';
  325. switch (caller) {
  326. case 'ProdInOutApply!CGYT': //采购验退申请单
  327. field = "pu_vendcode";
  328. tFields = 'pi_cardid,pi_cardcode,pi_title,pi_currency,pi_rate,pi_payment,pi_paymentcode,pi_transport,pi_paydate,pi_receivecode,pi_receivename';
  329. fields = 'pu_vendid,pu_vendcode,pu_vendname,pu_currency,pu_rate,pu_payments,pu_paymentscode,pu_transport,pu_suredate,pu_receivecode,pu_receivename';
  330. tablename = 'Purchase';
  331. myfield = 'pu_code';
  332. break;
  333. case 'ProdInOutApply!WWYT': //委外验退申请单
  334. field = "ma_vendcode";
  335. tFields = 'pi_cardcode,pi_title,pi_departmentcode,pi_departmentname,pi_currency,pi_rate';
  336. fields = 'ma_vendcode,ma_vendname,ma_departmentcode,ma_departmentname,ma_currency,ma_rate';
  337. tablename = 'Make';
  338. myfield = 'ma_code';
  339. break;
  340. }
  341. var obj = new Object();
  342. obj.field = field;
  343. obj.fields = fields;
  344. obj.tFields = tFields;
  345. obj.tablename = tablename;
  346. obj.myfield = myfield;
  347. return obj;
  348. },
  349. getPurcPrice:function(record){
  350. warnMsg("确定要获取采购单价吗?", function(btn){
  351. if(btn == 'yes'){
  352. var pdid = record.data.pd_id, prod = record.data.pd_prodcode, piid = record.data.pd_piid,
  353. vend = Ext.getCmp('pi_cardcode').value, curr = Ext.getCmp('pi_currency').value,
  354. grid = Ext.getCmp('grid');
  355. if(Ext.isEmpty(vend)){
  356. showError('请先选择供应商!');
  357. return;
  358. }
  359. if(Ext.isEmpty(curr)){
  360. showError('请先选择币别!');
  361. return;
  362. }
  363. if(Ext.isEmpty(prod)){
  364. showError('请先选择物料!');
  365. return;
  366. }
  367. Ext.Ajax.request({
  368. url : basePath +'scm/reserve/getPrice.action',
  369. params : {
  370. pdid : pdid,
  371. piid : piid,
  372. caller: caller
  373. },
  374. method : 'post',
  375. callback : function(opt, s, res){
  376. var r = new Ext.decode(res.responseText);
  377. if(r.success){
  378. grid.GridUtil.loadNewStore(grid, {
  379. caller: caller,
  380. condition: 'pd_piid=' + piid
  381. });
  382. showMessage('提示', '更新成功!', 1000);
  383. } else if(r.exceptionInfo){
  384. showError(r.exceptionInfo);
  385. } else{
  386. saveFailure();
  387. }
  388. }
  389. });
  390. }
  391. });
  392. }
  393. });