BemsWebApplication.ServicePartner = function (params, viewInfo) { 'use strict'; var CmPartnerDataSource = BemsWebApplication.db.createDataSource('CmPartner'); var PartnerInfo = ko.observableArray(); var RowName; var partnerTypeDataSource = BemsWebApplication.db.createDataSource('CmPartnerType', false, false, true); var partnerTypes = ko.observableArray(); var partnerFactory = BWA.Factory.Partner; var dataSourceOptions = { select: [ 'SiteId', 'PartnerId', 'PartnerTypeId', 'Name', 'PhoneNo', 'FaxNo', 'RepresentativeName', 'SalesName', 'SalesPhoneNo', 'AddressZip1', 'AddressZip2', 'Address1', 'Adderss2', 'HomepageUri', 'Note', 'IsUse', 'CmPartnerType/Name' ], expand: [ 'CmPartnerType' ], extendOptions: { forceOriginalField: true }, filter: [ ['SiteId', '=', BWA.UserInfo.SiteId()], 'and', ['PartnerTypeId', '=', 2] ] }; var viewModel = BWA.DataGrid.createViewWithDataGrid(params, viewInfo, 'CmPartner', { dataSourceOptions: dataSourceOptions, columns: [ { dataField: 'PartnerId', caption: $G('number'), width: '10%', alignment: 'center', allowFiltering: false, sortOrder: 'desc' }, { dataField: 'Name', caption: '거래처명', width: '35%', alignment: 'center' }, { dataField: 'RepresentativeName', caption: $G('companyRepresentativeName'), width: '15%', alignment: 'center' }, { dataField: 'PhoneNo', caption: $G('companyPhoneNo'), width: '15%', alignment: 'center' }, utils.datagrid.columnIsUse('10%') ], searchViewItems: [{ id: 'Name' }], handleViewShowing: function (dataModel) { $.when( partnerTypeDataSource.load() ).done(function (partnerTypeDataResult) { partnerTypes(partnerTypeDataResult[0]); }); }, handlePopupShowing: function (isNewInPopup, dataViewModel) { if (isNewInPopup()) { // 신규등록인 경우 // UI 에는별도로 표시하지 않음 dataViewModel.PartnerTypeId(2); } CmPartnerDataSource.filter([ ["SiteId", "=", BWA.UserInfo.SiteId()], 'and', ["PartnerTypeId", "=", 2] ]); CmPartnerDataSource.load().done(function (result) { PartnerInfo(result); }); }, handleDataGridRowClick: function (id, dataGrid, clickRow, popupVisible) { var data = clickRow.data; RowName = data.Name; popupVisible(true); }, beforeInsertingDataViewModel: function (dataModel, dbModelId) { var dfd = $.Deferred(); var isDuplicated = false; for (var i = 0; i < PartnerInfo().length; i++) { if (dataModel.Name() == PartnerInfo()[i].Name()) { isDuplicated = true; } } if (!BWA.DataUtil.isValidInputValue(dataModel.Name()) || dataModel.PhoneNo() == null || dataModel.RepresentativeName() == null) return dfd.resolve(false, '저장 혹은 수정 반드시 필수 입력 정보(*)를 모두 입력하셔야 합니다 (앞뒤공백 허용안함)'); else { if (isDuplicated) return dfd.resolve(false, '이미 동일 정보가 존재합니다.'); else return dfd.resolve(true); } }, beforeUpdateDataViewModel: function () { var isDuplicated = false; for (var i = 0; i < PartnerInfo().length; i++) { if (viewModel.dataModel.Name() == PartnerInfo()[i].Name() && (RowName() != PartnerInfo()[i].Name())) { isDuplicated = true; } } if (!BWA.DataUtil.isValidInputValue(viewModel.dataModel.Name()) || (_.isEmpty(viewModel.dataModel.Name()) || _.isEmpty(viewModel.dataModel.PhoneNo()) || _.isEmpty(viewModel.dataModel.RepresentativeName()))) { utils.toast.show('저장 혹은 수정 반드시 필수 입력 정보(*)를 모두 입력하셔야 합니다 (앞뒤공백 허용안함)', 'error'); return 0; } else { if (isDuplicated) { utils.toast.show('이미 동일 이름이 존재합니다.', 'error'); return 0; } else return 2; } }, }); return viewModel; };