B2CPurchase.js 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. Ext.define('erp.view.core.button.B2CPurchase',{
  2. extend: 'Ext.Button',
  3. alias: 'widget.erpB2CPurchaseButton',
  4. text: $I18N.common.button.erpB2CPurchaseButton,
  5. iconCls: 'x-button-icon-submit',
  6. cls: 'x-btn-gray',
  7. id: 'B2CPurchaseButton',
  8. initComponent : function(){
  9. this.callParent(arguments);
  10. },
  11. width: 85,
  12. handler:function(){
  13. var me = this;
  14. var records = this.getSelectedRecords();
  15. if(records.length == 0){
  16. showError('请勾选需要平台购买的明细');
  17. return ;
  18. }else if (records.length > 0){
  19. var c = this.getMixedGroups(records, ['ad_prodcode']);
  20. if(c.length != 1 ){
  21. showError('不同物料编号须分别下达购买');
  22. return ;
  23. }
  24. }
  25. var qty=0;
  26. Ext.Object.each(records,function(a,key){
  27. qty += key.data.ad_tqty;
  28. });
  29. var dlwin;
  30. //弹出平台采购界面 ,参考平台下单的界面和前台实现的业务,
  31. //确认批次和数量之后,生成ERP的采购单Purchase、PurchaseDetail、平台批次表PurchaseBatch数据
  32. if(!dlwin){
  33. var code = records[0].data.ad_prodcode;
  34. var dlwin = new Ext.window.Window({
  35. id : 'dlwin',
  36. title:'平台购买',
  37. height: "90%",
  38. width: "90%",
  39. modal:true,
  40. maximizable : true,
  41. layout : 'anchor',
  42. buttonAlign : 'center',
  43. items: [{
  44. tag : 'iframe',
  45. frame : true,
  46. anchor : '100% 100%',
  47. layout : 'fit',
  48. html : '<iframe id="iframe_dl_'+caller+'" src="'+basePath+'jsps/scm/purchase/B2CPurchase.jsp?code='+code+'&whoami=B2CPurchase&qty='+qty+'" height="100%" width="100%" frameborder="0" scrolling="auto"></iframe>'
  49. }],
  50. listeners:{
  51. beforeshow:function(e){
  52. //根据选中的物料编号,获取
  53. //me.getReserve(records[0].data.ad_prodcode);
  54. }
  55. }
  56. });
  57. dlwin.show();
  58. }
  59. },
  60. getMixedGroups: function(items, fields) {
  61. var data = new Object(),k,o;
  62. Ext.Array.each(items, function(d){
  63. k = '';
  64. o = new Object();
  65. Ext.each(fields, function(f){
  66. k += f + ':' + d.get(f) + ',';
  67. o[f] = d.get(f);
  68. });
  69. if(k.length > 0) {
  70. if(!data[k]) {
  71. data[k] = {keys: o, groups: [d]};
  72. } else {
  73. data[k].groups.push(d);
  74. }
  75. }
  76. });
  77. return Ext.Object.getValues(data);
  78. },
  79. getReserve : function(code){
  80. Ext.Ajax.request({//设置列表caller
  81. url : basePath + "scm/turnPurchase/getReserveByUUid.action",
  82. params: {
  83. pr_code : code
  84. },
  85. method : 'post',
  86. async: false,
  87. callback : function(options,success,response){
  88. var res = new Ext.decode(response.responseText);
  89. if(res.exceptionInfo){
  90. showError(res.exceptionInfo);return;
  91. }
  92. if(res.success){
  93. Ext.getCmp("reserveGrid").getStore().loadData(res.data);
  94. //解析价格
  95. //根据采购的数量自动获取
  96. }
  97. }
  98. });
  99. },
  100. getSelectedRecords: function(){
  101. var grid = Ext.getCmp('batchDealGridPanel');
  102. var items = grid.selModel.getSelection();
  103. grid.multiselected = new Array();
  104. Ext.each(items, function(item, index){
  105. if(this.data[grid.keyField] != null && this.data[grid.keyField] != ''
  106. && this.data[grid.keyField] != '0' && this.data[grid.keyField] != 0){
  107. var bool = true;
  108. Ext.each(grid.multiselected, function(){
  109. if(this.data[grid.keyField] == item.data[grid.keyField]){
  110. bool = false;
  111. }
  112. });
  113. if(bool){
  114. grid.multiselected.push(item);
  115. }
  116. }
  117. });
  118. return grid.multiselected;
  119. },
  120. getTurnData:function(){
  121. var form = Ext.getCmp('dealform');
  122. var grid = Ext.getCmp('batchDealGridPanel');
  123. var records = Ext.Array.unique(grid.multiselected);
  124. var params = new Object();
  125. params.caller = caller;
  126. if(records.length > 0){
  127. var data = new Array();
  128. var bool = false;
  129. Ext.each(records, function(record, index){
  130. var f = form.fo_detailMainKeyField;
  131. if((grid.keyField && this.data[grid.keyField] != null && this.data[grid.keyField] != ''
  132. && this.data[grid.keyField] != '0' && this.data[grid.keyField] != 0)
  133. ||(f && this.data[f] != null && this.data[f] != ''
  134. && this.data[f] != '0' && this.data[f] != 0)){
  135. bool = true;
  136. var o = new Object();
  137. if(grid.keyField){
  138. o[grid.keyField] = record.data[grid.keyField];
  139. } else {
  140. params.id[index] = record.data[form.fo_detailMainKeyField];
  141. }
  142. if(grid.toField){
  143. Ext.each(grid.toField, function(f, index){
  144. var v = Ext.getCmp(f).value;
  145. if(v != null && v.toString().trim() != '' && v.toString().trim() != 'null'){
  146. o[f] = v;
  147. }
  148. });
  149. }
  150. if(grid.necessaryFields){
  151. Ext.each(grid.necessaryFields, function(f, index){
  152. o[f] = record.data[f];
  153. });
  154. }
  155. data.push(o);
  156. }
  157. });
  158. if(bool){
  159. params.data = Ext.encode(data);
  160. }
  161. }
  162. return params;
  163. }
  164. });