@silexpert/core 1.1.306 → 1.1.308

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 (112) hide show
  1. package/dist/cjs/api/resources/Commercial.d.ts +4 -1
  2. package/dist/cjs/api/resources/Commercial.d.ts.map +1 -1
  3. package/dist/cjs/api/resources/Commercial.js +3 -0
  4. package/dist/cjs/api/resources/Commercial.js.map +1 -1
  5. package/dist/cjs/types/Enum/Card.d.ts +24 -2
  6. package/dist/cjs/types/Enum/Card.d.ts.map +1 -1
  7. package/dist/cjs/types/Enum/Card.js +26 -0
  8. package/dist/cjs/types/Enum/Card.js.map +1 -1
  9. package/dist/cjs/types/Enum/PriceGridClementine.d.ts +22 -0
  10. package/dist/cjs/types/Enum/PriceGridClementine.d.ts.map +1 -1
  11. package/dist/cjs/types/Enum/PriceGridClementine.js +27 -1
  12. package/dist/cjs/types/Enum/PriceGridClementine.js.map +1 -1
  13. package/dist/cjs/types/Enum/PriceGridLegalstart.d.ts +8 -0
  14. package/dist/cjs/types/Enum/PriceGridLegalstart.d.ts.map +1 -1
  15. package/dist/cjs/types/Enum/PriceGridLegalstart.js +8 -0
  16. package/dist/cjs/types/Enum/PriceGridLegalstart.js.map +1 -1
  17. package/dist/cjs/types/Enum/PriceGridPourcentage.d.ts +10 -0
  18. package/dist/cjs/types/Enum/PriceGridPourcentage.d.ts.map +1 -1
  19. package/dist/cjs/types/Enum/PriceGridPourcentage.js +84 -0
  20. package/dist/cjs/types/Enum/PriceGridPourcentage.js.map +1 -1
  21. package/dist/cjs/types/Enum/StatisticType.d.ts +2 -1
  22. package/dist/cjs/types/Enum/StatisticType.d.ts.map +1 -1
  23. package/dist/cjs/types/Enum/StatisticType.js +1 -0
  24. package/dist/cjs/types/Enum/StatisticType.js.map +1 -1
  25. package/dist/cjs/types/Interface/api/commercial/QueryGetStatsHistory.d.ts +7 -0
  26. package/dist/cjs/types/Interface/api/commercial/QueryGetStatsHistory.d.ts.map +1 -0
  27. package/dist/cjs/types/Interface/api/commercial/QueryGetStatsHistory.js +42 -0
  28. package/dist/cjs/types/Interface/api/commercial/QueryGetStatsHistory.js.map +1 -0
  29. package/dist/cjs/types/Interface/api/payment/Util.d.ts +3 -0
  30. package/dist/cjs/types/Interface/api/payment/Util.d.ts.map +1 -1
  31. package/dist/cjs/types/Interface/api/payment/Util.js.map +1 -1
  32. package/dist/cjs/types/Interface/api/statistic/QueryInternal.d.ts +1 -1
  33. package/dist/cjs/types/Interface/api/statistic/QueryInternal.d.ts.map +1 -1
  34. package/dist/cjs/types/Interface/api/statistic/QueryInternal.js +5 -5
  35. package/dist/cjs/types/Interface/api/statistic/QueryInternal.js.map +1 -1
  36. package/dist/cjs/types/index.d.ts +1 -0
  37. package/dist/cjs/types/index.d.ts.map +1 -1
  38. package/dist/cjs/types/index.js +1 -0
  39. package/dist/cjs/types/index.js.map +1 -1
  40. package/dist/cjs/utils/payment.d.ts +1 -0
  41. package/dist/cjs/utils/payment.d.ts.map +1 -1
  42. package/dist/cjs/utils/payment.js +68 -59
  43. package/dist/cjs/utils/payment.js.map +1 -1
  44. package/dist/cjs/utils/prestation.d.ts +60 -0
  45. package/dist/cjs/utils/prestation.d.ts.map +1 -1
  46. package/dist/cjs/utils/prestation.js +4 -3
  47. package/dist/cjs/utils/prestation.js.map +1 -1
  48. package/dist/cjs/utils/tests/payment.spec.js +72 -36
  49. package/dist/cjs/utils/tests/payment.spec.js.map +1 -1
  50. package/dist/mjs/api/resources/Commercial.d.ts +4 -1
  51. package/dist/mjs/api/resources/Commercial.d.ts.map +1 -1
  52. package/dist/mjs/api/resources/Commercial.js +7 -0
  53. package/dist/mjs/api/resources/Commercial.js.map +1 -1
  54. package/dist/mjs/types/Enum/Card.d.ts +24 -2
  55. package/dist/mjs/types/Enum/Card.d.ts.map +1 -1
  56. package/dist/mjs/types/Enum/Card.js +26 -0
  57. package/dist/mjs/types/Enum/Card.js.map +1 -1
  58. package/dist/mjs/types/Enum/PriceGridClementine.d.ts +22 -0
  59. package/dist/mjs/types/Enum/PriceGridClementine.d.ts.map +1 -1
  60. package/dist/mjs/types/Enum/PriceGridClementine.js +27 -1
  61. package/dist/mjs/types/Enum/PriceGridClementine.js.map +1 -1
  62. package/dist/mjs/types/Enum/PriceGridLegalstart.d.ts +8 -0
  63. package/dist/mjs/types/Enum/PriceGridLegalstart.d.ts.map +1 -1
  64. package/dist/mjs/types/Enum/PriceGridLegalstart.js +8 -0
  65. package/dist/mjs/types/Enum/PriceGridLegalstart.js.map +1 -1
  66. package/dist/mjs/types/Enum/PriceGridPourcentage.d.ts +10 -0
  67. package/dist/mjs/types/Enum/PriceGridPourcentage.d.ts.map +1 -1
  68. package/dist/mjs/types/Enum/PriceGridPourcentage.js +84 -0
  69. package/dist/mjs/types/Enum/PriceGridPourcentage.js.map +1 -1
  70. package/dist/mjs/types/Enum/StatisticType.d.ts +2 -1
  71. package/dist/mjs/types/Enum/StatisticType.d.ts.map +1 -1
  72. package/dist/mjs/types/Enum/StatisticType.js +1 -0
  73. package/dist/mjs/types/Enum/StatisticType.js.map +1 -1
  74. package/dist/mjs/types/Interface/api/commercial/QueryGetStatsHistory.d.ts +7 -0
  75. package/dist/mjs/types/Interface/api/commercial/QueryGetStatsHistory.d.ts.map +1 -0
  76. package/dist/mjs/types/Interface/api/commercial/QueryGetStatsHistory.js +42 -0
  77. package/dist/mjs/types/Interface/api/commercial/QueryGetStatsHistory.js.map +1 -0
  78. package/dist/mjs/types/Interface/api/payment/Util.d.ts +3 -0
  79. package/dist/mjs/types/Interface/api/payment/Util.d.ts.map +1 -1
  80. package/dist/mjs/types/Interface/api/payment/Util.js.map +1 -1
  81. package/dist/mjs/types/Interface/api/statistic/QueryInternal.d.ts +1 -1
  82. package/dist/mjs/types/Interface/api/statistic/QueryInternal.d.ts.map +1 -1
  83. package/dist/mjs/types/Interface/api/statistic/QueryInternal.js +3 -3
  84. package/dist/mjs/types/Interface/api/statistic/QueryInternal.js.map +1 -1
  85. package/dist/mjs/types/index.d.ts +1 -0
  86. package/dist/mjs/types/index.d.ts.map +1 -1
  87. package/dist/mjs/types/index.js +1 -0
  88. package/dist/mjs/types/index.js.map +1 -1
  89. package/dist/mjs/utils/payment.d.ts +1 -0
  90. package/dist/mjs/utils/payment.d.ts.map +1 -1
  91. package/dist/mjs/utils/payment.js +68 -59
  92. package/dist/mjs/utils/payment.js.map +1 -1
  93. package/dist/mjs/utils/prestation.d.ts +60 -0
  94. package/dist/mjs/utils/prestation.d.ts.map +1 -1
  95. package/dist/mjs/utils/prestation.js +1 -1
  96. package/dist/mjs/utils/prestation.js.map +1 -1
  97. package/dist/mjs/utils/tests/payment.spec.js +72 -36
  98. package/dist/mjs/utils/tests/payment.spec.js.map +1 -1
  99. package/package.json +1 -1
  100. package/ts/api/resources/Commercial.ts +8 -0
  101. package/ts/types/Enum/Card.ts +27 -0
  102. package/ts/types/Enum/PriceGridClementine.ts +27 -1
  103. package/ts/types/Enum/PriceGridLegalstart.ts +8 -0
  104. package/ts/types/Enum/PriceGridPourcentage.ts +84 -0
  105. package/ts/types/Enum/StatisticType.ts +1 -0
  106. package/ts/types/Interface/api/commercial/QueryGetStatsHistory.ts +26 -0
  107. package/ts/types/Interface/api/payment/Util.ts +3 -0
  108. package/ts/types/Interface/api/statistic/QueryInternal.ts +1 -1
  109. package/ts/types/index.ts +1 -0
  110. package/ts/utils/payment.ts +70 -63
  111. package/ts/utils/prestation.ts +3 -1
  112. package/ts/utils/tests/payment.spec.ts +72 -36
