Application.js 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404
  1. Ext.QuickTips.init();
  2. Ext.define('erp.controller.scm.purchase.Application', {
  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.Application','core.grid.Panel2','core.toolbar.Toolbar','core.form.MultiField','core.form.FileField',
  9. 'core.button.Save','core.button.Add','core.button.Submit','core.button.Print','core.button.ResAudit',
  10. 'core.button.Audit','core.button.Close','core.button.Delete','core.button.Update','core.button.DeleteDetail','core.button.ResSubmit',
  11. 'core.button.TurnPurc','core.button.Flow','core.button.ImportExcel', 'core.button.UpdateRemark','core.button.ProduceBatch',
  12. 'core.trigger.DbfindTrigger','core.trigger.TextAreaTrigger','core.form.YnField','core.grid.YnColumn','core.form.FileField','core.button.MRPResourceScan'
  13. ],
  14. init:function(){
  15. var me = this;
  16. me.gridLastSelected = null;
  17. this.control({
  18. 'erpGridPanel2': {
  19. itemclick: function(selModel, record){
  20. if(record.data.ad_prodcode != null && record.data.ad_prodcode != ''){
  21. var btn = Ext.getCmp('erpMRPResourceScan_button');
  22. if(btn){
  23. btn.setDisabled(false);
  24. btn._ad_prodcode = record.data.ad_prodcode;
  25. }
  26. }
  27. this.onGridItemClick(selModel, record);
  28. }
  29. },
  30. '#erpMRPResourceScan_button':{
  31. click:function(btn){
  32. var refcode = Ext.getCmp('ap_refcode').getValue();
  33. var prodcode = btn._ad_prodcode;
  34. console.log(refcode);
  35. console.log(prodcode);
  36. if (refcode!=null&refcode!=''&prodcode!=null&prodcode!=''){
  37. var win = new Ext.window.Window(
  38. {
  39. id : 'win_Resource',
  40. height : '90%',
  41. width : '95%',
  42. maximizable : true,
  43. buttonAlign : 'center',
  44. layout : 'anchor',
  45. items : [ {
  46. tag : 'iframe',
  47. frame : true,
  48. anchor : '100% 100%',
  49. layout : 'fit',
  50. html : '<iframe id="iframe_MRPResourceScanWin'+refcode+'" src="'+basePath+'jsps/common/datalist.jsp?_noc=1&whoami=Desk!MrpResultDetail&urlcondition=md_mrpcode=\''+refcode+'\' and md_prodcode=\''+prodcode+'\'" height="100%" width="100%" frameborder="0" scrolling="auto"></iframe>'
  51. } ]
  52. });
  53. win.show();
  54. }
  55. }
  56. },
  57. 'erpSaveButton': {
  58. click: function(btn){
  59. var form = me.getForm(btn), codeField = Ext.getCmp(form.codeField);
  60. if(codeField.value == null || codeField.value == ''){
  61. me.BaseUtil.getRandomNumber(caller);//自动添加编号
  62. var res = me.getLeadCode(Ext.getCmp('ap_kind').value);
  63. if(res != null && res != ''){
  64. codeField.setValue(res + codeField.getValue());
  65. }
  66. }
  67. var bool = true;
  68. //数量不能为空或0
  69. //给从表赋值:vendcode、vendname
  70. var grid = Ext.getCmp('grid');
  71. var items = grid.store.data.items;
  72. Ext.each(items, function(item){
  73. if(item.dirty && item.data[grid.necessaryField] != null && item.data[grid.necessaryField] != ""){
  74. if(item.data['ad_qty'] == null || item.data['ad_qty'] == '' || item.data['ad_qty'] == '0'
  75. || item.data['pd_qty'] == 0){
  76. bool = false;
  77. showError('明细表第' + item.data['ad_detno'] + '行的数量为空');return;
  78. }
  79. if(item.data['ad_delivery'] == null || item.data['ad_delivery'] == '' ){
  80. bool = false;
  81. showError('明细表第' + item.data['ad_detno'] + '行的需求日期不能为空');return;
  82. }
  83. if(item.data['ad_delivery'] < Ext.getCmp('ap_recorddate').value){
  84. bool = false;
  85. showError('明细表第' + item.data['ad_detno'] + '行的需求日期小于单据录入日期');return;
  86. }
  87. }
  88. });
  89. if(bool){
  90. this.FormUtil.beforeSave(this);
  91. }
  92. }
  93. },
  94. 'erpDeleteButton' : {
  95. click: function(btn){
  96. me.FormUtil.onDelete(Ext.getCmp('ap_id').value);
  97. }
  98. },
  99. 'erpProduceBatchButton':{
  100. beforerender:function(btn){
  101. btn.setText("计算");
  102. },
  103. click: function(btn){
  104. var id=Ext.getCmp('ap_id').value;
  105. grid = Ext.getCmp('grid');
  106. Ext.Ajax.request({
  107. url : basePath + "scm/purchase/applicationdataupdate.action",
  108. params: {
  109. id:id
  110. },
  111. method : 'post',
  112. async: false,
  113. callback : function(options,success,response){
  114. var res = new Ext.decode(response.responseText);
  115. if(res.exceptionInfo){
  116. showError(res.exceptionInfo);
  117. return;
  118. }
  119. grid.GridUtil.loadNewStore(grid,{
  120. caller:'Application',
  121. condition:gridCondition,
  122. _noc:1
  123. });
  124. showError("计算成功!");
  125. }
  126. });
  127. }
  128. },
  129. 'erpImportExcelButton':{
  130. afterrender:function(btn){
  131. var statuscode=Ext.getCmp('ap_statuscode').getValue();
  132. if(statuscode&&statuscode!='ENTERING'){
  133. btn.hide();
  134. }
  135. }
  136. },
  137. 'filefield[id=excelfile]':{
  138. change: function(field){
  139. var filename = '';
  140. if(contains(field.value, "\\", true)){
  141. filename = field.value.substring(field.value.lastIndexOf('\\') + 1);
  142. } else {
  143. filename = field.value.substring(field.value.lastIndexOf('/') + 1);
  144. }
  145. field.ownerCt.getForm().submit({
  146. url: basePath + 'common/upload.action?em_code=' + em_code,
  147. waitMsg: "正在解析文件信息",
  148. success: function(fp,o){
  149. if(o.result.error){
  150. showError(o.result.error);
  151. } else {
  152. var filePath=o.result.filepath;
  153. var keyValue=Ext.getCmp('ap_id').getValue();
  154. Ext.Ajax.request({//拿到form的items
  155. url : basePath + 'scm/application/ImportExcel.action',
  156. params:{
  157. id:keyValue,
  158. fileId:filePath
  159. },
  160. method : 'post',
  161. callback : function(options,success,response){
  162. var result=Ext.decode(response.responseText);
  163. if(result.success){
  164. var grid=Ext.getCmp('grid');
  165. var param={
  166. caller:'Application',
  167. condition:'ad_apid='+keyValue
  168. };
  169. grid.GridUtil.loadNewStore(grid,param);
  170. }else{
  171. if(result.exceptionInfo != null){
  172. showError(res.exceptionInfo);return;
  173. }
  174. }
  175. }
  176. });
  177. }
  178. }
  179. });
  180. }
  181. },
  182. 'erpUpdateButton': {
  183. click: function(btn){
  184. var form = me.getForm(btn);
  185. if(Ext.getCmp(form.codeField).value == null || Ext.getCmp(form.codeField).value == ''){
  186. me.BaseUtil.getRandomNumber();//自动添加编号
  187. }
  188. var bool = true;
  189. //数量不能为空或0
  190. //给从表赋值:vendcode、vendname
  191. var grid = Ext.getCmp('grid');
  192. var items = grid.store.data.items;
  193. var c = Ext.getCmp('ap_code').value;
  194. Ext.each(items, function(item){
  195. item.set('ad_code',c);
  196. if(item.dirty && item.data[grid.necessaryField] != null && item.data[grid.necessaryField] != ""){
  197. if(item.data['ad_qty'] == null || item.data['ad_qty'] == '' || item.data['ad_qty'] == '0'
  198. || item.data['pd_qty'] == 0){
  199. bool = false;
  200. showError('明细表第' + item.data['ad_detno'] + '行的数量为空');return;
  201. }
  202. if(item.data['ad_delivery'] == null || item.data['ad_delivery'] == '' ){
  203. bool = false;
  204. showError('明细表第' + item.data['ad_detno'] + '行的需求日期不能为空');return;
  205. }
  206. if(item.data['ad_delivery'] < Ext.getCmp('ap_recorddate').value){//物料需求日期不能小于录入日期
  207. bool = false;
  208. showError('明细表第' + item.data['ad_detno'] + '行的需求日期小于单据录入日期');return;
  209. }
  210. }
  211. });
  212. if(bool){
  213. this.FormUtil.onUpdate(this);
  214. }
  215. }
  216. },
  217. 'erpAddButton': {
  218. click: function(){
  219. me.FormUtil.onAdd('addApplication', '新增请购单', 'jsps/scm/purchase/application.jsp');
  220. }
  221. },
  222. 'erpCloseButton': {
  223. click: function(btn){
  224. me.FormUtil.beforeClose(me);
  225. }
  226. },
  227. 'erpSubmitButton': {
  228. afterrender: function(btn){
  229. var status = Ext.getCmp('ap_statuscode');
  230. if(status && status.value != 'ENTERING'){
  231. btn.hide();
  232. }
  233. },
  234. click: function(btn){
  235. me.FormUtil.onSubmit(Ext.getCmp('ap_id').value);
  236. }
  237. },
  238. 'erpResSubmitButton': {
  239. afterrender: function(btn){
  240. var status = Ext.getCmp('ap_statuscode');
  241. if(status && status.value != 'COMMITED'){
  242. btn.hide();
  243. }
  244. },
  245. click: function(btn){
  246. me.FormUtil.onResSubmit(Ext.getCmp('ap_id').value);
  247. }
  248. },
  249. 'erpAuditButton': {
  250. afterrender: function(btn){
  251. var status = Ext.getCmp('ap_statuscode');
  252. if(status && status.value != 'COMMITED'){
  253. btn.hide();
  254. }
  255. },
  256. click: function(btn){
  257. me.FormUtil.onAudit(Ext.getCmp('ap_id').value);
  258. }
  259. },
  260. 'erpResAuditButton': {
  261. afterrender: function(btn){
  262. var status = Ext.getCmp('ap_statuscode');
  263. if(status && status.value != 'AUDITED'){
  264. btn.hide();
  265. }
  266. },
  267. click: function(btn){
  268. me.FormUtil.onResAudit(Ext.getCmp('ap_id').value);
  269. }
  270. },
  271. 'erpPrintButton': {
  272. click:function(btn){
  273. var reportName="application";
  274. var condition='{Application.ap_id}='+Ext.getCmp('ap_id').value+'';
  275. var id=Ext.getCmp('ap_id').value;
  276. me.FormUtil.onwindowsPrint(id,reportName,condition);
  277. }
  278. },
  279. 'erpUpdateRemarkButton': {
  280. afterrender: function(btn){
  281. var status = Ext.getCmp('ap_statuscode');
  282. if (status && status.value == 'ENTERING') {
  283. btn.hide();
  284. }
  285. },
  286. click : function(btn) {
  287. var form = btn.ownerCt.ownerCt, key = form.down('#ap_id'),
  288. remark = form.down('#ap_remark');
  289. if (remark.isValid()) {
  290. Ext.Ajax.request({
  291. url : basePath + 'common/updateByCondition.action',
  292. params : {
  293. caller : caller,
  294. table : 'Application',
  295. update : 'ap_remark=\'' + remark.getValue() + '\'',
  296. condition : 'ap_id=' + key.getValue()
  297. },
  298. callback : function(opt, s, res) {
  299. var r = Ext.decode(res.responseText);
  300. if (r.success) {
  301. alert('修改成功!');
  302. }
  303. }
  304. });
  305. }
  306. }
  307. },
  308. /*'field[name=ad_qty]':{
  309. change: function(f){
  310. if(f.value == null || f.value == ''){
  311. f.value = 0;
  312. }
  313. var record = Ext.getCmp('grid').selModel.getLastSelected();
  314. var value=record.data['ad_qty'];
  315. if(!record.data['ad_minorder'] || record.data['ad_minorder']==null){
  316. showError('最小订购量为空,请先填写最小订购量');
  317. return;
  318. }
  319. if(!record.data['ad_minpack'] || record.data['ad_minpack']==null){
  320. showError('最小包装量为空,请先填写最小包装量');
  321. return;
  322. }
  323. if(value<record.data['ad_minorder']){
  324. showError('需求数量小于最小订购量,请重新填写!');
  325. record.set('ad_minorder',null);
  326. return;
  327. }
  328. if(value/record.data['ad_minpack'] !=0){
  329. showError('需求数量不是最小包装量的整数倍,请重新填写!');
  330. record.set('ad_minorder',null);
  331. return;
  332. }
  333. }
  334. },*/
  335. 'erp2PurcButton': {
  336. afterrender: function(btn){
  337. var status = Ext.getCmp('ap_turnstatuscode');
  338. if(status && status.value != 'PARTPURC'){
  339. btn.hide();
  340. }
  341. },
  342. click: function(btn){
  343. warnMsg("确定要转入采购单吗?", function(btn){
  344. if(btn == 'yes'){
  345. me.FormUtil.getActiveTab().setLoading(true);//loading...
  346. Ext.Ajax.request({
  347. url : basePath + 'scm/purchase/turnPurchase.action',
  348. params: {
  349. id: Ext.getCmp('ap_id').value
  350. },
  351. method : 'post',
  352. callback : function(options,success,response){
  353. me.FormUtil.getActiveTab().setLoading(false);
  354. var localJson = new Ext.decode(response.responseText);
  355. if(localJson.exceptionInfo){
  356. showError(localJson.exceptionInfo);
  357. }
  358. if(localJson.success){
  359. turnSuccess(function(){
  360. var id = localJson.id;
  361. var url = "jsps/scm/purchase/purchase.jsp?formCondition=pu_id=" + id + "&gridCondition=pd_puid=" + id;
  362. me.FormUtil.onAdd('Purchase' + id, '采购单' + id, url);
  363. });
  364. }
  365. }
  366. });
  367. }
  368. });
  369. }
  370. }
  371. });
  372. },
  373. onGridItemClick: function(selModel, record){//grid行选择
  374. this.GridUtil.onGridItemClick(selModel, record);
  375. },
  376. getForm: function(btn){
  377. return btn.ownerCt.ownerCt;
  378. },
  379. getLeadCode: function(type) {
  380. var result = null;
  381. Ext.Ajax.request({
  382. url : basePath + 'common/getFieldData.action',
  383. async: false,
  384. params: {
  385. caller: 'PurchaseKind',
  386. field: 'pk_excode',
  387. condition: 'pk_name=\'' + type + '\''
  388. },
  389. method : 'post',
  390. callback : function(opt, s, res){
  391. var r = new Ext.decode(res.responseText);
  392. if(r.exceptionInfo){
  393. showError(r.exceptionInfo);return;
  394. } else if(r.success){
  395. result = r.data;
  396. }
  397. }
  398. });
  399. return result;
  400. }
  401. });