49a9793f8f87da30f0d844b16e5935e505936f21.svn-base 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. BemsWebApplication.EquipReturnInfo = 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. ;
  7. var codeTypes = ko.observableArray(),
  8. codeStateTypes = ko.observableArray(),
  9. warehouses = ko.observableArray()
  10. ;
  11. var codeTypesForSearch = ko.observableArray(),
  12. codeStateTypesForSearch = ko.observableArray(),
  13. warehousesForSearch = ko.observableArray()
  14. ;
  15. var deferredForSearch = new $.Deferred();
  16. var viewModel = BWA.DataGrid.createViewWithDataGrid(params, viewInfo, 'FmsEquipmentHistory', {
  17. dataSourceOptions: {
  18. select: [
  19. 'SiteId',
  20. 'EquipmentHistoryId',
  21. 'EquipmentId',
  22. 'TotalStockCount',
  23. 'CurrentStockCount',
  24. 'RentCount',
  25. 'CurrentRentCount',
  26. 'ReturnCount',
  27. 'LossCount',
  28. 'StoredCount',
  29. 'EquipmentRentId',
  30. 'EquipmentStateTypeId',
  31. 'AddDate',
  32. 'UpdateDate',
  33. 'FmsEquipment/WarehouseId',
  34. 'FmsEquipment/Unit',
  35. 'FmsEquipment/Standard',
  36. 'FmsEquipment/Name',
  37. 'FmsEquipmentCodeStateType/Name',
  38. 'FmsEquipment/Standard',
  39. 'FmsEquipmentRentInfo/Title',
  40. 'FmsEquipmentRentInfo/CmUser1/Name', // 대여자
  41. 'FmsEquipmentRentInfo/RentDate',
  42. 'FmsEquipmentRentInfo/ReturnDueDate'
  43. ],
  44. expand: [
  45. 'FmsEquipment',
  46. 'FmsEquipmentRentInfo',
  47. 'FmsEquipmentRentInfo/CmUser1',
  48. 'FmsEquipmentCodeStateType'
  49. ],
  50. extendOptions: {
  51. forceOriginalField: true,
  52. },
  53. filter: [
  54. ['SiteId', '=', BWA.UserInfo.SiteId()] ,
  55. //'and',
  56. //['EquipmentStateTypeId', '=', 2],
  57. 'and',
  58. ['IsReturned', '=', false]
  59. ]
  60. },
  61. columns: [
  62. { dataField: 'Number', caption: $G('number'), width: '10%', alignment: 'center' },
  63. { dataField: 'EquipmentRentId', caption: '대여고유번호', width: '15%', alignment: 'center', sortOrder: 'desc' },
  64. { dataField: 'FmsEquipment/Name', caption: $G('name'), width: '30%', alignment: 'center' },
  65. // { dataField: 'FmsEquipmentCodeStateType/Name', caption: '상태', width: '20%', alignment: 'center' },
  66. { dataField: 'FmsEquipment/Standard', caption: '규격', width: '15%', alignment: 'center' },
  67. { dataField: 'FmsEquipment/Unit', caption: '단위', width: '15%', alignment: 'center' },
  68. { dataField: 'CurrentRentCount', caption: '대여수량', width: '10%', alignment: 'center', format: 'currency' },
  69. //{ dataField: 'CurrentStockCount', caption: '보유수량', width: '10%', alignment: 'center' },
  70. //{ dataField: 'TotalStockCount', caption: '전체수량', width: '10%', alignment: 'center' },
  71. { dataField: 'FmsEquipmentRentInfo/CmUser1/Name', caption: '대여자', width: '20%', alignment: 'center' },
  72. {
  73. dataField: 'FmsEquipmentRentInfo/RentDate', caption: '대여일', width: '20%', alignment: 'center',
  74. customizeText: function (cellInfo) {
  75. return $G.date(cellInfo.value);
  76. }
  77. },
  78. {
  79. dataField: 'FmsEquipmentRentInfo/ReturnDueDate', caption: '반납예정일', width: '20%', alignment: 'center',
  80. customizeText: function (cellInfo) {
  81. return $G.date(cellInfo.value);
  82. }
  83. },
  84. ],
  85. sort: { field: "EquipmentRentId", desc: true },
  86. searchViewItems: [{ id: 'Name' }, { id: 'Name' }],
  87. popupWidth: 740,
  88. handleViewShowing: function (dataModel) {
  89. codeStateTypeDataSource.filter([
  90. ['EquipmentStateTypeId', '>', 2], // 입고,출고 유형제외
  91. ]);
  92. $.when(
  93. codeStateTypeDataSource.load(),
  94. codeTypeDataSource.load(),
  95. warehouseDataSource.load()
  96. ).done(function (codeStateTypeResult, codeTypeResult, warehouseResult) {
  97. codeStateTypes(codeStateTypeResult[0]);
  98. codeTypes(codeTypeResult[0]);
  99. warehouses(warehouseResult[0]);
  100. codeStateTypesForSearch($SearchView.createArrayOfSelectBox('EquipmentStateTypeId', codeStateTypes()));
  101. codeTypesForSearch($SearchView.createArrayOfSelectBox('EquipmentTypeId', codeTypes()));
  102. warehousesForSearch($SearchView.createArrayOfSelectBox('WarehouseId', warehouses()));
  103. deferredForSearch.resolve();
  104. });
  105. },
  106. handleDataGridRowClick: function (id, dataGrid, clickRow, popupVisible) {
  107. dataGrid.clearSelection();
  108. var data = clickRow.data;
  109. var dataModel = viewModel.dataModel;
  110. dataModel.EquipmentName = $KoSet(dataModel.EquipmentName, data['FmsEquipment/Name']());
  111. dataModel.Standard = $KoSet(dataModel.Standard, data['FmsEquipment/Standard']());
  112. dataModel.Title = $KoSet(dataModel.Title, data['FmsEquipmentRentInfo/Title']());
  113. if (data['FmsEquipmentRentInfo/CmUser1/Name'] !== undefined) {
  114. dataModel.RentUserName = $KoSet(dataModel.RentUserName, data['FmsEquipmentRentInfo/CmUser1/Name']());
  115. }
  116. dataModel.RentDate = $KoSet(dataModel.RentDate, data['FmsEquipmentRentInfo/RentDate']());
  117. dataModel.ReturnDueDate = $KoSet(dataModel.ReturnDueDate, data['FmsEquipmentRentInfo/ReturnDueDate']());
  118. //dataModel.NewReturnCount(0);
  119. //dataModel.NewLossCount(0);
  120. popupVisible(true);
  121. },
  122. handlePopupShowing: function (isNewInPopup, dataViewModel) {
  123. // 저장 버튼
  124. viewModel.toolbarItems[4].options.clickAction = this.handlePopupButtonSave;
  125. // Admin 계정만 활성화 되는 이상 현상으로 인한 코드
  126. viewModel.toolbarItems[4].options.disabled(false);
  127. },
  128. handlePopupButtonSave: function () {
  129. var dataViewModel = viewModel.dataModel;
  130. if (dataViewModel.CurrentRentCount() < dataViewModel.LossCount() + dataViewModel.ReturnCount()) {
  131. utils.toast.show('반납 혹은 손실을 확인하시기 바랍니다.', 'warning');
  132. return;
  133. }
  134. var postData = dataViewModel.toJS();
  135. BWA.api.post('FmsEquipmentHistory/AddHistory', postData).done(
  136. function () {
  137. viewModel.gridView().refresh();
  138. utils.toast.show($G('successDatabaseProcessMsg'));
  139. viewModel.popupVisible(false);
  140. });
  141. },
  142. handlePopupShown: function (isEditMode, isNew, dataViewModel) {
  143. setEditMode();
  144. dataViewModel.ReturnCount(0);
  145. dataViewModel.LossCount(0);
  146. }
  147. });
  148. function setEditMode() {
  149. viewModel.visibleEditButton(false);
  150. viewModel.visibleDeleteButton(false);
  151. viewModel.viewModeInPopup(false);
  152. viewModel.isEditModeInPopup(true);
  153. }
  154. viewModel.dataModel.NewReturnCount = ko.observable(0);
  155. viewModel.dataModel.NewLossCount = ko.observable(0);
  156. viewModel.codeTypes = codeTypes;
  157. viewModel.codeStateTypes = codeStateTypes;
  158. viewModel.warehouses = warehouses;
  159. return viewModel;
  160. };