@@ -19,6 +19,7 @@ describe('Payment', () => {
19
19
  const idPrestation = 1;
20
20
  const idSociety = 1;
21
21
  const yearlyAmountNonExpress = 1800;
22
+ const nextYearlyAmountNonExpress = 1800;
22
23
  const appCost = 14.9;
23
24
  const firstExerciceNonExpresssEndDate = dayjs().add(11, 'month').endOf('month').toDate();
24
25
  const prestationList = {
@@ -85,14 +86,16 @@ describe('Payment', () => {
85
86
  try {
86
87
  prestationList.hidden = true;
87
88
  (0, payment_1.calculatePaymentsAuto)({
88
- goToClient: dayjs().toDate(),
89
+ idTypeBrand: 1,
90
+ goToClient: dayjs('2024-06-06').toDate(),
89
91
  firstExerciceNonExpresssEndDate,
90
92
  idPrestation,
91
93
  prestationList: Object.assign(Object.assign({}, prestationList), { isCatalog: true }),
92
94
  idVat,
93
95
  listPartialExercicePrestationExpress,
94
96
  listRegulations,
95
- yearlyAmountNonExpress
97
+ yearlyAmountNonExpress,
98
+ nextYearlyAmountNonExpress
96
99
  });
97
100
  }
98
101
  catch (error) {
@@ -105,14 +108,16 @@ describe('Payment', () => {
105
108
  expect.assertions(2);
106
109
  try {
107
110
  (0, payment_1.calculatePaymentsAuto)({
108
- goToClient: dayjs().toDate(),
111
+ idTypeBrand: 1,
112
+ goToClient: dayjs('2024-06-06').toDate(),
109
113
  firstExerciceNonExpresssEndDate,
110
114
  idPrestation,
111
115
  prestationList,
112
116
  idVat,
113
117
  listPartialExercicePrestationExpress,
114
118
  listRegulations: [],
115
- yearlyAmountNonExpress
119
+ yearlyAmountNonExpress,
120
+ nextYearlyAmountNonExpress
116
121
  });
117
122
  }
118
123
  catch (error) {
@@ -125,14 +130,16 @@ describe('Payment', () => {
125
130
  expect.assertions(2);
126
131
  try {
127
132
  (0, payment_1.calculatePaymentsAuto)({
128
- goToClient: dayjs().toDate(),
133
+ idTypeBrand: 1,
134
+ goToClient: dayjs('2024-06-06').toDate(),
129
135
  firstExerciceNonExpresssEndDate,
130
136
  idPrestation,
131
137
  prestationList,
132
138
  idVat,
133
139
  listPartialExercicePrestationExpress,
134
140
  listRegulations: [{ processed: true }],
135
- yearlyAmountNonExpress
141
+ yearlyAmountNonExpress,
142
+ nextYearlyAmountNonExpress
136
143
  });
137
144
  }
138
145
  catch (error) {
@@ -147,14 +154,16 @@ describe('Payment', () => {
147
154
  // express
148
155
  test('if only one express, monthly payments of actual exo should be in parallel of express monthly payments, smoothed in number of remaining months (mini 3 months) (if not in 3 last month)', () => __awaiter(void 0, void 0, void 0, function* () {
149
156
  const payments = (0, payment_1.calculatePaymentsAuto)({
150
- goToClient: dayjs().toDate(),
157
+ idTypeBrand: 1,
158
+ goToClient: dayjs('2024-06-06').toDate(),
151
159
  firstExerciceNonExpresssEndDate,
152
160
  idPrestation,
153
161
  prestationList,
154
162
  idVat,
155
163
  listPartialExercicePrestationExpress: [listPartialExercicePrestationExpress[0]],
156
164
  listRegulations,
157
- yearlyAmountNonExpress
165
+ yearlyAmountNonExpress,
166
+ nextYearlyAmountNonExpress
158
167
  });
159
168
  const firstExpressDatePayment = payments.filter(p => dayjs(p.closingDate).diff(firstExerciceNonExpresssEndDate) < 0)[0].datePayment;
160
169
  const firstNonExpressDatePayment = payments.filter(p => dayjs(p.closingDate).diff(firstExerciceNonExpresssEndDate) === 0)[0].datePayment;
@@ -163,14 +172,16 @@ describe('Payment', () => {
163
172
  test('if more than one express, monthly payments of actual exo should be in a row of express monthly payments and smoothed, smoothed in number of remaining months after express monthly payments (mini 3 months) (if in 3 last month of exercice)', () => __awaiter(void 0, void 0, void 0, function* () {
164
173
  var _c, _d, _e, _f;
165
174
  const payments = (0, payment_1.calculatePaymentsAuto)({
166
- goToClient: dayjs().toDate(),
175
+ idTypeBrand: 1,
176
+ goToClient: dayjs('2024-06-06').toDate(),
167
177
  firstExerciceNonExpresssEndDate,
168
178
  idPrestation,
169
179
  prestationList,
170
180
  idVat,
171
181
  listPartialExercicePrestationExpress,
172
182
  listRegulations,
173
- yearlyAmountNonExpress
183
+ yearlyAmountNonExpress,
184
+ nextYearlyAmountNonExpress
174
185
  });
175
186
  const lastExpressDatePayment = (_d = (_c = payments.filter(p => dayjs(p.closingDate).diff(firstExerciceNonExpresssEndDate) < 0).splice(-1)) === null || _c === void 0 ? void 0 : _c[0]) === null || _d === void 0 ? void 0 : _d.datePayment;
176
187
  const firstNonExpressDatePayment = (_f = (_e = payments.filter(p => dayjs(p.closingDate).diff(firstExerciceNonExpresssEndDate) === 0)) === null || _e === void 0 ? void 0 : _e[0]) === null || _f === void 0 ? void 0 : _f.datePayment;
@@ -183,7 +194,8 @@ describe('Payment', () => {
183
194
  const nbMonthDelay = 6;
184
195
  const newFirstExerciceNonExpresssEndDate = dayjs().add(nbMonthDelay, 'month').endOf('month').toDate();
185
196
  const payments = (0, payment_1.calculatePaymentsAuto)({
186
- goToClient: dayjs().toDate(),
197
+ idTypeBrand: 1,
198
+ goToClient: dayjs('2024-06-06').toDate(),
187
199
  firstExerciceNonExpresssEndDate: newFirstExerciceNonExpresssEndDate,
188
200
  idPrestation,
189
201
  prestationList,
@@ -193,7 +205,8 @@ describe('Payment', () => {
193
205
  amount: 50,
194
206
  amountUsed: 0,
195
207
  }],
196
- yearlyAmountNonExpress
208
+ yearlyAmountNonExpress,
209
+ nextYearlyAmountNonExpress
197
210
  });
198
211
  // const listNonExpressPayments = payments.filter(p => p.closingDate === newFirstExerciceNonExpresssEndDate);
199
212
  const listNonExpressPayments = payments.filter(p => dayjs(p.closingDate).diff(newFirstExerciceNonExpresssEndDate) === 0);
@@ -204,7 +217,8 @@ describe('Payment', () => {
204
217
  const nbMonthDelay = 1;
205
218
  const newFirstExerciceNonExpresssEndDate = dayjs().add(nbMonthDelay, 'month').endOf('month').toDate();
206
219
  const payments = (0, payment_1.calculatePaymentsAuto)({
207
- goToClient: dayjs().toDate(),
220
+ idTypeBrand: 1,
221
+ goToClient: dayjs('2024-06-06').toDate(),
208
222
  firstExerciceNonExpresssEndDate: newFirstExerciceNonExpresssEndDate,
209
223
  idPrestation,
210
224
  prestationList,
@@ -214,7 +228,8 @@ describe('Payment', () => {
214
228
  amount: 50,
215
229
  amountUsed: 0,
216
230
  }],
217
- yearlyAmountNonExpress
231
+ yearlyAmountNonExpress,
232
+ nextYearlyAmountNonExpress
218
233
  });
219
234
  const listNonExpressPayments = payments.filter(p => dayjs(p.closingDate).diff(newFirstExerciceNonExpresssEndDate) === 0);
220
235
  expect(listNonExpressPayments.length).toStrictEqual(3);
@@ -229,14 +244,16 @@ describe('Payment', () => {
229
244
  amountUsed: 0,
230
245
  }];
231
246
  const payments = (0, payment_1.calculatePaymentsAuto)({
232
- goToClient: dayjs().toDate(),
247
+ idTypeBrand: 1,
248
+ goToClient: dayjs('2024-06-06').toDate(),
233
249
  firstExerciceNonExpresssEndDate: newFirstExerciceNonExpresssEndDate,
234
250
  idPrestation,
235
251
  prestationList,
236
252
  idVat,
237
253
  listPartialExercicePrestationExpress: [],
238
254
  listRegulations: newListRegulations,
239
- yearlyAmountNonExpress
255
+ yearlyAmountNonExpress,
256
+ nextYearlyAmountNonExpress
240
257
  });
241
258
  const diff = yearlyAmountNonExpress - newListRegulations.reduce((acc, r) => acc + r.amount - r.amountUsed, 0);
242
259
  const amount = Math.round(100 * diff / nbMonthDelay) / 100;
@@ -251,14 +268,16 @@ describe('Payment', () => {
251
268
  amountUsed: 0,
252
269
  }];
253
270
  const payments = (0, payment_1.calculatePaymentsAuto)({
254
- goToClient: dayjs().toDate(),
271
+ idTypeBrand: 1,
272
+ goToClient: dayjs('2024-06-06').toDate(),
255
273
  firstExerciceNonExpresssEndDate: newFirstExerciceNonExpresssEndDate,
256
274
  idPrestation,
257
275
  prestationList,
258
276
  idVat,
259
277
  listPartialExercicePrestationExpress: [],
260
278
  listRegulations: newListRegulations,
261
- yearlyAmountNonExpress
279
+ yearlyAmountNonExpress,
280
+ nextYearlyAmountNonExpress
262
281
  });
263
282
  const diff = yearlyAmountNonExpress - newListRegulations.reduce((acc, r) => acc + r.amount - r.amountUsed, 0);
264
283
  const amount = Math.round(100 * diff / 3) / 100;
@@ -270,7 +289,8 @@ describe('Payment', () => {
270
289
  mockdate_1.default.set(mockedDate);
271
290
  const newFirstExerciceNonExpresssEndDate = dayjs().add(11, 'month').endOf('month').toDate();
272
291
  const payments = (0, payment_1.calculatePaymentsAuto)({
273
- goToClient: dayjs().toDate(),
292
+ idTypeBrand: 1,
293
+ goToClient: dayjs('2024-06-06').toDate(),
274
294
  firstExerciceNonExpresssEndDate: newFirstExerciceNonExpresssEndDate,
275
295
  idPrestation,
276
296
  prestationList,
@@ -280,7 +300,8 @@ describe('Payment', () => {
280
300
  amount: 50,
281
301
  amountUsed: 0,
282
302
  }],
283
- yearlyAmountNonExpress
303
+ yearlyAmountNonExpress,
304
+ nextYearlyAmountNonExpress
284
305
  });
285
306
  const listNonExpressPayments = payments.filter(p => dayjs(p.closingDate).diff(newFirstExerciceNonExpresssEndDate) === 0);
286
307
  expect(Math.round(100 * listNonExpressPayments[0].amount * 1.0275) / 100).toStrictEqual(listNonExpressPayments.splice(-2)[0].amount);
@@ -291,7 +312,8 @@ describe('Payment', () => {
291
312
  mockdate_1.default.set(mockedDate);
292
313
  const newFirstExerciceNonExpresssEndDate = dayjs().add(11, 'month').endOf('month').toDate();
293
314
  const payments = (0, payment_1.calculatePaymentsAuto)({
294
- goToClient: dayjs().toDate(),
315
+ idTypeBrand: 1,
316
+ goToClient: dayjs('2024-06-06').toDate(),
295
317
  firstExerciceNonExpresssEndDate: newFirstExerciceNonExpresssEndDate,
296
318
  idPrestation,
297
319
  prestationList,
@@ -301,7 +323,8 @@ describe('Payment', () => {
301
323
  amount: 50,
302
324
  amountUsed: 0,
303
325
  }],
304
- yearlyAmountNonExpress
326
+ yearlyAmountNonExpress,
327
+ nextYearlyAmountNonExpress
305
328
  });
306
329
  const listNonExpressPayments = payments.filter(p => dayjs(p.datePayment).diff(dayjs('2025-06-01')) === 0);
307
330
  expect(listNonExpressPayments[0].amount).toStrictEqual(listNonExpressPayments.splice(-2)[0].amount);
@@ -313,7 +336,8 @@ describe('Payment', () => {
313
336
  mockdate_1.default.set(mockedDate);
314
337
  const newFirstExerciceNonExpresssEndDate = dayjs().add(12, 'month').endOf('month').toDate();
315
338
  const payments = (0, payment_1.calculatePaymentsAuto)({
316
- goToClient: dayjs().toDate(),
339
+ idTypeBrand: 1,
340
+ goToClient: dayjs('2024-06-06').toDate(),
317
341
  firstExerciceNonExpresssEndDate: newFirstExerciceNonExpresssEndDate,
318
342
  idPrestation,
319
343
  prestationList,
@@ -323,7 +347,8 @@ describe('Payment', () => {
323
347
  amount: 50,
324
348
  amountUsed: 50,
325
349
  }],
326
- yearlyAmountNonExpress
350
+ yearlyAmountNonExpress,
351
+ nextYearlyAmountNonExpress
327
352
  });
328
353
  const paymentsOfFirstExo = (_g = payments.filter(p => dayjs(p.datePayment).diff(dayjs('2025-06-01')) === 0).splice(-1)[0].amount) !== null && _g !== void 0 ? _g : 0;
329
354
  const paymentsOfSecondExo = (_h = payments.filter(p => dayjs(p.datePayment).diff(dayjs('2025-07-01')) === 0).splice(-1)[0].amount) !== null && _h !== void 0 ? _h : 0;
@@ -337,14 +362,16 @@ describe('Payment', () => {
337
362
  listPartialExercicePrestationExpressCloned[0] = Object.assign(Object.assign({}, listPartialExercicePrestationExpress[0]), { startDate: dayjs().add(1, 'year').startOf('month').toDate() });
338
363
  listPartialExercicePrestationExpressCloned[1] = Object.assign(Object.assign({}, listPartialExercicePrestationExpress[1]), { startDate: dayjs().startOf('month').toDate() });
339
364
  const payments = (0, payment_1.calculatePaymentsAuto)({
340
- goToClient: dayjs().toDate(),
365
+ idTypeBrand: 1,
366
+ goToClient: dayjs('2024-06-06').toDate(),
341
367
  firstExerciceNonExpresssEndDate,
342
368
  idPrestation,
343
369
  prestationList,
344
370
  idVat,
345
371
  listPartialExercicePrestationExpress: listPartialExercicePrestationExpressCloned,
346
372
  listRegulations,
347
- yearlyAmountNonExpress
373
+ yearlyAmountNonExpress,
374
+ nextYearlyAmountNonExpress
348
375
  });
349
376
  expect(payments.length).toBeGreaterThanOrEqual(4);
350
377
  expect(dayjs(payments[payments.length - 1].datePayment).diff(dayjs((_j = payments === null || payments === void 0 ? void 0 : payments[0]) === null || _j === void 0 ? void 0 : _j.datePayment), 'month')).toBeGreaterThan(0);
@@ -353,7 +380,8 @@ describe('Payment', () => {
353
380
  const mockedDate = dayjs('2024-03-15').toDate();
354
381
  mockdate_1.default.set(mockedDate);
355
382
  const payments = (0, payment_1.calculatePaymentsAuto)({
356
- goToClient: dayjs().toDate(),
383
+ idTypeBrand: 1,
384
+ goToClient: dayjs('2024-06-06').toDate(),
357
385
  firstExerciceNonExpresssEndDate,
358
386
  idPrestation,
359
387
  prestationList,
@@ -367,7 +395,8 @@ describe('Payment', () => {
367
395
  idPaymentMethod: types_1.PaymentMethod.BANK_CARD.id,
368
396
  idSociety,
369
397
  }],
370
- yearlyAmountNonExpress
398
+ yearlyAmountNonExpress,
399
+ nextYearlyAmountNonExpress
371
400
  });
372
401
  expect(payments.length).toBeGreaterThanOrEqual(2);
373
402
  expect(payments[0]).toMatchObject({
@@ -389,14 +418,16 @@ describe('Payment', () => {
389
418
  const mockedDate = dayjs('2024-03-29').toDate();
390
419
  mockdate_1.default.set(mockedDate);
391
420
  const payments = (0, payment_1.calculatePaymentsAuto)({
392
- goToClient: dayjs().toDate(),
421
+ idTypeBrand: 1,
422
+ goToClient: dayjs('2024-06-06').toDate(),
393
423
  firstExerciceNonExpresssEndDate,
394
424
  idPrestation,
395
425
  prestationList,
396
426
  idVat,
397
427
  listPartialExercicePrestationExpress,
398
428
  listRegulations,
399
- yearlyAmountNonExpress
429
+ yearlyAmountNonExpress,
430
+ nextYearlyAmountNonExpress
400
431
  });
401
432
  expect(payments.length).toBeGreaterThanOrEqual(4);
402
433
  expect((_k = payments === null || payments === void 0 ? void 0 : payments[0]) === null || _k === void 0 ? void 0 : _k.datePayment).toStrictEqual(dayjs(mockedDate).add(2, 'month').startOf('month').toDate());
@@ -406,14 +437,16 @@ describe('Payment', () => {
406
437
  const mockedDate = dayjs('2024-03-29').toDate();
407
438
  mockdate_1.default.set(mockedDate);
408
439
  const payments = (0, payment_1.calculatePaymentsAuto)({
409
- goToClient: dayjs().toDate(),
440
+ idTypeBrand: 1,
441
+ goToClient: dayjs('2024-06-06').toDate(),
410
442
  firstExerciceNonExpresssEndDate,
411
443
  idPrestation,
412
444
  prestationList,
413
445
  idVat,
414
446
  listPartialExercicePrestationExpress,
415
447
  listRegulations,
416
- yearlyAmountNonExpress
448
+ yearlyAmountNonExpress,
449
+ nextYearlyAmountNonExpress
417
450
  });
418
451
  expect(payments.length).toBeGreaterThanOrEqual(4);
419
452
  expect(dayjs(payments[payments.length - 1].datePayment).month()).toStrictEqual(11);
@@ -421,21 +454,24 @@ describe('Payment', () => {
421
454
  test('first payment and last payment should have at least one year difference (ex. : 23 - 24)', () => __awaiter(void 0, void 0, void 0, function* () {
422
455
  var _l, _m, _o;
423
456
  const payments = (0, payment_1.calculatePaymentsAuto)({
424
- goToClient: dayjs().toDate(),
457
+ idTypeBrand: 1,
458
+ goToClient: dayjs('2024-06-06').toDate(),
425
459
  firstExerciceNonExpresssEndDate,
426
460
  idPrestation,
427
461
  prestationList,
428
462
  idVat,
429
463
  listPartialExercicePrestationExpress: [],
430
464
  listRegulations,
431
- yearlyAmountNonExpress
465
+ yearlyAmountNonExpress,
466
+ nextYearlyAmountNonExpress
432
467
  });
433
468
  expect(dayjs((_m = (_l = payments.slice(-1)) === null || _l === void 0 ? void 0 : _l[0]) === null || _m === void 0 ? void 0 : _m.datePayment).diff(dayjs((_o = payments === null || payments === void 0 ? void 0 : payments[0]) === null || _o === void 0 ? void 0 : _o.datePayment), 'year', true)).toBeGreaterThan(1);
434
469
  }));
435
470
  test('real case : idSociety 114440', () => __awaiter(void 0, void 0, void 0, function* () {
436
471
  var _p, _q, _r;
437
472
  const payments = (0, payment_1.calculatePaymentsAuto)({
438
- goToClient: dayjs().toDate(),
473
+ idTypeBrand: 1,
474
+ goToClient: dayjs('2024-06-06').toDate(),
439
475
  firstExerciceNonExpresssEndDate: dayjs('2024-12-31').toDate(),
440
476
  idPrestation,
441
477
  prestationList,
@@ -449,7 +485,7 @@ describe('Payment', () => {
449
485
  idPaymentMethod: types_1.PaymentMethod.BANK_CARD.id,
450
486
  idSociety,
451
487
  }],
452
- yearlyAmountNonExpress: 1433
488
+ yearlyAmountNonExpress: 1433, nextYearlyAmountNonExpress: 1433
453
489
  });
454
490
  expect(dayjs((_q = (_p = payments.slice(-1)) === null || _p === void 0 ? void 0 : _p[0]) === null || _q === void 0 ? void 0 : _q.datePayment).diff(dayjs((_r = payments === null || payments === void 0 ? void 0 : payments[0]) === null || _r === void 0 ? void 0 : _r.datePayment), 'year', true)).toBeGreaterThan(1);
455
491
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"payment.spec.js","sourceRoot":"","sources":["../../../../ts/utils/tests/payment.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import * as dayjs from 'dayjs';\nimport { IRegulation, Vat, PaymentMethod } from '../../types';\nimport MockDate from 'mockdate';\n\nimport { calculatePaymentsAuto } from '../payment';\nimport { PartialExercicePrestationExpress } from '../../types/Interface/api/payment/Util';\n\ndescribe('Payment', () => {\n describe('calculatePayments', () => {\n const idPrestation = 1;\n const idSociety = 1;\n const yearlyAmountNonExpress = 1800;\n const appCost = 14.9;\n\n const firstExerciceNonExpresssEndDate = dayjs().add(11, 'month').endOf('month').toDate(); \n const prestationList = {\n id: 34,\n name: 'Compta Pro',\n isComptable: true,\n isJuridique: false,\n isSocial: false,\n isAttestation: false,\n inAverageCart: true,\n isBack: false,\n minimumPrice: null,\n price: null,\n isCatalog: false,\n isPlannable: false,\n hidden: false,\n isComplementary: false,\n signaturePosition: '400,54,569,90',\n signaturePage: 7,\n };\n const idVat = Vat.TX_10.id;\n const vatRate = Object.values(Vat).find(v => v.id === idVat)?.value ?? 20;\n const listPartialExercicePrestationExpress:PartialExercicePrestationExpress[] = [\n {\n startDate: dayjs().subtract(2, 'year').startOf('month').toDate(), \n endDate: dayjs().subtract(13, 'month').endOf('month').toDate(), \n countExpressMonthlyPayment: 2,\n totalAmount: 1200,\n },\n {\n startDate: dayjs().subtract(1, 'year').startOf('month').toDate(), \n endDate: dayjs().subtract(1, 'month').endOf('month').toDate(), \n countExpressMonthlyPayment: 2,\n totalAmount: 1800,\n },\n ];\n const listRegulations:IRegulation[] = [{\n amount: 600,\n amountUsed: 0,\n date: new Date(),\n processed: true,\n idPaymentMethod: PaymentMethod.BANK_CARD.id,\n idSociety,\n }, {\n amount: 300,\n amountUsed: 0,\n date: new Date(),\n processed: true,\n idPaymentMethod: PaymentMethod.BANK_CARD.id,\n idSociety,\n }, {\n amount: 300,\n amountUsed: 300,\n date: new Date(),\n processed: true,\n idPaymentMethod: PaymentMethod.BANK_CARD.id,\n idSociety,\n }];\n\n // =====================\n // errors handling\n // =====================\n test('should return error if prestationList doesn\\'t correspond (!hidden, isCatalog, isComptable)', () => {\n expect.assertions(2);\n try {\n prestationList.hidden = true;\n calculatePaymentsAuto({ \n goToClient: dayjs().toDate(),\n firstExerciceNonExpresssEndDate, \n idPrestation,\n prestationList: {\n ...prestationList,\n isCatalog: true,\n },\n idVat,\n listPartialExercicePrestationExpress,\n listRegulations,\n yearlyAmountNonExpress });\n } catch (error) {\n expect(error).toBeInstanceOf(Error);\n // @ts-ignore\n expect(error.message).toStrictEqual('Ce type de prestation ne correspond pas aux conditions attendues.');\n }\n });\n test('should return error if listRegulations is empty', () => {\n expect.assertions(2);\n try {\n calculatePaymentsAuto({ \n goToClient: dayjs().toDate(),\n firstExerciceNonExpresssEndDate, \n idPrestation,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress,\n listRegulations: [],\n yearlyAmountNonExpress });\n } catch (error) {\n expect(error).toBeInstanceOf(Error);\n // @ts-ignore\n expect(error.message).toStrictEqual('List of regulations can not be empty');\n }\n });\n test('should listRegulations contain amount and amountUsed', () => {\n expect.assertions(2);\n try {\n calculatePaymentsAuto({ \n goToClient: dayjs().toDate(),\n firstExerciceNonExpresssEndDate, \n idPrestation,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress,\n listRegulations: [{ processed: true } as IRegulation],\n yearlyAmountNonExpress });\n } catch (error) {\n expect(error).toBeInstanceOf(Error);\n // @ts-ignore\n expect(error.message).toStrictEqual('Amount and amountUsed are missing for regulations');\n }\n });\n\n // =====================\n // logical\n // =====================\n // express\n test('if only one express, monthly payments of actual exo should be in parallel of express monthly payments, smoothed in number of remaining months (mini 3 months) (if not in 3 last month)', async () => {\n const payments = calculatePaymentsAuto({ \n goToClient: dayjs().toDate(),\n firstExerciceNonExpresssEndDate, \n idPrestation,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress: [listPartialExercicePrestationExpress[0]],\n listRegulations,\n yearlyAmountNonExpress });\n\n const firstExpressDatePayment = payments.filter(p => dayjs(p.closingDate).diff(firstExerciceNonExpresssEndDate) < 0)[0].datePayment;\n const firstNonExpressDatePayment = payments.filter(p => dayjs(p.closingDate).diff(firstExerciceNonExpresssEndDate) === 0)[0].datePayment;\n expect(dayjs(firstNonExpressDatePayment).diff(firstExpressDatePayment, 'month')).toStrictEqual(0);\n });\n test('if more than one express, monthly payments of actual exo should be in a row of express monthly payments and smoothed, smoothed in number of remaining months after express monthly payments (mini 3 months) (if in 3 last month of exercice)', async () => {\n const payments = calculatePaymentsAuto({ \n goToClient: dayjs().toDate(),\n firstExerciceNonExpresssEndDate, \n idPrestation,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress,\n listRegulations,\n yearlyAmountNonExpress });\n\n const lastExpressDatePayment = payments.filter(p => dayjs(p.closingDate).diff(firstExerciceNonExpresssEndDate) < 0).splice(-1)?.[0]?.datePayment;\n const firstNonExpressDatePayment = payments.filter(p => dayjs(p.closingDate).diff(firstExerciceNonExpresssEndDate) === 0)?.[0]?.datePayment;\n expect(dayjs(firstNonExpressDatePayment).diff(lastExpressDatePayment, 'month')).toStrictEqual(1);\n });\n // non express\n test('should return a number of payments equal to nb of remaining months in exercice (if not in 3 last months)', async () => {\n const mockedDate = dayjs('2024-05-15').toDate();\n MockDate.set(mockedDate);\n \n const nbMonthDelay = 6;\n const newFirstExerciceNonExpresssEndDate = dayjs().add(nbMonthDelay, 'month').endOf('month').toDate();\n\n const payments = calculatePaymentsAuto({ \n goToClient: dayjs().toDate(),\n firstExerciceNonExpresssEndDate: newFirstExerciceNonExpresssEndDate, \n idPrestation,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress: [],\n listRegulations: [{\n amount: 50,\n amountUsed: 0,\n } as IRegulation],\n yearlyAmountNonExpress });\n\n // const listNonExpressPayments = payments.filter(p => p.closingDate === newFirstExerciceNonExpresssEndDate);\n const listNonExpressPayments = payments.filter(p => dayjs(p.closingDate).diff(newFirstExerciceNonExpresssEndDate) === 0);\n expect(listNonExpressPayments.length).toStrictEqual(nbMonthDelay);\n \n MockDate.reset();\n });\n test('should return a number of payments equal to 3 (if in 3 last month of exercice)', async () => {\n const nbMonthDelay = 1;\n const newFirstExerciceNonExpresssEndDate = dayjs().add(nbMonthDelay, 'month').endOf('month').toDate();\n\n const payments = calculatePaymentsAuto({ \n goToClient: dayjs().toDate(),\n firstExerciceNonExpresssEndDate: newFirstExerciceNonExpresssEndDate, \n idPrestation,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress: [],\n listRegulations: [{\n amount: 50,\n amountUsed: 0,\n } as IRegulation],\n yearlyAmountNonExpress });\n\n const listNonExpressPayments = payments.filter(p => dayjs(p.closingDate).diff(newFirstExerciceNonExpresssEndDate) === 0);\n expect(listNonExpressPayments.length).toStrictEqual(3);\n });\n test('should (yearlyAmountNonExpress - sum of listRegulations) / count of monthly payments be equal to monthly payment amount (if not in 3 last month)', async () => {\n const mockedDate = dayjs('2024-05-15').toDate();\n MockDate.set(mockedDate);\n \n const nbMonthDelay = 6;\n const newFirstExerciceNonExpresssEndDate = dayjs().add(nbMonthDelay, 'month').endOf('month').toDate();\n const newListRegulations = [{\n amount: 50,\n amountUsed: 0,\n } as IRegulation];\n const payments = calculatePaymentsAuto({ \n goToClient: dayjs().toDate(),\n firstExerciceNonExpresssEndDate: newFirstExerciceNonExpresssEndDate, \n idPrestation,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress: [],\n listRegulations: newListRegulations,\n yearlyAmountNonExpress });\n \n const diff = yearlyAmountNonExpress - newListRegulations.reduce((acc, r:IRegulation) => acc + r.amount - r.amountUsed, 0);\n const amount = Math.round(100 * diff / nbMonthDelay) / 100;\n\n expect(payments[0].amount).toStrictEqual(Math.round(100 * amount * ((100 + vatRate) / 100)) / 100);\n \n MockDate.reset();\n });\n test('should (totalAmount - firstPaymentAmount) / 3 be equal to monthly payment amount (if in 3 last month of exercice)', async () => {\n const nbMonthDelay = 1;\n const newFirstExerciceNonExpresssEndDate = dayjs().add(nbMonthDelay, 'month').endOf('month').toDate();\n const newListRegulations = [{\n amount: 50,\n amountUsed: 0,\n } as IRegulation];\n const payments = calculatePaymentsAuto({ \n goToClient: dayjs().toDate(),\n firstExerciceNonExpresssEndDate: newFirstExerciceNonExpresssEndDate, \n idPrestation,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress: [],\n listRegulations: newListRegulations,\n yearlyAmountNonExpress });\n\n const diff = yearlyAmountNonExpress - newListRegulations.reduce((acc, r:IRegulation) => acc + r.amount - r.amountUsed, 0);\n const amount = Math.round(100 * diff / 3) / 100;\n\n expect(payments[0].amount).toStrictEqual(Math.round(100 * amount * ((100 + vatRate) / 100)) / 100);\n });\n // annual price increase\n test('should apply annual price increase (2,75%) if signed before last 3 months of civil year', async () => {\n const mockedDate = dayjs('2024-08-15').toDate();\n MockDate.set(mockedDate);\n\n const newFirstExerciceNonExpresssEndDate = dayjs().add(11, 'month').endOf('month').toDate();\n\n const payments = calculatePaymentsAuto({ \n goToClient: dayjs().toDate(),\n firstExerciceNonExpresssEndDate: newFirstExerciceNonExpresssEndDate, \n idPrestation,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress: [],\n listRegulations: [{\n amount: 50,\n amountUsed: 0,\n } as IRegulation],\n yearlyAmountNonExpress });\n\n const listNonExpressPayments = payments.filter(p => dayjs(p.closingDate).diff(newFirstExerciceNonExpresssEndDate) === 0);\n expect(Math.round(100 * listNonExpressPayments[0].amount * 1.0275) / 100).toStrictEqual(listNonExpressPayments.splice(-2)[0].amount);\n\n MockDate.reset();\n });\n test('should not apply annual price increase (2,75%) if signed in last 3 months of civil year', async () => {\n const mockedDate = dayjs('2024-11-15').toDate();\n MockDate.set(mockedDate);\n \n const newFirstExerciceNonExpresssEndDate = dayjs().add(11, 'month').endOf('month').toDate();\n \n const payments = calculatePaymentsAuto({ \n goToClient: dayjs().toDate(),\n firstExerciceNonExpresssEndDate: newFirstExerciceNonExpresssEndDate, \n idPrestation,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress: [],\n listRegulations: [{\n amount: 50,\n amountUsed: 0,\n } as IRegulation],\n yearlyAmountNonExpress });\n \n const listNonExpressPayments = payments.filter(p => dayjs(p.datePayment).diff(dayjs('2025-06-01')) === 0);\n expect(listNonExpressPayments[0].amount).toStrictEqual(listNonExpressPayments.splice(-2)[0].amount);\n \n MockDate.reset();\n });\n\n test('should apply 14,9€ HT increase for the second exercice created (only offered on first exo) (no rules for 3 last months)', async () => {\n const mockedDate = dayjs('2024-06-15').toDate();\n MockDate.set(mockedDate);\n \n const newFirstExerciceNonExpresssEndDate = dayjs().add(12, 'month').endOf('month').toDate();\n \n const payments = calculatePaymentsAuto({ \n goToClient: dayjs().toDate(),\n firstExerciceNonExpresssEndDate: newFirstExerciceNonExpresssEndDate, \n idPrestation,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress: [],\n listRegulations: [{\n amount: 50,\n amountUsed: 50,\n } as IRegulation],\n yearlyAmountNonExpress });\n \n const paymentsOfFirstExo = payments.filter(p => dayjs(p.datePayment).diff(dayjs('2025-06-01')) === 0).splice(-1)[0].amount ?? 0;\n const paymentsOfSecondExo = payments.filter(p => dayjs(p.datePayment).diff(dayjs('2025-07-01')) === 0).splice(-1)[0].amount ?? 0;\n expect(paymentsOfFirstExo + appCost * ((100 + vatRate) / 100)).toStrictEqual(paymentsOfSecondExo);\n \n MockDate.reset();\n });\n \n // misc\n test('should payments been generated sorted by exercices start date', async () => {\n const listPartialExercicePrestationExpressCloned = [...listPartialExercicePrestationExpress];\n listPartialExercicePrestationExpressCloned[0] = { \n ...listPartialExercicePrestationExpress[0],\n startDate: dayjs().add(1, 'year').startOf('month').toDate(), \n };\n listPartialExercicePrestationExpressCloned[1] = { \n ...listPartialExercicePrestationExpress[1],\n startDate: dayjs().startOf('month').toDate(), \n };\n const payments = calculatePaymentsAuto({ \n goToClient: dayjs().toDate(),\n firstExerciceNonExpresssEndDate, \n idPrestation,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress: listPartialExercicePrestationExpressCloned,\n listRegulations,\n yearlyAmountNonExpress });\n expect(payments.length).toBeGreaterThanOrEqual(4);\n expect(dayjs(payments[payments.length - 1].datePayment).diff(dayjs(payments?.[0]?.datePayment), 'month')).toBeGreaterThan(0);\n });\n test('if regulations are bigger than sum exercice prestation amounts, should pass some exercice payments', async () => {\n const mockedDate = dayjs('2024-03-15').toDate();\n MockDate.set(mockedDate);\n\n const payments = calculatePaymentsAuto({ \n goToClient: dayjs().toDate(),\n firstExerciceNonExpresssEndDate, \n idPrestation,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress,\n listRegulations: [{\n amount: 2000,\n amountUsed: 0,\n date: new Date(),\n processed: true,\n idPaymentMethod: PaymentMethod.BANK_CARD.id,\n idSociety,\n }],\n yearlyAmountNonExpress });\n expect(payments.length).toBeGreaterThanOrEqual(2);\n expect(payments[0]).toMatchObject(\n {\n amount: 550,\n datePayment: dayjs(mockedDate).add(1, 'month').startOf('month').toDate(),\n idPrestation: 1,\n idPaymentMethod: 1,\n });\n expect(payments[1]).toMatchObject(\n {\n amount: 550,\n datePayment: dayjs(mockedDate).add(2, 'month').startOf('month').toDate(),\n idPrestation: 1,\n idPaymentMethod: 1,\n });\n MockDate.reset();\n });\n test('should not consider actual month if signed in last 3 days of month', async () => {\n const mockedDate = dayjs('2024-03-29').toDate();\n MockDate.set(mockedDate);\n\n const payments = calculatePaymentsAuto({ \n goToClient: dayjs().toDate(),\n firstExerciceNonExpresssEndDate, \n idPrestation,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress,\n listRegulations,\n yearlyAmountNonExpress });\n expect(payments.length).toBeGreaterThanOrEqual(4);\n expect(payments?.[0]?.datePayment).toStrictEqual(dayjs(mockedDate).add(2, 'month').startOf('month').toDate());\n MockDate.reset();\n });\n test('last payment returned should be last of a year (12/XX)', async () => {\n const mockedDate = dayjs('2024-03-29').toDate();\n MockDate.set(mockedDate);\n\n const payments = calculatePaymentsAuto({ \n goToClient: dayjs().toDate(),\n firstExerciceNonExpresssEndDate, \n idPrestation,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress,\n listRegulations,\n yearlyAmountNonExpress });\n expect(payments.length).toBeGreaterThanOrEqual(4);\n expect(dayjs(payments[payments.length - 1].datePayment).month()).toStrictEqual(11);\n });\n test('first payment and last payment should have at least one year difference (ex. : 23 - 24)', async () => {\n const payments = calculatePaymentsAuto({ \n goToClient: dayjs().toDate(),\n firstExerciceNonExpresssEndDate, \n idPrestation,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress: [],\n listRegulations,\n yearlyAmountNonExpress });\n expect(dayjs(payments.slice(-1)?.[0]?.datePayment).diff(dayjs(payments?.[0]?.datePayment), 'year', true)).toBeGreaterThan(1);\n });\n test('real case : idSociety 114440', async () => {\n const payments = calculatePaymentsAuto({ \n goToClient: dayjs().toDate(),\n firstExerciceNonExpresssEndDate: dayjs('2024-12-31').toDate(), \n idPrestation,\n prestationList,\n idVat: Vat.TX_20.id,\n listPartialExercicePrestationExpress: [],\n listRegulations: [{\n amount: 1006.8,\n amountUsed: 0,\n date: dayjs('2024-06-06').toDate(), \n processed: false,\n idPaymentMethod: PaymentMethod.BANK_CARD.id,\n idSociety,\n }],\n yearlyAmountNonExpress: 1433 });\n expect(dayjs(payments.slice(-1)?.[0]?.datePayment).diff(dayjs(payments?.[0]?.datePayment), 'year', true)).toBeGreaterThan(1);\n });\n });\n});"]}
1
+ {"version":3,"file":"payment.spec.js","sourceRoot":"","sources":["../../../../ts/utils/tests/payment.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import * as dayjs from 'dayjs';\nimport { IRegulation, Vat, PaymentMethod } from '../../types';\nimport MockDate from 'mockdate';\n\nimport { calculatePaymentsAuto } from '../payment';\nimport { PartialExercicePrestationExpress } from '../../types/Interface/api/payment/Util';\n\ndescribe('Payment', () => {\n describe('calculatePayments', () => {\n const idPrestation = 1;\n const idSociety = 1;\n const yearlyAmountNonExpress = 1800;\n const nextYearlyAmountNonExpress = 1800;\n const appCost = 14.9;\n\n const firstExerciceNonExpresssEndDate = dayjs().add(11, 'month').endOf('month').toDate(); \n const prestationList = {\n id: 34,\n name: 'Compta Pro',\n isComptable: true,\n isJuridique: false,\n isSocial: false,\n isAttestation: false,\n inAverageCart: true,\n isBack: false,\n minimumPrice: null,\n price: null,\n isCatalog: false,\n isPlannable: false,\n hidden: false,\n isComplementary: false,\n signaturePosition: '400,54,569,90',\n signaturePage: 7,\n };\n const idVat = Vat.TX_10.id;\n const vatRate = Object.values(Vat).find(v => v.id === idVat)?.value ?? 20;\n const listPartialExercicePrestationExpress:PartialExercicePrestationExpress[] = [\n {\n startDate: dayjs().subtract(2, 'year').startOf('month').toDate(), \n endDate: dayjs().subtract(13, 'month').endOf('month').toDate(), \n countExpressMonthlyPayment: 2,\n totalAmount: 1200,\n },\n {\n startDate: dayjs().subtract(1, 'year').startOf('month').toDate(), \n endDate: dayjs().subtract(1, 'month').endOf('month').toDate(), \n countExpressMonthlyPayment: 2,\n totalAmount: 1800,\n },\n ];\n const listRegulations:IRegulation[] = [{\n amount: 600,\n amountUsed: 0,\n date: new Date(),\n processed: true,\n idPaymentMethod: PaymentMethod.BANK_CARD.id,\n idSociety,\n }, {\n amount: 300,\n amountUsed: 0,\n date: new Date(),\n processed: true,\n idPaymentMethod: PaymentMethod.BANK_CARD.id,\n idSociety,\n }, {\n amount: 300,\n amountUsed: 300,\n date: new Date(),\n processed: true,\n idPaymentMethod: PaymentMethod.BANK_CARD.id,\n idSociety,\n }];\n\n // =====================\n // errors handling\n // =====================\n test('should return error if prestationList doesn\\'t correspond (!hidden, isCatalog, isComptable)', () => {\n expect.assertions(2);\n try {\n prestationList.hidden = true;\n calculatePaymentsAuto({ \n idTypeBrand: 1,\n goToClient: dayjs('2024-06-06').toDate(),\n firstExerciceNonExpresssEndDate, \n idPrestation,\n prestationList: {\n ...prestationList,\n isCatalog: true,\n },\n idVat,\n listPartialExercicePrestationExpress,\n listRegulations,\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress });\n } catch (error) {\n expect(error).toBeInstanceOf(Error);\n // @ts-ignore\n expect(error.message).toStrictEqual('Ce type de prestation ne correspond pas aux conditions attendues.');\n }\n });\n test('should return error if listRegulations is empty', () => {\n expect.assertions(2);\n try {\n calculatePaymentsAuto({ \n idTypeBrand: 1,\n goToClient: dayjs('2024-06-06').toDate(),\n firstExerciceNonExpresssEndDate, \n idPrestation,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress,\n listRegulations: [],\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress });\n } catch (error) {\n expect(error).toBeInstanceOf(Error);\n // @ts-ignore\n expect(error.message).toStrictEqual('List of regulations can not be empty');\n }\n });\n test('should listRegulations contain amount and amountUsed', () => {\n expect.assertions(2);\n try {\n calculatePaymentsAuto({ \n idTypeBrand: 1,\n goToClient: dayjs('2024-06-06').toDate(),\n firstExerciceNonExpresssEndDate, \n idPrestation,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress,\n listRegulations: [{ processed: true } as IRegulation],\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress });\n } catch (error) {\n expect(error).toBeInstanceOf(Error);\n // @ts-ignore\n expect(error.message).toStrictEqual('Amount and amountUsed are missing for regulations');\n }\n });\n\n // =====================\n // logical\n // =====================\n // express\n test('if only one express, monthly payments of actual exo should be in parallel of express monthly payments, smoothed in number of remaining months (mini 3 months) (if not in 3 last month)', async () => {\n const payments = calculatePaymentsAuto({ \n idTypeBrand: 1,\n goToClient: dayjs('2024-06-06').toDate(),\n firstExerciceNonExpresssEndDate, \n idPrestation,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress: [listPartialExercicePrestationExpress[0]],\n listRegulations,\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress });\n\n const firstExpressDatePayment = payments.filter(p => dayjs(p.closingDate).diff(firstExerciceNonExpresssEndDate) < 0)[0].datePayment;\n const firstNonExpressDatePayment = payments.filter(p => dayjs(p.closingDate).diff(firstExerciceNonExpresssEndDate) === 0)[0].datePayment;\n expect(dayjs(firstNonExpressDatePayment).diff(firstExpressDatePayment, 'month')).toStrictEqual(0);\n });\n test('if more than one express, monthly payments of actual exo should be in a row of express monthly payments and smoothed, smoothed in number of remaining months after express monthly payments (mini 3 months) (if in 3 last month of exercice)', async () => {\n const payments = calculatePaymentsAuto({ \n idTypeBrand: 1,\n goToClient: dayjs('2024-06-06').toDate(),\n firstExerciceNonExpresssEndDate, \n idPrestation,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress,\n listRegulations,\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress });\n\n const lastExpressDatePayment = payments.filter(p => dayjs(p.closingDate).diff(firstExerciceNonExpresssEndDate) < 0).splice(-1)?.[0]?.datePayment;\n const firstNonExpressDatePayment = payments.filter(p => dayjs(p.closingDate).diff(firstExerciceNonExpresssEndDate) === 0)?.[0]?.datePayment;\n expect(dayjs(firstNonExpressDatePayment).diff(lastExpressDatePayment, 'month')).toStrictEqual(1);\n });\n // non express\n test('should return a number of payments equal to nb of remaining months in exercice (if not in 3 last months)', async () => {\n const mockedDate = dayjs('2024-05-15').toDate();\n MockDate.set(mockedDate);\n \n const nbMonthDelay = 6;\n const newFirstExerciceNonExpresssEndDate = dayjs().add(nbMonthDelay, 'month').endOf('month').toDate();\n\n const payments = calculatePaymentsAuto({ \n idTypeBrand: 1,\n goToClient: dayjs('2024-06-06').toDate(),\n firstExerciceNonExpresssEndDate: newFirstExerciceNonExpresssEndDate, \n idPrestation,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress: [],\n listRegulations: [{\n amount: 50,\n amountUsed: 0,\n } as IRegulation],\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress });\n\n // const listNonExpressPayments = payments.filter(p => p.closingDate === newFirstExerciceNonExpresssEndDate);\n const listNonExpressPayments = payments.filter(p => dayjs(p.closingDate).diff(newFirstExerciceNonExpresssEndDate) === 0);\n expect(listNonExpressPayments.length).toStrictEqual(nbMonthDelay);\n \n MockDate.reset();\n });\n test('should return a number of payments equal to 3 (if in 3 last month of exercice)', async () => {\n const nbMonthDelay = 1;\n const newFirstExerciceNonExpresssEndDate = dayjs().add(nbMonthDelay, 'month').endOf('month').toDate();\n\n const payments = calculatePaymentsAuto({ \n idTypeBrand: 1,\n goToClient: dayjs('2024-06-06').toDate(),\n firstExerciceNonExpresssEndDate: newFirstExerciceNonExpresssEndDate, \n idPrestation,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress: [],\n listRegulations: [{\n amount: 50,\n amountUsed: 0,\n } as IRegulation],\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress });\n\n const listNonExpressPayments = payments.filter(p => dayjs(p.closingDate).diff(newFirstExerciceNonExpresssEndDate) === 0);\n expect(listNonExpressPayments.length).toStrictEqual(3);\n });\n test('should (yearlyAmountNonExpress - sum of listRegulations) / count of monthly payments be equal to monthly payment amount (if not in 3 last month)', async () => {\n const mockedDate = dayjs('2024-05-15').toDate();\n MockDate.set(mockedDate);\n \n const nbMonthDelay = 6;\n const newFirstExerciceNonExpresssEndDate = dayjs().add(nbMonthDelay, 'month').endOf('month').toDate();\n const newListRegulations = [{\n amount: 50,\n amountUsed: 0,\n } as IRegulation];\n const payments = calculatePaymentsAuto({ \n idTypeBrand: 1,\n goToClient: dayjs('2024-06-06').toDate(),\n firstExerciceNonExpresssEndDate: newFirstExerciceNonExpresssEndDate, \n idPrestation,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress: [],\n listRegulations: newListRegulations,\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress });\n \n const diff = yearlyAmountNonExpress - newListRegulations.reduce((acc, r:IRegulation) => acc + r.amount - r.amountUsed, 0);\n const amount = Math.round(100 * diff / nbMonthDelay) / 100;\n\n expect(payments[0].amount).toStrictEqual(Math.round(100 * amount * ((100 + vatRate) / 100)) / 100);\n \n MockDate.reset();\n });\n test('should (totalAmount - firstPaymentAmount) / 3 be equal to monthly payment amount (if in 3 last month of exercice)', async () => {\n const nbMonthDelay = 1;\n const newFirstExerciceNonExpresssEndDate = dayjs().add(nbMonthDelay, 'month').endOf('month').toDate();\n const newListRegulations = [{\n amount: 50,\n amountUsed: 0,\n } as IRegulation];\n const payments = calculatePaymentsAuto({ \n idTypeBrand: 1,\n goToClient: dayjs('2024-06-06').toDate(),\n firstExerciceNonExpresssEndDate: newFirstExerciceNonExpresssEndDate, \n idPrestation,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress: [],\n listRegulations: newListRegulations,\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress });\n\n const diff = yearlyAmountNonExpress - newListRegulations.reduce((acc, r:IRegulation) => acc + r.amount - r.amountUsed, 0);\n const amount = Math.round(100 * diff / 3) / 100;\n\n expect(payments[0].amount).toStrictEqual(Math.round(100 * amount * ((100 + vatRate) / 100)) / 100);\n });\n // annual price increase\n test('should apply annual price increase (2,75%) if signed before last 3 months of civil year', async () => {\n const mockedDate = dayjs('2024-08-15').toDate();\n MockDate.set(mockedDate);\n\n const newFirstExerciceNonExpresssEndDate = dayjs().add(11, 'month').endOf('month').toDate();\n\n const payments = calculatePaymentsAuto({ \n idTypeBrand: 1,\n goToClient: dayjs('2024-06-06').toDate(),\n firstExerciceNonExpresssEndDate: newFirstExerciceNonExpresssEndDate, \n idPrestation,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress: [],\n listRegulations: [{\n amount: 50,\n amountUsed: 0,\n } as IRegulation],\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress });\n\n const listNonExpressPayments = payments.filter(p => dayjs(p.closingDate).diff(newFirstExerciceNonExpresssEndDate) === 0);\n expect(Math.round(100 * listNonExpressPayments[0].amount * 1.0275) / 100).toStrictEqual(listNonExpressPayments.splice(-2)[0].amount);\n\n MockDate.reset();\n });\n test('should not apply annual price increase (2,75%) if signed in last 3 months of civil year', async () => {\n const mockedDate = dayjs('2024-11-15').toDate();\n MockDate.set(mockedDate);\n \n const newFirstExerciceNonExpresssEndDate = dayjs().add(11, 'month').endOf('month').toDate();\n \n const payments = calculatePaymentsAuto({ \n idTypeBrand: 1,\n goToClient: dayjs('2024-06-06').toDate(),\n firstExerciceNonExpresssEndDate: newFirstExerciceNonExpresssEndDate, \n idPrestation,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress: [],\n listRegulations: [{\n amount: 50,\n amountUsed: 0,\n } as IRegulation],\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress });\n \n const listNonExpressPayments = payments.filter(p => dayjs(p.datePayment).diff(dayjs('2025-06-01')) === 0);\n expect(listNonExpressPayments[0].amount).toStrictEqual(listNonExpressPayments.splice(-2)[0].amount);\n \n MockDate.reset();\n });\n\n test('should apply 14,9€ HT increase for the second exercice created (only offered on first exo) (no rules for 3 last months)', async () => {\n const mockedDate = dayjs('2024-06-15').toDate();\n MockDate.set(mockedDate);\n \n const newFirstExerciceNonExpresssEndDate = dayjs().add(12, 'month').endOf('month').toDate();\n \n const payments = calculatePaymentsAuto({ \n idTypeBrand: 1,\n goToClient: dayjs('2024-06-06').toDate(),\n firstExerciceNonExpresssEndDate: newFirstExerciceNonExpresssEndDate, \n idPrestation,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress: [],\n listRegulations: [{\n amount: 50,\n amountUsed: 50,\n } as IRegulation],\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress });\n \n const paymentsOfFirstExo = payments.filter(p => dayjs(p.datePayment).diff(dayjs('2025-06-01')) === 0).splice(-1)[0].amount ?? 0;\n const paymentsOfSecondExo = payments.filter(p => dayjs(p.datePayment).diff(dayjs('2025-07-01')) === 0).splice(-1)[0].amount ?? 0;\n expect(paymentsOfFirstExo + appCost * ((100 + vatRate) / 100)).toStrictEqual(paymentsOfSecondExo);\n \n MockDate.reset();\n });\n \n // misc\n test('should payments been generated sorted by exercices start date', async () => {\n const listPartialExercicePrestationExpressCloned = [...listPartialExercicePrestationExpress];\n listPartialExercicePrestationExpressCloned[0] = { \n ...listPartialExercicePrestationExpress[0],\n startDate: dayjs().add(1, 'year').startOf('month').toDate(), \n };\n listPartialExercicePrestationExpressCloned[1] = { \n ...listPartialExercicePrestationExpress[1],\n startDate: dayjs().startOf('month').toDate(), \n };\n const payments = calculatePaymentsAuto({ \n idTypeBrand: 1,\n goToClient: dayjs('2024-06-06').toDate(),\n firstExerciceNonExpresssEndDate, \n idPrestation,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress: listPartialExercicePrestationExpressCloned,\n listRegulations,\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress });\n expect(payments.length).toBeGreaterThanOrEqual(4);\n expect(dayjs(payments[payments.length - 1].datePayment).diff(dayjs(payments?.[0]?.datePayment), 'month')).toBeGreaterThan(0);\n });\n test('if regulations are bigger than sum exercice prestation amounts, should pass some exercice payments', async () => {\n const mockedDate = dayjs('2024-03-15').toDate();\n MockDate.set(mockedDate);\n\n const payments = calculatePaymentsAuto({ \n idTypeBrand: 1,\n goToClient: dayjs('2024-06-06').toDate(),\n firstExerciceNonExpresssEndDate, \n idPrestation,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress,\n listRegulations: [{\n amount: 2000,\n amountUsed: 0,\n date: new Date(),\n processed: true,\n idPaymentMethod: PaymentMethod.BANK_CARD.id,\n idSociety,\n }],\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress });\n expect(payments.length).toBeGreaterThanOrEqual(2);\n expect(payments[0]).toMatchObject(\n {\n amount: 550,\n datePayment: dayjs(mockedDate).add(1, 'month').startOf('month').toDate(),\n idPrestation: 1,\n idPaymentMethod: 1,\n });\n expect(payments[1]).toMatchObject(\n {\n amount: 550,\n datePayment: dayjs(mockedDate).add(2, 'month').startOf('month').toDate(),\n idPrestation: 1,\n idPaymentMethod: 1,\n });\n MockDate.reset();\n });\n test('should not consider actual month if signed in last 3 days of month', async () => {\n const mockedDate = dayjs('2024-03-29').toDate();\n MockDate.set(mockedDate);\n\n const payments = calculatePaymentsAuto({ \n idTypeBrand: 1,\n goToClient: dayjs('2024-06-06').toDate(),\n firstExerciceNonExpresssEndDate, \n idPrestation,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress,\n listRegulations,\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress });\n expect(payments.length).toBeGreaterThanOrEqual(4);\n expect(payments?.[0]?.datePayment).toStrictEqual(dayjs(mockedDate).add(2, 'month').startOf('month').toDate());\n MockDate.reset();\n });\n test('last payment returned should be last of a year (12/XX)', async () => {\n const mockedDate = dayjs('2024-03-29').toDate();\n MockDate.set(mockedDate);\n\n const payments = calculatePaymentsAuto({ \n idTypeBrand: 1,\n goToClient: dayjs('2024-06-06').toDate(),\n firstExerciceNonExpresssEndDate, \n idPrestation,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress,\n listRegulations,\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress });\n expect(payments.length).toBeGreaterThanOrEqual(4);\n expect(dayjs(payments[payments.length - 1].datePayment).month()).toStrictEqual(11);\n });\n test('first payment and last payment should have at least one year difference (ex. : 23 - 24)', async () => {\n const payments = calculatePaymentsAuto({ \n idTypeBrand: 1,\n goToClient: dayjs('2024-06-06').toDate(),\n firstExerciceNonExpresssEndDate, \n idPrestation,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress: [],\n listRegulations,\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress });\n expect(dayjs(payments.slice(-1)?.[0]?.datePayment).diff(dayjs(payments?.[0]?.datePayment), 'year', true)).toBeGreaterThan(1);\n });\n test('real case : idSociety 114440', async () => {\n const payments = calculatePaymentsAuto({ \n idTypeBrand: 1,\n goToClient: dayjs('2024-06-06').toDate(),\n firstExerciceNonExpresssEndDate: dayjs('2024-12-31').toDate(), \n idPrestation,\n prestationList,\n idVat: Vat.TX_20.id,\n listPartialExercicePrestationExpress: [],\n listRegulations: [{\n amount: 1006.8,\n amountUsed: 0,\n date: dayjs('2024-06-06').toDate(), \n processed: false,\n idPaymentMethod: PaymentMethod.BANK_CARD.id,\n idSociety,\n }],\n yearlyAmountNonExpress: 1433, nextYearlyAmountNonExpress: 1433 });\n expect(dayjs(payments.slice(-1)?.[0]?.datePayment).diff(dayjs(payments?.[0]?.datePayment), 'year', true)).toBeGreaterThan(1);\n });\n });\n});"]}
@@ -1,12 +1,15 @@
1
1
  import { CancelToken } from 'axios';
2
2
  import { Resource } from '../Resource';
3
- import { QueryPaginatedSocietyWithStatsCa, BasePaginate, SocietyWithStatsCaParams, QueryGetStats, QueryFetchDialogDatasInfosOk, QueryFetchDialogDatasDocsOk, ReadInvalidFieldState, GedFileType, QueryPaginatedNewProspect } from '../../types';
3
+ import { QueryPaginatedSocietyWithStatsCa, BasePaginate, SocietyWithStatsCaParams, QueryGetStats, QueryFetchDialogDatasInfosOk, QueryFetchDialogDatasDocsOk, ReadInvalidFieldState, GedFileType, QueryPaginatedNewProspect, QueryGetStatsHistory } from '../../types';
4
4
  import { Society } from './Society';
5
5
  export declare class Commercial extends Resource {
6
6
  getStatsCa(params: QueryPaginatedSocietyWithStatsCa, cancelToken?: CancelToken, signal?: AbortSignal): Promise<BasePaginate<SocietyWithStatsCaParams>>;
7
7
  getStats(params: QueryGetStats, cancelToken?: CancelToken, signal?: AbortSignal): Promise<{
8
8
  [key: string]: number;
9
9
  }>;
10
+ getStatsHistory(params: QueryGetStatsHistory, cancelToken?: CancelToken, signal?: AbortSignal): Promise<{
11
+ [key: string]: number;
12
+ }>;
10
13
  fetchDialogDatasInfosOk(params: QueryFetchDialogDatasInfosOk, cancelToken?: CancelToken, signal?: AbortSignal): Promise<Society>;
11
14
  fetchDialogDatasDocsOk(params: QueryFetchDialogDatasDocsOk, cancelToken?: CancelToken, signal?: AbortSignal): Promise<Society>;
12
15
  movePrestationsToNextMonth(idUser: number): Promise<number[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"Commercial.d.ts","sourceRoot":"","sources":["../../../../ts/api/resources/Commercial.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EACL,gCAAgC,EAAE,YAAY,EAAE,wBAAwB,EAAE,aAAa,EAAE,4BAA4B,EAAE,2BAA2B,EAAE,qBAAqB,EAAE,WAAW,EAAE,yBAAyB,EAClN,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,qBAAa,UAAW,SAAQ,QAAQ;IACtC,UAAU,CAAC,MAAM,EAAE,gCAAgC,EAAE,WAAW,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,wBAAwB,CAAC,CAAC;IAOtJ,QAAQ,CAAC,MAAM,EAAE,aAAa,EAAE,WAAW,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IAOpH,uBAAuB,CAAC,MAAM,EAAE,4BAA4B,EAAE,WAAW,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAOhI,sBAAsB,CAAC,MAAM,EAAE,2BAA2B,EAAE,WAAW,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAO9H,0BAA0B,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAG7D,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;QAAE,WAAW,EAAE,qBAAqB,EAAE,CAAC;QAAC,YAAY,EAAE,WAAW,EAAE,CAAA;KAAE,CAAC,CAAC;IAG/J,uBAAuB,CAAC,MAAM,EAAE,yBAAyB,GAAG,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;CAK3F"}
1
+ {"version":3,"file":"Commercial.d.ts","sourceRoot":"","sources":["../../../../ts/api/resources/Commercial.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EACL,gCAAgC,EAAE,YAAY,EAAE,wBAAwB,EAAE,aAAa,EAAE,4BAA4B,EAAE,2BAA2B,EAAE,qBAAqB,EAAE,WAAW,EAAE,yBAAyB,EACjN,oBAAoB,EACrB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,qBAAa,UAAW,SAAQ,QAAQ;IACtC,UAAU,CAAC,MAAM,EAAE,gCAAgC,EAAE,WAAW,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,wBAAwB,CAAC,CAAC;IAOtJ,QAAQ,CAAC,MAAM,EAAE,aAAa,EAAE,WAAW,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IAOpH,eAAe,CAAC,MAAM,EAAE,oBAAoB,EAAE,WAAW,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IAOlI,uBAAuB,CAAC,MAAM,EAAE,4BAA4B,EAAE,WAAW,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAOhI,sBAAsB,CAAC,MAAM,EAAE,2BAA2B,EAAE,WAAW,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAO9H,0BAA0B,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAG7D,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;QAAE,WAAW,EAAE,qBAAqB,EAAE,CAAC;QAAC,YAAY,EAAE,WAAW,EAAE,CAAA;KAAE,CAAC,CAAC;IAG/J,uBAAuB,CAAC,MAAM,EAAE,yBAAyB,GAAG,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;CAK3F"}
@@ -14,6 +14,13 @@ export class Commercial extends Resource {
14
14
  params,
15
15
  });
16
16
  }
17
+ getStatsHistory(params, cancelToken, signal) {
18
+ return this.axios.$get('/commercial/stats-history', {
19
+ ...(cancelToken ? { cancelToken } : {}),
20
+ ...(signal ? { signal } : {}),
21
+ params,
22
+ });
23
+ }
17
24
  fetchDialogDatasInfosOk(params, cancelToken, signal) {
18
25
  return this.axios.$get('/commercial/datas-infos-ok', {
19
26
  ...(cancelToken ? { cancelToken } : {}),
@@ -1 +1 @@
1
- {"version":3,"file":"Commercial.js","sourceRoot":"","sources":["../../../../ts/api/resources/Commercial.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAMvC,MAAM,OAAO,UAAW,SAAQ,QAAQ;IACtC,UAAU,CAAC,MAAwC,EAAE,WAAyB,EAAE,MAAoB;QAClG,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,gCAAgC,EAAE;YACvD,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7B,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IACD,QAAQ,CAAC,MAAqB,EAAE,WAAyB,EAAE,MAAoB;QAC7E,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,EAAE;YAC1C,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7B,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IACD,uBAAuB,CAAC,MAAoC,EAAE,WAAyB,EAAE,MAAoB;QAC3G,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,4BAA4B,EAAE;YACnD,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7B,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IACD,sBAAsB,CAAC,MAAmC,EAAE,WAAyB,EAAE,MAAoB;QACzG,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,2BAA2B,EAAE;YAClD,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7B,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IACD,0BAA0B,CAAC,MAAc;QACvC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,4CAA4C,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IACnF,CAAC;IACD,mBAAmB,CAAC,SAAiB,EAAE,oBAA8B;QACnE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,SAAS,sBAAsB,EAAE,EAAE,MAAM,EAAE,EAAE,oBAAoB,EAAE,EAAE,CAAC,CAAC;IAC/G,CAAC;IACD,uBAAuB,CAAC,MAAiC;QACvD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,oCAAoC,EAAE;YAC3D,MAAM;SACP,CAAC,CAAC;IACL,CAAC;CACF","sourcesContent":["import { CancelToken } from 'axios';\nimport { Resource } from '../Resource';\nimport {\n QueryPaginatedSocietyWithStatsCa, BasePaginate, SocietyWithStatsCaParams, QueryGetStats, QueryFetchDialogDatasInfosOk, QueryFetchDialogDatasDocsOk, ReadInvalidFieldState, GedFileType, QueryPaginatedNewProspect,\n} from '../../types';\nimport { Society } from './Society';\n\nexport class Commercial extends Resource {\n getStatsCa(params: QueryPaginatedSocietyWithStatsCa, cancelToken?: CancelToken, signal?: AbortSignal): Promise<BasePaginate<SocietyWithStatsCaParams>> {\n return this.axios.$get('/commercial/paginated-stats-ca', { \n ...(cancelToken ? { cancelToken } : {}),\n ...(signal ? { signal } : {}),\n params,\n });\n }\n getStats(params: QueryGetStats, cancelToken?: CancelToken, signal?: AbortSignal): Promise<{ [key: string]: number }> {\n return this.axios.$get('/commercial/stats', { \n ...(cancelToken ? { cancelToken } : {}),\n ...(signal ? { signal } : {}),\n params,\n });\n }\n fetchDialogDatasInfosOk(params: QueryFetchDialogDatasInfosOk, cancelToken?: CancelToken, signal?: AbortSignal): Promise<Society> {\n return this.axios.$get('/commercial/datas-infos-ok', { \n ...(cancelToken ? { cancelToken } : {}),\n ...(signal ? { signal } : {}),\n params,\n });\n }\n fetchDialogDatasDocsOk(params: QueryFetchDialogDatasDocsOk, cancelToken?: CancelToken, signal?: AbortSignal): Promise<Society> {\n return this.axios.$get('/commercial/datas-docs-ok', { \n ...(cancelToken ? { cancelToken } : {}),\n ...(signal ? { signal } : {}),\n params,\n });\n }\n movePrestationsToNextMonth(idUser: number): Promise<number[]> {\n return this.axios.$put('/commercial/move-prestations-to-next-month', { idUser });\n }\n checkDocsAndInfosOk(idSociety: number, listIdPrestationList: number[]): Promise<Promise<{ missingDocs: ReadInvalidFieldState[], missingInfos: GedFileType[] }>> {\n return this.axios.$get(`/commercial/${idSociety}/checkDocsAndInfosOk`, { params: { listIdPrestationList } });\n }\n getPaginatedNewProspect(params: QueryPaginatedNewProspect): Promise<BasePaginate<Society>> {\n return this.axios.$get('/commercial/paginated-new-prospect', {\n params,\n });\n }\n}\n"]}
1
+ {"version":3,"file":"Commercial.js","sourceRoot":"","sources":["../../../../ts/api/resources/Commercial.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAOvC,MAAM,OAAO,UAAW,SAAQ,QAAQ;IACtC,UAAU,CAAC,MAAwC,EAAE,WAAyB,EAAE,MAAoB;QAClG,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,gCAAgC,EAAE;YACvD,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7B,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IACD,QAAQ,CAAC,MAAqB,EAAE,WAAyB,EAAE,MAAoB;QAC7E,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,EAAE;YAC1C,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7B,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IACD,eAAe,CAAC,MAA4B,EAAE,WAAyB,EAAE,MAAoB;QAC3F,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,2BAA2B,EAAE;YAClD,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7B,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IACD,uBAAuB,CAAC,MAAoC,EAAE,WAAyB,EAAE,MAAoB;QAC3G,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,4BAA4B,EAAE;YACnD,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7B,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IACD,sBAAsB,CAAC,MAAmC,EAAE,WAAyB,EAAE,MAAoB;QACzG,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,2BAA2B,EAAE;YAClD,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7B,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IACD,0BAA0B,CAAC,MAAc;QACvC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,4CAA4C,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IACnF,CAAC;IACD,mBAAmB,CAAC,SAAiB,EAAE,oBAA8B;QACnE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,SAAS,sBAAsB,EAAE,EAAE,MAAM,EAAE,EAAE,oBAAoB,EAAE,EAAE,CAAC,CAAC;IAC/G,CAAC;IACD,uBAAuB,CAAC,MAAiC;QACvD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,oCAAoC,EAAE;YAC3D,MAAM;SACP,CAAC,CAAC;IACL,CAAC;CACF","sourcesContent":["import { CancelToken } from 'axios';\nimport { Resource } from '../Resource';\nimport {\n QueryPaginatedSocietyWithStatsCa, BasePaginate, SocietyWithStatsCaParams, QueryGetStats, QueryFetchDialogDatasInfosOk, QueryFetchDialogDatasDocsOk, ReadInvalidFieldState, GedFileType, QueryPaginatedNewProspect,\n QueryGetStatsHistory,\n} from '../../types';\nimport { Society } from './Society';\n\nexport class Commercial extends Resource {\n getStatsCa(params: QueryPaginatedSocietyWithStatsCa, cancelToken?: CancelToken, signal?: AbortSignal): Promise<BasePaginate<SocietyWithStatsCaParams>> {\n return this.axios.$get('/commercial/paginated-stats-ca', { \n ...(cancelToken ? { cancelToken } : {}),\n ...(signal ? { signal } : {}),\n params,\n });\n }\n getStats(params: QueryGetStats, cancelToken?: CancelToken, signal?: AbortSignal): Promise<{ [key: string]: number }> {\n return this.axios.$get('/commercial/stats', { \n ...(cancelToken ? { cancelToken } : {}),\n ...(signal ? { signal } : {}),\n params,\n });\n }\n getStatsHistory(params: QueryGetStatsHistory, cancelToken?: CancelToken, signal?: AbortSignal): Promise<{ [key: string]: number }> {\n return this.axios.$get('/commercial/stats-history', { \n ...(cancelToken ? { cancelToken } : {}),\n ...(signal ? { signal } : {}),\n params,\n });\n }\n fetchDialogDatasInfosOk(params: QueryFetchDialogDatasInfosOk, cancelToken?: CancelToken, signal?: AbortSignal): Promise<Society> {\n return this.axios.$get('/commercial/datas-infos-ok', { \n ...(cancelToken ? { cancelToken } : {}),\n ...(signal ? { signal } : {}),\n params,\n });\n }\n fetchDialogDatasDocsOk(params: QueryFetchDialogDatasDocsOk, cancelToken?: CancelToken, signal?: AbortSignal): Promise<Society> {\n return this.axios.$get('/commercial/datas-docs-ok', { \n ...(cancelToken ? { cancelToken } : {}),\n ...(signal ? { signal } : {}),\n params,\n });\n }\n movePrestationsToNextMonth(idUser: number): Promise<number[]> {\n return this.axios.$put('/commercial/move-prestations-to-next-month', { idUser });\n }\n checkDocsAndInfosOk(idSociety: number, listIdPrestationList: number[]): Promise<Promise<{ missingDocs: ReadInvalidFieldState[], missingInfos: GedFileType[] }>> {\n return this.axios.$get(`/commercial/${idSociety}/checkDocsAndInfosOk`, { params: { listIdPrestationList } });\n }\n getPaginatedNewProspect(params: QueryPaginatedNewProspect): Promise<BasePaginate<Society>> {\n return this.axios.$get('/commercial/paginated-new-prospect', {\n params,\n });\n }\n}\n"]}