8c6d5c9f07c177dc1d9bf64d78f4fd4413a03a3d.svn-base 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  1. BemsWebApplication.MaterialStored = function(params, viewInfo, forApprovalOptions) {
  2. 'use strict';
  3. var businessFieldDataSource = BemsWebApplication.db.createDataSource('CmBusinessField', true, true),
  4. materialDataSource = BemsWebApplication.db.createDataSource('FmsMaterial', true, true),
  5. warehouseDataSource = BWA.db.createDataSource('FmsMaterialWarehouse', true, true),
  6. progressDataSource = BemsWebApplication.db.createDataSource('FmsMaterialCodeProgress'),
  7. warehouses = ko.observableArray(),
  8. businessFields = ko.observableArray()
  9. ;
  10. var eq = BWA.DataUtil.constructEqualFilter,
  11. and = BWA.DataUtil.andFilter;
  12. var forApprovalViewOptions,
  13. forApprovalPopupOptions,
  14. popup
  15. ;
  16. if (_.isObject(forApprovalOptions)) {
  17. forApprovalViewOptions = forApprovalOptions.viewOptions;
  18. forApprovalPopupOptions = forApprovalOptions.popupOptions;
  19. }
  20. var deferredForSearch = new $.Deferred();
  21. var businessFieldsForSearch = ko.observableArray(),
  22. progressesForSearch = ko.observableArray()
  23. ;
  24. var viewModel;
  25. var viewOptions = {
  26. popupWidth: 1300,
  27. dataSourceOptions: {
  28. select: [
  29. 'SiteId', 'BusinessFieldId', 'StoredDate', 'MaterialStoredId', 'PurchaseRequestId',
  30. 'StoredCount', 'ApprovalDate', 'IsApproval',
  31. 'CmBusinessField/Name', 'FmsMaterialWarehouse/Name',
  32. 'FmsMaterialPurchaseRequest/Title',
  33. 'FmsMaterialPurchaseRequest/ProgressId',
  34. 'FmsMaterialPurchaseRequest/FmsMaterialCodeProgress/Name',
  35. 'FmsMaterial/MaterialCode', 'FmsMaterial/Name', 'FmsMaterial/Unit', 'FmsMaterial/Standard',
  36. 'CmUser/Name', 'CmUser1/Name'
  37. ],
  38. expand: [
  39. 'CmBusinessField', 'FmsMaterial', 'FmsMaterialWarehouse', 'FmsMaterialPurchaseRequest',
  40. 'FmsMaterialPurchaseRequest/FmsMaterialCodeProgress', 'CmUser', 'CmUser1'
  41. ],
  42. extendOptions: {
  43. forceOriginalField: true,
  44. // FK 순서상 CmUser : StoredUserId, CmUser1: ApprovalUserId
  45. }
  46. },
  47. columns: [
  48. { dataField: 'MaterialStoredId', caption: $G('number'), width: '8%', alignment: 'center', sortOrder: 'desc' },
  49. { dataField: 'CmBusinessField/Name', caption: $G('businessFieldName'), width: '10%', alignment: 'center' },
  50. { dataField: 'StoredDate', caption: $G('storedDateTime'), width: '20%', alignment: 'center', customizeText: utils.datagrid.customizeTextForDateTimeFunc },
  51. { dataField: 'FmsMaterialPurchaseRequest/FmsMaterialCodeProgress/Name', caption: $G('progressStatus'), width: '10%', alignment: 'center' },
  52. { dataField: 'FmsMaterial/MaterialCode', caption: $G('materialCode'), width: '20%', alignment: 'center' },
  53. { dataField: 'FmsMaterial/Name', caption: $G('materialName'), width: '20%', alignment: 'center' },
  54. { dataField: 'FmsMaterial/Unit', caption: $G('unit'), width: '8%', alignment: 'center' },
  55. { dataField: 'StoredCount', caption: $G('storedCount'), width: '8%', alignment: 'center' },
  56. { dataField: 'ApprovalDate', caption: $G('approvalDate'), width: '20%', alignment: 'center', customizeText: utils.datagrid.customizeTextForDateTimeFunc },
  57. { dataField: 'CmUser1/Name', caption: $G('approvalUserName'), width: '8%', alignment: 'center' }
  58. ],
  59. promiseDataInSearchView: deferredForSearch.promise(),
  60. searchViewItems: [
  61. { id: 'BusinessFieldId', ignoreValue: 0, defaultValue: 0, dataSource: businessFieldsForSearch },
  62. { id: 'StoredDate', type: 'dateRange', isOnlyDate: true },
  63. { id: 'FmsMaterial/MaterialTypeId' },
  64. { id: 'FmsMaterial/Name' , filterFormatString: 'FmsMaterialPurchaseRequestMaterial/any(c: substringof(\'{0}\', c/FmsMaterial/Name))', type: 'formatting' },
  65. { id: 'CmUser/Name' },
  66. { id: 'ProgressId', ignoreValue: 0, defaultValue: 0, dataSource: progressesForSearch },
  67. ],
  68. handleDataGridRowClick: function(id, dataGrid, clickRow, popupVisible) {
  69. dataGrid.clearSelection();
  70. var data = clickRow.data;
  71. var dataModel = viewModel.dataModel;
  72. if (forApprovalViewOptions && forApprovalViewOptions.handleBeforeShowingPopupForEdit) {
  73. forApprovalViewOptions.handleBeforeShowingPopupForEdit(data, dataModel);
  74. }
  75. if (popup && popup.handleBeforeShowingPopupForEdit) {
  76. popup.handleBeforeShowingPopupForEdit(data, dataModel);
  77. }
  78. popupVisible(true);
  79. },
  80. handleAfterLoadingModelByKey: function(data, dataViewModel) {
  81. if (popup && popup.handleAfterLoadingModelByKey) {
  82. popup.handleAfterLoadingModelByKey(data, dataViewModel);
  83. }
  84. },
  85. handlePopupShowing: function(isNewInPopup, dataViewModel) {
  86. if (popup && popup.handlePopupShowing) {
  87. popup.handlePopupShowing(isNewInPopup, dataViewModel);
  88. }
  89. },
  90. handlePopupShown: function(editMode, isNew, dataViewModel) {
  91. if (popup && popup.handlePopupShown) {
  92. popup.handlePopupShown(editMode, isNew, dataViewModel);
  93. }
  94. },
  95. handleViewShowing: function(dataModel) {
  96. warehouseDataSource.filter([
  97. eq('SiteId', BWA.UserInfo.SiteId()),
  98. and,
  99. eq('BusinessFieldId', BWA.UserInfo.BusinessFieldId()),
  100. and,
  101. eq('IsUse', true),
  102. and,
  103. ['BusinessFieldId', '<>', 1],
  104. ])
  105. $.when(
  106. businessFieldDataSource.load(),
  107. warehouseDataSource.load(),
  108. progressDataSource.load())
  109. .done(function(dbBusinessField, dbWarehouses, dbProgresses) {
  110. dbBusinessField = dbBusinessField[0];
  111. dbWarehouses = dbWarehouses[0];
  112. dbProgresses = dbProgresses[0];
  113. businessFields(dbBusinessField);
  114. warehouses(dbWarehouses);
  115. businessFieldsForSearch($SearchView.createArrayOfSelectBox('BusinessFieldId', dbBusinessField));
  116. progressesForSearch($SearchView.createArrayOfSelectBox('ProgressId', dbProgresses));
  117. deferredForSearch.resolve();
  118. });
  119. },
  120. handleViewShown: function() {
  121. }
  122. };
  123. if (_.isObject(forApprovalViewOptions)) {
  124. _.extend(viewOptions, forApprovalViewOptions);
  125. }
  126. else {
  127. // 승인 화면이 아니면 수정에 관련 기능이 필요없다.
  128. _.extend(viewOptions, {
  129. isValidateWithFunction: function(errorMessage) {
  130. if (popup && popup.isValidateWithFunction) {
  131. return popup.isValidateWithFunction(errorMessage);
  132. }
  133. return true;
  134. },
  135. mandatoryFields: [
  136. { dataField: 'PurchaseRequestId', name: $G('purchaseRequest') },
  137. { dataField: 'MaterialId', name: $G('materialName') },
  138. { dataField: 'WarehouseId', name: $G('warehouseName') },
  139. { dataField: 'StoredCount', name: $G('storedCount') }
  140. ],
  141. handleSaveButtonInPopup: function(isInsert) {
  142. if (isInsert === false) {
  143. if (popup && popup.handleAfterSave) {
  144. popup.handleAfterSave(undefined);
  145. }
  146. }
  147. },
  148. handleAfterSaveInPopup: function(responseKey, response) {
  149. if (popup && popup.handleAfterSave) {
  150. popup.handleAfterSave(responseKey, response);
  151. }
  152. },
  153. });
  154. }
  155. viewModel = BWA.DataGrid.createViewWithDataGrid(params, viewInfo, 'FmsMaterialStored', viewOptions);
  156. viewModel.businessFields = businessFields;
  157. viewModel.warehouses = warehouses;
  158. var isUsePopup = forApprovalPopupOptions && forApprovalPopupOptions.isUsePopup !== false;
  159. if ((forApprovalPopupOptions && _.isFunction(forApprovalPopupOptions.popupCreatorFunc))) {
  160. popup = viewModel.popup = forApprovalPopupOptions.popupCreatorFunc(viewInfo, viewModel, forApprovalPopupOptions);
  161. }
  162. else {
  163. popup = viewModel.popup = BWA.Popup.MaterialStored.create(viewInfo, viewModel, forApprovalPopupOptions);
  164. }
  165. return viewModel;
  166. };