$(function () { 'use strict'; var materialClassForSearch = ko.observableArray(); BemsWebApplication.Factory.Material = { getBasicDataSourceRef: function (options) { var dbModeIId = options.dbModeIId, primaryKeyDataField = options.primaryKeyDataField, moreSelectFields = options.moreSelectFields, expand = ['FmsMaterial', 'FmsMaterial/FmsMaterialTradeCompany']; var select = [ 'SiteId', 'BusinessFieldId', primaryKeyDataField, 'MaterialId', 'MaterialCount', 'FmsMaterial/FmsMaterialTradeCompany/Name', 'FmsMaterial/MaterialCode', 'FmsMaterial/Name', 'FmsMaterial/FirstClassId', 'FmsMaterial/SecondClassId', 'FmsMaterial/ThirdClassId', 'FmsMaterial/Standard', 'FmsMaterial/Unit' ]; if (options.dbModeIId == "FmsMaterialRelease") { select.push('StockCountByPoint'); } if (_.isArray(moreSelectFields)) { select = select.concat(moreSelectFields); } if (_.isArray(options.expand)) { expand = expand.concat(options.expand); } return BWA.DataUtil.createDataSource({ dataSourceOptions: { paginate: false, // 전체를 모두 가져옴 select: select, expand: expand, extendOptions: { forceOriginalField: true, alterNames: { 'FmsMaterial/MaterialCode': 'MaterialCode', 'FmsMaterial/Name': 'Name', 'FmsMaterial/FirstClassId': 'FirstClassId', 'FmsMaterial/SecondClassId': 'SecondClassId', 'FmsMaterial/ThirdClassId': 'ThirdClassId', 'FmsMaterial/Standard': 'Standard', 'FmsMaterial/Unit': 'Unit' } } } }, dbModeIId); }, getDataSourceWithRelation: function (store, options) { return BWA.Factory.getBaseDataSourceWithRelation( store, options, BWA.Factory.Material.getDataSourceForRefDataGrid(), 'FmsMaterial'); }, formatClassName: function (firstClassName, secondClassName, thirdClassName) { var className = _.reduce(arguments, function (sb, name) { if (_.isEmpty(name)) return sb; if (_.isEmpty(sb)) { sb.push(name); return sb; } sb.push(' /') sb.push(name); return sb; }, []); return className.join(''); }, cellPrepared: function (cellElement, cellInfo) { var data = cellInfo.data; var self = BemsWebApplication.Factory.Facility; switch (cellInfo.column.dataField) { case 'ClassName': if (!data.FirstClassName) break; $(cellElement).text(self.formatClassName(data.FirstClassName(), data.SecondClassName(), data.ThirdClassName())); break; } }, getDataSourceForDataGrid: function () { return { select: [ 'SiteId', 'BusinessFieldId', 'MaterialId', 'MaterialCode', 'Name', 'Unit', 'MaterialCode', 'Standard', 'Standard', 'DurableYears', 'IsDiscontinued', 'IsUse', 'FinalPrice', 'ReasonableStockCount', 'FinalStockCount', 'FinalTotalStockAmount', 'CmBusinessField/Name', 'FmsMaterialCodeClass/Name', 'FmsMaterialCodeClass1/Name', 'FmsMaterialCodeClass2/Name', 'FmsMaterialCodeClass/Abbreviation', 'FmsMaterialCodeClass1/Abbreviation', 'FmsMaterialCodeClass2/Abbreviation', 'FmsMaterialCodeLocation/Name', 'FmsMaterialCodeType/Name', 'FmsMaterialWarehouse/Name', 'FmsMaterialTradeCompany/Name' ], expand: ['CmBusinessField', 'FmsMaterialCodeLocation', 'FmsMaterialCodeType', 'FmsMaterialWarehouse', 'FmsMaterialTradeCompany'], extendOptions: { multipleItems: [ { id: 'MaterialClassId', entries: ['FmsMaterialCodeClass', 'FmsMaterialCodeClass1', 'FmsMaterialCodeClass2'], fields: ['FirstClassId', 'SecondClassId', 'ThirdClassId'], } ], forceOriginalField: true, alterNames: { 'FmsMaterialCodeClass/FirstClassId/Name': 'FirstClassName', 'FmsMaterialCodeClass1/SecondClassId/Name': 'SecondClassName', 'FmsMaterialCodeClass2/ThirdClassId/Name': 'ThirdClassName', } }, sort: { field: "MaterialId", desc: true } }; }, getDataSourceForRefDataGrid: function () { return { select: [ 'SiteId', 'BusinessFieldId', 'MaterialId', 'MaterialCode', 'Name', 'Unit', 'MaterialCode', 'Standard', 'FinalPrice', 'DurableYears', 'CmBusinessField/Name' ], expand: ['CmBusinessField'], filter: [ ['SiteId', '=', BWA.UserInfo.SiteId()] ], extendOptions: { forceOriginalField: true } }; }, defaultColumns: [ { dataField: 'MaterialId', caption: $G('number'), width: '10%', alignment: 'center', allowFiltering: false, sortOrder: 'desc' }, { dataField: 'CmBusinessField/Name', caption: $G('businessField'), width: '10%', alignment: 'center' }, { dataField: 'FirstClassName', width: '10%', caption: '자재(대)', alignment: 'center', allowSorting: false, }, { dataField: 'SecondClassName', width: '10%', caption: '자재(중)', alignment: 'center', allowSorting: false, }, { dataField: 'ThirdClassName', width: '10%', caption: '자재(소)', alignment: 'center', allowSorting: false, }, { dataField: 'MaterialCode', caption: $G('materialCode'), width: '20%', alignment: 'center', visible: false }, { dataField: 'Name', caption: $G('materialName'), width: '25%', alignment: 'center' }, { dataField: 'Standard', caption: $G('materialStandard'), width: '20%', alignment: 'center', }, { dataField: 'Unit', caption: $G('materialUnit'), width: '8%', alignment: 'center' }, { dataField: 'FinalPrice', caption: '단가', width: '8%', alignment: 'center', format: 'fixedPoint', }, { dataField: 'ReasonableStockCount', caption: '적정재고량', width: '8%', alignment: 'center', format: 'fixedPoint' }, { dataField: 'DurableYears', caption: $G('durableYears'), width: '8%', alignment: 'center', visible: false }, { dataField: 'IsDiscontinued', caption: $G('isDiscontinued'), width: '8%', alignment: 'center', customizeText: function (cellInfo) { return $G.isYes(cellInfo.value); } }, { dataField: 'IsUse', caption: '사용여부', width: '8%', alignment: 'center', customizeText: function (cellInfo) { return $G.isYes(cellInfo.value); } } ] }; $.extend(BWA.Factory.Material, BWA.DataUtil.pickFunctions(BWA.Material)); });