123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237 |
- $(function () {
- 'use strict';
- BemsWebApplication.Popup.PurchaseOrderStatusByPurchaseRequest = {
- create: function (viewInfo, viewModel, forApprovalOptions) {
- var materials = ko.observableArray();
- var materialFactory = BWA.Factory.Material,
- purchaseProgressCode = BWA.Code.PurchaseProgress,
- materialGridView,
- materialDataGridOptions = undefined;
- var materialsDataSource = materialFactory.getBasicDataSourceRef({
- dbModeIId: 'FmsMaterialPurchaseRequestMaterial',
- primaryKeyDataField: 'PurchaseRequestId'
- }),
- materialsForPurchaseOrderDataSource = materialFactory.getBasicDataSourceRef({
- dbModeIId: 'FmsMaterialPurchaseOrderMaterial',
- primaryKeyDataField: 'PurchaseOrderId',
- expand: ['FmsMaterialPurchaseOrder'],
- moreSelectFields: [
- 'FmsMaterialPurchaseOrder/StoredDueDate',
- 'FmsMaterialPurchaseOrder/OrderDate',
- 'FmsMaterial/TradeCompanyId',
- 'FmsMaterial/FinalPrice'
- ]
- });
- function handlePopupShowing(isNewInPopup, dataModel) {
- $("#gridContainer2").dxDataGrid({
- paging: {
- pageSize: 12,
- enabled: true
- }
- });
- var userInfo = BWA.UserInfo;
- if (isNewInPopup()) {
- var progressId = $Code.PurchaseProgress.PURCHASE_REQUEST;
- if (userInfo.isDependBusinessField(viewInfo.viewName)) {
- BWA.db.CmBusinessField.byKey({
- SiteId: userInfo.SiteId(),
- BusinessFieldId: userInfo.BusinessFieldId()
- }).done(function (businessField) {
- dataModel.BusinessFieldName(businessField.Name);
- });
- }
- dataModel.ProgressId(progressId);
- dataModel.ProgressName(purchaseProgressCode.getName(progressId));
- dataModel.BusinessFieldId(userInfo.BusinessFieldId());
- dataModel.RequestUserId(userInfo.UserId());
- dataModel.RequesterName(userInfo.Name());
- dataModel.RequestDate(new Date());
- dataModel.PurchaseHopeDate(moment().add(1, 'd').toDate());
- }
- }
- function handleDeleteSelectedMaterials() {
- }
- function handlePopupShown(editMode, isNew, dataViewModel) {
- }
- // 구매신청 정보가 저장된 후에 호출 된다.
- // 등록이면 responseKey가 있고, 수정이면 없다.
- function handleAfterSave(responseKey) {
- }
- 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())
- ]);
- materialsForPurchaseOrderDataSource.filter([
- eq('SiteId', dataViewModel.SiteId()),
- and,
- eq('BusinessFieldId', dataViewModel.BusinessFieldId()),
- and,
- eq('FmsMaterialPurchaseOrder/PurchaseRequestId', dataViewModel.PurchaseRequestId())
- ]);
- $.when(
- materialsDataSource.load(),
- materialsForPurchaseOrderDataSource.load())
- .done(function (dbRequestMaterials, dbOrderMaterials) {
- dbRequestMaterials = dbRequestMaterials[0];
- dbOrderMaterials = dbOrderMaterials[0];
- var materialArray = [];
- _.each(dbRequestMaterials, function (requestMaterial) {
- var materialId = requestMaterial.MaterialId();
- var material = BWA.DataUtil.convertViewModelToJS(requestMaterial);
- var orderMaterial = BWA.DataUtil.popFromArray(dbOrderMaterials, function (m) {
- return (m.MaterialId() === materialId);
- });
- if (orderMaterial) {
- material.PurchaseOrderCount = orderMaterial.MaterialCount();
- material.StoredDueDate = orderMaterial['FmsMaterialPurchaseOrder/StoredDueDate']();
- material.OrderDate = orderMaterial['FmsMaterialPurchaseOrder/OrderDate']();
- }
- materialArray.push(material);
- });
- if (_.isEmpty(dbOrderMaterials) === false) {
- _.each(dbOrderMaterials, function (m) {
- // 같은 자재에 대해 발주가 여러개라면 더해준다.
- var dupOrderMaterial = _.find(materialArray, function (mm) {
- return mm.MaterialId === m.MaterialId();
- });
- if (dupOrderMaterial) {
- dupOrderMaterial.PurchaseOrderCount += m.MaterialCount();
- return;
- }
- var material = BWA.DataUtil.convertViewModelToJS(m);
- material.PurchaseOrderCount = m.MaterialCount();
- delete material.MaterialCount;
- material.StoredDueDate = m['FmsMaterialPurchaseOrder/StoredDueDate']();
- material.OrderDate = m['FmsMaterialPurchaseOrder/OrderDate']();
- materialArray.push(material);
- });
- }
- materials(materialArray);
- });
- }
- function handleBeforeShowingPopupForEdit(rowData, dataViewModel) {
- dataViewModel.BusinessFieldName = $KoSet(dataViewModel.BusinessFieldName, rowData['CmBusinessField/Name']);
- dataViewModel.RequesterName = $KoSet(dataViewModel.RequesterName, rowData['CmUser/Name']);
- dataViewModel.ApprovalUserName = $KoSet(dataViewModel.ApprovalUserName, rowData['CmUser1/Name']);
- dataViewModel.PurchaseTypeName = $KoSet(dataViewModel.PurchaseTypeName, rowData['FmsMaterialCodePurchaseType/Name']);
- }
- viewModel.popupVisible.subscribe(function (visible) {
- if (!visible) {
- materials([]);
- }
- });
- viewModel.dataModel.BusinessFieldName = ko.observable();
- viewModel.dataModel.ProgressName = ko.observable();
- viewModel.dataModel.RequesterName = ko.observable();
- viewModel.dataModel.PurchaseTypeName = ko.observable();
- var materialColumns = materialFactory.getColumns([
- { dataField: 'MaterialCode', width: '20%' },
- { dataField: 'Name', width: '30%' },
- { dataField: 'Standard', width: '30%', alignment: 'center', caption: '규격' },
- { dataField: 'Unit', width: '15%', alignment: 'center', caption: '단위' }
- ]);
- materialDataGridOptions = utils.datagrid.defaultOptions({
- width: 840,
- visible: viewModel.viewModeInPopup,
- pager: {
- showPageSizeSelector: false,
- allowedPageSizes: []
- },
- dataSource: materials,
- columns: materialColumns.concat([
- { dataField: 'MaterialCount', width: '15%', alignment: 'center', caption: '구매신청수량', format: 'currency' },
- { dataField: 'PurchaseOrderCount', width: '15%', alignment: 'center', caption: $G('purchaseOrderCount'), format: 'currency' },
- { dataField: 'StoredDueDate', width: '15%', alignment: 'center', caption: $G('storedDueDate') },
- ]),
- rowPrepared: function (rowElement, rowInfo) {
- if (rowInfo.rowType == 'data') {
- var data = rowInfo.data;
- if (data.MaterialCount !== data.PurchaseOrderCount) {
- rowElement.css('background-color', 'rgba(255,0,0,0.1)');
- }
- }
- }
- });
- return {
- materialDataGridOptions: materialDataGridOptions,
- handleAfterLoadingModelByKey: handleAfterLoadingModelByKey,
- handlePopupShowing: handlePopupShowing,
- handlePopupShown: handlePopupShown,
- handleBeforeShowingPopupForEdit: handleBeforeShowingPopupForEdit,
- };
- }
- }
- });
|