d1c091180ac2fab49feffe63641da2bd79913852.svn-base 15 KB

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