c1bea3544078cd20d6f1c3068ad0d9061b399a71.svn-base 4.9 KB

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