7b5bd8cfc32db1a7ae4232a83126d90ce31ee507.svn-base 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307
  1. BemsWebApplication.MonthlyStoredReleaseStatus3 = function (params, viewInfo) {
  2. "use strict";
  3. var materialClassForSearch = ko.observableArray();
  4. var materialClass = ko.observableArray();
  5. var searchFacilityClassValues = [ko.observable(), ko.observable(), ko.observable()];
  6. var searchFacilityClasses = [ko.observableArray(), ko.observableArray(), ko.observableArray()];
  7. var facilityClasses = [ko.observableArray(), ko.observableArray(), ko.observableArray()];
  8. var MaterialCodeClassDataSource = BemsWebApplication.db.createDataSource('FmsMaterialCodeClass');
  9. var businessFieldDataSource = BemsWebApplication.db.createDataSource('CmBusinessField', true, true, true),
  10. materialClassDataSource = BemsWebApplication.db.createDataSource('FmsMaterialCodeClass', true, true),
  11. materialTypeDataSource = BemsWebApplication.db.createDataSource('FmsMaterialCodeType', true, true),
  12. tradeCompanyDataSource = BemsWebApplication.db.createDataSource('FmsMaterialTradeCompany', true, true),
  13. warehouseDataSource = BemsWebApplication.db.createDataSource('FmsMaterialWarehouse', true, true),
  14. locationDataSource = BemsWebApplication.db.createDataSource('FmsMaterialCodeLocation', true, true);
  15. var eq = BWA.DataUtil.constructEqualFilter, and = BWA.DataUtil.andFilter;
  16. var materialClasses = [ko.observableArray(), ko.observableArray(), ko.observableArray()],
  17. businessFields = ko.observableArray(),
  18. materialTypes = ko.observableArray(),
  19. tradeCompanies = ko.observableArray(),
  20. warehouses = ko.observableArray(),
  21. locations = ko.observableArray();
  22. var materialClassesForSearch = [ko.observableArray(), ko.observableArray(), ko.observableArray()],
  23. materialTypesForSearch = ko.observableArray(),
  24. materialClassValuesForSearch = [ko.observable(), ko.observable(), ko.observable()],
  25. businessFieldsForSearch = ko.observableArray(),
  26. materialTypeIdForSearch = ko.observable(),
  27. businessFieldIdForSearch = ko.observable();
  28. var deferredForSearch = new $.Deferred();
  29. var defaultSearchClassArray = $SearchView.createDefaultArray('MaterialClassId');
  30. function initializeSearchClasses(onlyThird) {
  31. if (onlyThird === undefined || onlyThird === false) {
  32. searchFacilityClasses[1](defaultSearchClassArray.slice(0));
  33. searchFacilityClassValues[1](0);
  34. }
  35. searchFacilityClasses[2](defaultSearchClassArray.slice(0));
  36. searchFacilityClassValues[2](0);
  37. }
  38. var handleFirstClassChangedValueInSearchView = function (e) {
  39. if (e.value === 0) {
  40. initializeSearchClasses();
  41. return;
  42. }
  43. BWA.DataUtil.setArrayDataSourceFilter(MaterialCodeClassDataSource, 'ParentMaterialClassId', e.value, searchFacilityClasses[1], defaultSearchClassArray);
  44. };
  45. var handleSecondClassChangedValueInSearchView = function (e) {
  46. if (searchFacilityClassValues[1]() == null) {
  47. initializeSearchClasses();
  48. BWA.DataUtil.setArrayDataSourceFilter(MaterialCodeClassDataSource, 'ParentMaterialClassId', 0, searchFacilityClasses[1], defaultSearchClassArray);
  49. }
  50. if (e.value === 0) {
  51. initializeSearchClasses(true);
  52. return;
  53. }
  54. BWA.DataUtil.setArrayDataSourceFilter(MaterialCodeClassDataSource, 'ParentMaterialClassId', e.value, searchFacilityClasses[2], defaultSearchClassArray);
  55. };
  56. var tempDate = new Date();
  57. var paramDate = new Date(tempDate.getFullYear(), tempDate.getMonth(), 1, 0, 0, 0, 0);
  58. var viewModel = BWA.DataGrid.createViewWithDataGrid(params, viewInfo, 'FmsMaterialStockHistoryMonthly', {
  59. dataSourceOptions: {
  60. store: BemsWebApplication.odata.FmsMaterialStockHistoryMonthly,
  61. select: [
  62. 'HistoryId',
  63. 'SiteId',
  64. 'BusinessFieldId',
  65. 'MaterialId',
  66. 'MaterialCode',
  67. 'MaterialName',
  68. 'Unit',
  69. 'YearMonth',
  70. 'YearMonthDate',
  71. 'StoredCount',
  72. 'ReleaseCount',
  73. 'ReleaseLossCount',
  74. 'ReleaseReturnCount',
  75. 'FirstClassId',
  76. 'SecondClassId',
  77. 'ThirdClassId',
  78. 'WarehouseId',
  79. 'StockCount',
  80. 'StockAmount',
  81. 'Standard',
  82. 'BusinessFieldName'
  83. ],
  84. filter: [
  85. eq('SiteId', BWA.UserInfo.SiteId())
  86. ],
  87. },
  88. columns: [
  89. { dataField: 'HistoryId', caption: $G('number'), width: '10%', alignment: 'center', allowFiltering: false },
  90. { dataField: 'BusinessFieldName', caption: $G('businessFieldName'), width: '15%', alignment: 'center', },
  91. { dataField: 'MaterialCode', caption: '자재코드', width: '20%', alignment: 'center', visible: false },
  92. {
  93. dataField: 'FirstClassId', width: '15%', caption: '자재(대)', alignment: 'center',
  94. customizeText: function (cellInfo) {
  95. for (var i = 1; i < materialClassForSearch().length; i++) {
  96. if (materialClassForSearch()[i].MaterialClassId() == cellInfo.value) {
  97. return materialClassForSearch()[i].Name();
  98. }
  99. }
  100. }
  101. },
  102. {
  103. dataField: 'SecondClassId', width: '15%', caption: '자재(중)', alignment: 'center',
  104. customizeText: function (cellInfo) {
  105. for (var i = 1; i < materialClassForSearch().length; i++) {
  106. if (materialClassForSearch()[i].MaterialClassId() == cellInfo.value) {
  107. return materialClassForSearch()[i].Name();
  108. }
  109. }
  110. }
  111. },
  112. {
  113. dataField: 'ThirdClassId', width: '15%', caption: '자재(소)', alignment: 'center',
  114. customizeText: function (cellInfo) {
  115. for (var i = 1; i < materialClassForSearch().length; i++) {
  116. if (materialClassForSearch()[i].MaterialClassId() == cellInfo.value) {
  117. return materialClassForSearch()[i].Name();
  118. }
  119. }
  120. }
  121. },
  122. { dataField: 'MaterialName', caption: '자재명', width: '20%', alignment: 'center' },
  123. { dataField: 'Standard', caption: '규격', width: '20%', alignment: 'center' },
  124. { dataField: 'Unit', caption: '단위', width: '10%', alignment: 'center' },
  125. {
  126. dataField: 'YearMonth', caption: '년/월', width: '15%', alignment: 'center', sortOrder: 'desc', dataType: 'string',
  127. customizeText: function (cellInfo) {
  128. if (cellInfo.value.getMonth() >= 9) {
  129. return cellInfo.value.getFullYear() + "-" + (cellInfo.value.getMonth() + 1);
  130. }
  131. else {
  132. return cellInfo.value.getFullYear() + "-0" + (cellInfo.value.getMonth() + 1);
  133. }
  134. }
  135. },
  136. { dataField: 'StoredCount', caption: '입고수량', width: '15%', alignment: 'center', format: 'fixedPoint' },
  137. { dataField: 'ReleaseCount', caption: '정상출고', width: '15%', alignment: 'center', format: 'fixedPoint' },
  138. { dataField: 'ReleaseLossCount', caption: '조정출고손실', width: '20%', alignment: 'center', format: 'fixedPoint' },
  139. { dataField: 'ReleaseReturnCount', caption: '조정출고반납', width: '20%', alignment: 'center', format: 'fixedPoint' },
  140. { dataField: 'StockCount', caption: '재고수량', width: '15%', alignment: 'center', format: 'fixedPoint' },
  141. { dataField: 'StockAmount', caption: '재고금액', width: '15%', alignment: 'center', format: 'fixedPoint' },
  142. ],
  143. paging: {
  144. pageSize: 18,
  145. enabled: true
  146. },
  147. pager:{},
  148. "export": {
  149. enabled: true,
  150. fileName: '월별 입출고 목록',
  151. },
  152. onExporting: function (e) {
  153. e.component.columnOption("HistoryId", "visible", false);
  154. },
  155. onExported: function (e) {
  156. e.component.columnOption("HistoryId", "visible", true);
  157. },
  158. wordWrapEnabled: true,
  159. searchViewItems: [
  160. { id: 'MaterialCode' },
  161. { id: 'MaterialName' },
  162. { id: 'Standard' },
  163. { id: 'Unit' },
  164. { id: 'YearMonthDate', type: 'dateRange', isOnlyDate: true },
  165. { id: 'FirstClassId', ignoreValue: 0, defaultValue: 0, value: searchFacilityClassValues[0], dataSource: searchFacilityClasses[0], handleChangedValue: handleFirstClassChangedValueInSearchView },
  166. { id: 'SecondClassId', ignoreValue: 0, defaultValue: 0, withCheckId: 'FirstClassId', value: searchFacilityClassValues[1], dataSource: searchFacilityClasses[1], handleChangedValue: handleSecondClassChangedValueInSearchView },
  167. { id: 'ThirdClassId', ignoreValue: 0, defaultValue: 0, withCheckId: 'FirstClassId', value: searchFacilityClassValues[2], dataSource: searchFacilityClasses[2] },
  168. ],
  169. promiseDataInSearchView: deferredForSearch.promise(),
  170. handleViewShowing: function () {
  171. MaterialCodeClassDataSource.filter([
  172. ['SiteId', '=', BWA.UserInfo.SiteId()]
  173. ]);
  174. $.when(
  175. MaterialCodeClassDataSource.load()
  176. ).done(function (Result) {
  177. materialClass = ko.observableArray();
  178. var cnt = 0;
  179. for (var i = 0; i < Result.length; i++) {
  180. materialClass.push(Result[i]);
  181. if (Result[i].Depth() == 0) {
  182. if (cnt == 0) {
  183. searchFacilityClasses[0](defaultSearchClassArray.slice(0).concat(Result[i]));
  184. cnt++;
  185. }
  186. else {
  187. searchFacilityClasses[0].push(Result[i]);
  188. }
  189. }
  190. }
  191. facilityClasses[0](Result[0]);
  192. materialClassForSearch($SearchView.createArrayOfSelectBox('MaterialClassId', materialClass()));
  193. });
  194. materialClassDataSource.filter([
  195. ['SiteId', '=', BWA.UserInfo.SiteId()],
  196. 'and',
  197. ['ParentMaterialClassId', '=', null]
  198. ]);
  199. var useBusinessFiltering = BWA.UserInfo.isDependBusinessField(viewInfo.viewName)
  200. if (useBusinessFiltering) {
  201. this.dataSourceOptions.filter.push('and');
  202. this.dataSourceOptions.filter.push([eq('BusinessFieldId', BWA.UserInfo.BusinessFieldId()), 'or', eq('BusinessFieldId', 1)]);
  203. businessFieldDataSource.filter([
  204. eq('SiteId', BWA.UserInfo.SiteId()),
  205. and,
  206. [eq('BusinessFieldId', BWA.UserInfo.BusinessFieldId()), 'or', eq('BusinessFieldId', 1)]
  207. ]);
  208. }
  209. $.when(
  210. businessFieldDataSource.load(),
  211. materialClassDataSource.load(),
  212. materialTypeDataSource.load(),
  213. tradeCompanyDataSource.load(),
  214. warehouseDataSource.load(),
  215. locationDataSource.load()
  216. ).done(function (dbBusinessFields, dbMaterialClasses, dbMaterialTypes, dbTradeCompanies, dbWarehouses, dbLocations) {
  217. dbBusinessFields = dbBusinessFields[0];
  218. dbMaterialClasses = dbMaterialClasses[0];
  219. dbMaterialTypes = dbMaterialTypes[0];
  220. dbTradeCompanies = dbTradeCompanies[0];
  221. dbWarehouses = dbWarehouses[0];
  222. dbLocations = dbLocations[0];
  223. materialClasses[0](dbMaterialClasses);
  224. materialClassesForSearch[0]($SearchView.createArrayOfSelectBox('MaterialClassId', dbMaterialClasses));
  225. initializeSearchClasses();
  226. businessFields(dbBusinessFields);
  227. materialTypes(dbMaterialTypes);
  228. tradeCompanies(dbTradeCompanies);
  229. warehouses(dbWarehouses);
  230. locations(dbLocations);
  231. businessFieldsForSearch($SearchView.createArrayOfSelectBox('BusinessFieldId', dbBusinessFields));
  232. materialTypesForSearch($SearchView.createArrayOfSelectBox('MaterialTypeId', dbMaterialTypes));
  233. deferredForSearch.resolve();
  234. });
  235. },
  236. handleViewShown: function (dataViewModel, isEditModeInPopup) {
  237. },
  238. handleSaveSuccess: function () {
  239. },
  240. handleAfterLoadingModelByKey: function (data, dataViewModel, isNewInPopup) {
  241. if (isNewInPopup() == false) {
  242. BWA.DataUtil.setArrayDataSourceFilter(materialClassDataSource, 'ParentMaterialClassId', dataViewModel.FirstClassId(), materialClasses[1]).done(function () {
  243. BWA.DataUtil.setArrayDataSourceFilter(materialClassDataSource, 'ParentMaterialClassId', dataViewModel.SecondClassId(), materialClasses[2]);
  244. });
  245. BWA.DataUtil.setArrayDataSourceFilter(warehouseDataSource, 'BusinessFieldId', dataViewModel.BusinessFieldId(), warehouses);
  246. }
  247. }
  248. });
  249. viewModel.handleSelectBoxChangeBusinessField = function (e) {
  250. BWA.DataUtil.setArrayDataSourceFilter(warehouseDataSource, 'BusinessFieldId', e.value, warehouses);
  251. viewModel.dataModel.WarehouseId(null);
  252. }
  253. viewModel.handleSelectBoxChangeFirstClass = function (e) {
  254. BWA.DataUtil.setArrayDataSourceFilter(materialClassDataSource, 'ParentMaterialClassId', e.value, materialClasses[1]);
  255. viewModel.dataModel.SecondClassId(null);
  256. viewModel.dataModel.ThirdClassId(null);
  257. }
  258. viewModel.handleSelectBoxChangeSecondClass = function (e) {
  259. BWA.DataUtil.setArrayDataSourceFilter(materialClassDataSource, 'ParentMaterialClassId', e.value, materialClasses[2]);
  260. viewModel.dataModel.ThirdClassId(null);
  261. }
  262. viewModel.dataModel.ClassName = ko.observable();
  263. viewModel.materialClasses = materialClasses;
  264. viewModel.materialTypes = materialTypes;
  265. viewModel.tradeCompanies = tradeCompanies;
  266. viewModel.warehouses = warehouses;
  267. viewModel.locations = locations;
  268. viewModel.businessFields = businessFields;
  269. viewModel.handleFirstClassChangedValueInSearchView = handleFirstClassChangedValueInSearchView;
  270. viewModel.handleSecondClassChangedValueInSearchView = handleSecondClassChangedValueInSearchView;
  271. return viewModel;
  272. };