123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298 |
- $(function () {
- 'use strict';
- BemsWebApplication.Popup.MaterialStored = {
- create: function (viewInfo, viewModel, forApprovalOptions) {
- var material = BWA.db.createDataSource('FmsMaterialStored', true, true),
- materials = ko.observableArray(),
- dataModelMaterial = new BWA.FmsMaterialViewModel();
- var eq = BWA.DataUtil.constructEqualFilter, and = BWA.DataUtil.andFilter;
- var materialFactory = BWA.Factory.Material,
- purchaseProgressCode = BWA.Code.PurchaseProgress,
- materialGridView,
- materialDataGridOptions = undefined;
- var materialsDataSource = materialFactory.getBasicDataSourceRef({
- dbModeIId: 'FmsMaterialPurchaseRequestMaterial',
- primaryKeyDataField: 'PurchaseRequestId'
- }),
- materialsForPurchaseRequestDataSource = materialFactory.getBasicDataSourceRef({
- dbModeIId: 'FmsMaterialPurchaseRequestMaterial',
- primaryKeyDataField: 'PurchaseRequestId',
- moreSelectFields: [
- 'FmsMaterial/Unit', 'FmsMaterial/Standard',
- 'FmsMaterial/TradeCompanyId',
- 'FmsMaterial/FinalPrice']
- });
- function loadMaterialsInPurchaseRequest(purchaseRequest) {
- materialsForPurchaseRequestDataSource.filter([
- eq('SiteId', purchaseRequest.SiteId),
- and,
- eq('BusinessFieldId', purchaseRequest.BusinessFieldId),
- and,
- eq('PurchaseRequestId', purchaseRequest.PurchaseRequestId)
- ]);
- // 선택된 구매요청에 대한 자재들을 로드한다.
- var promise = materialsForPurchaseRequestDataSource.load();
- promise.then(function (dbMaterials) {
- var companies = [];
- materials(_.map(dbMaterials, function (m) {
- m.Unit = m['FmsMaterial/Unit'];
- m.Standard = m['FmsMaterial/Standard'];
- m.UnitCost = m['FmsMaterial/FinalPrice'];
- if (m.UnitCost() === null) {
- m.UnitCost(0);
- }
- return m;
- }));
- });
- }
- // 구매신청 정보가 저장된 후에 호출 된다.
- // 등록이면 responseKey가 있고, 수정이면 없다.
- function handleAfterSave(responseKey, response) {
- BWA.db.FmsMaterialPurchaseRequest.update({
- SiteId: response.SiteId,
- BusinessFieldId: response.BusinessFieldId,
- PurchaseRequestId: response.PurchaseRequestId
- }, {
- ProgressId: $Code.PurchaseProgress.MATERIAL_STORED
- });
- }
- function handlePopupShowing(isNewInPopup, dataModel) {
- var userInfo = BWA.UserInfo;
- if (isNewInPopup()) {
- var progressId = $Code.PurchaseProgress.MATERIAL_STORED;
- dataModel.ProgressName(purchaseProgressCode.getName(progressId));
- dataModel.BusinessFieldId(userInfo.BusinessFieldId());
- dataModel.StoredUserId(userInfo.UserId());
- dataModel.StoredUserName(userInfo.Name());
- dataModel.StoredDate(new Date());
- }
- }
- function handlePopupShown(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;
- dataViewModel.BusinessFieldId(userInfo.BusinessFieldId());
- dataViewModel.BusinessFieldName(userInfo.BusinessFieldName());
- }
- }
- function handleAfterLoadingModelByKey(data, dataViewModel) {
- var progressId = dataViewModel.ProgressId();
- if (progressId !== $Code.PurchaseProgress.MATERIAL_STORED) {
- viewModel.visibleEditButton(false);
- viewModel.visibleDeleteButton(false);
- }
- dataViewModel.ProgressName(purchaseProgressCode.getName(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) {
- materials(dbMaterials);
- });
- }
- function handleBeforeShowingPopupForEdit(rowData, dataViewModel) {
- dataViewModel.BusinessFieldName = $KoSet(dataViewModel.BusinessFieldName, rowData['CmBusinessField/Name']);
- dataViewModel.StoredUserName = $KoSet(dataViewModel.StoredUserName, rowData['CmUser/Name']);
- dataViewModel.PurchaseRequestTitle = $KoSet(dataViewModel.PurchaseRequestTitle, rowData['FmsMaterialPurchaseRequest/Title']);
- dataViewModel.ApprovalUserName = $KoSet(dataViewModel.ApprovalUserName, rowData['CmUser1/Name']);
- dataViewModel.WarehouseName = $KoSet(dataViewModel.WarehouseName, rowData['FmsMaterialWarehouse/Name']);
- dataViewModel.ProgressId = $KoSet(dataViewModel.ProgressId, rowData['FmsMaterialPurchaseRequest/ProgressId']);
- dataViewModel.ProgressName = $KoSet(dataViewModel.ProgressName, rowData['FmsMaterialPurchaseRequest/FmsMaterialCodeProgress/Name']);
- dataModelMaterial.Name(rowData['FmsMaterial/Name']());
- dataModelMaterial.Unit(rowData['FmsMaterial/Unit']());
- dataModelMaterial.Standard(rowData['FmsMaterial/Standard']());
- }
- function handleButtonSearchPurchaseRequest() {
- viewModel.purchaseRequestSearchPopup.show();
- }
- function handleButtonSearchMaterial() {
- viewModel.materialSearchPopup.show();
- }
- viewModel.popupVisible.subscribe(function (visible) {
- if (!visible) {
- materials([]);
- }
- });
- viewModel.dataModel.StoredCount.subscribe(function (count) {
- viewModel.dataModel.StockCount(count);
- });
- viewModel.dataModel.PurchaseRequestTitle = ko.observable();
- viewModel.dataModel.BusinessFieldName = ko.observable();
- viewModel.dataModel.ProgressName = ko.observable();
- viewModel.dataModel.StoredUserName = ko.observable();
- viewModel.dataModel.WarehouseName = ko.observable();
- materialDataGridOptions = utils.datagrid.defaultOptions({
- width: 650,
- visible: true,
- pager: {
- showPageSizeSelector: false,
- allowedPageSizes: []
- },
- dataSource: materials,
- columns: materialFactory.getColumns([
- { dataField: 'MaterialCode', width: '35%' },
- { dataField: 'Name', width: '40%' },
- { dataField: 'MaterialCount', width: '15%', alignment: 'center', caption: $G('materialCount') },
- {
- dataField: 'UnitCost', width: '20%', alignment: 'center', caption: $G('unitCost')
- }
- ]),
- contentReadyAction: function (e) {
- materialGridView = e.component;
- },
- rowPrepared: function (rowElement, rowInfo) {
- 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.Standard(data.Standard());
- viewModel.dataModel.MaterialId(data.MaterialId());
- viewModel.dataModel.StoredCount(data.MaterialCount());
- viewModel.dataModel.UnitCost(data.UnitCost());
- }
- }
- });
- if (_.isObject(forApprovalOptions) === false) {
- viewModel.materialSearchPopup = BWA.Popup.Material.create(viewModel, {
- isMultipleSelect: false,
- onSelectedMaterials: function (selectedMaterial) {
- var purchaseRequestId = viewModel.dataModel.PurchaseRequestId();
- var dm = viewModel.dataModel;
- var m = selectedMaterial[0];
- viewModel.dataModel.MaterialId(m.MaterialId);
- viewModel.dataModel.UnitCost(m.FinalPrice);
- dataModelMaterial.fromJS(m);
- materialGridView.refresh();
- }
- });
- viewModel.purchaseRequestSearchPopup = BWA.Popup.PurchaseRequestSearch.create(viewModel, {
- filter: [
- eq('SiteId', BWA.UserInfo.SiteId()),
- and,
- [ // 구매요청에서 자재입고 승인 전까지 입고가 가능하다.
- ['ProgressId', '>=', $Code.PurchaseProgress.PURCHASE_REQUEST_APPROVAL],
- and,
- ['ProgressId', '<', $Code.PurchaseProgress.MATERIAL_STORED_APPROVAL]
- ]
- ],
- onSelectedPurchaseRequest: function (purchaseRequest) {
- var purchaseRequestId = purchaseRequest.PurchaseRequestId;
- loadMaterialsInPurchaseRequest(purchaseRequest);
- viewModel.dataModel.PurchaseRequestId(purchaseRequest.PurchaseRequestId);
- viewModel.dataModel.PurchaseRequestTitle(purchaseRequest.Title);
- }
- });
- }
- return {
- dataModelMaterial: dataModelMaterial,
- materialDataGridOptions: materialDataGridOptions,
- handleAfterLoadingModelByKey: handleAfterLoadingModelByKey,
- handleAfterSave: handleAfterSave,
- handlePopupShowing: handlePopupShowing,
- handlePopupShown: handlePopupShown,
- handleButtonSearchPurchaseRequest: handleButtonSearchPurchaseRequest,
- handleBeforeShowingPopupForEdit: handleBeforeShowingPopupForEdit,
- handleButtonSearchMaterial: handleButtonSearchMaterial,
- };
- }
- }
- });
|