4ba14351cba9ce7f6373f8702e7b0299f22c841e.svn-base 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. BemsWebApplication.MaterialWarehouse = function(params, viewInfo) {
  2. 'use strict';
  3. var businessFieldDataSource = BemsWebApplication.db.createDataSource('CmBusinessField', true, true, true);
  4. var businessFieldsForSearch = ko.observableArray(),
  5. BusinessFieldName = ko.observableArray(),
  6. businessFields = ko.observableArray();
  7. var eq = BWA.DataUtil.constructEqualFilter,
  8. and = BWA.DataUtil.andFilter;
  9. var deferredForSearch = new $.Deferred();
  10. var MaterialWarehouseInfo = ko.observableArray();
  11. var FmsMaterialWarehouseDataSource = BemsWebApplication.db.createDataSource('FmsMaterialWarehouse');
  12. var RowBusinessFieldId, RowName;
  13. var viewModel = BWA.DataGrid.createViewWithDataGrid(params, viewInfo, 'FmsMaterialWarehouse', {
  14. dataSourceOptions: {
  15. select: ['SiteId', 'WarehouseId', 'BusinessFieldId', 'Name', 'IsUse', 'CmBusinessField/Name'],
  16. expand: ["CmBusinessField"],
  17. extendOptions: {
  18. forceOriginalField: true
  19. },
  20. filter: [
  21. eq('SiteId', BWA.UserInfo.SiteId()),
  22. // 2016 05 02 hcLee
  23. and,
  24. ['BusinessFieldId', '<>', 1],
  25. ]
  26. },
  27. columns: [
  28. { dataField: 'WarehouseId', caption: $G('number'), width: '20%', alignment: 'center' ,sortOrder:'desc' },
  29. { dataField: 'CmBusinessField/Name', caption: $G('businessField'), width: '20%', alignment: 'center' },
  30. { dataField: 'Name', caption: $G('warehouseName'), width: '40%', alignment: 'center' },
  31. utils.datagrid.columnIsUse('20%')
  32. ],
  33. searchViewItems: [
  34. { id: 'BusinessFieldId', ignoreValue: 0, defaultValue: 0, dataSource: businessFieldsForSearch },
  35. { id: 'Name' }
  36. ],
  37. promiseDataInSearchView: deferredForSearch.promise(),
  38. handleViewShowing: function (dataModel) {
  39. var useBusinessFiltering = BWA.UserInfo.isDependBusinessField(viewInfo.viewName)
  40. if (useBusinessFiltering) {
  41. this.dataSourceOptions.filter.push('and');
  42. //this.dataSourceOptions.filter.push([eq('BusinessFieldId', BWA.UserInfo.BusinessFieldId()), 'or', eq('BusinessFieldId', 1)]);
  43. this.dataSourceOptions.filter.push([eq('BusinessFieldId', BWA.UserInfo.BusinessFieldId())]);
  44. businessFieldDataSource.filter([
  45. eq('SiteId', BWA.UserInfo.SiteId()),
  46. and,
  47. //[eq('BusinessFieldId', BWA.UserInfo.BusinessFieldId()), 'or', eq('BusinessFieldId', 1)]
  48. [eq('BusinessFieldId', BWA.UserInfo.BusinessFieldId()), 'and', ['BusinessFieldId', '<>', 1]]
  49. ]);
  50. }
  51. else {
  52. businessFieldDataSource.filter([
  53. eq('SiteId', BWA.UserInfo.SiteId()),
  54. and,
  55. ['BusinessFieldId', '<>', 1]]);
  56. }
  57. businessFieldDataSource.load().done(function (dbBusinessFields) {
  58. businessFields(dbBusinessFields);
  59. businessFieldsForSearch($SearchView.createArrayOfSelectBox('BusinessFieldId', dbBusinessFields));
  60. });
  61. },
  62. handleViewShown: function() {
  63. },
  64. handleDataGridRowClick: function(id, dataGrid, clickRow, popupVisible) {
  65. dataGrid.clearSelection();
  66. var data = clickRow.data;
  67. var dataModel = viewModel.dataModel;
  68. BusinessFieldName($KoSet(dataModel.BusinessFieldName, data['CmBusinessField/Name']));
  69. RowName = data.Name;
  70. RowBusinessFieldId = data.BusinessFieldId;
  71. popupVisible(true);
  72. },
  73. popupWidth: 480,
  74. // 이름 중복 방지
  75. handlePopupShowing: function () {
  76. FmsMaterialWarehouseDataSource.filter([
  77. ["SiteId", "=", BWA.UserInfo.SiteId()]
  78. ]);
  79. FmsMaterialWarehouseDataSource.load().done(function (result) {
  80. MaterialWarehouseInfo(result);
  81. });
  82. },
  83. beforeInsertingDataViewModel: function (dataModel, dbModelId) {
  84. var dfd = $.Deferred();
  85. var isDuplicated = false;
  86. for (var i = 0; i < MaterialWarehouseInfo().length; i++) {
  87. if (dataModel.Name() == MaterialWarehouseInfo()[i].Name() && dataModel.BusinessFieldId() == MaterialWarehouseInfo()[i].BusinessFieldId()) {
  88. isDuplicated = true;
  89. }
  90. }
  91. if (!BWA.DataUtil.isValidInputValue(dataModel.Name()))
  92. return dfd.resolve(false, '저장 혹은 수정 반드시 필수 입력 정보를 모두 입력하셔야 합니다 (앞뒤공백 허용안함)');
  93. else {
  94. if (isDuplicated)
  95. return dfd.resolve(false, '동일 정보가 존재합니다.');
  96. else
  97. return dfd.resolve(true);
  98. }
  99. },
  100. beforeUpdateDataViewModel: function () {
  101. var isDuplicated = false;
  102. for (var i = 0; i < MaterialWarehouseInfo().length; i++) {
  103. if (viewModel.dataModel.Name() == MaterialWarehouseInfo()[i].Name() && viewModel.dataModel.BusinessFieldId() == MaterialWarehouseInfo()[i].BusinessFieldId()
  104. && (RowName() != MaterialWarehouseInfo()[i].Name() || RowBusinessFieldId() != MaterialWarehouseInfo()[i].BusinessFieldId())) {
  105. isDuplicated = true;
  106. }
  107. }
  108. if (!BWA.DataUtil.isValidInputValue(viewModel.dataModel.Name())) {
  109. utils.toast.show('저장 혹은 수정 반드시 필수 입력 정보를 모두 입력하셔야 합니다 (앞뒤공백 허용안함)', 'error');
  110. return 0;
  111. }
  112. else {
  113. if (isDuplicated) {
  114. utils.toast.show('동일 정보가 존재합니다.', 'error');
  115. return 0;
  116. }
  117. else
  118. return 2;
  119. }
  120. }
  121. });
  122. viewModel.businessFields = businessFields;
  123. viewModel.BusinessFieldName = BusinessFieldName;
  124. return viewModel;
  125. };