26ef460d32b152c8944b729eabbc0bbedf769483.svn-base 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. $(function () {
  2. 'use strict';
  3. var materialClassForSearch = ko.observableArray();
  4. BemsWebApplication.Factory.Material = {
  5. getBasicDataSourceRef: function (options) {
  6. var dbModeIId = options.dbModeIId,
  7. primaryKeyDataField = options.primaryKeyDataField,
  8. moreSelectFields = options.moreSelectFields,
  9. expand = ['FmsMaterial',
  10. 'FmsMaterial/FmsMaterialTradeCompany'];
  11. var select = [
  12. 'SiteId',
  13. 'BusinessFieldId',
  14. primaryKeyDataField,
  15. 'MaterialId',
  16. 'MaterialCount',
  17. 'FmsMaterial/FmsMaterialTradeCompany/Name',
  18. 'FmsMaterial/MaterialCode',
  19. 'FmsMaterial/Name',
  20. 'FmsMaterial/FirstClassId',
  21. 'FmsMaterial/SecondClassId',
  22. 'FmsMaterial/ThirdClassId',
  23. 'FmsMaterial/Standard',
  24. 'FmsMaterial/Unit'
  25. ];
  26. if (options.dbModeIId == "FmsMaterialRelease") {
  27. select.push('StockCountByPoint');
  28. }
  29. if (_.isArray(moreSelectFields)) {
  30. select = select.concat(moreSelectFields);
  31. }
  32. if (_.isArray(options.expand)) {
  33. expand = expand.concat(options.expand);
  34. }
  35. return BWA.DataUtil.createDataSource({
  36. dataSourceOptions: {
  37. paginate: false, // 전체를 모두 가져옴
  38. select: select,
  39. expand: expand,
  40. extendOptions: {
  41. forceOriginalField: true,
  42. alterNames: {
  43. 'FmsMaterial/MaterialCode': 'MaterialCode',
  44. 'FmsMaterial/Name': 'Name',
  45. 'FmsMaterial/FirstClassId': 'FirstClassId',
  46. 'FmsMaterial/SecondClassId': 'SecondClassId',
  47. 'FmsMaterial/ThirdClassId': 'ThirdClassId',
  48. 'FmsMaterial/Standard': 'Standard',
  49. 'FmsMaterial/Unit': 'Unit'
  50. }
  51. }
  52. }
  53. }, dbModeIId);
  54. },
  55. getDataSourceWithRelation: function (store, options) {
  56. return BWA.Factory.getBaseDataSourceWithRelation(
  57. store,
  58. options,
  59. BWA.Factory.Material.getDataSourceForRefDataGrid(),
  60. 'FmsMaterial');
  61. },
  62. formatClassName: function (firstClassName, secondClassName, thirdClassName) {
  63. var className = _.reduce(arguments, function (sb, name) {
  64. if (_.isEmpty(name)) return sb;
  65. if (_.isEmpty(sb)) {
  66. sb.push(name);
  67. return sb;
  68. }
  69. sb.push(' /')
  70. sb.push(name);
  71. return sb;
  72. }, []);
  73. return className.join('');
  74. },
  75. cellPrepared: function (cellElement, cellInfo) {
  76. var data = cellInfo.data;
  77. var self = BemsWebApplication.Factory.Facility;
  78. switch (cellInfo.column.dataField) {
  79. case 'ClassName':
  80. if (!data.FirstClassName) break;
  81. $(cellElement).text(self.formatClassName(data.FirstClassName(), data.SecondClassName(), data.ThirdClassName()));
  82. break;
  83. }
  84. },
  85. getDataSourceForDataGrid: function () {
  86. return {
  87. select: [
  88. 'SiteId',
  89. 'BusinessFieldId',
  90. 'MaterialId',
  91. 'MaterialCode',
  92. 'Name',
  93. 'Unit',
  94. 'MaterialCode',
  95. 'Standard',
  96. 'Standard',
  97. 'DurableYears',
  98. 'IsDiscontinued',
  99. 'IsUse',
  100. 'FinalPrice',
  101. 'ReasonableStockCount',
  102. 'FinalStockCount',
  103. 'FinalTotalStockAmount',
  104. 'CmBusinessField/Name',
  105. 'FmsMaterialCodeClass/Name',
  106. 'FmsMaterialCodeClass1/Name',
  107. 'FmsMaterialCodeClass2/Name',
  108. 'FmsMaterialCodeClass/Abbreviation',
  109. 'FmsMaterialCodeClass1/Abbreviation',
  110. 'FmsMaterialCodeClass2/Abbreviation',
  111. 'FmsMaterialCodeLocation/Name',
  112. 'FmsMaterialCodeType/Name',
  113. 'FmsMaterialWarehouse/Name',
  114. 'FmsMaterialTradeCompany/Name'
  115. ],
  116. expand: ['CmBusinessField',
  117. 'FmsMaterialCodeLocation',
  118. 'FmsMaterialCodeType',
  119. 'FmsMaterialWarehouse',
  120. 'FmsMaterialTradeCompany'],
  121. extendOptions: {
  122. multipleItems: [
  123. {
  124. id: 'MaterialClassId',
  125. entries: ['FmsMaterialCodeClass', 'FmsMaterialCodeClass1', 'FmsMaterialCodeClass2'],
  126. fields: ['FirstClassId', 'SecondClassId', 'ThirdClassId'],
  127. }
  128. ],
  129. forceOriginalField: true,
  130. alterNames: {
  131. 'FmsMaterialCodeClass/FirstClassId/Name': 'FirstClassName',
  132. 'FmsMaterialCodeClass1/SecondClassId/Name': 'SecondClassName',
  133. 'FmsMaterialCodeClass2/ThirdClassId/Name': 'ThirdClassName',
  134. }
  135. },
  136. sort: { field: "MaterialId", desc: true }
  137. };
  138. },
  139. getDataSourceForRefDataGrid: function () {
  140. return {
  141. select: [
  142. 'SiteId', 'BusinessFieldId', 'MaterialId', 'MaterialCode', 'Name', 'Unit', 'MaterialCode', 'Standard',
  143. 'FinalPrice', 'DurableYears', 'CmBusinessField/Name'
  144. ],
  145. expand: ['CmBusinessField'],
  146. filter: [
  147. ['SiteId', '=', BWA.UserInfo.SiteId()]
  148. ],
  149. extendOptions: {
  150. forceOriginalField: true
  151. }
  152. };
  153. },
  154. defaultColumns: [
  155. { dataField: 'MaterialId', caption: $G('number'), width: '10%', alignment: 'center', allowFiltering: false, sortOrder: 'desc' },
  156. { dataField: 'CmBusinessField/Name', caption: $G('businessField'), width: '10%', alignment: 'center' },
  157. {
  158. dataField: 'FirstClassName', width: '10%', caption: '자재(대)', alignment: 'center', allowSorting: false,
  159. },
  160. {
  161. dataField: 'SecondClassName', width: '10%', caption: '자재(중)', alignment: 'center', allowSorting: false,
  162. },
  163. {
  164. dataField: 'ThirdClassName', width: '10%', caption: '자재(소)', alignment: 'center', allowSorting: false,
  165. },
  166. { dataField: 'MaterialCode', caption: $G('materialCode'), width: '20%', alignment: 'center', visible: false },
  167. { dataField: 'Name', caption: $G('materialName'), width: '25%', alignment: 'center' },
  168. { dataField: 'Standard', caption: $G('materialStandard'), width: '20%', alignment: 'center', },
  169. { dataField: 'Unit', caption: $G('materialUnit'), width: '8%', alignment: 'center' },
  170. { dataField: 'FinalPrice', caption: '단가', width: '8%', alignment: 'center', format: 'fixedPoint', },
  171. { dataField: 'ReasonableStockCount', caption: '적정재고량', width: '8%', alignment: 'center', format: 'fixedPoint' },
  172. { dataField: 'DurableYears', caption: $G('durableYears'), width: '8%', alignment: 'center', visible: false },
  173. {
  174. dataField: 'IsDiscontinued', caption: $G('isDiscontinued'), width: '8%', alignment: 'center',
  175. customizeText: function (cellInfo) {
  176. return $G.isYes(cellInfo.value);
  177. }
  178. },
  179. {
  180. dataField: 'IsUse', caption: '사용여부', width: '8%', alignment: 'center',
  181. customizeText: function (cellInfo) {
  182. return $G.isYes(cellInfo.value);
  183. }
  184. }
  185. ]
  186. };
  187. $.extend(BWA.Factory.Material, BWA.DataUtil.pickFunctions(BWA.Material));
  188. });