123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543 |
- Ext.define('saas.view.make-intellpurc-Gridpanel', {
- extend: 'Ext.grid.Panel',
- xtype: 'make-intellpurc-gridpanel',
- requires: [
- 'Ext.grid.plugin.Exporter'
- ],
- cls: 'core-base-gridpanel',
- plugins: [{
- ptype: 'gridexporter',
- }, {
- ptype: 'menuclipboard'
- }, {
- ptype: 'cellediting',
- clicksToEdit: 1
- }],
- lastSelectedRecord:[],
- layout: 'fit',
- //基础属性
- border: 1,
- anchor: '100% 70%',
- loadMask: true,
- showIndex: true,
- columnWidth: 1.0,
- rootProperty: 'data.list',
- selModel: {
- checkOnly: true,
- type: 'checkboxmodel'
- },
- idField: 'id',
- turnQtyField: 'mr_thisqty',
- columns: [{
- text: '建议采购量',
- dataIndex: 'mr_thisqty',
- width: 110,
- xtype: 'widgetcolumn',
- widget: {
- xtype: "numberfield",
- cls:'widget-number',
- bind: '{record.mr_thisqty}',
- decimalPrecision: 8,
- minValue: 0
- }
- }/*,{
- text: '建议采购量',
- dataIndex: 'thisqty_filter',
- width: 0,
- }*/, {
- text: '采购价',
- dataIndex: 'mr_price',
- width: 100,
- //xtype: 'numbercolumn',
- renderer: function (v, m, r) {
- return saas.util.BaseUtil.numberFormat(v, 6, true);
- },
- xtype: 'widgetcolumn',
- widget: {
- xtype: "numberfield",
- cls:'widget-number',
- bind: '{record.mr_price}',
- decimalPrecision: 8,
- minValue: 0
- }
- /* editor: {
- xtype: "numberfield",
- decimalPrecision: 6,
- minValue: 0
- }*/
-
- }, {
- text: '供应商id',
- dataIndex: 'mr_vendid',
- hidden: true
- }, {
- text: '供应商编号',
- dataIndex: 'mr_vendcode',
- hidden: true
- }, {
- text: '供应商',
- dataIndex: 'mr_vendname',
- width: 150,
- xtype: 'widgetcolumn',
- widget: {
- displayField: "display",
- cls:'widget-number',
- bind: '{record.mr_vendname}',
- editable: true,
- format: "",
- hideTrigger: false,
- maxLength: 100.0,
- minValue: null,
- positiveNum: false,
- queryMode: "local",
- store: null,
- valueField: "value",
- xtype: "vendorDbfindTrigger",
- name:'mr_vendname',
- dbfinds:[{
- from:'id',to:'mr_vendid',ignore:true
- },{
- from:'ve_code',to:'mr_vendcode'
- },{
- from:'ve_name',to:'mr_vendname'
- }]
- }
- /*editor: {
- displayField: "display",
- editable: true,
- format: "",
- hideTrigger: false,
- maxLength: 100.0,
- minValue: null,
- positiveNum: false,
- queryMode: "local",
- store: null,
- valueField: "value",
- xtype: "vendorDbfindTrigger"
- }*/
- }, {
- text: '净需求',
- dataIndex: 'mr_netqty',
- width: 80,
- xtype: 'numbercolumn',
- renderer: function (v, m, r) {
- return saas.util.BaseUtil.numberFormat(v, 6, true);
- }
- }, {
- text: '物料id',
- dataIndex: 'mr_prodid',
- hidden: true
- }, {
- text: '物料编号',
- dataIndex: 'mr_prodcode',
- width: 150
- }, {
- text: '物料名称',
- dataIndex: 'mr_prdetail',
- width: 150
- }, {
- text: '型号',
- dataIndex: 'pr_orispeccode',
- width: 150
- }, {
- text: '厂家/品牌',
- dataIndex: 'pr_brand',
- width: 90
- }, {
- text: '规格',
- dataIndex: 'mr_spec',
- width: 150
- }, {
- text: '单位',
- dataIndex: 'mr_unit',
- width: 60
- }, {
- text: '毛需求数',
- dataIndex: 'mr_needqty',
- xtype: 'numbercolumn',
- width: 85,
- renderer: function (v, m, r) {
- return saas.util.BaseUtil.numberFormat(v, 6, true);
- }
- }, {
- text: '需求日期',
- dataIndex: 'mr_needdate',
- width: 110
- }, {
- text: '库存可用',
- dataIndex: 'mr_stock_dist',
- xtype: 'numbercolumn',
- width: 85,
- renderer: function (v, m, r) {
- return saas.util.BaseUtil.numberFormat(v, 6, true);
- }
- }, {
- text: '请购可用',
- dataIndex: 'mr_app_dist',
- xtype: 'numbercolumn',
- width: 85,
- renderer: function (v, m, r) {
- return saas.util.BaseUtil.numberFormat(v, 6, true);
- }
- }, {
- text: '在途可用',
- dataIndex: 'mr_purc_dist',
- xtype: 'numbercolumn',
- width: 85,
- renderer: function (v, m, r) {
- return saas.util.BaseUtil.numberFormat(v, 6, true);
- }
- }, {
- text: '在制可用',
- dataIndex: 'mr_make_dist',
- xtype: 'numbercolumn',
- width: 85,
- renderer: function (v, m, r) {
- return saas.util.BaseUtil.numberFormat(v, 6, true);
- }
- }, {
- text: '需求来源',
- dataIndex: 'mr_source',
- width: 400
- }, {
- text: '最小包装量',
- dataIndex: 'mr_mpq',
- xtype: 'numbercolumn',
- width: 100,
- renderer: function (v, m, r) {
- return saas.util.BaseUtil.numberFormat(v, 6, true);
- },
- }, {
- text: '总库存',
- dataIndex: 'mr_stock',
- xtype: 'numbercolumn',
- width: 100,
- renderer: function (v, m, r) {
- return saas.util.BaseUtil.numberFormat(v, 6, true);
- },
- }, {
- text: '请购数',
- dataIndex: 'mr_app',
- xtype: 'numbercolumn',
- width: 100,
- renderer: function (v, m, r) {
- return saas.util.BaseUtil.numberFormat(v, 6, true);
- },
- }, {
- text: '采购未交',
- dataIndex: 'mr_purc',
- xtype: 'numbercolumn',
- width: 100,
- renderer: function (v, m, r) {
- return saas.util.BaseUtil.numberFormat(v, 6, true);
- },
- }, {
- text: '订单未发货',
- dataIndex: 'mr_saleqty',
- xtype: 'numbercolumn',
- width: 100,
- renderer: function (v, m, r) {
- return saas.util.BaseUtil.numberFormat(v, 6, true);
- },
- },{
- text: '工单未领数',
- dataIndex: 'mr_maqty',
- xtype: 'numbercolumn',
- width: 100,
- renderer: function (v, m, r) {
- return saas.util.BaseUtil.numberFormat(v, 6, true);
- },
- },{
- text: '下达状态',
- dataIndex: 'mr_turnstatus',
- width: 100
- },],
- initComponent: function () {
- var me = this;
- var fields = me.columns.map(column => column.dataIndex);
- me.store = Ext.create('Ext.data.Store', {
- fields: fields,
- autoLoad: true,
- data: [],
- listeners: {
- beforeload: function (store, op) {
- var gridpanel=me;
- var params ={};
- params['mergePurc'] = 0;
- params['mergeDays'] = 0;
- params['safetystock'] = 0;
- params['mpq'] = 0;
- params['auto'] = 1;
- view.setLoading(true);
- saas.util.BaseUtil.request({
- url: '/api/purchase/makeIntell/list',
- method: 'POST',
- params: JSON.stringify(params)
- })
- .then(function(localJson) {
- view.setLoading(false);
- if(localJson.success){
- gridpanel.getStore().loadData(localJson.data.list);
- gridpanel.ownerCt.onQuery();
- }
- })
- .catch(function(e) {
- view.setLoading(false);
- saas.util.BaseUtil.showErrorToast('计算失败: ' + e.message);
- });
- }
- }
- });
- Ext.apply(me, {
- dockedItems: [{
- xtype: 'toolbar',
- dock: 'top',
- items: [{
- text: '计算需求',
- handler: function (b) {
- Ext.create({
- xtype: 'make-intellpurc-calsetting',
- autoShow: true,
- gridpanel:b.ownerCt.ownerCt,
- ownerBtn:b
- });
- },
- }, {
- xtype: 'checkbox',
- name: 'thisqty',
- columnWidth: 0.3,
- margin: '0 0 0 5',
- isFilter:true,
- boxLabel:'只显示[建议采购量]大于0的物料',
- checked:true,
- getFilter:function(){
- var me=this;
- let value=me.value,filter= {};
- if (value) {//已勾选
- filter= {
- filterFn: function (rec) {
- return rec.get('thisqty_filter') > 0;
- },
- anyMatch: true,
- caseSensitive: false
- };
- }
- return filter;
- },
- listeners: {
- change: function () {
- this.ownerCt.ownerCt.ownerCt.onQuery();
- }
- }
- }, {
- xtype: 'checkbox',
- name: 'turned',
- boxLabel:'只显示未下达的物料',
- checked:true,
- isFilter:true,
- margin: '0 0 0 5',
- columnWidth: 0.3,
- getFilter:function(){
- var me=this;
- let value=me.value;
- filter= {};
- if (value) {//已勾选
- filter= {
- filterFn: function (rec) {
- return rec.get('mr_turnstatus')=='未下达';
- },
- anyMatch: true,
- caseSensitive: false
- };
- }
- return filter;
- },
- listeners: {
- change: function () {
- this.ownerCt.ownerCt.ownerCt.onQuery();
- }
- }
- },{
- xtype: 'radiogroup',
- name: 'redio_vend',
- width: 330,
- labelWidth :110,
- isFilter:true,
- margin: '0 0 0 10',
- fieldLabel: "供应商获取状态",
- cls:'vendRadiogroup',
- simpleValue: true,
- items: [
- { boxLabel: '全部', inputValue: 'ALL' , checked: true },
- { boxLabel: '已获取', inputValue: 'HASVEND'},
- { boxLabel: '未获取', inputValue: 'NONE'}
- ],
- getFilter:function(){
- var me=this;
- let value=me.lastValue, filter= {};
- if (value == 'HASVEND') {//已获取
- filter= {
- filterFn: function (rec) {
- return rec.get('mr_vendid') > 0;
- },
- anyMatch: true,
- caseSensitive: false
- };
- }else if (value == 'NONE') {//未获取
- filter= {
- filterFn: function (rec) {
- return (!rec.get('mr_vendid') || rec.get('mr_vendid') == 0);
- },
- anyMatch: true,
- caseSensitive: false
- };
- }
- return filter;
- },
- listeners: {
- change: function (r, newValue) {
- this.ownerCt.ownerCt.ownerCt.onQuery();
- }
- }
- },'->', {
- iconCls: 'x-fa fa-question-circle',
- reference: 'qMark ',
- name:'qMark',
- ui: 'header',
- tooltip: {
- text: '<p>毛需求:销售订单、备货单、工单用料及安全库存的实际需求数量</p>'+
- '<p>净需求:毛需求-库存可用-请购可用-在途可用-在制可用计算出来的实际欠缺数量</p>'+
- '<p>建议采购量:在净需求的基础上考虑最小包装量及产品资料的单位对应数量小数位计算出来的建议下采购单数量</p>',
- anchor: 'top',
- autoHide:true,
- width:370,
- dismissDelay:7200000
- }
- }, {
- text: '生成采购订单',
- cls: 'x-formpanel-btn-blue',
- handler: function (btn) {
- me.turnPurc(btn);
- }
- }, {
- text: '导出',
- handler: me.onExport
- }]
- }]
- });
- me.callParent(arguments);
- },
- calu:function(params,win,ownerBtn){
- var gridpanel =this;
- gridpanel.setLoading(true);
- saas.util.BaseUtil.request({
- url: '/api/purchase/makeIntell/list',
- method: 'POST',
- params: JSON.stringify(params)
- })
- .then(function(localJson) {
- gridpanel.setLoading(false);
- if(localJson.success){
- gridpanel.getStore().loadData(localJson.data.list);
- gridpanel.ownerCt.onQuery();
- if(win){
- win.close();
- }
- //if(ownerBtn) ownerBtn.ownerCt.down('[name="tipWord"]').setHidden(false);
- // ownerBtn.ownerCt.down('[name="qMark"]').setHidden(false);
- }
- })
- .catch(function(e) {
- view.setLoading(false);
- saas.util.BaseUtil.showErrorToast('计算失败: ' + e.message);
- });
-
- },
- turnPurc: function (btn) {
- var me = this;
- var data = me.getGridSelected();
- if (data && data.length > 0) {
- me.setLoading(true);
- var params = JSON.stringify({ baseDTOs: data });
- saas.util.BaseUtil.request({
- url: '/api/purchase/makeIntell/turnPurc',
- params: params,
- method: 'POST',
- async: false
- })
- .then(function (res) {
- if (res.success) {
- me.setLoading(false);
- me.selModel.deselectAll();
- saas.util.BaseUtil.showSuccessToast('转单成功');
- var params ={};
- params['mergePurc'] = 0;
- params['mergeDays'] = 0;
- params['safetystock'] = 0;
- params['mpq'] = 0;
- params['auto'] = 1;
- me.calu(params,'',btn);
- var purcs=res.data;
- purcs.forEach(function(purc) {
- let intValue = purc.id, codeValue = purc.code, name = '采购订单';
- saas.util.BaseUtil.openTab('purchase-purchase-formpanel', name + "(" + codeValue + ")", codeValue + intValue, {
- initId: intValue
- });
- });
- }
- })
- .catch(function (res) {
- me.setLoading(false);
- saas.util.BaseUtil.showErrorToast(('操作失败: ') + res.message);
- if(res.code=='71020'){
- var params ={};
- params['mergePurc'] = 0;
- params['mergeDays'] = 0;
- params['safetystock'] = 0;
- params['mpq'] = 0;
- params['auto'] = 1;
- me.calu(params,'',btn);
- }
- });
- } else {
- saas.util.BaseUtil.showErrorToast('请勾选至少一条明细。');
- }
- },
- getGridSelected: function () {
- var me = this,
- items = me.selModel.getSelection(),
- data = new Array();
- var ids = [];
- Ext.each(items, function (item, index) {
- var o = new Object();
- if (!Ext.isEmpty(item.data[me.idField])) {
- o['id'] = item.data[me.idField];
- }
- if (me.turnQtyField) {
- o['qty'] = item.data[me.turnQtyField];
- }
- o['vendid'] = item.data['mr_vendid'] ? item.data['mr_vendid']:0;
- o['price'] = item.data['mr_price'];
- if (!Ext.Array.contains(ids, o['id'])) {
- ids.push(o['id']);
- data.push(o);
- }
- });
- return data;
- },
- onExport: function (me) {
- var grid = me.ownerCt.ownerCt;
- var cfg={
- type: 'xlsx',
- title:'智能采购',
- fileName: '智能采购'+ Ext.Date.format(new Date(),'Y-m-d_H-i-s') +'.xlsx'
- };
- grid.setLoading(true);
- grid.saveDocumentAs(cfg);
- Ext.defer(function () {
- grid.setLoading(false);
- }, 5000);
- }
- });
|