123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827 |
- BemsWebApplication.MaterialStored2 = function (params, viewInfo, forApprovalOptions) {
- 'use strict';
- var materialClassForSearch = ko.observableArray();
- var materialClass = ko.observableArray();
- var MaterialCodeClassDataSource = BemsWebApplication.db.createDataSource('FmsMaterialCodeClass');
- var facilityClasses = [ko.observableArray(), ko.observableArray(), ko.observableArray()];
- var searchFacilityClassValues = [ko.observable(), ko.observable(), ko.observable()];
- var searchFacilityClasses = [ko.observableArray(), ko.observableArray(), ko.observableArray()];
- var MenuPermission;
- var defaultSearchClassArray = $SearchView.createDefaultArray('MaterialClassId');
- var businessFieldDataSource = BemsWebApplication.db.createDataSource('CmBusinessField', true, true, true),
- materialDataSource = BemsWebApplication.db.createDataSource('FmsMaterial', true, true),
- warehouseDataSource = BWA.db.createDataSource('FmsMaterialWarehouse', true, true),
- progressDataSource = BemsWebApplication.db.createDataSource('FmsMaterialCodeProgress'),
- warehouses = ko.observableArray(),
- businessFields = ko.observableArray();
- var materialStoredDatSource = BWA.db.createDataSource('FmsMaterialStored', true, true),
- materials = ko.observableArray(),
- dataModelMaterial = new BWA.FmsMaterialViewModel();
- var materialFactory = BWA.Factory.Material;
- var materialsForPurchaseOrderDataSource = materialFactory.getBasicDataSourceRef({
- dbModeIId: 'FmsMaterialPurchaseOrderMaterial',
- primaryKeyDataField: 'PurchaseOrderId',
- moreSelectFields: [
- 'FmsMaterial/Unit', 'FmsMaterial/Standard',
- 'FmsMaterial/TradeCompanyId',
- 'FmsMaterial/FinalPrice',
- 'FmsMaterial/FirstClassId',
- 'FmsMaterial/SecondClassId',
- 'FmsMaterial/ThirdClassId'
- ]
- });
- var forApprovalViewOptions,
- forApprovalPopupOptions,
- popup;
- if (_.isObject(forApprovalOptions)) {
- forApprovalViewOptions = forApprovalOptions.viewOptions;
- forApprovalPopupOptions = forApprovalOptions.popupOptions;
- }
- var materialDataGridOptions = undefined;
- var materialGridView;
- var eq = BWA.DataUtil.constructEqualFilter,
- and = BWA.DataUtil.andFilter;
- var deferredForSearch = new $.Deferred();
- var businessFieldsForSearch = ko.observableArray(),
- progressesForSearch = ko.observableArray();
- var dataSourceOptions = {
- select: [
- 'SiteId',
- 'BusinessFieldId',
- 'StoredDate',
- 'MaterialStoredId',
- 'PurchaseOrderId',
- 'StoredCount',
- 'RemainStoredCount',
- 'ApprovalDate',
- 'IsApproval',
- 'CmBusinessField/Name',
- 'FmsMaterialWarehouse/Name',
- 'FmsMaterialPurchaseOrder/Title',
- 'FmsMaterialPurchaseOrder/Reason', // 2016 01 11 hcLee 추가
- 'FmsMaterial/MaterialCode',
- 'FmsMaterial/Name',
- 'FmsMaterial/Unit',
- 'FmsMaterial/Standard',
- 'LocationInWarehouse',
- 'CmUser/Name', 'CmUser1/Name',
- 'FmsMaterial/FirstClassId',
- 'FmsMaterial/SecondClassId',
- 'FmsMaterial/ThirdClassId'
- ],
- expand: [
- 'CmBusinessField',
- 'FmsMaterial',
- 'FmsMaterialWarehouse',
- 'FmsMaterialPurchaseOrder',
- 'CmUser', 'CmUser1'
- ],
- filter: [
- ['SiteId', '=', BWA.UserInfo.SiteId()],
- ],
- extendOptions: { forceOriginalField: true, }
- };
- var viewModel;
- var viewOptions = {
- popupWidth: 1600,
- dataSourceOptions: dataSourceOptions,
- columns: [
- { dataField: 'MaterialStoredId', caption: $G('number'), width: '8%', alignment: 'center', sortOrder: 'desc' },
- { dataField: 'CmBusinessField/Name', caption: $G('businessFieldName'), width: '10%', alignment: 'center', },
- {
- dataField: 'FmsMaterial/FirstClassId', width: '12%', 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: 'FmsMaterial/SecondClassId', width: '12%', 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: 'FmsMaterial/ThirdClassId', width: '12%', 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: 'FmsMaterial/MaterialCode', caption: $G('materialCode'), width: '20%', alignment: 'center', visible: false },
- { dataField: 'FmsMaterial/Name', caption: $G('materialName'), width: '20%', alignment: 'center' },
- { dataField: 'FmsMaterial/Standard', caption: '규격', width: '20%', alignment: 'center' },
- { dataField: 'FmsMaterial/Unit', caption: $G('unit'), width: '8%', alignment: 'center' },
- { dataField: 'StoredCount', caption: $G('storedCount'), width: '11%', alignment: 'center', format: 'fixedPoint' },
- {
- dataField: 'StoredDate', caption: $G('storedDateTime'), width: '20%', alignment: 'center', sortOrder: 'desc', dataType: "shortDate", format: "yyyy-MM-dd hh:mm:ss",
- customizeText: function (cellInfo) {
- return cellInfo.valueText;
- }
- },
- {
- dataField: 'ApprovalDate', caption: $G('approvalDate'), width: '20%', alignment: 'center', sortOrder: 'desc', dataType: "shortDate", format: "yyyy-MM-dd hh:mm:ss",
- customizeText: function (cellInfo) {
- return cellInfo.valueText;
- }
- },
- { dataField: 'CmUser1/Name', caption: $G('approvalUserName'), width: '8%', alignment: 'center' }
- ],
- paging: {
- pageSize: 18,
- enabled: true
- },
- pager: {},
- "export": {
- enabled: true,
- fileName: '자재 입고 목록',
- },
- onExporting: function (e) {
- e.component.columnOption("MaterialStoredId", "visible", false);
- },
- onExported: function (e) {
- e.component.columnOption("MaterialStoredId", "visible", true);
- },
- promiseDataInSearchView: deferredForSearch.promise(),
- searchViewItems: [
- { id: 'BusinessFieldId', ignoreValue: 0, defaultValue: 0, dataSource: businessFieldsForSearch },
- { id: 'FmsMaterial/MaterialCode' },
- { id: 'FmsMaterial/FirstClassId', ignoreValue: 0, defaultValue: 0, value: searchFacilityClassValues[0], dataSource: searchFacilityClasses[0], handleChangedValue: handleFirstClassChangedValueInSearchView },
- { id: 'FmsMaterial/SecondClassId', ignoreValue: 0, defaultValue: 0, withCheckId: 'FmsMaterial/FirstClassId', value: searchFacilityClassValues[1], dataSource: searchFacilityClasses[1], handleChangedValue: handleSecondClassChangedValueInSearchView },
- { id: 'FmsMaterial/ThirdClassId', ignoreValue: 0, defaultValue: 0, withCheckId: 'FmsMaterial/FirstClassId', value: searchFacilityClassValues[2], dataSource: searchFacilityClasses[2] },
- { id: 'FmsMaterial/Name' },
- //hcLee 2015 11 18
- { id: 'FmsMaterial/Standard' },
- { id: 'StoredCount' },
- { id: 'CmUser1/Name' },
- { id: 'ProgressId', ignoreValue: 0, defaultValue: 0, dataSource: progressesForSearch },
- { id: 'StoredDate', type: 'dateRange', isOnlyDate: true },
- { id: 'ApprovalDate', type: 'dateRange', isOnlyDate: true },
- ],
- handleViewShowing: function (dataModel) {
- 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()));
- });
- var useBusinessFiltering = BWA.UserInfo.isDependBusinessField(viewInfo.viewName)
- this.dataSourceOptions.filter.splice(0, this.dataSourceOptions.filter.length);
- this.dataSourceOptions.filter.push([eq('SiteId', BWA.UserInfo.SiteId())]);
- if (useBusinessFiltering) {
- this.dataSourceOptions.filter.push('and');
- this.dataSourceOptions.filter.push([eq('BusinessFieldId', BWA.UserInfo.BusinessFieldId())]);
- businessFieldDataSource.filter([
- eq('SiteId', BWA.UserInfo.SiteId()),
- 'and',
- ['BusinessFieldId', '=', BWA.UserInfo.BusinessFieldId()],
- 'and',
- ['BusinessFieldId', '<>', 1]
- ]);
- }
- else {
- this.dataSourceOptions.filter.push('and');
- this.dataSourceOptions.filter.push(['BusinessFieldId', '<>', 1]);
- businessFieldDataSource.filter([
- eq('SiteId', BWA.UserInfo.SiteId()),
- 'and',
- ['BusinessFieldId', '<>', 1],
- ]);
- }
- for (var i = 0; i < BWA.UserInfo.MenuPermissions().length; i++) {
- if (BWA.UserInfo.MenuPermissions()[i].MenuId == 'MaterialStored2') {
- MenuPermission = BWA.UserInfo.MenuPermissions()[i].MenuPermission;
- break;
- }
- }
- if (MenuPermission >= 4) {
- warehouseDataSource.filter([
- eq('SiteId', BWA.UserInfo.SiteId()),
- and,
- eq('BusinessFieldId', BWA.UserInfo.BusinessFieldId()),
- and,
- eq('IsUse', true),
- and,
- ['BusinessFieldId', '<>', 1],
- ]);
- }
- else {
- warehouseDataSource.filter([
- eq('SiteId', BWA.UserInfo.SiteId()),
- and,
- eq('IsUse', true),
- and,
- ['BusinessFieldId', '<>', 1],
- ]);
- }
- $.when(
- businessFieldDataSource.load(),
- warehouseDataSource.load(),
- progressDataSource.load())
- .done(function (dbBusinessField, dbWarehouses, dbProgresses) {
- dbBusinessField = dbBusinessField[0];
- dbWarehouses = dbWarehouses[0];
- dbProgresses = dbProgresses[0];
- businessFields(dbBusinessField);
- warehouses(dbWarehouses);
- businessFieldsForSearch($SearchView.createArrayOfSelectBox('BusinessFieldId', dbBusinessField));
- progressesForSearch($SearchView.createArrayOfSelectBox('ProgressId', dbProgresses));
- deferredForSearch.resolve();
- });
- },
- handleViewShown: function () {
- },
- handlePopupShown: function (isEditMode, isNew, dataViewModel) {
-
- var warehouses = viewModel.warehouses();
- if (!_.isEmpty(warehouses)) {
- dataViewModel.WarehouseId(warehouses[0].WarehouseId());
- }
- if (isEditMode) {
- if (isNew) {
- dataViewModel.IsApproval(false);
- }
- var userInfo = BWA.UserInfo;
- }
- },
- handleDataGridRowClick: function (id, dataGrid, clickRow, popupVisible) {
- dataGrid.clearSelection();
- var data = clickRow.data;
- var dataModel = viewModel.dataModel;
- if (forApprovalViewOptions && forApprovalViewOptions.handleBeforeShowingPopupForEdit) {
- forApprovalViewOptions.handleBeforeShowingPopupForEdit(data, dataModel);
- }
- dataModel.BusinessFieldName = $KoSet(dataModel.BusinessFieldName, data['CmBusinessField/Name']);
- dataModel.StoredUserName = $KoSet(dataModel.StoredUserName, data['CmUser/Name']);
- dataModel.PurchaseOrderTitle = $KoSet(dataModel.PurchaseOrderTitle, data['FmsMaterialPurchaseOrder/Title']);
- //hcLee 2016 01 11
- dataModel.PurchaseOrderReason = $KoSet(dataModel.PurchaseOrderReason, data['FmsMaterialPurchaseOrder/Reason']);
- dataModel.ApprovalUserName = $KoSet(dataModel.ApprovalUserName, data['CmUser1/Name']);
- dataModel.WarehouseName = $KoSet(dataModel.WarehouseName, data['FmsMaterialWarehouse/Name']);
- dataModelMaterial.FirstClassId(data['FmsMaterial/FirstClassId']());
- dataModelMaterial.SecondClassId(data['FmsMaterial/SecondClassId']());
- dataModelMaterial.ThirdClassId(data['FmsMaterial/ThirdClassId']());
- dataModelMaterial.Name(data['FmsMaterial/Name']());
- dataModelMaterial.Unit(data['FmsMaterial/Unit']());
- dataModelMaterial.Standard(data['FmsMaterial/Standard']());
- popupVisible(true);
- },
- handleAfterLoadingModelByKey: function (data, dataViewModel) {
- loadMaterials(dataViewModel);
- },
- // 팝업 화면이 나타날때 발생하는 이벤트
- handlePopupShowing: function (isNewInPopup) {
- var userInfo = BWA.UserInfo;
- if (isNewInPopup()) {
- materials([]);
- viewModel.dataModel.BusinessFieldId(userInfo.BusinessFieldId());
- viewModel.dataModel.StoredUserId(userInfo.UserId());
- viewModel.dataModel.StoredUserName(userInfo.Name());
- viewModel.dataModel.StoredDate(new Date());
- }
- }
- };
- if (_.isObject(forApprovalViewOptions)) {
- _.extend(viewOptions, forApprovalViewOptions);
- }
- else {
- // 승인 화면이 아니면 수정에 관련 기능이 필요없다.
- _.extend(viewOptions, {
- isValidateWithFunction: function (errorMessage) {
- if (popup && popup.isValidateWithFunction) {
- return popup.isValidateWithFunction(errorMessage);
- }
- return true;
- },
- mandatoryFields: [
- { dataField: 'PurchaseRequestId', name: $G('purchaseRequest') },
- { dataField: 'MaterialId', name: $G('materialName') },
- { dataField: 'WarehouseId', name: $G('warehouseName') },
- { dataField: 'StoredCount', name: $G('storedCount') }
- ],
- handleSaveButtonInPopup: function (isInsert) {
- if (isInsert === false) {
- if (popup && popup.handleAfterSave) {
- popup.handleAfterSave(undefined);
- }
- }
- },
- handleAfterSaveInPopup: function (responseKey, response) {
- if (popup && popup.handleAfterSave) {
- popup.handleAfterSave(responseKey, response);
- }
- },
- });
- }
- function initializeSearchClasses(onlyThird) {
- if (onlyThird === undefined || onlyThird === false) {
- searchFacilityClasses[1](defaultSearchClassArray.slice(0));
- searchFacilityClassValues[1](0);
- }
- searchFacilityClasses[2](defaultSearchClassArray.slice(0));
- searchFacilityClassValues[2](0);
- }
- var handleFirstClassChangedValueInSearchView = function (e) {
- if (e.value === 0) {
- initializeSearchClasses();
- return;
- }
- BWA.DataUtil.setArrayDataSourceFilter(MaterialCodeClassDataSource, 'ParentMaterialClassId', e.value, searchFacilityClasses[1], defaultSearchClassArray);
- };
- var handleSecondClassChangedValueInSearchView = function (e) {
- if (searchFacilityClassValues[1]() == null) {
- initializeSearchClasses();
- BWA.DataUtil.setArrayDataSourceFilter(MaterialCodeClassDataSource, 'ParentMaterialClassId', 0, searchFacilityClasses[1], defaultSearchClassArray);
- }
- if (e.value === 0) {
- initializeSearchClasses(true);
- return;
- }
- BWA.DataUtil.setArrayDataSourceFilter(MaterialCodeClassDataSource, 'ParentMaterialClassId', e.value, searchFacilityClasses[2], defaultSearchClassArray);
- };
- function loadMaterials(dataViewModel) {
- var materialStoredId = dataViewModel.MaterialStoredId();
- materialsForPurchaseOrderDataSource.filter([
- eq('SiteId', dataViewModel.SiteId()),
- and,
- eq('BusinessFieldId', dataViewModel.BusinessFieldId()),
- and,
- eq('PurchaseOrderId', dataViewModel.PurchaseOrderId())
- ]);
- materialStoredDatSource.filter([
- eq('SiteId', dataViewModel.SiteId()),
- and,
- eq('BusinessFieldId', dataViewModel.BusinessFieldId()),
- and,
- eq('PurchaseOrderId', dataViewModel.PurchaseOrderId())
- ]);
- materialStoredDatSource.load().done(function (dbStoredMaterials) {
- materialsForPurchaseOrderDataSource.load().done(function (dbMaterials) {
- materials(_.map(dbMaterials, function (m) {
- m.Unit = m.Unit();
- m.Standard = m.Standard();
- m.UnitCost = m['FmsMaterial/FinalPrice'];
- m.FirstClassId = m.FirstClassId();
- m.SecondClassId = m.SecondClassId();
- m.ThirdClassId = m.ThirdClassId();
- if (m.UnitCost() === null) {
- m.UnitCost(0);
- }
- m.StoredCount = ko.observable(0);
- m.PossibleStoredCount = ko.observable(0);
- if (_.isEmpty(dbStoredMaterials)) {
- m.PossibleStoredCount(m.MaterialCount());
- }
- // 입고가능수량 계산
- var currentStoredCountSum = 0;
- dbStoredMaterials.forEach(function (item) {
- if (m.MaterialId() == item.MaterialId() && item.StockCount !== undefined) {
- currentStoredCountSum += item.StoredCount();
- }
- });
- m.PossibleStoredCount(m.MaterialCount() - currentStoredCountSum);
- dbStoredMaterials.forEach(function (item) {
- if (m.MaterialId() == item.MaterialId() && item.MaterialStoredId() == materialStoredId) {
- if (item.StoredCount === undefined) {
- m.StoredCount(0);
- } else {
- m.StoredCount(item.StoredCount());
- }
- return false;
- }
- });
- return m;
- }));
- });
- });
- }
- function loadMaterialsInPurchaseOrder(purchaseOrder) {
- materialsForPurchaseOrderDataSource.filter([
- eq('SiteId', purchaseOrder.SiteId),
- and,
- eq('BusinessFieldId', purchaseOrder.BusinessFieldId),
- and,
- eq('PurchaseOrderId', purchaseOrder.PurchaseOrderId)
- ]);
- // 선택된 구매요청에 대한 자재들을 로드한다.
- var promise = materialsForPurchaseOrderDataSource.load();
- promise.then(function (dbMaterials) {
- var companies = [];
- materialStoredDatSource.filter([
- eq('SiteId', purchaseOrder.SiteId),
- and,
- eq('BusinessFieldId', purchaseOrder.BusinessFieldId),
- and,
- eq('PurchaseOrderId', purchaseOrder.PurchaseOrderId)
- ]);
- materialStoredDatSource.load().done(function (dbStoredMaterials) {
- materials(_.map(dbMaterials, function (m) {
- m.Unit = m.Unit;
- m.Standard = m.Standard;
- m.UnitCost = m['FmsMaterial/FinalPrice'];
- m.FirstClassId = m.FirstClassId;
- m.SecondClassId = m.SecondClassId;
- m.ThirdClassId = m.ThirdClassId;
- m.MaxMaterialCount = ko.observable();
- m.StoredCount = ko.observable();
- m.PossibleStoredCount = ko.observable();
- if (_.isEmpty(dbStoredMaterials)) {
- m.PossibleStoredCount(m.MaterialCount());
- }
- // 입고가능수량 계산
- var currentStoredCountSum = 0;
- dbStoredMaterials.forEach(function (item) {
- if (m.MaterialId() == item.MaterialId() && item.StockCount !== undefined) {
- currentStoredCountSum += item.StoredCount();
- }
- });
- m.PossibleStoredCount(m.MaterialCount() - currentStoredCountSum);
- m.MaxMaterialCount(m.MaterialCount() - currentStoredCountSum);
- if (m.UnitCost() === null) { m.UnitCost(0); }
- m.StoredCount(m.PossibleStoredCount());
- return m;
- }));
- });
- });
- }
- function handlePopupButtonClose() {
- viewModel.popupVisible(false);
- viewModel.gridView().refresh();
- }
- function handlePopupButtonCancel() {
- viewModel.popupVisible(false);
- }
- function handlePopupButtonEdit() {
- }
- function handlePopupButtonDelete() {
- }
- viewModel = BWA.DataGrid.createViewWithDataGrid(params, viewInfo, 'FmsMaterialStored', viewOptions);
- var materialStoredPopupToolbarItems = [
- { location: 'before', text: '입고 등록' },
- {
- location: 'after',
- widget: 'button',
- options: {
- text: $G('approval'), icon: 'save', type: 'success',
- visible: viewModel.visibleApprovalButton,
- disabled: viewModel.hasnotModificationPermission,
- clickAction: function () {
- }
- }
- },
- {
- location: 'after', widget: 'button', options: {
- text: '입고', icon: 'save', visible: viewModel.isEditModeInPopup,
- clickAction: handlePopupButtonSave
- }
- },
- { location: 'after', widget: 'button', options: { text: $G('close'), icon: 'close', clickAction: materialStoredPopupButtonClose } }
- ];
- function materialStoredPopupButtonClose() {
- viewModel.popupVisible(false);
- }
- function handlePopupButtonSave() {
- if (viewModel.isNewInPopup()) {
- var selectedRowCount = materialGridView.getSelectedRowsData().length;
- if (selectedRowCount == 0) {
- utils.toast.show('입고하려는 자재를 선택하시기 바랍니다.', 'error');
- return;
- }
- for (var i = 0; i < selectedRowCount; i++) {
- if (materialGridView.getSelectedRowsData()[i].PossibleStoredCount() < materialGridView.getSelectedRowsData()[i].StoredCount()) {
- utils.toast.show('입고가능수량을 초과하였습니다.', 'error');
- return;
- }
- if (materialGridView.getSelectedRowsData()[i].StoredCount() <= 0) {
- utils.toast.show('입고수량은 최소1개 이상입니다.', 'error');
- return;
- }
- }
- for (var i = 0; i < selectedRowCount; i++) {
- viewModel.dataModel.MaterialId(materialGridView.getSelectedRowsData()[i].MaterialId());
- viewModel.dataModel.UnitCost(materialGridView.getSelectedRowsData()[i].UnitCost())
- viewModel.dataModel.StoredCount(materialGridView.getSelectedRowsData()[i].StoredCount());
- viewModel.dataModel.RemainStoredCount(materialGridView.getSelectedRowsData()[i].StoredCount());
- var postData = viewModel.dataModel.toJS();
- BWA.api.post('FmsMaterialStored/Store', viewModel.dataModel.toJS()).then(function () {
- utils.toast.show($G('successDatabaseProcessMsg'));
- viewModel.gridView().refresh();
- //var purchaseOrder = {
- // SiteId: viewModel.dataModel.SiteId(),
- // BusinessFieldId: viewModel.dataModel.BusinessFieldId(),
- // PurchaseOrderId: viewModel.dataModel.PurchaseOrderId(),
- //};
- //loadMaterialsInPurchaseOrder(purchaseOrder);
- });
- }
- }
- viewModel.popupVisible(false);
- }
- viewModel.handleButtonSearchPurchaseOrder = function () {
- viewModel.purchaseOrderSearchPopup.show();
- };
- viewModel.purchaseOrderSearchPopup = BWA.Popup.PurchaseOrderSearch.create(viewModel, {
- filter: [
- eq('SiteId', BWA.UserInfo.SiteId())
- ],
- onSelectedPurchaseOrder: function (purchaseOrder) {
- var purchaseOrderId = purchaseOrder.PurchaseOrderId;
- loadMaterialsInPurchaseOrder(purchaseOrder);
- viewModel.dataModel.PurchaseOrderId(purchaseOrder.PurchaseOrderId);
- viewModel.dataModel.PurchaseOrderTitle(purchaseOrder.Title);
- // hcLee 2016 01 11
- viewModel.dataModel.PurchaseOrderReason(purchaseOrder.Reason);
- // JD Comment : 구매목록이 선택되면 비즈니스 필드를 변경
- viewModel.dataModel.BusinessFieldId(purchaseOrder.BusinessFieldId);
- var result = $.grep(businessFields(), function (e) { return e.BusinessFieldId() == purchaseOrder.BusinessFieldId; });
- if (result.length != 0) {
- viewModel.dataModel.BusinessFieldName(result[0].Name());
- }
- // hcLee 2016 05 02 창고도 변경
- for (var i = 0; i < BWA.UserInfo.MenuPermissions().length; i++) {
- if (BWA.UserInfo.MenuPermissions()[i].MenuId == 'MaterialStored') {
- MenuPermission = BWA.UserInfo.MenuPermissions()[i].MenuPermission;
- break;
- }
- }
- if (MenuPermission >= 4) {
- warehouseDataSource.filter([
- eq('SiteId', BWA.UserInfo.SiteId()),
- and,
- eq('BusinessFieldId', BWA.UserInfo.BusinessFieldId()),
- and,
- eq('IsUse', true),
- and,
- ['BusinessFieldId', '<>', 1],
- ]);
- }
- else {
- warehouseDataSource.filter([
- eq('SiteId', BWA.UserInfo.SiteId()),
- and,
- eq('IsUse', true),
- and,
- ['BusinessFieldId', '<>', 1],
- ]);
- }
- $.when(
- warehouseDataSource.load())
- .done(function (dbWarehouses) {
- viewModel.warehouses(dbWarehouses);
- var warehouses = viewModel.warehouses();
- if (!_.isEmpty(warehouses)) {
- viewModel.dataModel.WarehouseId(warehouses[0].WarehouseId());
- }
- deferredForSearch.resolve();
- });
- // hcLee 2016 05 02 창고도 변경
- }
- });
- viewModel.popupVisible.subscribe(function (visible) {
- if (!visible) {
- materials([]);
- }
- });
- viewModel.materialStoredPopupToolbarItems = materialStoredPopupToolbarItems;
- viewModel.dataModel.PurchaseOrderTitle = ko.observable();
- // 2016 01 11
- viewModel.dataModel.PurchaseOrderReason = ko.observable();
- viewModel.dataModel.BusinessFieldName = ko.observable();
- viewModel.dataModel.ProgressName = ko.observable();
- viewModel.dataModel.StoredUserName = ko.observable();
- viewModel.dataModel.WarehouseName = ko.observable();
- viewModel.dataModelMaterial = dataModelMaterial;
- viewModel.businessFields = businessFields;
- viewModel.warehouses = warehouses;
- viewModel.materialDataGridOptions = utils.datagrid.defaultOptions({
- width: 970,
- visible: true,
- selection: { mode: 'multiple', allowSelectAll: true }, // hcLee 2015 11 26추가
- pager: {
- //showPageSizeSelector: false,
- //allowedPageSizes: []
- },
- paging: {
- pageSize: 15,
- enabled: true
- },
- dataSource: materials,
- columns: materialFactory.getColumns([
- { dataField: 'MaterialCode', width: '25%', visible: false },
- {
- dataField: 'FirstClassId', width: '15%', 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: '15%', 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: '15%', 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: 'Name', width: '30%' },
- { dataField: 'Standard', width: '30%', alignment: 'center', caption: '규격' },
- { dataField: 'Unit', width: '15%', alignment: 'center', caption: '단위' },
- { dataField: 'MaterialCount', width: '15%', alignment: 'center', caption: '발주수량', format: 'currency' },
- { dataField: 'PossibleStoredCount', width: '25%', alignment: 'center', caption: '입고가능수량', format: 'currency' },
- {
- dataField: 'StoredCount', width: '15%', alignment: 'center', caption: '입고수량',
- cellTemplate: utils.datagrid.getNumberBoxDataGridTemplateFunc({
- min: 0,
- max: 1000000,
- dataField: 'StoredCount',
- convertValueWhenValueChanged: function (value) {
- return Math.max(1, value);
- }
- })
- },
- {
- dataField: 'UnitCost', width: '15%', alignment: 'center', caption: $G('unitCost'), format: 'currency'
- }
- ]),
- cellClick: function (e) {
- if (viewModel.isEditModeInPopup()) {
- utils.datagrid.cellClickEventForDataGridTemplate(e, 'StoredCount');
- }
- },
- contentReadyAction: function (e) { materialGridView = e.component; },
- rowPrepared: function (rowElement, rowInfo) {
- if (rowInfo.rowType == 'data') {
- var data = rowInfo.data;
- if (data.MaterialId() === viewModel.dataModel.MaterialId()) {
- var color;
- if (data.MaterialCount() === viewModel.dataModel.StoredCount()) { color = 'rgba(0,255,0,0.1)'; }
- else { color = 'rgba(255,0,0,0.1)'; }
- rowElement.css('background-color', color);
- }
- }
- },
- rowClick: function (clickRow) {
- var data = clickRow.data;
- if (viewModel.isEditModeInPopup()) {
- dataModelMaterial.MaterialId(data.MaterialId());
- dataModelMaterial.Name(data.Name());
- dataModelMaterial.Unit(data.Unit());
- dataModelMaterial.ThirdClassId(data.ThirdClassId());
- dataModelMaterial.FirstClassId(data.FirstClassId());
- dataModelMaterial.SecondClassId(data.SecondClassId());
- dataModelMaterial.Standard(data.Standard());
- viewModel.dataModel.StoredCount(data.StoredCount());
- viewModel.dataModel.UnitCost(data.UnitCost());
- }
- }
- });
- viewModel.popup = popup;
- viewModel.handleSecondClassChangedValueInSearchView = handleSecondClassChangedValueInSearchView;
- viewModel.handleFirstClassChangedValueInSearchView = handleFirstClassChangedValueInSearchView;
- viewModel.facilityClasses = facilityClasses;
- return viewModel;
- };
|