123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353 |
- $(function () {
- 'use strict';
- var materialClassForSearch = ko.observableArray();
- var MaterialCodeClassDataSource = BemsWebApplication.db.createDataSource('FmsMaterialCodeClass');
- var UserGroupDataSource = BemsWebApplication.db.createDataSource('CmUserGroupPermission');
- var first = true;
- var defaultSearchClassArray = $SearchView.createDefaultArray('MaterialClassId');
- var searchFacilityClasses = [ko.observableArray(), ko.observableArray(), ko.observableArray()];
- var searchFacilityClassValues = [ko.observable(), ko.observable(), ko.observable()];
- var facilityClasses = [ko.observableArray(), ko.observableArray(), ko.observableArray()];
- BWA.Popup.Material = BWA.Popup.Material || {};
- BWA.Popup.Material.create = function (viewModel, options) {
- options = options || {};
- options.datagridId = options.datagridId || 'materialDataGridForSearch';
- var onSelectedMaterials = options.onSelectedMaterials, isMultipleSelect = options.isMultipleSelect;
- //var dataViewModel = new BemsWebApplication.FmsMaterialViewModel(),
- var dataViewModel = new BemsWebApplication.FmsMaterialExViewModel(),
- initialized = false,
- gridView,
- popupVisible = ko.observable(false),
- materialFactory = BemsWebApplication.Factory.Material;
- //var dataSource = BWA.DataUtil.createDataSource({ dataSourceOptions: materialFactory.getDataSourceForDataGrid() }, 'FmsMaterial');
- var MenuPermission;
- var dataSource = BWA.DataUtil.createDataSource({
- dataSourceOptions: {
- store: BemsWebApplication.odata.FmsMaterialEx,
- select: [
- 'SiteId',
- 'BusinessFieldId',
- 'MaterialId',
- 'MaterialCode',
- 'Name',
- 'FirstClassId',
- 'SecondClassId',
- 'ThirdClassId',
- 'LocationId',
- 'MaterialTypeId',
- 'TradeCompanyId',
- 'WarehouseId',
- 'Rfid',
- 'Unit',
- 'DurableYears',
- 'ReasonableStockCount',
- 'Manufacturer',
- 'Standard',
- 'FinalPrice',
- 'ImageFileId',
- 'Note',
- 'IsDiscontinued',
- 'IsUse',
- 'FinalStockCount',
- 'FinalTotalStockAmount',
- 'StockCount',
- 'StockAmount',
- ],
- },
- });
- var materialClass = ko.observableArray();
- var eq = BWA.DataUtil.constructEqualFilter, and = BWA.DataUtil.andFilter;
- var userInfo = BWA.UserInfo;
- //자재 검색시 나타나는 팝업은 공통 및 자신이 포함된 비즈니스 영역만 해당됨
- for (var i = 0; i < BWA.UserInfo.MenuPermissions().length; i++) {
- if (BWA.UserInfo.MenuPermissions()[i].MenuId == 'PurchaseRequest') {
- MenuPermission = BWA.UserInfo.MenuPermissions()[i].MenuPermission;
- break;
- }
- }
- if (MenuPermission >= 4) {
- dataSource.filter([
- eq('SiteId', userInfo.SiteId()),
- and,
- [
- eq('BusinessFieldId', BWA.UserInfo.BusinessFieldId()),
- 'or',
- eq('BusinessFieldId', 1)
- ]
- ]);
- }
- else {
- dataSource.filter([
- eq('SiteId', userInfo.SiteId())
- ]);
- }
- var dataGridOptions = utils.datagrid.defaultOptions({
- dxDataSource: dataSource,
- selectedSourceItem: dataViewModel,
- //datagridId: options.datagridId,
- //dbId: 'FmsMaterialEx',
- handleDataGridRowClick: function () {
- },
- //columns: materialFactory.getColumns([
- // //{ dataField: 'ClassName', width: '25%' },
- // { dataField: 'MaterialCode', width: '30%' },
- // { dataField: 'Name', width: '55%' },
- // //{ dataField: 'StockCount', width: '15%' , caption: '재고수량', alignment: 'center'}
- //]),
- columns: [
- //{ dataField: 'ClassName', width: '25%' },
- { dataField: 'MaterialCode', width: '30%', caption: '자재코드', alignment: 'center', visible: false },
- {
- dataField: 'FirstClassId', width: '19%', caption: '자재(대)', alignment: 'center',
- customizeText: function (cellInfo) {
- for (var i = 1; i < materialClassForSearch().length; i++) {
- if (materialClassForSearch()[i].MaterialClassId() == cellInfo.value) {
- return materialClassForSearch()[i].Name();
- }
- }
- }
- },
- {
- dataField: 'SecondClassId', width: '19%', caption: '자재(중)', alignment: 'center',
- customizeText: function (cellInfo) {
- for (var i = 1; i < materialClassForSearch().length; i++) {
- if (materialClassForSearch()[i].MaterialClassId() == cellInfo.value) {
- return materialClassForSearch()[i].Name();
- }
- }
- }
- },
- {
- dataField: 'ThirdClassId', width: '19%', caption: '자재(소)', alignment: 'center',
- customizeText: function (cellInfo) {
- if (cellInfo.value == null) {
- return;
- }
- else {
- for (var i = 1; i < materialClassForSearch().length; i++) {
- if (materialClassForSearch()[i].MaterialClassId() == cellInfo.value) {
- return materialClassForSearch()[i].Name();
- }
- }
- }
- }
- },
- { dataField: 'Name', width: '35%', caption: '자재명', alignment: 'center' },
- { dataField: 'Standard', width: '35%', caption: '규격', alignment: 'center' },
- { dataField: 'Unit', width: '15%', caption: '단위', alignment: 'center' },
- { dataField: 'StockCount', width: '15%', caption: '재고수량', alignment: 'center', format: 'currency' }
- ],
- paging: {
- pageSize: 15,
- enabled: false
- },
- wordWrapEnabled: true,
- cellPrepared: BemsWebApplication.Factory.Material.cellPrepared
- });
- if (isMultipleSelect) {
- dataGridOptions.selection = { mode: 'multiple', allowSelectAll: true };
- dataGridOptions.handleDataGridRowClick = function () { };
- }
- else {
- dataGridOptions.handleDataGridRowClick = function (id, dataGrid, clickRow) {
- var data = clickRow.data;
- if (!_.isUndefined(onSelectedMaterials)) {
- onSelectedMaterials([BWA.DataUtil.convertViewModelToJS(data)]);
- //{
- // SiteId: data.SiteId(),
- // BusinessFieldId: data.BusinessFieldId(),
- // MaterialId: data.MaterialId(),
- // MaterialCode: data.MaterialCode(),
- // FinalPrice: data.FinalPrice(),
- // TradeCompanyId: _.isUndefined(data.TradeCompanyId) ? undefined : data.TradeCompanyId(),
- // 'FmsMaterialTradeCompany/Name': data['FmsMaterialTradeCompany/Name'],
- // Name: data.Name()
- //}]);
- }
- // TODO : 어기서 데이터가 전체선택시와 단일선택시 어찌 바뀌는가...
- popupVisible(false);
- }
- }
- function handlePopupShowing() {
- MaterialCodeClassDataSource.filter([
- ['SiteId', '=', BWA.UserInfo.SiteId()]
- ]);
- $.when(
- MaterialCodeClassDataSource.load()
- ).done(function (Result) {
- materialClass = ko.observableArray();
- var cnt = 0;
- for (var i = 0; i < Result.length; i++) {
- materialClass.push(Result[i]);
- if (Result[i].Depth() == 0) {
- if (cnt == 0) {
- searchFacilityClasses[0](defaultSearchClassArray.slice(0).concat(Result[i]));
- cnt++;
- }
- else {
- searchFacilityClasses[0].push(Result[i]);
- }
- }
- }
- facilityClasses[0](Result[0]);
- materialClassForSearch($SearchView.createArrayOfSelectBox('MaterialClassId', materialClass()));
- });
- }
- function handlePopupShown() {
- if (initialized === false) {
- gridView = $('#materialDataGridForSearch').dxDataGrid('instance');
- $("#materialDataGridForSearch").dxDataGrid({
- paging: {
- pageSize: 14,
- enabled: false
- }
- });
- initialized = true;
- }
- gridView.clearSelection();
- gridView.refresh();
- searchView.show();
- }
- function handlePopupButtonSelect() {
- var array = utils.datagrid.getSelectedRowsData(options.datagridId);
- if (!_.isUndefined(onSelectedMaterials)) {
- onSelectedMaterials(array);
- }
- popupVisible(false);
- }
- viewModel.handleSelectBoxChangeFirstClass = function (e) {
- BWA.DataUtil.setArrayDataSourceFilter(MaterialCodeClassDataSource, 'ParentMaterialClassId', e.value, facilityClasses[1]);
- viewModel.dataModel.SecondClassId(null);
- viewModel.dataModel.ThirdClassId(null);
- };
- viewModel.handleSelectBoxChangeSecondClass = function (e) {
- BWA.DataUtil.setArrayDataSourceFilter(MaterialCodeClassDataSource, 'ParentMaterialClassId', e.value, facilityClasses[2]);
- viewModel.dataModel.ThirdClassId(null);
- };
- var handleFirstClassChangedValueInSearchView = function (e) {
- if (first == true && e.value == null) {
- e.value = 0;
- first = false;
- searchFacilityClassValues[0](0);
- }
- if (e.value === 0) {
- initializeSearchClasses();
- return;
- }
- BWA.DataUtil.setArrayDataSourceFilter(MaterialCodeClassDataSource, 'ParentMaterialClassId', e.value, searchFacilityClasses[1], defaultSearchClassArray);
- };
- var handleSecondClassChangedValueInSearchView = function (e) {
- if (e.value === 0) {
- initializeSearchClasses(true);
- return;
- }
- BWA.DataUtil.setArrayDataSourceFilter(MaterialCodeClassDataSource, 'ParentMaterialClassId', e.value, searchFacilityClasses[2], defaultSearchClassArray);
- };
- function initializeSearchClasses(onlyThird) {
- if (onlyThird === undefined || onlyThird === false) {
- searchFacilityClasses[1](defaultSearchClassArray.slice(0));
- searchFacilityClassValues[1](0);
- }
- searchFacilityClasses[2](defaultSearchClassArray.slice(0));
- searchFacilityClassValues[2](0);
- }
- function handlePopupButtonClose() {
- popupVisible(false);
- }
- var toolbarItems = [
- { location: 'before', text: '자재 선택' },
- { location: 'after', widget: 'button', options: { text: $G('select'), icon: 'save', visible: isMultipleSelect, clickAction: handlePopupButtonSelect } },
- { location: 'after', widget: 'button', options: { text: $G('close'), icon: 'close', clickAction: handlePopupButtonClose } }
- ];
- var popupOptions = {
- width: '850px',
- height: '600px',
- visible: popupVisible,
- closeOnOutsideClick: true,
- showingAction: handlePopupShowing,
- shownAction: handlePopupShown,
- animation: window.utils.popup.createAnimation()
- };
- var searchView = BWA.Popup.SearchView.create({
- parentPopupId: 'popupSearchMaterial',
- parentPopupVisible: popupVisible,
- searchItems: [
- { id: 'MaterialCode' },
- { id: 'Name' },//
- { id: 'Standard' },
- { id: 'FirstClassId', ignoreValue: 0, defaultValue: 0, value: searchFacilityClassValues[0], dataSource: searchFacilityClasses[0], handleChangedValue: handleFirstClassChangedValueInSearchView },
- { id: 'SecondClassId', ignoreValue: 0, defaultValue: 0, withCheckId: 'FirstClassId', value: searchFacilityClassValues[1], dataSource: searchFacilityClasses[1], handleChangedValue: handleSecondClassChangedValueInSearchView },
- { id: 'ThirdClassId', ignoreValue: 0, defaultValue: 0, withCheckId: 'FirstClassId', value: searchFacilityClassValues[2], dataSource: searchFacilityClasses[2] },
- ],
- handleInitializeUpdate: function () {
- },
- handleSearch: function (filter, searchItems) {
- if (MenuPermission >= 4) {
- filter = [
- eq('SiteId', userInfo.SiteId()),
- and,
- [
- eq('BusinessFieldId', BWA.UserInfo.BusinessFieldId()),
- 'or',
- eq('BusinessFieldId', 1)
- ]
- ].concat(filter)
- }
- else {
- filter = [
- eq('SiteId', userInfo.SiteId())
- ].concat(filter)
- }
- gridView.filter(filter);
- }
- });
- viewModel.handleSecondClassChangedValueInSearchView = handleSecondClassChangedValueInSearchView;
- viewModel.handleFirstClassChangedValueInSearchView = handleFirstClassChangedValueInSearchView;
- viewModel.facilityClasses = facilityClasses;
- viewModel.searchItems = searchView.searchItems;
- return {
- dataModel: dataViewModel,
- dataSource: dataSource,
- popupOptions: popupOptions,
- toolbarItems: toolbarItems,
- dataGridOptions: dataGridOptions,
- searchView: searchView,
- show: function () {
- popupVisible(true);
- }
- };
- };
- });
|