gemcap-be-common 1.2.140 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (303) hide show
  1. package/classes/bank-transaction-item.d.ts +17 -0
  2. package/classes/bank-transaction-item.js +64 -0
  3. package/classes/bank-transaction-item.ts +66 -0
  4. package/classes/bank-uploaded-transaction.d.ts +17 -0
  5. package/classes/bank-uploaded-transaction.js +35 -0
  6. package/classes/bank-uploaded-transaction.ts +35 -0
  7. package/classes/inventory-item.d.ts +41 -0
  8. package/classes/inventory-item.js +44 -0
  9. package/classes/inventory-item.ts +63 -0
  10. package/classes/payable-account-item.d.ts +22 -0
  11. package/classes/payable-account-item.js +27 -0
  12. package/classes/payable-account-item.ts +35 -0
  13. package/classes/quickbook-item.d.ts +37 -0
  14. package/classes/quickbook-item.js +51 -0
  15. package/classes/quickbook-item.ts +59 -0
  16. package/classes/receivable-item.d.ts +26 -0
  17. package/classes/receivable-item.js +28 -0
  18. package/classes/receivable-item.ts +38 -0
  19. package/constants/date-formats.contsants.d.ts +1 -0
  20. package/constants/date-formats.contsants.js +4 -0
  21. package/constants/date-formats.contsants.ts +1 -0
  22. package/db/brokers.db.d.ts +185 -0
  23. package/db/brokers.db.js +35 -2
  24. package/db/brokers.db.ts +34 -1
  25. package/db/collateral-adjustments.db.d.ts +34 -0
  26. package/db/collateral-adjustments.db.js +52 -0
  27. package/db/collateral-adjustments.db.ts +54 -0
  28. package/db/collaterals.db.d.ts +1 -1
  29. package/db/equipment.db.d.ts +40 -0
  30. package/db/equipment.db.js +55 -0
  31. package/db/equipment.db.ts +56 -0
  32. package/db/financial-spreading.db.ts +2 -1
  33. package/db/groups.d.ts +5 -0
  34. package/db/groups.js +57 -0
  35. package/db/groups.ts +52 -0
  36. package/db/inventories.d.ts +91 -0
  37. package/db/inventories.js +449 -0
  38. package/db/inventories.ts +481 -0
  39. package/db/inventory-availability.d.ts +3 -0
  40. package/db/inventory-availability.js +103 -0
  41. package/db/inventory-availability.ts +113 -0
  42. package/db/new-summary.d.ts +31 -0
  43. package/db/new-summary.js +1295 -0
  44. package/db/new-summary.ts +1509 -0
  45. package/db/payable-accounts.d.ts +30 -0
  46. package/db/payable-accounts.js +55 -0
  47. package/db/payable-accounts.ts +50 -0
  48. package/db/reserve.db.d.ts +34 -0
  49. package/db/reserve.db.js +52 -0
  50. package/db/reserve.db.ts +48 -0
  51. package/db/uploads.db.d.ts +2 -0
  52. package/db/uploads.db.js +29 -0
  53. package/db/uploads.db.ts +24 -0
  54. package/helpers/main.helper.d.ts +31 -0
  55. package/helpers/main.helper.js +63 -0
  56. package/helpers/main.helper.ts +63 -0
  57. package/models/AccountPayableItem.model.d.ts +6 -6
  58. package/models/AllocatedBankTransaction.model.d.ts +54 -0
  59. package/models/AllocatedBankTransaction.model.js +70 -0
  60. package/models/AllocatedBankTransaction.model.ts +94 -0
  61. package/models/AllocatedData.model.d.ts +33 -0
  62. package/models/AllocatedData.model.js +19 -0
  63. package/models/AllocatedData.model.ts +24 -0
  64. package/models/BBCDate.model.d.ts +3 -3
  65. package/models/BBCSheet.model.d.ts +3 -3
  66. package/models/Banks.model.d.ts +3 -3
  67. package/models/Borrower.model.d.ts +3 -3
  68. package/models/BorrowerData.model.d.ts +3 -3
  69. package/models/BorrowerDataInsurance.model.d.ts +3 -3
  70. package/models/BorrowerDataTerm.model.d.ts +3 -3
  71. package/models/BorrowerSummary.model.js +1 -1
  72. package/models/BorrowerSummary.model.ts +1 -1
  73. package/models/CalandarDay.model.d.ts +40 -0
  74. package/models/CalandarDay.model.js +47 -0
  75. package/models/CalandarDay.model.ts +61 -0
  76. package/models/CashAllocationProduct.model.d.ts +119 -0
  77. package/models/CashAllocationProduct.model.js +102 -0
  78. package/models/CashAllocationProduct.model.ts +112 -0
  79. package/models/CashAllocationReference.model.d.ts +37 -0
  80. package/models/CashAllocationReference.model.js +27 -0
  81. package/models/CashAllocationReference.model.ts +40 -0
  82. package/models/CollateralAdjustment.model.d.ts +51 -0
  83. package/models/CollateralAdjustment.model.js +61 -0
  84. package/models/CollateralAdjustment.model.ts +98 -0
  85. package/models/Company.model.d.ts +35 -0
  86. package/models/Company.model.js +18 -0
  87. package/models/Company.model.ts +29 -0
  88. package/models/CustomerAPGroup.model.d.ts +32 -0
  89. package/models/CustomerAPGroup.model.js +24 -0
  90. package/models/CustomerAPGroup.model.ts +31 -0
  91. package/models/Equipment.model.d.ts +53 -0
  92. package/models/Equipment.model.js +140 -0
  93. package/models/Equipment.model.ts +172 -0
  94. package/models/FinancialCompliance.model.d.ts +39 -0
  95. package/models/FinancialCompliance.model.js +64 -0
  96. package/models/FinancialCompliance.model.ts +78 -0
  97. package/models/FinancialComplianceBorrower.model.d.ts +58 -0
  98. package/models/FinancialComplianceBorrower.model.js +82 -0
  99. package/models/FinancialComplianceBorrower.model.ts +118 -0
  100. package/models/FinancialIndexes.model.d.ts +36 -0
  101. package/models/FinancialIndexes.model.js +27 -0
  102. package/models/FinancialIndexes.model.ts +37 -0
  103. package/models/Inventory.model.d.ts +18 -18
  104. package/models/InventoryAvailability.model.d.ts +21 -21
  105. package/models/InventoryAvailabilityItem.model.d.ts +6 -6
  106. package/models/InventoryItem.model.d.ts +24 -24
  107. package/models/InventoryManualEntry.model.d.ts +9 -9
  108. package/models/InventorySeasonalRates.model.d.ts +3 -3
  109. package/models/LoanBroker.model.d.ts +3 -3
  110. package/models/LoanCharges.model.d.ts +12 -12
  111. package/models/LoanProducts.model.d.ts +9 -9
  112. package/models/LoanStatementStatus.model.d.ts +35 -0
  113. package/models/LoanStatementStatus.model.js +34 -0
  114. package/models/LoanStatementStatus.model.ts +45 -0
  115. package/models/LoanStatementTransaction.model.d.ts +9 -9
  116. package/models/LoanTransactionFile.model.d.ts +41 -0
  117. package/models/LoanTransactionFile.model.js +44 -0
  118. package/models/LoanTransactionFile.model.ts +61 -0
  119. package/models/MappedGroup.model.d.ts +37 -0
  120. package/models/MappedGroup.model.js +33 -0
  121. package/models/MappedGroup.model.ts +46 -0
  122. package/models/MonthEndData.Model.d.ts +41 -0
  123. package/models/MonthEndData.Model.js +42 -0
  124. package/models/MonthEndData.Model.ts +53 -0
  125. package/models/OrganizationEmails.model.d.ts +44 -0
  126. package/models/OrganizationEmails.model.js +40 -0
  127. package/models/OrganizationEmails.model.ts +54 -0
  128. package/models/ProductBroker.model.d.ts +9 -9
  129. package/models/QuickbooksAccount.model.d.ts +39 -0
  130. package/models/QuickbooksAccount.model.js +43 -0
  131. package/models/QuickbooksAccount.model.ts +57 -0
  132. package/models/Receivable.model.d.ts +12 -12
  133. package/models/ReceivableAvailability.model.d.ts +54 -54
  134. package/models/ReceivableAvailabilityItem.model.d.ts +57 -57
  135. package/models/ReceivableItem.model.d.ts +6 -6
  136. package/models/Reserve.model.d.ts +51 -0
  137. package/models/Reserve.model.js +96 -0
  138. package/models/Reserve.model.ts +125 -0
  139. package/models/TermLoan.model.d.ts +3 -3
  140. package/models/TermLoanCalculated.model.d.ts +6 -6
  141. package/models/TransactionAttachedFile.Model.d.ts +35 -0
  142. package/models/TransactionAttachedFile.Model.js +37 -0
  143. package/models/TransactionAttachedFile.Model.ts +48 -0
  144. package/models/UploadedBankTransaction.model.d.ts +56 -0
  145. package/models/UploadedBankTransaction.model.js +78 -0
  146. package/models/UploadedBankTransaction.model.ts +110 -0
  147. package/models/UploadedData.model.d.ts +36 -0
  148. package/models/UploadedData.model.js +23 -0
  149. package/models/UploadedData.model.ts +35 -0
  150. package/models/UploadedFile.model.d.ts +40 -0
  151. package/models/UploadedFile.model.js +41 -0
  152. package/models/UploadedFile.model.ts +57 -0
  153. package/models/UploadedSheet.model.d.ts +46 -0
  154. package/models/UploadedSheet.model.js +27 -0
  155. package/models/UploadedSheet.model.ts +51 -0
  156. package/package.json +10 -1
  157. package/repositories/globals.repository.d.ts +8 -0
  158. package/repositories/globals.repository.js +24 -0
  159. package/repositories/globals.repository.ts +21 -0
  160. package/services/attached-files.service.d.ts +57 -0
  161. package/services/attached-files.service.js +103 -0
  162. package/services/attached-files.service.ts +123 -0
  163. package/services/availability.service.d.ts +77 -0
  164. package/services/availability.service.js +897 -0
  165. package/services/availability.service.ts +1034 -0
  166. package/services/bank-uploaded-transactions.service.d.ts +33 -0
  167. package/services/bank-uploaded-transactions.service.js +430 -0
  168. package/services/bank-uploaded-transactions.service.ts +475 -0
  169. package/services/banks.service.d.ts +36 -0
  170. package/services/banks.service.js +91 -0
  171. package/services/banks.service.ts +95 -0
  172. package/services/borrower-summary.service.d.ts +35 -0
  173. package/services/borrower-summary.service.js +310 -0
  174. package/services/borrower-summary.service.ts +334 -0
  175. package/services/borrowers.service.d.ts +103 -0
  176. package/services/borrowers.service.js +268 -0
  177. package/services/borrowers.service.ts +302 -0
  178. package/services/brokers.service.d.ts +212 -0
  179. package/services/brokers.service.js +160 -0
  180. package/services/brokers.service.ts +200 -0
  181. package/services/calendar.service.d.ts +53 -0
  182. package/services/calendar.service.js +108 -0
  183. package/services/calendar.service.ts +128 -0
  184. package/services/cash-allocation.service.d.ts +40 -0
  185. package/services/cash-allocation.service.js +92 -0
  186. package/services/cash-allocation.service.ts +105 -0
  187. package/services/collateral-adjustments.service.d.ts +38 -0
  188. package/services/collateral-adjustments.service.js +82 -0
  189. package/services/collateral-adjustments.service.ts +95 -0
  190. package/services/collaterals.service.d.ts +69 -0
  191. package/services/collaterals.service.js +279 -0
  192. package/services/collaterals.service.ts +319 -0
  193. package/services/companies.service.d.ts +5 -0
  194. package/services/companies.service.js +21 -0
  195. package/services/companies.service.ts +23 -0
  196. package/services/compliance-borrowers.service.d.ts +152 -0
  197. package/services/compliance-borrowers.service.js +569 -0
  198. package/services/compliance-borrowers.service.ts +617 -0
  199. package/services/equipment.service.d.ts +42 -0
  200. package/services/equipment.service.js +120 -0
  201. package/services/equipment.service.ts +149 -0
  202. package/services/file-manager.service.d.ts +44 -0
  203. package/services/file-manager.service.js +120 -0
  204. package/services/file-manager.service.ts +146 -0
  205. package/services/financial-compliance.service.d.ts +58 -0
  206. package/services/financial-compliance.service.js +281 -0
  207. package/services/financial-compliance.service.ts +309 -0
  208. package/services/financial-indexes.service.d.ts +20 -0
  209. package/services/financial-indexes.service.js +241 -0
  210. package/services/financial-indexes.service.ts +257 -0
  211. package/services/financial-spreading.service.d.ts +74 -0
  212. package/services/financial-spreading.service.js +450 -0
  213. package/services/financial-spreading.service.ts +517 -0
  214. package/services/globals.service.d.ts +5 -0
  215. package/services/globals.service.js +11 -0
  216. package/services/globals.service.ts +8 -0
  217. package/services/groups.service.d.ts +39 -0
  218. package/services/groups.service.js +65 -0
  219. package/services/groups.service.ts +64 -0
  220. package/services/inventory-availability.service.d.ts +13 -0
  221. package/services/inventory-availability.service.js +170 -0
  222. package/services/inventory-availability.service.ts +187 -0
  223. package/services/inventory.service.d.ts +118 -0
  224. package/services/inventory.service.js +239 -0
  225. package/services/inventory.service.ts +276 -0
  226. package/services/loan-charges.service.d.ts +83 -0
  227. package/services/loan-charges.service.js +343 -0
  228. package/services/loan-charges.service.ts +396 -0
  229. package/services/loan-payments.service.d.ts +94 -0
  230. package/services/loan-payments.service.js +485 -0
  231. package/services/loan-payments.service.ts +541 -0
  232. package/services/loan-products.service.d.ts +12 -0
  233. package/services/loan-products.service.js +55 -0
  234. package/services/loan-products.service.ts +58 -0
  235. package/services/loan-statement-balance.service.d.ts +16 -0
  236. package/services/loan-statement-balance.service.js +106 -0
  237. package/services/loan-statement-balance.service.ts +113 -0
  238. package/services/loan-statement-effects.service.d.ts +8 -0
  239. package/services/loan-statement-effects.service.js +42 -0
  240. package/services/loan-statement-effects.service.ts +41 -0
  241. package/services/loan-statement-status.service.d.ts +208 -0
  242. package/services/loan-statement-status.service.js +159 -0
  243. package/services/loan-statement-status.service.ts +177 -0
  244. package/services/loan-statement.service.d.ts +186 -0
  245. package/services/loan-statement.service.js +935 -0
  246. package/services/loan-statement.service.ts +1040 -0
  247. package/services/loan-transactions.service.d.ts +169 -0
  248. package/services/loan-transactions.service.js +941 -0
  249. package/services/loan-transactions.service.ts +1042 -0
  250. package/services/lock.service.d.ts +6 -0
  251. package/services/lock.service.js +45 -0
  252. package/services/lock.service.ts +45 -0
  253. package/services/manual-entry.service.d.ts +20 -0
  254. package/services/manual-entry.service.js +186 -0
  255. package/services/manual-entry.service.ts +201 -0
  256. package/services/month-end-data.service.d.ts +34 -0
  257. package/services/month-end-data.service.js +30 -0
  258. package/services/month-end-data.service.ts +35 -0
  259. package/services/nodemailer.service.d.ts +96 -0
  260. package/services/nodemailer.service.js +689 -0
  261. package/services/nodemailer.service.ts +774 -0
  262. package/services/organization-emails.service.d.ts +31 -0
  263. package/services/organization-emails.service.js +10 -0
  264. package/services/organization-emails.service.ts +7 -0
  265. package/services/organizations.service.d.ts +34 -0
  266. package/services/organizations.service.js +74 -0
  267. package/services/organizations.service.ts +84 -0
  268. package/services/pdf.service.d.ts +61 -0
  269. package/services/pdf.service.js +547 -0
  270. package/services/pdf.service.ts +642 -0
  271. package/services/quickbooks.service.d.ts +99 -0
  272. package/services/quickbooks.service.js +640 -0
  273. package/services/quickbooks.service.ts +734 -0
  274. package/services/reports/investor-summary.service.d.ts +28 -0
  275. package/services/reports/investor-summary.service.js +136 -0
  276. package/services/reports/investor-summary.service.ts +159 -0
  277. package/services/reports.service.d.ts +126 -0
  278. package/services/reports.service.js +584 -0
  279. package/services/reports.service.ts +702 -0
  280. package/services/reserve.service.d.ts +37 -0
  281. package/services/reserve.service.js +76 -0
  282. package/services/reserve.service.ts +79 -0
  283. package/services/sentry.service.d.ts +11 -0
  284. package/services/sentry.service.js +49 -0
  285. package/services/sentry.service.ts +33 -0
  286. package/services/signs.service.d.ts +69 -0
  287. package/services/signs.service.js +230 -0
  288. package/services/signs.service.ts +260 -0
  289. package/services/term-loan.service.d.ts +30 -0
  290. package/services/term-loan.service.js +614 -0
  291. package/services/term-loan.service.ts +696 -0
  292. package/services/uploads.service.d.ts +134 -0
  293. package/services/uploads.service.js +587 -0
  294. package/services/uploads.service.ts +643 -0
  295. package/services/user-logs.service.d.ts +23 -0
  296. package/services/user-logs.service.js +160 -0
  297. package/services/user-logs.service.ts +177 -0
  298. package/services/users.service.d.ts +4 -4
  299. package/services/yield.service.d.ts +46 -0
  300. package/services/yield.service.js +42 -12
  301. package/services/yield.service.ts +38 -8
  302. package/tsconfig.json +5 -5
  303. package/tsconfig.tsbuildinfo +1 -1
