$(function () { 'use strict'; BemsWebApplication.Popup.MaterialStockAdjustment2 = { create: function (viewInfo, viewModel, forApprovalOptions) { var materials = ko.observableArray(), materialsInView = ko.observableArray(), businessFields = ko.observableArray(); var materialFactory = BWA.Factory.Material, //purchaseProgressCode = BWA.Code.PurchaseProgress, materialGridView, materialDataGridOptions, modifiableMaterialDataGridOptions = undefined; var materialsDataSource = materialFactory.getBasicDataSourceRef({ dbModeIId: 'FmsMaterialRelease', primaryKeyDataField: 'MaterialReleaseId' }); function isValidateWithFunction(errorMessage) { if (_.isEmpty(materials())) { errorMessage.message = '구매요청한 자재가 없습니다.'; return false; } return true; } function handlePopupShowing(isNewInPopup, dataModel) { //viewModel.isEditModeInPopup.subscribe(function (value) { // if (value) { // visibleApprovalButton(false); // } // else { // if (viewModel.dataModel.IsConfirmed()) { // visibleApprovalButton(false); // } else { // visibleApprovalButton(true); // } // } // //utils.toast.show('isEditModeInPopup : ' + value); //}); //viewModel.isNewInPopup.subscribe(function (value) { // visibleApprovalButton(false); //}); $("#gridContainer2").dxDataGrid({ paging: { pageSize: 9, enabled: true } }); $("#gridContainer3").dxDataGrid({ paging: { pageSize: 9, enabled: true } }); var userInfo = BWA.UserInfo; if (isNewInPopup()) { if (userInfo.isDependBusinessField(viewInfo.viewName)) { BWA.db.CmBusinessField.byKey({ SiteId: userInfo.SiteId(), BusinessFieldId: userInfo.BusinessFieldId() }).done(function (businessField) { dataModel.BusinessFieldName(businessField.Name); }); } dataModel.BusinessFieldId(userInfo.BusinessFieldId()); dataModel.AdjustmentUserId(userInfo.UserId()); dataModel.AdjustmentUserName(userInfo.Name()); dataModel.IsConfirmed(false); dataModel.AdjustmentTypeId(1); dataModel.ReleaseTypeId(2); dataModel.ReleaseTypeName(viewModel.releaseTypes()[1].Name()); dataModel.ReleaseDate(new Date()); dataModel.ReleaseTotalCost(0); } } function handleDeleteSelectedMaterials() { var rows = materialGridView.getSelectedRowsData(); if (_.isEmpty(rows)) { utils.toast.show('선택된 자재가 없습니다.', 'error'); return; } _.each(rows, function (row) { var array = materials(); var length = array.length; var id = row.MaterialId(); for (var i = 0 ; i < length ; i++) { if (id === array[i].MaterialId()) { materials().splice(i, 1); break; } } }); materialGridView.refresh(); } function handlePopupShown(editMode, isNew, dataViewModel) { /* if (isNew) { viewModel.visibleApprovalButton(false); } else { if (viewModel.dataModel.IsConfirmed()) { viewModel.visibleApprovalButton(false); viewModel.visibleEditButton(false); viewModel.visibleDeleteButton(false); } else { viewModel.visibleApprovalButton(true); viewModel.visibleEditButton(true); viewModel.visibleDeleteButton(true); } } */ } function handleAfterLoadingModelByKey(data, dataViewModel) { var eq = BWA.DataUtil.constructEqualFilter; var and = BWA.DataUtil.andFilter; materialsDataSource.filter([ eq('SiteId', dataViewModel.SiteId()), and, eq('BusinessFieldId', dataViewModel.BusinessFieldId()), and, eq('MaterialReleaseId', dataViewModel.MaterialReleaseId()) ]); materialsDataSource.load().done(function (dbMaterials) { materialsInView(dbMaterials); }); } function handleBeforeShowingPopupForEdit(rowData, dataViewModel) { dataViewModel.BusinessFieldName(rowData['CmBusinessField/Name']()); dataViewModel.AdjustmentUserName(rowData['CmUser1/Name']()); dataViewModel.ReleaseTypeName(rowData['FmsMaterialCodeReleaseType/Name']()); dataViewModel.AdjustmentTypeName(rowData['FmsMaterialCodeAdjustmentType/Name']()); dataViewModel.ReleaseTotalCost(rowData['ReleaseTotalCost']()); } viewModel.popupVisible.subscribe(function (visible) { if (!visible) { materialsInView([]); materials([]); } }); viewModel.isEditModeInPopup.subscribe(function (isEditMode) { if (isEditMode) { viewModel.visibleApprovalButton(false); materials(materialsInView.slice(0)); } else { viewModel.visibleApprovalButton(true); } }); viewModel.dataModel.BusinessFieldName = ko.observable(); viewModel.dataModel.AdjustmentUserName = ko.observable(); viewModel.dataModel.ApprovalUserName = ko.observable(); viewModel.dataModel.ReleaseTypeName = ko.observable(); viewModel.dataModel.AdjustmentTypeName = ko.observable(); viewModel.dataModel.ReleaseTotalCost = ko.observable(); var materialColumns = materialFactory.getColumns([ { dataField: 'MaterialCode', width: '30%' }, { dataField: 'Name', width: '30%' }, { dataField: 'StockCountByPoint', caption: '재고수량', alignment: 'center', width: '20%', format: 'currency' }, ]); materialDataGridOptions = utils.datagrid.defaultOptions({ width: 500, visible: viewModel.viewModeInPopup, pager: { showPageSizeSelector: false, allowedPageSizes: [] }, dataSource: materialsInView, columns: materialColumns.concat([ { dataField: 'MaterialCount', width: '20%', alignment: 'center', caption: $G('materialCount'), format: 'currency' } ]) }); if (_.isObject(forApprovalOptions) === false) { modifiableMaterialDataGridOptions = utils.datagrid.defaultOptions({ width: 500, pager: { showPageSizeSelector: false, allowedPageSizes: [] }, visible: viewModel.isEditModeInPopup, dataSource: materials, selection: { mode: 'multiple', allowSelectAll: true }, columns: materialColumns.concat([ { dataField: 'MaterialCount', width: '20%', type: 'number', caption: $G('materialCount'), alignment: 'center', cellTemplate: utils.datagrid.getNumberBoxDataGridTemplateFunc({ min: 1, max: 1000000, dataField: 'MaterialCount', convertValueWhenValueChanged: function (value) { return Math.max(1, value); } }) }]), cellClick: function (e) { utils.datagrid.cellClickEventForDataGridTemplate(e, 'MaterialCount'); }, contentReadyAction: function (e) { materialGridView = e.component; }, }); viewModel.materialSearchPopup = BWA.Popup.Material.create(viewModel, { isMultipleSelect: true, onSelectedMaterials: function (selectedMaterials) { var materialReleaseId = viewModel.dataModel.MaterialReleaseId(); _.each(selectedMaterials, function (sm) { // 어차피 SiteId와 BusinessField는 동일 할 수 밖에 없으므로 비교하지 않는다. var found = _.some(materials(), function (m) { try { return m.MaterialId() === sm.MaterialId(); } catch (e) { return m.MaterialId === sm.MaterialId; } }); if (found) return; materials.push({ SiteId: sm.SiteId, //PurchaseRequestId: ko.observable(purchaseRequestId), MaterialId: sm.MaterialId, Name: sm.Name, MaterialCode: sm.MaterialCode, //MaterialCount: sm.MaterialCount, MaterialCount: ko.observable(1), FinalPrice: sm.FinalPrice, // 자재정산은 반납도 하는 관계로 수량 한도를 설정하지 않음 StockCountByPoint: sm.StockCount }); }); materialGridView.refresh(); } }); } return { materialGridView: materialGridView, materials: materials, businessFields: businessFields, isValidateWithFunction: isValidateWithFunction, materialDataGridOptions: materialDataGridOptions, modifiableMaterialDataGridOptions: modifiableMaterialDataGridOptions, handleAfterLoadingModelByKey: handleAfterLoadingModelByKey, //handleAfterSave: handleAfterSave, handlePopupShowing: handlePopupShowing, handlePopupShown: handlePopupShown, handleBeforeShowingPopupForEdit: handleBeforeShowingPopupForEdit, handleDeleteSelectedMaterials: handleDeleteSelectedMaterials }; } } }); // 구매신청 정보가 저장된 후에 호출 된다. // 등록이면 responseKey가 있고, 수정이면 없다. //function handleAfterSave(responseKey) { //var array = materials(); //if (_.isEmpty(array)) { // return; //} //var siteId, purchaseRequestId, businessFieldId; //if (_.isUndefined(responseKey)) { // var dataModel = viewModel.dataModel; // siteId = dataModel.SiteId(); // businessFieldId = dataModel.BusinessFieldId(); // purchaseRequestId = dataModel.PurchaseRequestId(); //} //else { // siteId = responseKey.SiteId; // businessFieldId = responseKey.BusinessFieldId; // purchaseRequestId = responseKey.PurchaseRequestId; //} //var postData; //var parameters = { // SiteId: siteId, // BusinessFieldId: businessFieldId, // PurchaseRequestId: purchaseRequestId //}; //postData = _.map(array, function(m) { // return { // SiteId: siteId, // BusinessFieldId: businessFieldId, // PurchaseRequestId: purchaseRequestId, // MaterialId: m.MaterialId(), // MaterialCount: m.MaterialCount() // }; //}); //BWA.api.post('FmsMaterialPurchaseRequestMaterial', postData, parameters); //} //function handleAfterLoadingModelByKey(data, dataViewModel) { //if (dataViewModel.ProgressId() !== $Code.PurchaseProgress.PURCHASE_REQUEST) { // viewModel.visibleEditButton(false); // viewModel.visibleDeleteButton(false); //} //dataViewModel.ProgressName(purchaseProgressCode.getName(dataViewModel.ProgressId())); //var eq = BWA.DataUtil.constructEqualFilter; //var and = BWA.DataUtil.andFilter; //materialsDataSource.filter([ // eq('SiteId', dataViewModel.SiteId()), // and, // eq('BusinessFieldId', dataViewModel.BusinessFieldId()), // and, // eq('PurchaseRequestId', dataViewModel.PurchaseRequestId()) //]); //materialsDataSource.load().done(function(dbMaterials) { // materialsInView(dbMaterials); //}); //}