9189ea56e6ea5325116eb0cd64a8921acdfac6b1.svn-base 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277
  1. BemsWebApplication.EquipHistory = function (params, viewInfo) {
  2. "use strict";
  3. var codeTypeDataSource = BemsWebApplication.db.createDataSource('FmsEquipmentCodeType', true, false, true),
  4. codeStateTypeDataSource = BemsWebApplication.db.createDataSource('FmsEquipmentCodeStateType', false, false, true),
  5. warehouseDataSource = BemsWebApplication.db.createDataSource('FmsMaterialWarehouse', true, false, true);
  6. var eq = BWA.DataUtil.constructEqualFilter, and = BWA.DataUtil.andFilter;
  7. var equipmentExDataSource = BWA.DataUtil.createDataSource({
  8. dataSourceOptions: {
  9. store: BemsWebApplication.odata.FmsEquipmentEx,
  10. map: function (item) {
  11. return new BemsWebApplication.FmsEquipmentExViewModel(item);
  12. }
  13. },
  14. filter: ([
  15. eq('SiteId', BWA.UserInfo.SiteId())
  16. ]),
  17. });
  18. var codeTypes = ko.observableArray(),
  19. codeStateTypes = ko.observableArray(),
  20. warehouses = ko.observableArray(),
  21. equipmentExs = ko.observableArray();
  22. var IsAdditionalEquipment = ko.observable(false);
  23. var codeTypesForSearch = ko.observableArray(),
  24. codeStateTypesForSearch = ko.observableArray(),
  25. warehousesForSearch = ko.observableArray();
  26. var deferredForSearch = new $.Deferred();
  27. var viewModel = BWA.DataGrid.createViewWithDataGrid(params, viewInfo, 'FmsEquipmentHistory', {
  28. dataSourceOptions: {
  29. select: [
  30. 'SiteId',
  31. 'EquipmentHistoryId',
  32. 'EquipmentId',
  33. 'TotalStockCount',
  34. 'CurrentStockCount',
  35. 'RentCount',
  36. 'CurrentRentCount',
  37. 'ReturnCount',
  38. 'LossCount',
  39. 'StoredCount',
  40. 'EquipmentRentId',
  41. 'EquipmentStateTypeId',
  42. 'AddDate',
  43. 'UpdateDate',
  44. 'IsReturned',
  45. 'FmsEquipment/FmsEquipmentCodeType/Name',
  46. 'FmsEquipment/FmsEquipmentCodeType/EquipmentTypeId',
  47. 'FmsEquipment/Name',
  48. 'FmsEquipment/CmUser/Name',
  49. 'FmsEquipmentCodeStateType/Name',
  50. 'FmsEquipment/Standard',
  51. 'FmsEquipment/Unit',
  52. 'FmsEquipmentRentInfo/RentUser',
  53. 'FmsEquipmentRentInfo/RentDate',
  54. 'FmsEquipmentRentInfo/ReturnDueDate',
  55. 'FmsEquipmentRentInfo/ReturnFixDate',
  56. 'FmsEquipment/FmsMaterialWarehouse/Name'
  57. ],
  58. expand: [
  59. 'FmsEquipmentRentInfo/CmUser1',
  60. 'FmsEquipment/FmsEquipmentCodeType',
  61. 'FmsEquipmentCodeStateType',
  62. 'FmsEquipment/CmUser',
  63. 'FmsEquipmentRentInfo',
  64. 'FmsEquipmentRentInfo/CmUser1',
  65. 'FmsEquipment/FmsMaterialWarehouse',
  66. ],
  67. extendOptions: {
  68. forceOriginalField: true
  69. }
  70. },
  71. columns: [
  72. { dataField: 'EquipmentHistoryId', caption: $G('number'), width: '10%', alignment: 'center', sortOrder: 'desc' },
  73. { dataField: 'FmsEquipmentCodeStateType/Name', caption: '구분', width: '8%', alignment: 'center' },
  74. { dataField: 'FmsEquipment/FmsEquipmentCodeType/Name', caption: '분류', width: '8%', alignment: 'center' },
  75. { dataField: 'FmsEquipment/Name', caption: '공기구명', width: '22%', alignment: 'center' },
  76. { dataField: 'FmsEquipment/Standard', caption: '규격', width: '22%', alignment: 'center' },
  77. { dataField: 'TotalStockCount', caption: '전체수량', width: '10%', alignment: 'center', format: 'fixedPoint' },
  78. { dataField: 'StoredCount', caption: '입고수량', width: '10%', alignment: 'center', format: 'fixedPoint' },
  79. { dataField: 'CurrentRentCount', caption: '대여수량', width: '10%', alignment: 'center', format: 'fixedPoint' },
  80. { dataField: 'ReturnCount', caption: '반납수량', width: '10%', alignment: 'center', format: 'fixedPoint' },
  81. { dataField: 'LossCount', caption: '손실수량', width: '10%', alignment: 'center', format: 'fixedPoint' },
  82. { dataField: 'CurrentStockCount', caption: '보유수량', width: '10%', alignment: 'center', format: 'fixedPoint' },
  83. {
  84. dataField: 'AddDate', caption: '등록일', width: '15%', alignment: 'center', dataType: "shortDate", format: "yyyy-MM-dd",
  85. customizeText: function (cellInfo) {
  86. return cellInfo.valueText;
  87. }
  88. },
  89. {
  90. dataField: 'FmsEquipmentRentInfo/RentUser', caption: '대여자', width: '10%', alignment: 'center', dataType: "shortDate", format: "yyyy-MM-dd",
  91. customizeText: function (cellInfo) {
  92. return cellInfo.valueText;
  93. }
  94. },
  95. {
  96. dataField: 'FmsEquipmentRentInfo/RentDate', caption: '대여일', width: '14%', alignment: 'center', dataType: "shortDate", format: "yyyy-MM-dd",
  97. customizeText: function (cellInfo) {
  98. return cellInfo.valueText;
  99. }
  100. },
  101. {
  102. dataField: 'FmsEquipmentRentInfo/ReturnDueDate', caption: '반납예정일', width: '14%', alignment: 'center', dataType: "shortDate", format: "yyyy-MM-dd",
  103. customizeText: function (cellInfo) {
  104. return cellInfo.valueText;
  105. }
  106. },
  107. {
  108. dataField: 'FmsEquipmentRentInfo/ReturnFixDate', caption: '반납일', width: '14%', alignment: 'center', dataType: "shortDate", format: "yyyy-MM-dd",
  109. customizeText: function (cellInfo) {
  110. return cellInfo.valueText;
  111. }
  112. }
  113. ],
  114. paging: {
  115. pageSize: 18,
  116. enabled: true
  117. },
  118. pager: {},
  119. "export": {
  120. enabled: true,
  121. fileName: '공기구 이력 목록',
  122. },
  123. onExporting: function (e) {
  124. e.component.columnOption("EquipmentHistoryId", "visible", false);
  125. },
  126. onExported: function (e) {
  127. e.component.columnOption("EquipmentHistoryId", "visible", true);
  128. },
  129. cellPrepared: function (cellElement, cellInfo) {
  130. // 2 보다 큰 경우 대여수 0
  131. if (cellInfo.rowType == 'data') {
  132. if (cellInfo.data.EquipmentStateTypeId() > 2) {
  133. if (cellInfo.columnIndex == 7) {
  134. $(cellElement).text('0');
  135. }
  136. }
  137. }
  138. },
  139. sort: { field: "EquipmentHistoryId", desc: true },
  140. searchViewItems: [
  141. { id: 'FmsEquipment/Name' },
  142. { id: 'FmsEquipment/Standard' },
  143. { id: 'FmsEquipmentRentInfo/RentUser' },
  144. { id: 'EquipmentStateTypeId', ignoreValue: 0, defaultValue: 0, dataSource: codeStateTypesForSearch }, // 구분
  145. { id: 'FmsEquipment/FmsEquipmentCodeType/EquipmentTypeId', ignoreValue: 0, defaultValue: 0, dataSource: codeTypesForSearch }, // 분류
  146. { id: 'AddDate', type: 'dateRange', isOnlyDate: true },
  147. ],
  148. popupWidth: 400,
  149. handleViewShowing: function (dataModel) {
  150. $.when(
  151. codeStateTypeDataSource.load(),
  152. codeTypeDataSource.load(),
  153. warehouseDataSource.load()
  154. ).done(function (codeStateTypeResult, codeTypeResult, warehouseResult) {
  155. codeStateTypes(codeStateTypeResult[0]);
  156. codeTypes(codeTypeResult[0]);
  157. warehouses(warehouseResult[0]);
  158. codeStateTypesForSearch($SearchView.createArrayOfSelectBox('EquipmentStateTypeId', codeStateTypes()));
  159. codeTypesForSearch($SearchView.createArrayOfSelectBox('EquipmentTypeId', codeTypes()));
  160. warehousesForSearch($SearchView.createArrayOfSelectBox('WarehouseId', warehouses()));
  161. deferredForSearch.resolve();
  162. });
  163. },
  164. handleDataGridRowClick: function (id, dataGrid, clickRow, popupVisible) {
  165. },
  166. handlePopupShowing: function (isNewInPopup, dataViewModel) {
  167. // 저장 버튼
  168. viewModel.toolbarItems[4].options.clickAction = this.handlePopupButtonSave;
  169. dataViewModel.RegisterUserId = $KoSet(dataViewModel.RegisterUserId, BWA.UserInfo.UserId());
  170. dataViewModel.EquipmentTypeId = ko.observable();
  171. dataViewModel.WarehouseId = ko.observable();
  172. dataViewModel.Unit = ko.observable();
  173. dataViewModel.Standard = ko.observable();
  174. dataViewModel.SupplierName = ko.observable();
  175. dataViewModel.SupplierPhoneNo = ko.observable();
  176. },
  177. handlePopupShown: function (isEditMode, isNew, dataViewModel) {
  178. $.when(
  179. equipmentExDataSource.load()
  180. ).done(function (equipmentExResult) {
  181. equipmentExs(equipmentExResult);
  182. });
  183. if (isNew) { // 신규등록인 경우
  184. dataViewModel.AddDate($G.date(new Date()));
  185. dataViewModel.UpdateDate($G.date(new Date()));
  186. dataViewModel.RegisterUserId(BWA.UserInfo.UserId());
  187. dataViewModel.StoredCount(1);
  188. }
  189. },
  190. handlePopupButtonSave: function () {
  191. var dataViewModel = viewModel.dataModel;
  192. if (IsAdditionalEquipment()) {
  193. if (dataViewModel.EquipmentId() == null) {
  194. utils.toast.show('추가입고할 공기구를 선택하세요.', 'error');
  195. return;
  196. }
  197. }
  198. else {
  199. if (dataViewModel.EquipmentTypeId() == null) {
  200. utils.toast.show('입고할 공기구 분류를 선택하세요.', 'error');
  201. return;
  202. }
  203. else if (dataViewModel.Name() == null) {
  204. utils.toast.show('입고할 공기구 이름을 입력하세요.', 'error');
  205. return;
  206. }
  207. }
  208. if (dataViewModel.WarehouseId() == null) {
  209. utils.toast.show('입고될 창고위치를 선택하세요.', 'error');
  210. return;
  211. }
  212. var parameters = {
  213. SiteId: dataViewModel.SiteId(),
  214. IsAdditionalEquipment: IsAdditionalEquipment()
  215. };
  216. var postData = dataViewModel.toJS();
  217. BWA.api.post('FmsEquipment', postData, parameters).done(
  218. function () {
  219. utils.toast.show($G('successDatabaseInsertionMsg'));
  220. viewModel.popupVisible(false);
  221. viewModel.gridView().refresh();
  222. });
  223. }
  224. });
  225. function processValueChange(e) {
  226. var foundModel = _.find(equipmentExs(), function (x) {
  227. return x.EquipmentId() === e.value;
  228. });
  229. if (foundModel !== undefined) {
  230. var dataViewModel = viewModel.dataModel;
  231. dataViewModel.EquipmentId(foundModel.EquipmentId());
  232. dataViewModel.EquipmentTypeId(foundModel.EquipmentTypeId());
  233. dataViewModel.WarehouseId(foundModel.WarehouseId());
  234. dataViewModel.Unit(foundModel.Unit());
  235. dataViewModel.Standard(foundModel.Standard());
  236. dataViewModel.UpdateDate(new Date());
  237. dataViewModel.SupplierName(foundModel.SupplierName());
  238. dataViewModel.SupplierPhoneNo(foundModel.SupplierPhoneNo());
  239. dataViewModel.TotalStockCount(foundModel.TotalStockCount());
  240. dataViewModel.CurrentStockCount(foundModel.CurrentStockCount());
  241. }
  242. }
  243. viewModel.processValueChange = processValueChange;
  244. viewModel.IsAdditionalEquipment = IsAdditionalEquipment;
  245. viewModel.equipmentExs = equipmentExs;
  246. viewModel.codeTypes = codeTypes;
  247. viewModel.codeStateTypes = codeStateTypes;
  248. viewModel.warehouses = warehouses;
  249. return viewModel;
  250. };