e5cd75f15bf0f254b2eb1943e95141a091a58426.svn-base 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. BemsWebApplication.ConstructionPartner = function (params, viewInfo) {
  2. 'use strict';
  3. var CmPartnerDataSource = BemsWebApplication.db.createDataSource('CmPartner');
  4. var PartnerInfo = ko.observableArray();
  5. var RowName;
  6. var partnerTypeDataSource = BemsWebApplication.db.createDataSource('CmPartnerType', false, false, true);
  7. var partnerTypes = ko.observableArray();
  8. var partnerFactory = BWA.Factory.Partner;
  9. var SiteID = BWA.UserInfo.SiteId();
  10. var eq = BWA.DataUtil.constructEqualFilter;
  11. var dataSourceOptions = {
  12. select: [
  13. 'SiteId',
  14. 'PartnerId',
  15. 'PartnerTypeId',
  16. 'Name',
  17. 'PhoneNo',
  18. 'FaxNo',
  19. 'RepresentativeName',
  20. 'SalesName',
  21. 'SalesPhoneNo',
  22. 'AddressZip1',
  23. 'AddressZip2',
  24. 'Address1',
  25. 'Adderss2',
  26. 'HomepageUri',
  27. 'Note',
  28. 'IsUse',
  29. 'CmPartnerType/Name'
  30. ],
  31. expand: [
  32. 'CmPartnerType'
  33. ],
  34. extendOptions: {
  35. forceOriginalField: true
  36. },
  37. filter: [
  38. eq('SiteId', SiteID),
  39. 'and',
  40. eq('PartnerTypeId', 1)
  41. ]
  42. };
  43. var viewModel = BWA.DataGrid.createViewWithDataGrid(params, viewInfo, 'CmPartner', {
  44. dataSourceOptions: dataSourceOptions,
  45. columns: [
  46. { dataField: 'PartnerId', caption: $G('number'), width: '10%', alignment: 'center', allowFiltering: false, sortOrder: 'desc' },
  47. { dataField: 'Name', caption: '거래처명', width: '35%', alignment: 'center' },
  48. { dataField: 'RepresentativeName', caption: $G('companyRepresentativeName'), width: '15%', alignment: 'center' },
  49. { dataField: 'PhoneNo', caption: $G('companyPhoneNo'), width: '15%', alignment: 'center' },
  50. utils.datagrid.columnIsUse('10%')
  51. ],
  52. searchViewItems: [{ id: 'Name' }],
  53. handleViewShowing: function (dataModel) {
  54. $.when(
  55. partnerTypeDataSource.load()
  56. ).done(function (partnerTypeDataResult) {
  57. partnerTypes(partnerTypeDataResult[0]);
  58. });
  59. },
  60. handlePopupShowing: function (isNewInPopup, dataViewModel) {
  61. if (isNewInPopup()) { // 신규등록인 경우
  62. // UI 에는별도로 표시하지 않음
  63. dataViewModel.PartnerTypeId(1);
  64. }
  65. CmPartnerDataSource.filter([
  66. ["SiteId", "=", BWA.UserInfo.SiteId()],
  67. 'and',
  68. ["PartnerTypeId", "=", 1]
  69. ]);
  70. CmPartnerDataSource.load().done(function (result) {
  71. PartnerInfo(result);
  72. });
  73. },
  74. handleDataGridRowClick: function (id, dataGrid, clickRow, popupVisible) {
  75. dataGrid.clearSelection();
  76. var data = clickRow.data;
  77. RowName = data.Name;
  78. popupVisible(true);
  79. },
  80. beforeInsertingDataViewModel: function (dataModel, dbModelId) {
  81. var dfd = $.Deferred();
  82. var isDuplicated = false;
  83. for (var i = 0; i < PartnerInfo().length; i++) {
  84. if (dataModel.Name() == PartnerInfo()[i].Name()) {
  85. isDuplicated = true;
  86. }
  87. }
  88. if (!BWA.DataUtil.isValidInputValue(dataModel.Name()))
  89. return dfd.resolve(false, '저장 혹은 수정 반드시 필수 입력 정보(*)를 모두 입력하셔야 합니다 (앞뒤공백 허용안함)');
  90. else {
  91. if (isDuplicated)
  92. return dfd.resolve(false, '이미 동일 정보가 존재합니다.');
  93. else
  94. return dfd.resolve(true);
  95. }
  96. },
  97. beforeUpdateDataViewModel: function () {
  98. var isDuplicated = false;
  99. for (var i = 0; i < PartnerInfo().length; i++) {
  100. if (viewModel.dataModel.Name() == PartnerInfo()[i].Name() && (RowName() != PartnerInfo()[i].Name())) {
  101. isDuplicated = true;
  102. }
  103. }
  104. if (!BWA.DataUtil.isValidInputValue(viewModel.dataModel.Name())) {
  105. utils.toast.show('저장 혹은 수정 반드시 필수 입력 정보(*)를 모두 입력하셔야 합니다 (앞뒤공백 허용안함)', 'error');
  106. return 0;
  107. }
  108. else {
  109. if (isDuplicated) {
  110. utils.toast.show('이미 동일 이름이 존재합니다.', 'error');
  111. return 0;
  112. }
  113. else
  114. return 2;
  115. }
  116. }
  117. });
  118. return viewModel;
  119. };