123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424 |
- $(function () {
- 'use strict';
- var materialClassForSearch = ko.observableArray();
- var materialClass = ko.observableArray();
- var MaterialCodeClassDataSource = BemsWebApplication.db.createDataSource('FmsMaterialCodeClass');
- BemsWebApplication.Popup.MaterialStockAdjustment = {
- 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) {
- $("#gridContainer2").dxDataGrid({
- paging: {
- pageSize: 9,
- enabled: true
- }
- });
- $("#gridContainer3").dxDataGrid({
- paging: {
- pageSize: 9,
- enabled: true
- }
- });
- 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]);
- }
- materialClassForSearch($SearchView.createArrayOfSelectBox('MaterialClassId', materialClass()));
- });
- viewModel.visibleApprovalButton(false);
- viewModel.visibleEditButton(false);
- viewModel.visibleDeleteButton(false);
- //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);
- //});
- 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 = (typeof (row.MaterialId) == "function" ? row.MaterialId() : row.MaterialId);
- for (var i = 0 ; i < length ; i++) {
- if (id === (typeof (array[i].MaterialId) == "function" ? array[i].MaterialId() : 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: 'FirstClassId', width: '20%', 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: '20%', 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: '20%', 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: 'MaterialCode', width: '30%' },
- { dataField: 'Name', width: '30%' },
- { dataField: 'StockCountByPoint', caption: '재고수량', alignment: 'center', width: '20%', format: 'currency' },
- ]);
- materialDataGridOptions = utils.datagrid.defaultOptions({
- width: 630,
- visible: viewModel.viewModeInPopup,
- pager: {
- //showPageSizeSelector: false,
- //allowedPageSizes: []
- },
- paging: {
- pageSize: 10,
- enabled: true
- },
- 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: 630,
- 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,
- FirstClassId: sm.FirstClassId,
- SecondClassId: sm.SecondClassId,
- ThirdClassId: sm.ThirdClassId,
- //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);
- //});
- //}
|