@@ -0,0 +1,449 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getAllCategories = exports.aggregateBbcExposuresGrouped = exports.aggregateBbcExposures = exports.aggregateAllValuesForBbc = exports.aggregateSKUDateAgingPlot = exports.getAllTimeOldestSKUDateNew = exports.groupSKUsByDate = exports.getLastDigitFromAllValues = exports.getMostRecentInventoryBBCDate = exports.getInventoriesAndTheirQtyByBorrowerId = exports.getInventoryItemsSKUAndValue = exports.getSKUUnitCostForAllDates = void 0;
7
+ const mongoose_1 = __importDefault(require("mongoose"));
8
+ const dayjs_1 = __importDefault(require("dayjs"));
9
+ const Inventory_model_1 = require("../models/Inventory.model");
10
+ const bbcDates_db_1 = require("./bbcDates.db");
11
+ const bbcSheets_db_1 = require("./bbcSheets.db");
12
+ const collaterals_enum_1 = require("../enums/collaterals.enum");
13
+ const InventoryItem_model_1 = require("../models/InventoryItem.model");
14
+ const collaterals_db_1 = require("./collaterals.db");
15
+ const getSKUUnitCostForAllDates = async (sheetsIds) => {
16
+ return InventoryItem_model_1.InventoryItemModel.aggregate([
17
+ {
18
+ $match: {
19
+ 'bbcSheetId': {
20
+ $in: sheetsIds
21
+ }
22
+ }
23
+ },
24
+ ...collaterals_db_1.COLLATERALS_LOOKUP,
25
+ {
26
+ $sort: {
27
+ 'bbc.bbcDate': -1
28
+ }
29
+ },
30
+ {
31
+ $group: {
32
+ '_id': '$sku',
33
+ 'currentCost': {
34
+ $first: '$unitCost'
35
+ },
36
+ 'minCost': {
37
+ $min: {
38
+ 'minCost': '$unitCost',
39
+ 'bbcDate': '$bbc.bbcDate'
40
+ }
41
+ },
42
+ 'qty': {
43
+ $first: '$qty'
44
+ }
45
+ }
46
+ }
47
+ ]);
48
+ };
49
+ exports.getSKUUnitCostForAllDates = getSKUUnitCostForAllDates;
50
+ const getInventoryItemsSKUAndValue = async (sheetIds) => await InventoryItem_model_1.InventoryItemModel.aggregate([
51
+ {
52
+ $match: { bbcSheetId: { $in: sheetIds.map((sheetId) => new mongoose_1.default.Types.ObjectId(sheetId)) } },
53
+ },
54
+ {
55
+ $group: {
56
+ _id: '$sku',
57
+ totalAmount: {
58
+ $sum: '$value',
59
+ },
60
+ },
61
+ },
62
+ {
63
+ $sort: { totalAmount: -1 },
64
+ },
65
+ ]);
66
+ exports.getInventoryItemsSKUAndValue = getInventoryItemsSKUAndValue;
67
+ const getInventoriesAndTheirQtyByBorrowerId = async (borrowerId, allBbcDates) => await Inventory_model_1.InventoryModel.aggregate([
68
+ {
69
+ $match: {
70
+ borrowerId,
71
+ bbcDate: {
72
+ $in: allBbcDates.map((i) => i.bbcDate)
73
+ }
74
+ }
75
+ },
76
+ { $unwind: '$items' },
77
+ {
78
+ $group: {
79
+ _id: '$bbcDate',
80
+ qty: { $sum: '$items.qty' },
81
+ },
82
+ },
83
+ {
84
+ $sort: {
85
+ _id: 1,
86
+ },
87
+ },
88
+ ]);
89
+ exports.getInventoriesAndTheirQtyByBorrowerId = getInventoriesAndTheirQtyByBorrowerId;
90
+ const getMostRecentInventoryBBCDate = async (borrowerId) => {
91
+ const inventory = await Inventory_model_1.InventoryModel.find({ borrower: borrowerId })
92
+ .sort([['bbcDate', -1]])
93
+ .limit(1);
94
+ return inventory[0].bbcDate;
95
+ };
96
+ exports.getMostRecentInventoryBBCDate = getMostRecentInventoryBBCDate;
97
+ const getLastDigitFromAllValues = async (allBbcDates) => {
98
+ const allIds = allBbcDates.reduce((acc, bbcDate) => [...acc, ...bbcDate.ids], []);
99
+ return InventoryItem_model_1.InventoryItemModel.aggregate([
100
+ {
101
+ $match: {
102
+ 'bbcSheetId': {
103
+ $in: allIds
104
+ }
105
+ }
106
+ },
107
+ ...collaterals_db_1.COLLATERALS_LOOKUP,
108
+ {
109
+ $group: {
110
+ '_id': '$bbc.bbcDate',
111
+ 'borrowerId': {
112
+ $first: '$bbc.borrowerId',
113
+ },
114
+ 'items': {
115
+ $addToSet: {
116
+ 'value': '$value',
117
+ },
118
+ },
119
+ },
120
+ },
121
+ {
122
+ $project: {
123
+ '_id': '$borrowerId',
124
+ 'bbcDate': '$_id',
125
+ 'digitArray': {
126
+ $map: {
127
+ input: '$items',
128
+ as: 'item',
129
+ in: {
130
+ $substr: [
131
+ {
132
+ $toString: '$$item.value',
133
+ },
134
+ 0,
135
+ 1,
136
+ ],
137
+ },
138
+ },
139
+ },
140
+ },
141
+ },
142
+ {
143
+ $sort: {
144
+ 'bbcDate': 1
145
+ }
146
+ },
147
+ {
148
+ $group: {
149
+ '_id': 1,
150
+ 'bbcDates': {
151
+ $push: '$bbcDate'
152
+ },
153
+ 'digitArrays': {
154
+ $push: '$digitArray'
155
+ },
156
+ }
157
+ }
158
+ ]);
159
+ };
160
+ exports.getLastDigitFromAllValues = getLastDigitFromAllValues;
161
+ const groupSKUsByDate = async (borrowerId) => {
162
+ const bbcDate = await (0, exports.getMostRecentInventoryBBCDate)(borrowerId);
163
+ const date = new Date(bbcDate);
164
+ const oneMonthAgo = (0, dayjs_1.default)(date).subtract(1, 'month').toDate();
165
+ const threeMonthsAgo = (0, dayjs_1.default)(date).subtract(3, 'month').toDate();
166
+ const sixMonthsAgo = (0, dayjs_1.default)(date).subtract(6, 'month').toDate();
167
+ const items = await Inventory_model_1.InventoryModel.aggregate([
168
+ {
169
+ $match: {
170
+ bbcDate: { $in: [date, oneMonthAgo, threeMonthsAgo, sixMonthsAgo] },
171
+ },
172
+ },
173
+ {
174
+ $unwind: '$items',
175
+ },
176
+ {
177
+ $group: {
178
+ _id: '$items.sku',
179
+ valuesAtTime: { $push: { bbcDate: '$bbcDate', count: '$items.qty' } },
180
+ },
181
+ },
182
+ ]);
183
+ return {
184
+ items,
185
+ oneMonthAgo,
186
+ threeMonthsAgo,
187
+ sixMonthsAgo,
188
+ recent: date,
189
+ };
190
+ };
191
+ exports.groupSKUsByDate = groupSKUsByDate;
192
+ const getAllTimeOldestSKUDateNew = async (borrowerId, bbcDate) => {
193
+ const bbcDates = await (0, bbcDates_db_1.getOlderBBCDates)(borrowerId, bbcDate);
194
+ const sheets = await (0, bbcSheets_db_1.getBBCSheetsByType)(bbcDates.map((bbcDate) => bbcDate._id.toString()), collaterals_enum_1.ECollaterals.INVENTORY);
195
+ return InventoryItem_model_1.InventoryItemModel.aggregate([
196
+ {
197
+ $match: {
198
+ bbcSheetId: {
199
+ '$in': sheets.map((sheet) => sheet._id)
200
+ }
201
+ }
202
+ },
203
+ {
204
+ $group: {
205
+ _id: '$sku',
206
+ oldestDate: {
207
+ $min: '$skuDate',
208
+ },
209
+ },
210
+ },
211
+ ]);
212
+ };
213
+ exports.getAllTimeOldestSKUDateNew = getAllTimeOldestSKUDateNew;
214
+ const todayDayjs = (0, dayjs_1.default)();
215
+ const today = todayDayjs.toDate();
216
+ const thirtyDaysAgo = todayDayjs.subtract(30, 'day').toDate();
217
+ const sixtyDaysAgo = todayDayjs.subtract(60, 'day').toDate();
218
+ const ninetyDaysAgo = todayDayjs.subtract(90, 'day').toDate();
219
+ const aggregateSKUDateAgingPlot = async (bbcSheetIds) => {
220
+ const generateSumAggregation = (start, end) => ({
221
+ $sum: {
222
+ $add: {
223
+ $cond: [
224
+ {
225
+ $and: [
226
+ { $lte: ['$skuDate', start] },
227
+ { $gte: ['$skuDate', end] },
228
+ ],
229
+ },
230
+ '$value',
231
+ '$$REMOVE',
232
+ ],
233
+ },
234
+ },
235
+ });
236
+ const a = await InventoryItem_model_1.InventoryItemModel.aggregate([
237
+ { $match: { 'bbcSheetId': { $in: bbcSheetIds } } },
238
+ ...collaterals_db_1.COLLATERALS_LOOKUP,
239
+ {
240
+ $group: {
241
+ _id: '$bbc.bbcDate',
242
+ '0-30': generateSumAggregation(today, thirtyDaysAgo),
243
+ '30-60': generateSumAggregation(thirtyDaysAgo, sixtyDaysAgo),
244
+ '60-90': generateSumAggregation(sixtyDaysAgo, ninetyDaysAgo),
245
+ '90+': {
246
+ $sum: {
247
+ $add: {
248
+ $cond: [
249
+ {
250
+ $lte: ['$skuDate', ninetyDaysAgo],
251
+ },
252
+ '$value',
253
+ '$$REMOVE',
254
+ ],
255
+ },
256
+ },
257
+ },
258
+ },
259
+ },
260
+ ]);
261
+ return a[0];
262
+ };
263
+ exports.aggregateSKUDateAgingPlot = aggregateSKUDateAgingPlot;
264
+ const aggregateAllValuesForBbc = async (bbcSheetIds) => {
265
+ return InventoryItem_model_1.InventoryItemModel.aggregate([
266
+ {
267
+ $match: {
268
+ bbcSheetId: { $in: bbcSheetIds },
269
+ },
270
+ },
271
+ {
272
+ $group: {
273
+ _id: '$sku',
274
+ value: { $first: '$value' },
275
+ skuDescription: { $first: '$skuDescription1' },
276
+ category: { $first: '$category' }
277
+ },
278
+ },
279
+ {
280
+ $project: {
281
+ _id: 0,
282
+ sku: '$_id',
283
+ value: 1,
284
+ skuDescription: 1,
285
+ category: 1,
286
+ },
287
+ },
288
+ { $sort: { value: -1 } },
289
+ { $limit: 500 },
290
+ ]);
291
+ };
292
+ exports.aggregateAllValuesForBbc = aggregateAllValuesForBbc;
293
+ const aggregateBbcExposures = async (bbcSheetIds) => {
294
+ const getTotalBbcValue = await InventoryItem_model_1.InventoryItemModel.aggregate([
295
+ {
296
+ $match: {
297
+ 'bbcSheetId': { $in: bbcSheetIds }
298
+ }
299
+ },
300
+ { $group: { _id: 0, total: { $sum: '$value' } } },
301
+ ]);
302
+ const inventoryTotal = getTotalBbcValue[0].total;
303
+ const topItemsForBbc = await InventoryItem_model_1.InventoryItemModel.aggregate([
304
+ {
305
+ $match: {
306
+ 'bbcSheetId': { $in: bbcSheetIds }
307
+ }
308
+ },
309
+ {
310
+ $group: {
311
+ _id: '$category',
312
+ totalItemValue: { $sum: '$value' },
313
+ },
314
+ },
315
+ { $sort: { totalItemValue: -1 } },
316
+ { $limit: 10 },
317
+ { $project: { _id: 0, name: '$_id', totalItemValue: 1 } },
318
+ ]);
319
+ return { inventoryTotal, topItemsForBbc };
320
+ };
321
+ exports.aggregateBbcExposures = aggregateBbcExposures;
322
+ const aggregateBbcExposuresGrouped = async (bbcSheetIds) => {
323
+ const commonAggregation = [
324
+ {
325
+ $match: {
326
+ 'bbcSheetId': { $in: bbcSheetIds }
327
+ }
328
+ },
329
+ ...collaterals_db_1.COLLATERALS_LOOKUP,
330
+ {
331
+ $lookup: {
332
+ from: 'categorygroups',
333
+ let: {
334
+ 'res_cod_it': 'category',
335
+ 'borrowerId': '$borrowerId'
336
+ },
337
+ pipeline: [
338
+ {
339
+ $match: {
340
+ $expr: {
341
+ $eq: [
342
+ '$bbc.borrowerId', '$$borrowerId'
343
+ ]
344
+ }
345
+ }
346
+ },
347
+ {
348
+ $unwind: '$items'
349
+ }
350
+ ],
351
+ as: 'item'
352
+ }
353
+ },
354
+ {
355
+ $project: {
356
+ 'bbc': 1,
357
+ '_id': 1,
358
+ 'skuDate': 1,
359
+ 'category': 1,
360
+ 'value': 1,
361
+ 'group': {
362
+ '$filter': {
363
+ 'input': '$item',
364
+ 'as': 'groupEx',
365
+ 'cond': {
366
+ '$eq': [
367
+ '$$groupEx.items', '$category'
368
+ ]
369
+ }
370
+ }
371
+ }
372
+ }
373
+ },
374
+ {
375
+ $addFields: {
376
+ 'groupName': {
377
+ $first: '$group.groupName'
378
+ }
379
+ }
380
+ },
381
+ {
382
+ $project: {
383
+ 'borrowerId': 1,
384
+ 'bbc': 1,
385
+ 'skuDate': 1,
386
+ 'category': {
387
+ $ifNull: [
388
+ '$groupName', '$category'
389
+ ]
390
+ },
391
+ 'value': 1,
392
+ }
393
+ },
394
+ ];
395
+ const getTotalBbcValue = await InventoryItem_model_1.InventoryItemModel.aggregate([
396
+ ...commonAggregation,
397
+ {
398
+ $group: {
399
+ '_id': 0,
400
+ 'total': {
401
+ $sum: '$value'
402
+ }
403
+ }
404
+ }
405
+ ]);
406
+ const inventoryTotal = getTotalBbcValue[0].total;
407
+ const topItemsForBbc = await InventoryItem_model_1.InventoryItemModel.aggregate([
408
+ ...commonAggregation,
409
+ {
410
+ $group: {
411
+ '_id': '$category',
412
+ 'totalItemValue': {
413
+ $sum: '$value'
414
+ }
415
+ }
416
+ },
417
+ { $sort: { 'totalItemValue': -1 } },
418
+ { $limit: 5 },
419
+ { $project: { '_id': 0, 'name': '$_id', 'totalItemValue': 1 } },
420
+ ]);
421
+ return { inventoryTotal, topItemsForBbc };
422
+ };
423
+ exports.aggregateBbcExposuresGrouped = aggregateBbcExposuresGrouped;
424
+ const getAllCategories = async (borrowerId) => {
425
+ const bbcSheets = await (0, collaterals_db_1.getBBCSheetsForBorrowerAndType)(borrowerId, collaterals_enum_1.ECollaterals.INVENTORY);
426
+ return InventoryItem_model_1.InventoryItemModel.aggregate([
427
+ {
428
+ $match: {
429
+ 'bbcSheetId': {
430
+ $in: bbcSheets.map((bbcSheet) => new mongoose_1.default.Types.ObjectId(String(bbcSheet._id)))
431
+ }
432
+ }
433
+ },
434
+ {
435
+ $group: {
436
+ '_id': null,
437
+ 'categories': {
438
+ $addToSet: '$category'
439
+ }
440
+ }
441
+ },
442
+ {
443
+ $project: {
444
+ '_id': 0
445
+ }
446
+ },
447
+ ]);
448
+ };
449
+ exports.getAllCategories = getAllCategories;