@silexpert/core 1.3.152 → 1.3.153
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.
- package/dist/cjs/api/resources/Revenue.d.ts +55 -0
- package/dist/cjs/api/resources/Revenue.d.ts.map +1 -0
- package/dist/cjs/api/resources/Revenue.js +59 -0
- package/dist/cjs/api/resources/Revenue.js.map +1 -0
- package/dist/cjs/api/resources.d.ts +2 -0
- package/dist/cjs/api/resources.d.ts.map +1 -1
- package/dist/cjs/api/resources.js +2 -0
- package/dist/cjs/api/resources.js.map +1 -1
- package/dist/cjs/types/Enum/BankAccountType.d.ts +5 -0
- package/dist/cjs/types/Enum/BankAccountType.d.ts.map +1 -1
- package/dist/cjs/types/Enum/BankAccountType.js +7 -1
- package/dist/cjs/types/Enum/BankAccountType.js.map +1 -1
- package/dist/cjs/types/Enum/Revenue.d.ts +33 -0
- package/dist/cjs/types/Enum/Revenue.d.ts.map +1 -0
- package/dist/cjs/types/Enum/Revenue.js +38 -0
- package/dist/cjs/types/Enum/Revenue.js.map +1 -0
- package/dist/cjs/types/Interface/api/revenueMovement.d.ts +69 -0
- package/dist/cjs/types/Interface/api/revenueMovement.d.ts.map +1 -0
- package/dist/cjs/types/Interface/api/revenueMovement.js +3 -0
- package/dist/cjs/types/Interface/api/revenueMovement.js.map +1 -0
- package/dist/cjs/types/Interface/api/revenueSnapshot.d.ts +57 -0
- package/dist/cjs/types/Interface/api/revenueSnapshot.d.ts.map +1 -0
- package/dist/cjs/types/Interface/api/revenueSnapshot.js +3 -0
- package/dist/cjs/types/Interface/api/revenueSnapshot.js.map +1 -0
- package/dist/cjs/types/Interface/api/revenueSnapshotGenerate.d.ts +9 -0
- package/dist/cjs/types/Interface/api/revenueSnapshotGenerate.d.ts.map +1 -0
- package/dist/cjs/types/Interface/api/revenueSnapshotGenerate.js +61 -0
- package/dist/cjs/types/Interface/api/revenueSnapshotGenerate.js.map +1 -0
- package/dist/cjs/types/Interface/models/IRevenueMovement.d.ts +37 -0
- package/dist/cjs/types/Interface/models/IRevenueMovement.d.ts.map +1 -0
- package/dist/cjs/types/Interface/models/IRevenueMovement.js +3 -0
- package/dist/cjs/types/Interface/models/IRevenueMovement.js.map +1 -0
- package/dist/cjs/types/Interface/models/IRevenueSnapshot.d.ts +38 -0
- package/dist/cjs/types/Interface/models/IRevenueSnapshot.d.ts.map +1 -0
- package/dist/cjs/types/Interface/models/IRevenueSnapshot.js +3 -0
- package/dist/cjs/types/Interface/models/IRevenueSnapshot.js.map +1 -0
- package/dist/cjs/types/Interface/models/IStateBankAccount.d.ts +2 -1
- package/dist/cjs/types/Interface/models/IStateBankAccount.d.ts.map +1 -1
- package/dist/cjs/types/Interface/models/IStateBankAccount.js.map +1 -1
- package/dist/cjs/types/index.d.ts +6 -0
- package/dist/cjs/types/index.d.ts.map +1 -1
- package/dist/cjs/types/index.js +7 -0
- package/dist/cjs/types/index.js.map +1 -1
- package/dist/mjs/api/resources/Revenue.d.ts +55 -0
- package/dist/mjs/api/resources/Revenue.d.ts.map +1 -0
- package/dist/mjs/api/resources/Revenue.js +52 -0
- package/dist/mjs/api/resources/Revenue.js.map +1 -0
- package/dist/mjs/api/resources.d.ts +2 -0
- package/dist/mjs/api/resources.d.ts.map +1 -1
- package/dist/mjs/api/resources.js +2 -0
- package/dist/mjs/api/resources.js.map +1 -1
- package/dist/mjs/types/Enum/BankAccountType.d.ts +5 -0
- package/dist/mjs/types/Enum/BankAccountType.d.ts.map +1 -1
- package/dist/mjs/types/Enum/BankAccountType.js +6 -0
- package/dist/mjs/types/Enum/BankAccountType.js.map +1 -1
- package/dist/mjs/types/Enum/Revenue.d.ts +33 -0
- package/dist/mjs/types/Enum/Revenue.d.ts.map +1 -0
- package/dist/mjs/types/Enum/Revenue.js +35 -0
- package/dist/mjs/types/Enum/Revenue.js.map +1 -0
- package/dist/mjs/types/Interface/api/revenueMovement.d.ts +69 -0
- package/dist/mjs/types/Interface/api/revenueMovement.d.ts.map +1 -0
- package/dist/mjs/types/Interface/api/revenueMovement.js +2 -0
- package/dist/mjs/types/Interface/api/revenueMovement.js.map +1 -0
- package/dist/mjs/types/Interface/api/revenueSnapshot.d.ts +57 -0
- package/dist/mjs/types/Interface/api/revenueSnapshot.d.ts.map +1 -0
- package/dist/mjs/types/Interface/api/revenueSnapshot.js +2 -0
- package/dist/mjs/types/Interface/api/revenueSnapshot.js.map +1 -0
- package/dist/mjs/types/Interface/api/revenueSnapshotGenerate.d.ts +9 -0
- package/dist/mjs/types/Interface/api/revenueSnapshotGenerate.d.ts.map +1 -0
- package/dist/mjs/types/Interface/api/revenueSnapshotGenerate.js +60 -0
- package/dist/mjs/types/Interface/api/revenueSnapshotGenerate.js.map +1 -0
- package/dist/mjs/types/Interface/models/IRevenueMovement.d.ts +37 -0
- package/dist/mjs/types/Interface/models/IRevenueMovement.d.ts.map +1 -0
- package/dist/mjs/types/Interface/models/IRevenueMovement.js +2 -0
- package/dist/mjs/types/Interface/models/IRevenueMovement.js.map +1 -0
- package/dist/mjs/types/Interface/models/IRevenueSnapshot.d.ts +38 -0
- package/dist/mjs/types/Interface/models/IRevenueSnapshot.d.ts.map +1 -0
- package/dist/mjs/types/Interface/models/IRevenueSnapshot.js +2 -0
- package/dist/mjs/types/Interface/models/IRevenueSnapshot.js.map +1 -0
- package/dist/mjs/types/Interface/models/IStateBankAccount.d.ts +2 -1
- package/dist/mjs/types/Interface/models/IStateBankAccount.d.ts.map +1 -1
- package/dist/mjs/types/Interface/models/IStateBankAccount.js.map +1 -1
- package/dist/mjs/types/index.d.ts +6 -0
- package/dist/mjs/types/index.d.ts.map +1 -1
- package/dist/mjs/types/index.js +7 -0
- package/dist/mjs/types/index.js.map +1 -1
- package/package.json +1 -1
- package/ts/api/resources/Revenue.ts +81 -0
- package/ts/api/resources.ts +2 -0
- package/ts/types/Enum/BankAccountType.ts +7 -1
- package/ts/types/Enum/Revenue.ts +42 -0
- package/ts/types/Interface/api/revenueMovement.ts +74 -0
- package/ts/types/Interface/api/revenueSnapshot.ts +59 -0
- package/ts/types/Interface/api/revenueSnapshotGenerate.ts +42 -0
- package/ts/types/Interface/models/IRevenueMovement.ts +51 -0
- package/ts/types/Interface/models/IRevenueSnapshot.ts +55 -0
- package/ts/types/Interface/models/IStateBankAccount.ts +2 -1
- package/ts/types/index.ts +8 -0
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { Resource } from '../Resource';
|
|
2
|
+
import {
|
|
3
|
+
IGetRevenueMovementsRequest,
|
|
4
|
+
IGetRevenueSnapshotsRequest,
|
|
5
|
+
IGetArrSummaryResponse,
|
|
6
|
+
ICreateRevenueMovementRequest,
|
|
7
|
+
IUpdateRevenueMovementRequest,
|
|
8
|
+
} from '../../types';
|
|
9
|
+
|
|
10
|
+
export class Revenue extends Resource {
|
|
11
|
+
/**
|
|
12
|
+
* Récupérer les mouvements de revenu
|
|
13
|
+
*/
|
|
14
|
+
public movements = {
|
|
15
|
+
getAll: (params: IGetRevenueMovementsRequest) => {
|
|
16
|
+
return this.axios.$get('/revenue/movements', { params });
|
|
17
|
+
},
|
|
18
|
+
|
|
19
|
+
get: (id: number) => {
|
|
20
|
+
return this.axios.$get(`/revenue/movements/${id}`);
|
|
21
|
+
},
|
|
22
|
+
|
|
23
|
+
create: (data: ICreateRevenueMovementRequest) => {
|
|
24
|
+
return this.axios.$post('/revenue/movements', data);
|
|
25
|
+
},
|
|
26
|
+
|
|
27
|
+
update: (id: number, data: IUpdateRevenueMovementRequest) => {
|
|
28
|
+
return this.axios.$put(`/revenue/movements/${id}`, data);
|
|
29
|
+
},
|
|
30
|
+
|
|
31
|
+
delete: (id: number) => {
|
|
32
|
+
return this.axios.$delete(`/revenue/movements/${id}`);
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Récupérer les snapshots de revenu
|
|
38
|
+
*/
|
|
39
|
+
public snapshots = {
|
|
40
|
+
getAll: (params: IGetRevenueSnapshotsRequest) => {
|
|
41
|
+
return this.axios.$get('/revenue/snapshots', { params });
|
|
42
|
+
},
|
|
43
|
+
|
|
44
|
+
getLatest: (params: { idSociety?: number; idExercice?: number }) => {
|
|
45
|
+
return this.axios.$get('/revenue/snapshots/latest', { params });
|
|
46
|
+
},
|
|
47
|
+
|
|
48
|
+
generate: (data: { date?: string; idSociety?: number; idExercice?: number }) => {
|
|
49
|
+
return this.axios.$post('/revenue/snapshots/generate', data);
|
|
50
|
+
},
|
|
51
|
+
|
|
52
|
+
generateAll: (data: { date?: string }) => {
|
|
53
|
+
return this.axios.$post('/revenue/snapshots/generate-all', data);
|
|
54
|
+
},
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Récupérer le résumé ARR
|
|
59
|
+
*/
|
|
60
|
+
public arrSummary = {
|
|
61
|
+
get: (params: {
|
|
62
|
+
idSociety?: number;
|
|
63
|
+
idExercice?: number;
|
|
64
|
+
startDate?: string;
|
|
65
|
+
endDate?: string;
|
|
66
|
+
}): Promise<IGetArrSummaryResponse> => {
|
|
67
|
+
return this.axios.$get('/revenue/arr-summary', { params });
|
|
68
|
+
},
|
|
69
|
+
|
|
70
|
+
getSociety: (
|
|
71
|
+
idSociety: number,
|
|
72
|
+
params: {
|
|
73
|
+
idExercice?: number;
|
|
74
|
+
startDate?: string;
|
|
75
|
+
endDate?: string;
|
|
76
|
+
},
|
|
77
|
+
): Promise<IGetArrSummaryResponse> => {
|
|
78
|
+
return this.axios.$get(`/revenue/societies/${idSociety}/arr-summary`, { params });
|
|
79
|
+
},
|
|
80
|
+
};
|
|
81
|
+
}
|
package/ts/api/resources.ts
CHANGED
|
@@ -185,6 +185,7 @@ import { StripePurchase } from './resources/StripePurchase';
|
|
|
185
185
|
import { DashboardLayout } from './resources/DashboardLayout';
|
|
186
186
|
import { DocumentRequest } from './resources/DocumentRequest';
|
|
187
187
|
import { BalanceSheetReport } from './resources/BalanceSheetReport';
|
|
188
|
+
import { Revenue } from './resources/Revenue';
|
|
188
189
|
|
|
189
190
|
export const resources = {
|
|
190
191
|
budgetInsight: BudgetInsight,
|
|
@@ -374,4 +375,5 @@ export const resources = {
|
|
|
374
375
|
StripePurchase: StripePurchase,
|
|
375
376
|
documentRequest: DocumentRequest,
|
|
376
377
|
balanceSheetReport: BalanceSheetReport,
|
|
378
|
+
revenue: Revenue,
|
|
377
379
|
};
|
|
@@ -4,6 +4,12 @@ export enum BankAccountType {
|
|
|
4
4
|
EXPENSE = 3,
|
|
5
5
|
}
|
|
6
6
|
|
|
7
|
+
export enum BankAccountBalanceState {
|
|
8
|
+
DESYNCHRONIZED = 0,
|
|
9
|
+
SYNCHRONIZED = 1,
|
|
10
|
+
NA = 2, // This value is for manual bank accounts where balance synchronization is not applicable
|
|
11
|
+
}
|
|
12
|
+
|
|
7
13
|
export type BankAccountSubType =
|
|
8
14
|
| 'article83'
|
|
9
15
|
| 'capitalisation'
|
|
@@ -25,4 +31,4 @@ export type BankAccountSubType =
|
|
|
25
31
|
| 'real_estate'
|
|
26
32
|
| 'rsp'
|
|
27
33
|
| 'savings'
|
|
28
|
-
| 'unknown';
|
|
34
|
+
| 'unknown';
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type de mouvement de revenu
|
|
3
|
+
*/
|
|
4
|
+
export enum RevenueMovementType {
|
|
5
|
+
/** Nouveau booking (nouvelle prestation souscrite) */
|
|
6
|
+
BOOKING = 1,
|
|
7
|
+
|
|
8
|
+
/** Churn (résiliation client) */
|
|
9
|
+
CHURN = 2,
|
|
10
|
+
|
|
11
|
+
/** Provision (revenu différé) */
|
|
12
|
+
PROVISION = 3,
|
|
13
|
+
|
|
14
|
+
/** Reconnaissance de revenu */
|
|
15
|
+
RECOGNITION = 4,
|
|
16
|
+
|
|
17
|
+
/** Upgrade (augmentation de prestation) */
|
|
18
|
+
UPGRADE = 5,
|
|
19
|
+
|
|
20
|
+
/** Downgrade (réduction de prestation) */
|
|
21
|
+
DOWNGRADE = 6,
|
|
22
|
+
|
|
23
|
+
/** Reactivation (client qui revient) */
|
|
24
|
+
REACTIVATION = 7,
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Type de périodicité pour les prestations
|
|
29
|
+
*/
|
|
30
|
+
export enum PrestationPeriodicity {
|
|
31
|
+
/** Mensuel */
|
|
32
|
+
MONTHLY = 1,
|
|
33
|
+
|
|
34
|
+
/** Trimestriel */
|
|
35
|
+
QUARTERLY = 2,
|
|
36
|
+
|
|
37
|
+
/** Annuel */
|
|
38
|
+
YEARLY = 3,
|
|
39
|
+
|
|
40
|
+
/** Paiement unique (non récurrent) */
|
|
41
|
+
ONE_TIME = 4,
|
|
42
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { RevenueMovementType } from '../../Enum/Revenue';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* DTO pour créer un mouvement de revenu
|
|
5
|
+
*/
|
|
6
|
+
export interface ICreateRevenueMovementRequest {
|
|
7
|
+
type: RevenueMovementType;
|
|
8
|
+
idSociety: number;
|
|
9
|
+
idExercice?: number;
|
|
10
|
+
idPrestation?: number;
|
|
11
|
+
idTerminationList?: number;
|
|
12
|
+
amount: number;
|
|
13
|
+
mrr: number;
|
|
14
|
+
arr: number;
|
|
15
|
+
movementDate: Date;
|
|
16
|
+
description?: string;
|
|
17
|
+
metadata?: Record<string, any>;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* DTO pour mettre à jour un mouvement de revenu
|
|
22
|
+
*/
|
|
23
|
+
export interface IUpdateRevenueMovementRequest {
|
|
24
|
+
type?: RevenueMovementType;
|
|
25
|
+
idTerminationList?: number;
|
|
26
|
+
amount?: number;
|
|
27
|
+
mrr?: number;
|
|
28
|
+
arr?: number;
|
|
29
|
+
movementDate?: Date | string;
|
|
30
|
+
description?: string;
|
|
31
|
+
metadata?: Record<string, any>;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Filtres pour récupérer les mouvements de revenu
|
|
36
|
+
*/
|
|
37
|
+
export interface IGetRevenueMovementsRequest {
|
|
38
|
+
idSociety?: number;
|
|
39
|
+
idExercice?: number;
|
|
40
|
+
idPrestation?: number;
|
|
41
|
+
idTerminationList?: number;
|
|
42
|
+
type?: RevenueMovementType[];
|
|
43
|
+
startDate?: Date | string;
|
|
44
|
+
endDate?: Date | string;
|
|
45
|
+
page?: number;
|
|
46
|
+
limit?: number;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Réponse paginée pour les mouvements de revenu
|
|
51
|
+
*/
|
|
52
|
+
export interface IGetRevenueMovementsResponse {
|
|
53
|
+
movements: any[]; // IRevenueMovement[]
|
|
54
|
+
total: number;
|
|
55
|
+
page: number;
|
|
56
|
+
limit: number;
|
|
57
|
+
totalPages: number;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* DTO pour générer un snapshot de revenu
|
|
62
|
+
*/
|
|
63
|
+
export interface IGenerateSnapshotRequest {
|
|
64
|
+
date?: string;
|
|
65
|
+
idSociety?: number;
|
|
66
|
+
idExercice?: number;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* DTO pour générer tous les snapshots de revenu
|
|
71
|
+
*/
|
|
72
|
+
export interface IGenerateAllSnapshotsRequest {
|
|
73
|
+
date?: string;
|
|
74
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Filtres pour récupérer les snapshots de revenu
|
|
3
|
+
*/
|
|
4
|
+
export interface IGetRevenueSnapshotsRequest {
|
|
5
|
+
idSociety?: number;
|
|
6
|
+
idExercice?: number;
|
|
7
|
+
startDate?: Date | string;
|
|
8
|
+
endDate?: Date | string;
|
|
9
|
+
page?: number;
|
|
10
|
+
limit?: number;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Réponse paginée pour les snapshots de revenu
|
|
15
|
+
*/
|
|
16
|
+
export interface IGetRevenueSnapshotsResponse {
|
|
17
|
+
snapshots: any[]; // IRevenueSnapshot[]
|
|
18
|
+
total: number;
|
|
19
|
+
page: number;
|
|
20
|
+
limit: number;
|
|
21
|
+
totalPages: number;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Réponse pour obtenir le dernier snapshot d'une société
|
|
26
|
+
*/
|
|
27
|
+
export interface IGetLatestSnapshotResponse {
|
|
28
|
+
snapshot: any; // IRevenueSnapshot
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Réponse pour obtenir le tableau récapitulatif ARR
|
|
33
|
+
*/
|
|
34
|
+
export interface IGetArrSummaryResponse {
|
|
35
|
+
idSociety?: number;
|
|
36
|
+
idExercice?: number;
|
|
37
|
+
period: {
|
|
38
|
+
startDate: Date;
|
|
39
|
+
endDate: Date;
|
|
40
|
+
};
|
|
41
|
+
summary: {
|
|
42
|
+
currentArr: number;
|
|
43
|
+
currentMrr: number;
|
|
44
|
+
totalBookings: number;
|
|
45
|
+
totalChurn: number;
|
|
46
|
+
totalProvisions: number;
|
|
47
|
+
totalRecognitions: number;
|
|
48
|
+
activeCustomers: number;
|
|
49
|
+
churnRate: number;
|
|
50
|
+
mrrGrowthRate: number;
|
|
51
|
+
};
|
|
52
|
+
timeline: Array<{
|
|
53
|
+
date: Date;
|
|
54
|
+
arr: number;
|
|
55
|
+
mrr: number;
|
|
56
|
+
bookings: number;
|
|
57
|
+
churn: number;
|
|
58
|
+
}>;
|
|
59
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { ApiProperty } from '../../../utils';
|
|
2
|
+
import { IsOptional, IsString, IsNumber } from 'class-validator';
|
|
3
|
+
|
|
4
|
+
export class GenerateSnapshot {
|
|
5
|
+
@ApiProperty({
|
|
6
|
+
required: false,
|
|
7
|
+
description: 'Date du snapshot au format ISO (YYYY-MM-DD)',
|
|
8
|
+
example: '2025-11-04',
|
|
9
|
+
})
|
|
10
|
+
@IsOptional()
|
|
11
|
+
@IsString()
|
|
12
|
+
date?: string;
|
|
13
|
+
|
|
14
|
+
@ApiProperty({
|
|
15
|
+
required: false,
|
|
16
|
+
description: 'ID de la société',
|
|
17
|
+
example: 60170,
|
|
18
|
+
})
|
|
19
|
+
@IsOptional()
|
|
20
|
+
@IsNumber()
|
|
21
|
+
idSociety?: number;
|
|
22
|
+
|
|
23
|
+
@ApiProperty({
|
|
24
|
+
required: false,
|
|
25
|
+
description: "ID de l'exercice",
|
|
26
|
+
example: 123456,
|
|
27
|
+
})
|
|
28
|
+
@IsOptional()
|
|
29
|
+
@IsNumber()
|
|
30
|
+
idExercice?: number;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export class GenerateAllSnapshots {
|
|
34
|
+
@ApiProperty({
|
|
35
|
+
required: false,
|
|
36
|
+
description: 'Date du snapshot au format ISO (YYYY-MM-DD)',
|
|
37
|
+
example: '2025-11-04',
|
|
38
|
+
})
|
|
39
|
+
@IsOptional()
|
|
40
|
+
@IsString()
|
|
41
|
+
date?: string;
|
|
42
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { RevenueMovementType } from '../../Enum/Revenue';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Interface pour les mouvements de revenus (bookings, churn, provisions, etc.)
|
|
5
|
+
*/
|
|
6
|
+
export interface IRevenueMovement {
|
|
7
|
+
/** ID unique du mouvement */
|
|
8
|
+
id: number;
|
|
9
|
+
|
|
10
|
+
/** Type de mouvement (booking, churn, provision, etc.) */
|
|
11
|
+
type: RevenueMovementType;
|
|
12
|
+
|
|
13
|
+
/** ID de la société concernée */
|
|
14
|
+
idSociety: number;
|
|
15
|
+
|
|
16
|
+
/** ID de l'exercice concerné (optionnel) */
|
|
17
|
+
idExercice?: number | null;
|
|
18
|
+
|
|
19
|
+
/** ID de la prestation concernée (optionnel) */
|
|
20
|
+
idPrestation?: number | null;
|
|
21
|
+
|
|
22
|
+
/** ID de la résiliation qui a annulé ce mouvement (pour traçabilité) */
|
|
23
|
+
idTerminationList?: number | null;
|
|
24
|
+
|
|
25
|
+
/** Montant du mouvement (en centimes) */
|
|
26
|
+
amount: number;
|
|
27
|
+
|
|
28
|
+
/** Montant MRR (Monthly Recurring Revenue) en centimes */
|
|
29
|
+
mrr: number;
|
|
30
|
+
|
|
31
|
+
/** Montant ARR (Annual Recurring Revenue) en centimes */
|
|
32
|
+
arr: number;
|
|
33
|
+
|
|
34
|
+
/** Date du mouvement */
|
|
35
|
+
movementDate: Date;
|
|
36
|
+
|
|
37
|
+
/** Description/commentaire du mouvement */
|
|
38
|
+
description?: string | null;
|
|
39
|
+
|
|
40
|
+
/** Métadonnées additionnelles (JSON) */
|
|
41
|
+
metadata?: Record<string, any> | null;
|
|
42
|
+
|
|
43
|
+
/** Date de création */
|
|
44
|
+
createdAt: Date;
|
|
45
|
+
|
|
46
|
+
/** Date de mise à jour */
|
|
47
|
+
updatedAt: Date;
|
|
48
|
+
|
|
49
|
+
/** Date de suppression (soft delete) */
|
|
50
|
+
deletedAt?: Date | null;
|
|
51
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interface pour les snapshots quotidiens d'ARR par société/exercice
|
|
3
|
+
*/
|
|
4
|
+
export interface IRevenueSnapshot {
|
|
5
|
+
/** ID unique du snapshot */
|
|
6
|
+
id: number;
|
|
7
|
+
|
|
8
|
+
/** ID de la société concernée (null = snapshot global toutes sociétés) */
|
|
9
|
+
idSociety?: number | null;
|
|
10
|
+
|
|
11
|
+
/** ID de l'exercice concerné (null = snapshot global tous exercices) */
|
|
12
|
+
idExercice?: number | null;
|
|
13
|
+
|
|
14
|
+
/** Date du snapshot */
|
|
15
|
+
snapshotDate: Date;
|
|
16
|
+
|
|
17
|
+
/** ARR total à cette date (en centimes) */
|
|
18
|
+
arr: number;
|
|
19
|
+
|
|
20
|
+
/** MRR total à cette date (en centimes) */
|
|
21
|
+
mrr: number;
|
|
22
|
+
|
|
23
|
+
/** Total des bookings du mois en cours (en centimes) */
|
|
24
|
+
monthlyBookings: number;
|
|
25
|
+
|
|
26
|
+
/** Total du churn du mois en cours (en centimes) */
|
|
27
|
+
monthlyChurn: number;
|
|
28
|
+
|
|
29
|
+
/** Provisions en attente de reconnaissance (en centimes) */
|
|
30
|
+
pendingProvisions: number;
|
|
31
|
+
|
|
32
|
+
/** Reconnaissances du mois en cours (en centimes) */
|
|
33
|
+
monthlyRecognitions: number;
|
|
34
|
+
|
|
35
|
+
/** Nombre de clients actifs */
|
|
36
|
+
// Optionnel, voir si utile ?
|
|
37
|
+
activeCustomers: number;
|
|
38
|
+
|
|
39
|
+
/** Taux de churn du mois (en pourcentage) */
|
|
40
|
+
// Optionnel, voir si utile ?
|
|
41
|
+
churnRate?: number | null;
|
|
42
|
+
|
|
43
|
+
/** Croissance MRR vs mois précédent (en pourcentage) */
|
|
44
|
+
// Optionnel, voir si utile ?
|
|
45
|
+
mrrGrowthRate?: number | null;
|
|
46
|
+
|
|
47
|
+
/** Métadonnées additionnelles (JSON) */
|
|
48
|
+
metadata?: Record<string, any> | null;
|
|
49
|
+
|
|
50
|
+
/** Date de création */
|
|
51
|
+
createdAt: Date;
|
|
52
|
+
|
|
53
|
+
/** Date de mise à jour */
|
|
54
|
+
updatedAt: Date;
|
|
55
|
+
}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
import { BankAccountBalanceState } from '../../Enum/BankAccountType';
|
|
1
2
|
import { IBankAccount } from './IBankAccount';
|
|
2
3
|
import { IExercice } from './IExercice';
|
|
3
4
|
|
|
4
5
|
// stateBankAccount
|
|
5
6
|
export interface IStateBankAccount {
|
|
6
7
|
id?: number;
|
|
7
|
-
balanceState?:
|
|
8
|
+
balanceState?: BankAccountBalanceState | null;
|
|
8
9
|
balanceValue?: number | null;
|
|
9
10
|
balanceDate?: Date | null;
|
|
10
11
|
idBankAccount: number;
|
package/ts/types/index.ts
CHANGED
|
@@ -1185,3 +1185,11 @@ export * from './Interface/api/regulation/Create';
|
|
|
1185
1185
|
export * from './Interface/api/marketing/NewLeadSheet';
|
|
1186
1186
|
export * from './Interface/api/ai/AskQuestionCollaborator';
|
|
1187
1187
|
export * from './Interface/api/refund/QueryRefundPaginated';
|
|
1188
|
+
|
|
1189
|
+
// Revenue tracking interfaces
|
|
1190
|
+
export * from './Interface/models/IRevenueMovement';
|
|
1191
|
+
export * from './Interface/models/IRevenueSnapshot';
|
|
1192
|
+
export * from './Interface/api/revenueMovement';
|
|
1193
|
+
export * from './Interface/api/revenueSnapshot';
|
|
1194
|
+
export * from './Interface/api/revenueSnapshotGenerate';
|
|
1195
|
+
export * from './Enum/Revenue';
|