afff746f88056d938d191a05e29e1f3317c56b48.svn-base 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360
  1. BemsWebApplication.EquipReturnInfo2 = 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. filter: ([
  14. eq('SiteId', BWA.UserInfo.SiteId())
  15. ])
  16. }
  17. });
  18. var equipments = ko.observableArray(),
  19. equipmentGridView,
  20. equipmentDataGridOptions = undefined;
  21. var equipmentRentDataSource = BWA.DataUtil.createDataSource({
  22. dataSourceOptions: {
  23. select: [
  24. 'SiteId',
  25. 'EquipmentHistoryId',
  26. 'EquipmentId',
  27. 'TotalStockCount',
  28. 'CurrentStockCount',
  29. 'RentCount',
  30. 'CurrentRentCount',
  31. 'ReturnCount',
  32. 'LossCount',
  33. 'StoredCount',
  34. 'EquipmentRentId',
  35. 'EquipmentStateTypeId',
  36. 'AddDate',
  37. 'UpdateDate',
  38. 'FmsEquipment/WarehouseId',
  39. 'FmsEquipment/Unit',
  40. 'FmsEquipment/Standard',
  41. 'FmsEquipment/Name',
  42. 'FmsEquipmentCodeStateType/Name',
  43. 'FmsEquipment/Standard',
  44. 'FmsEquipmentRentInfo/Title',
  45. 'FmsEquipmentRentInfo/RentUser', // 대여자
  46. 'FmsEquipmentRentInfo/RentDate',
  47. 'FmsEquipmentRentInfo/ReturnDueDate'
  48. ],
  49. expand: ['FmsEquipment',
  50. 'FmsEquipmentRentInfo',
  51. 'FmsEquipmentRentInfo/CmUser1',
  52. 'FmsEquipmentCodeStateType'],
  53. extendOptions: {
  54. forceOriginalField: true
  55. },
  56. filter: [
  57. ['SiteId', '=', BWA.UserInfo.SiteId()],
  58. 'and',
  59. ['IsReturned', '=', false]
  60. ],
  61. paginate: false, // 페이징을 하지 않음
  62. }
  63. }, 'FmsEquipmentHistory');
  64. var codeTypes = ko.observableArray(),
  65. codeStateTypes = ko.observableArray(),
  66. warehouses = ko.observableArray(),
  67. equipmentExs = ko.observableArray();
  68. var codeTypesForSearch = ko.observableArray(),
  69. codeStateTypesForSearch = ko.observableArray(),
  70. warehousesForSearch = ko.observableArray();
  71. var deferredForSearch = new $.Deferred();
  72. var viewModel = BWA.DataGrid.createViewWithDataGrid(params, viewInfo, 'FmsEquipmentHistory', {
  73. dataSourceOptions: {
  74. select: [
  75. 'SiteId',
  76. 'EquipmentHistoryId',
  77. 'EquipmentId',
  78. 'TotalStockCount',
  79. 'CurrentStockCount',
  80. 'RentCount',
  81. 'CurrentRentCount',
  82. 'ReturnCount',
  83. 'LossCount',
  84. 'StoredCount',
  85. 'EquipmentRentId',
  86. 'EquipmentStateTypeId',
  87. 'AddDate',
  88. 'UpdateDate',
  89. 'IsReturned',
  90. 'FmsEquipment/FmsEquipmentCodeType/Name',
  91. 'FmsEquipment/FmsEquipmentCodeType/EquipmentTypeId',
  92. 'FmsEquipment/Name',
  93. 'FmsEquipment/CmUser/Name',
  94. 'FmsEquipmentCodeStateType/Name',
  95. 'FmsEquipment/Standard',
  96. 'FmsEquipment/Unit',
  97. 'FmsEquipmentRentInfo/RentUser',
  98. 'FmsEquipmentRentInfo/RentDate',
  99. 'FmsEquipmentRentInfo/ReturnDueDate',
  100. 'FmsEquipmentRentInfo/ReturnFixDate',
  101. 'FmsEquipment/FmsMaterialWarehouse/Name'
  102. ],
  103. expand: [
  104. 'FmsEquipment/FmsEquipmentCodeType',
  105. 'FmsEquipmentCodeStateType',
  106. 'FmsEquipment/CmUser',
  107. 'FmsEquipmentRentInfo',
  108. 'FmsEquipmentRentInfo/CmUser1',
  109. 'FmsEquipment/FmsMaterialWarehouse',
  110. ],
  111. extendOptions: {
  112. forceOriginalField: true
  113. },
  114. filter: [
  115. eq('SiteId', BWA.UserInfo.SiteId()),
  116. 'and',
  117. [['EquipmentStateTypeId', '>=', 3],
  118. 'and',
  119. ['EquipmentStateTypeId', '<=', 5]]
  120. ]
  121. },
  122. columns: [
  123. { dataField: 'EquipmentHistoryId', caption: $G('number'), width: '10%', alignment: 'center' },
  124. { dataField: 'FmsEquipmentCodeStateType/Name', caption: '구분', width: '10%', alignment: 'center' },
  125. { dataField: 'FmsEquipment/FmsEquipmentCodeType/Name', caption: '분류', width: '10%', alignment: 'center' },
  126. { dataField: 'FmsEquipment/Name', caption: '공기구명', width: '22%', alignment: 'center' },
  127. { dataField: 'FmsEquipment/Standard', caption: '규격', width: '22%', alignment: 'center' },
  128. { dataField: 'FmsEquipment/Unit', caption: '단위', width: '11%', alignment: 'center' },
  129. { dataField: 'ReturnCount', caption: '반납수량', width: '10%', alignment: 'center', format: 'fixedPoint' },
  130. { dataField: 'LossCount', caption: '손실수량', width: '10%', alignment: 'center', format: 'fixedPoint' },
  131. {
  132. dataField: 'UpdateDate', caption: '등록일', width: '20%', alignment: 'center', sortOrder: 'desc', dataType: "shortDate", format: "yyyy-MM-dd hh:mm:ss",
  133. customizeText: function (cellInfo) {
  134. return cellInfo.valueText;
  135. }
  136. },
  137. { dataField: 'FmsEquipmentRentInfo/RentUser', caption: '대여자', width: '15%', alignment: 'center' },
  138. { dataField: 'FmsEquipment/CmUser/Name', caption: '관리자', width: '10%', alignment: 'center', visible: false }
  139. ],
  140. paging: {
  141. pageSize: 18,
  142. enabled: true
  143. },
  144. pager: {},
  145. "export": {
  146. enabled: true,
  147. fileName: '공기구 반납/손실 목록',
  148. },
  149. onExporting: function (e) {
  150. e.component.columnOption("EquipmentHistoryId", "visible", false);
  151. },
  152. onExported: function (e) {
  153. e.component.columnOption("EquipmentHistoryId", "visible", true);
  154. },
  155. sort: { field: "EquipmentHistoryId", desc: true },
  156. searchViewItems: [
  157. { id: 'FmsEquipment/Name' },
  158. { id: 'FmsEquipment/Standard' },
  159. { id: 'FmsEquipmentRentInfo/RentUser' },
  160. { id: 'EquipmentStateTypeId', ignoreValue: 0, defaultValue: 0, dataSource: codeStateTypesForSearch }, // 구분
  161. { id: 'FmsEquipment/FmsEquipmentCodeType/EquipmentTypeId', ignoreValue: 0, defaultValue: 0, dataSource: codeTypesForSearch }, // 분류
  162. { id: 'UpdateDate', type: 'dateRange', isOnlyDate: true },
  163. ],
  164. popupWidth: 950,
  165. handleViewShowing: function (dataModel) {
  166. $.when(
  167. codeStateTypeDataSource.load(),
  168. codeTypeDataSource.load(),
  169. warehouseDataSource.load()
  170. ).done(function (codeStateTypeResult, codeTypeResult, warehouseResult) {
  171. codeStateTypes(codeStateTypeResult[0]);
  172. codeTypes(codeTypeResult[0]);
  173. warehouses(warehouseResult[0]);
  174. codeStateTypesForSearch($SearchView.createArrayOfSelectBox('EquipmentStateTypeId', codeStateTypes()));
  175. codeTypesForSearch($SearchView.createArrayOfSelectBox('EquipmentTypeId', codeTypes()));
  176. warehousesForSearch($SearchView.createArrayOfSelectBox('WarehouseId', warehouses()));
  177. deferredForSearch.resolve();
  178. });
  179. },
  180. handleDataGridRowClick: function (id, dataGrid, clickRow, popupVisible) {
  181. },
  182. handlePopupShowing: function (isNewInPopup, dataViewModel) {
  183. // 저장 버튼
  184. dataViewModel.ReturnCount(0);
  185. dataViewModel.LossCount(0);
  186. dataViewModel.Title('');
  187. dataViewModel.RentUser('');
  188. dataViewModel.RentDate('');
  189. dataViewModel.ReturnDueDate('');
  190. dataViewModel.CurrentRentCount('');
  191. dataViewModel.EquipmentId(0);
  192. dataViewModel.EquipmentRentId(0);
  193. dataViewModel.SiteId(0);
  194. },
  195. handlePopupShown: function (isEditMode, isNew, dataViewModel) {
  196. $.when(
  197. equipmentRentDataSource.load()
  198. ).done(function (equipmentRentInfoResult) {
  199. equipments(equipmentRentInfoResult);
  200. });
  201. }
  202. });
  203. var equipPopupToolbarItems = [
  204. { location: 'before', text: '공기구 반납/손실' },
  205. {
  206. location: 'after', widget: 'button', options: {
  207. text: $G('save'), icon: 'save', visible: viewModel.isEditModeInPopup,
  208. clickAction: handlePopupButtonSave
  209. }
  210. },
  211. {
  212. location: 'after', widget: 'button', options: {
  213. text: $G('close'), icon: 'close',
  214. clickAction: equipPopupButtonClose
  215. }
  216. }
  217. ];
  218. function handlePopupButtonSave() {
  219. var dataViewModel = viewModel.dataModel;
  220. if (dataViewModel.LossCount() == null || dataViewModel.ReturnCount() == null) {
  221. utils.toast.show('반납/손실 수량을 확인하시기 바랍니다.2', 'warning');
  222. return;
  223. }
  224. if (dataViewModel.LossCount() == 0 && dataViewModel.ReturnCount() == 0) {
  225. utils.toast.show('반납/손실 수량을 확인하시기 바랍니다.', 'warning');
  226. return;
  227. }
  228. if (dataViewModel.CurrentRentCount() < (dataViewModel.LossCount() + dataViewModel.ReturnCount())) {
  229. utils.toast.show('현재 대여 수량보다 반납/손실 수량이 더 많습니다. 반납/손실 수량을 확인하시기 바랍니다.', 'warning');
  230. return;
  231. }
  232. var postData = dataViewModel.toJS();
  233. BWA.api.post('FmsEquipmentHistory/AddHistory', postData).done(
  234. function () {
  235. viewModel.gridView().refresh();
  236. utils.toast.show($G('successDatabaseProcessMsg'));
  237. viewModel.popupVisible(false);
  238. });
  239. }
  240. function equipPopupButtonClose() {
  241. viewModel.popupVisible(false);
  242. }
  243. function processValueChange(e) {
  244. }
  245. equipmentDataGridOptions = utils.datagrid.defaultOptions({
  246. width: 900,
  247. visible: true,
  248. pager: {
  249. showPageSizeSelector: false,
  250. allowedPageSizes: []
  251. },
  252. dataSource: equipments,
  253. columns: [
  254. { dataField: 'FmsEquipment/Name', caption: '공기구명', width: '27%', alignment: 'center' },
  255. { dataField: 'FmsEquipment/Standard', caption: '규격', width: '27%', alignment: 'center' },
  256. { dataField: 'FmsEquipment/Unit', caption: '단위', width: '13%', alignment: 'center' },
  257. { dataField: 'CurrentRentCount', caption: '대여수량', width: '13%', alignment: 'center' },
  258. { dataField: 'FmsEquipmentRentInfo/RentUser', caption: '대여자', width: '14%', alignment: 'center' },
  259. {
  260. dataField: 'FmsEquipmentRentInfo/RentDate', caption: '대여일', width: '18%', alignment: 'center', sortOrder: 'desc',
  261. customizeText: function (cellInfo) {
  262. return $G.date(cellInfo.value);
  263. }
  264. },
  265. {
  266. dataField: 'FmsEquipmentRentInfo/ReturnDueDate', caption: '반납예정일', width: '18%', alignment: 'center',
  267. customizeText: function (cellInfo) {
  268. return $G.date(cellInfo.value);
  269. }
  270. },
  271. ],
  272. paging: {
  273. pageSize: 8
  274. },
  275. contentReadyAction: function (e) {
  276. equipmentGridView = e.component;
  277. },
  278. rowClick: function (clickRow) {
  279. var data = clickRow.data;
  280. var dataModel = viewModel.dataModel;
  281. viewModel.dataModel.Title = $KoSet(viewModel.dataModel.Title, data['FmsEquipmentRentInfo/Title']());
  282. if (data['FmsEquipmentRentInfo/RentUser'] === undefined) {
  283. viewModel.dataModel.RentUser('');
  284. } else {
  285. viewModel.dataModel.RentUser(data['FmsEquipmentRentInfo/RentUser']());
  286. }
  287. if (data['FmsEquipmentRentInfo/RentDate'] === undefined) {
  288. viewModel.dataModel.RentDate('');
  289. } else {
  290. viewModel.dataModel.RentDate($G.date(moment(data['FmsEquipmentRentInfo/RentDate']())));
  291. }
  292. if (data['FmsEquipmentRentInfo/ReturnDueDate'] === undefined) {
  293. viewModel.dataModel.ReturnDueDate('');
  294. } else {
  295. viewModel.dataModel.ReturnDueDate($G.date(moment(data['FmsEquipmentRentInfo/ReturnDueDate']())));
  296. }
  297. viewModel.dataModel.ReturnCount(0);
  298. viewModel.dataModel.EqName(data['FmsEquipment/Name']());
  299. viewModel.dataModel.LossCount(0);
  300. viewModel.dataModel.CurrentRentCount(data['CurrentRentCount']());
  301. viewModel.dataModel.EquipmentId(data['EquipmentId']());
  302. viewModel.dataModel.EquipmentRentId(data['EquipmentRentId']());
  303. viewModel.dataModel.SiteId(data['SiteId']());
  304. }
  305. });
  306. viewModel.equipPopupToolbarItems = equipPopupToolbarItems;
  307. viewModel.dataModel.Title = ko.observable();
  308. viewModel.dataModel.RentUser = ko.observable();
  309. viewModel.dataModel.RentDate = ko.observable();
  310. viewModel.dataModel.ReturnDueDate = ko.observable();
  311. // hcLee 2016 01 14
  312. viewModel.dataModel.EqName = ko.observable();
  313. viewModel.equipmentDataGridOptions = equipmentDataGridOptions;
  314. viewModel.processValueChange = processValueChange;
  315. viewModel.equipmentExs = equipmentExs;
  316. viewModel.codeTypes = codeTypes;
  317. viewModel.codeStateTypes = codeStateTypes;
  318. viewModel.warehouses = warehouses;
  319. return viewModel;
  320. };