@silexpert/core 2.0.107 → 2.0.109
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/api/resources/Commercial.d.ts.map +1 -1
- package/dist/api/resources/Commercial.js +12 -2
- package/dist/api/resources/Commercial.js.map +1 -1
- package/dist/api/resources/FinancialProjection.d.ts +8 -0
- package/dist/api/resources/FinancialProjection.d.ts.map +1 -0
- package/dist/api/resources/FinancialProjection.js +14 -0
- package/dist/api/resources/FinancialProjection.js.map +1 -0
- package/dist/api/resources.d.ts +2 -0
- package/dist/api/resources.d.ts.map +1 -1
- package/dist/api/resources.js +2 -0
- package/dist/api/resources.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/types/Enum/EInvoicingReasonType.js +4 -4
- package/dist/types/Enum/EInvoicingReasonType.js.map +1 -1
- package/dist/types/Enum/NotificationType.d.ts +2 -1
- package/dist/types/Enum/NotificationType.d.ts.map +1 -1
- package/dist/types/Enum/NotificationType.js +6 -0
- package/dist/types/Enum/NotificationType.js.map +1 -1
- package/dist/types/Enum/SocietyApproval.js +2 -2
- package/dist/types/Enum/SocietyApproval.js.map +1 -1
- package/dist/types/Interface/api/SocietyApproval.d.ts +1 -0
- package/dist/types/Interface/api/SocietyApproval.d.ts.map +1 -1
- package/dist/types/Interface/api/SocietyApproval.js +7 -0
- package/dist/types/Interface/api/SocietyApproval.js.map +1 -1
- package/dist/types/Interface/api/acd/DeduplicateAccounts.d.ts +5 -0
- package/dist/types/Interface/api/acd/DeduplicateAccounts.d.ts.map +1 -0
- package/dist/types/Interface/api/acd/DeduplicateAccounts.js +34 -0
- package/dist/types/Interface/api/acd/DeduplicateAccounts.js.map +1 -0
- package/dist/types/Interface/api/acd/Vat.d.ts +6 -0
- package/dist/types/Interface/api/acd/Vat.d.ts.map +1 -1
- package/dist/types/Interface/api/acd/Vat.js.map +1 -1
- package/dist/types/Interface/api/commercialManagement/Create.d.ts +2 -0
- package/dist/types/Interface/api/commercialManagement/Create.d.ts.map +1 -1
- package/dist/types/Interface/api/commercialManagement/Create.js +1 -0
- package/dist/types/Interface/api/commercialManagement/Create.js.map +1 -1
- package/dist/types/Interface/api/docoon/Create.d.ts +4 -0
- package/dist/types/Interface/api/docoon/Create.d.ts.map +1 -1
- package/dist/types/Interface/api/docoon/Create.js +20 -3
- package/dist/types/Interface/api/docoon/Create.js.map +1 -1
- package/dist/types/Interface/models/ISocietyFinancialProjection.d.ts +12 -0
- package/dist/types/Interface/models/ISocietyFinancialProjection.d.ts.map +1 -0
- package/dist/types/Interface/models/ISocietyFinancialProjection.js +13 -0
- package/dist/types/Interface/models/ISocietyFinancialProjection.js.map +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -1
- package/dist/utils/acdVat.d.ts +3 -3
- package/dist/utils/acdVat.d.ts.map +1 -1
- package/dist/utils/acdVat.js +55 -3
- package/dist/utils/acdVat.js.map +1 -1
- package/dist/utils/societyApproval.d.ts.map +1 -1
- package/dist/utils/societyApproval.js +4 -1
- package/dist/utils/societyApproval.js.map +1 -1
- package/dist/utils/tests/acdVat.spec.js +33 -0
- package/dist/utils/tests/acdVat.spec.js.map +1 -1
- package/package.json +1 -1
- package/ts/api/resources/Commercial.ts +12 -2
- package/ts/api/resources/FinancialProjection.ts +18 -0
- package/ts/api/resources.ts +2 -0
- package/ts/index.ts +1 -0
- package/ts/types/Enum/EInvoicingReasonType.ts +4 -4
- package/ts/types/Enum/NotificationType.ts +6 -0
- package/ts/types/Enum/SocietyApproval.ts +2 -2
- package/ts/types/Interface/api/SocietyApproval.ts +5 -0
- package/ts/types/Interface/api/acd/DeduplicateAccounts.ts +29 -0
- package/ts/types/Interface/api/acd/Vat.ts +7 -0
- package/ts/types/Interface/api/commercialManagement/Create.ts +2 -0
- package/ts/types/Interface/api/docoon/Create.ts +25 -3
- package/ts/types/Interface/models/ISocietyFinancialProjection.ts +12 -0
- package/ts/types/index.ts +2 -0
- package/ts/utils/acdVat.ts +82 -5
- package/ts/utils/societyApproval.ts +5 -1
- package/ts/utils/tests/acdVat.spec.ts +41 -0
package/dist/utils/acdVat.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AcdVatCode } from '../types/Interface/api/acd/Vat.js';
|
|
2
|
-
export declare function idVatToAcdVatCode(idVat?: number | null): AcdVatCode | null;
|
|
3
|
-
export declare function acdVatCodeToIdVat(acdVatCode?: AcdVatCode | null): number | null;
|
|
1
|
+
import { AcdVatCode, type AcdVatAccount } from '../types/Interface/api/acd/Vat.js';
|
|
2
|
+
export declare function idVatToAcdVatCode(idVat?: number | null, acdVatAccounts?: Array<Pick<AcdVatAccount, 'code' | 'rate'>> | null): AcdVatCode | string | null;
|
|
3
|
+
export declare function acdVatCodeToIdVat(acdVatCode?: AcdVatCode | string | null, acdVatAccounts?: Array<Pick<AcdVatAccount, 'code' | 'rate'>> | null): number | null;
|
|
4
4
|
//# sourceMappingURL=acdVat.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acdVat.d.ts","sourceRoot":"","sources":["../../ts/utils/acdVat.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"acdVat.d.ts","sourceRoot":"","sources":["../../ts/utils/acdVat.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,KAAK,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAEnF,wBAAgB,iBAAiB,CAC/B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,EACrB,cAAc,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,GAAG,IAAI,GAClE,UAAU,GAAG,MAAM,GAAG,IAAI,CA8D5B;AAED,wBAAgB,iBAAiB,CAC/B,UAAU,CAAC,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,EACvC,cAAc,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,GAAG,IAAI,GAClE,MAAM,GAAG,IAAI,CAkEf"}
|
package/dist/utils/acdVat.js
CHANGED
|
@@ -1,13 +1,35 @@
|
|
|
1
1
|
import { Vat } from '../types/Enum/Vat.js';
|
|
2
2
|
import { AcdVatCode } from '../types/Interface/api/acd/Vat.js';
|
|
3
|
-
export function idVatToAcdVatCode(idVat) {
|
|
3
|
+
export function idVatToAcdVatCode(idVat, acdVatAccounts) {
|
|
4
4
|
if (!idVat) {
|
|
5
5
|
return null;
|
|
6
6
|
}
|
|
7
|
-
const
|
|
7
|
+
const vatList = Object.values(Vat);
|
|
8
|
+
const vat = vatList.find((currentVat) => currentVat.id === idVat);
|
|
8
9
|
if (!vat) {
|
|
9
10
|
return AcdVatCode.NON_AFFECTE;
|
|
10
11
|
}
|
|
12
|
+
if (acdVatAccounts && acdVatAccounts.length > 0) {
|
|
13
|
+
if (vat.isVatIntracom) {
|
|
14
|
+
const intracomEntry = acdVatAccounts.find((vatAccount) => vatAccount.code === AcdVatCode.INTRACOM);
|
|
15
|
+
if (intracomEntry) {
|
|
16
|
+
return intracomEntry.code;
|
|
17
|
+
}
|
|
18
|
+
return AcdVatCode.INTRACOM;
|
|
19
|
+
}
|
|
20
|
+
if (vat.isVatImportation) {
|
|
21
|
+
const autolEntry = acdVatAccounts.find((vatAccount) => vatAccount.code === AcdVatCode.AUTOL);
|
|
22
|
+
if (autolEntry) {
|
|
23
|
+
return autolEntry.code;
|
|
24
|
+
}
|
|
25
|
+
return AcdVatCode.AUTOL;
|
|
26
|
+
}
|
|
27
|
+
const matchingRateEntry = acdVatAccounts.find((vatAccount) => vatAccount.rate === vat.value &&
|
|
28
|
+
![AcdVatCode.INTRACOM, AcdVatCode.AUTOL, AcdVatCode.NON_AFFECTE].includes(vatAccount.code));
|
|
29
|
+
if (matchingRateEntry) {
|
|
30
|
+
return matchingRateEntry.code;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
11
33
|
if (vat.isVatIntracom) {
|
|
12
34
|
return AcdVatCode.INTRACOM;
|
|
13
35
|
}
|
|
@@ -29,7 +51,36 @@ export function idVatToAcdVatCode(idVat) {
|
|
|
29
51
|
return AcdVatCode.NON_AFFECTE;
|
|
30
52
|
}
|
|
31
53
|
}
|
|
32
|
-
export function acdVatCodeToIdVat(acdVatCode) {
|
|
54
|
+
export function acdVatCodeToIdVat(acdVatCode, acdVatAccounts) {
|
|
55
|
+
if (!acdVatCode) {
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
const vatList = Object.values(Vat);
|
|
59
|
+
if (acdVatAccounts && acdVatAccounts.length > 0) {
|
|
60
|
+
const matchingVat = acdVatAccounts.find((vatAccount) => vatAccount.code === acdVatCode);
|
|
61
|
+
if (matchingVat && typeof matchingVat.rate === 'number') {
|
|
62
|
+
const rate = matchingVat.rate;
|
|
63
|
+
if (acdVatCode === AcdVatCode.INTRACOM) {
|
|
64
|
+
const intracomVat = vatList.find((v) => v.isVatIntracom && v.value === rate);
|
|
65
|
+
return intracomVat ? Number(intracomVat.id) : Number(Vat.INTRACOM_WITHOUT_TAXE.id);
|
|
66
|
+
}
|
|
67
|
+
if (acdVatCode === AcdVatCode.AUTOL) {
|
|
68
|
+
const autolVat = vatList.find((v) => v.isVatImportation && v.value === rate);
|
|
69
|
+
return autolVat ? Number(autolVat.id) : Number(Vat.IMPORTATION_WITHOUT_TAXE.id);
|
|
70
|
+
}
|
|
71
|
+
if (acdVatCode === AcdVatCode.NON_AFFECTE) {
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
const standardVat = vatList.find((v) => !v.isVatIntracom &&
|
|
75
|
+
!v.isVatImportation &&
|
|
76
|
+
v.id !== Vat.MARGE.id &&
|
|
77
|
+
v.id !== Vat.MANUAL.id &&
|
|
78
|
+
v.value === rate);
|
|
79
|
+
if (standardVat) {
|
|
80
|
+
return Number(standardVat.id);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
33
84
|
switch (acdVatCode) {
|
|
34
85
|
case AcdVatCode.NORMAL:
|
|
35
86
|
return Vat.TX_20.id;
|
|
@@ -51,6 +102,7 @@ export function acdVatCodeToIdVat(acdVatCode) {
|
|
|
51
102
|
case AcdVatCode.SPECIAL:
|
|
52
103
|
case null:
|
|
53
104
|
case undefined:
|
|
105
|
+
default:
|
|
54
106
|
return null;
|
|
55
107
|
}
|
|
56
108
|
}
|
package/dist/utils/acdVat.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acdVat.js","sourceRoot":"","sources":["../../ts/utils/acdVat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,
|
|
1
|
+
{"version":3,"file":"acdVat.js","sourceRoot":"","sources":["../../ts/utils/acdVat.ts"],"names":[],"mappings":"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","sourcesContent":["import { Vat, type VatType } from '../types/Enum/Vat.js';\nimport { AcdVatCode, type AcdVatAccount } from '../types/Interface/api/acd/Vat.js';\n\nexport function idVatToAcdVatCode(\n idVat?: number | null,\n acdVatAccounts?: Array<Pick<AcdVatAccount, 'code' | 'rate'>> | null,\n): AcdVatCode | string | null {\n if (!idVat) {\n return null;\n }\n\n const vatList = Object.values(Vat) as VatType[];\n const vat = vatList.find((currentVat) => currentVat.id === idVat);\n\n if (!vat) {\n return AcdVatCode.NON_AFFECTE;\n }\n\n if (acdVatAccounts && acdVatAccounts.length > 0) {\n if (vat.isVatIntracom) {\n const intracomEntry = acdVatAccounts.find((vatAccount) => vatAccount.code === AcdVatCode.INTRACOM);\n if (intracomEntry) {\n return intracomEntry.code as AcdVatCode;\n }\n return AcdVatCode.INTRACOM;\n }\n\n if (vat.isVatImportation) {\n const autolEntry = acdVatAccounts.find((vatAccount) => vatAccount.code === AcdVatCode.AUTOL);\n if (autolEntry) {\n return autolEntry.code as AcdVatCode;\n }\n return AcdVatCode.AUTOL;\n }\n\n const matchingRateEntry = acdVatAccounts.find(\n (vatAccount) =>\n vatAccount.rate === vat.value &&\n ![AcdVatCode.INTRACOM, AcdVatCode.AUTOL, AcdVatCode.NON_AFFECTE].includes(vatAccount.code as AcdVatCode),\n );\n\n if (matchingRateEntry) {\n return matchingRateEntry.code as AcdVatCode;\n }\n }\n\n if (vat.isVatIntracom) {\n return AcdVatCode.INTRACOM;\n }\n\n if (vat.isVatImportation) {\n return AcdVatCode.AUTOL;\n }\n\n switch (vat.value) {\n case 2.1:\n return AcdVatCode.REDUIT_2_1;\n case 5.5:\n return AcdVatCode.REDUIT_5_5;\n case 10:\n return AcdVatCode.REDUIT_10;\n case 20:\n return AcdVatCode.NORMAL;\n case 0:\n return null;\n default:\n return AcdVatCode.NON_AFFECTE;\n }\n}\n\nexport function acdVatCodeToIdVat(\n acdVatCode?: AcdVatCode | string | null,\n acdVatAccounts?: Array<Pick<AcdVatAccount, 'code' | 'rate'>> | null,\n): number | null {\n if (!acdVatCode) {\n return null;\n }\n\n const vatList = Object.values(Vat) as VatType[];\n\n if (acdVatAccounts && acdVatAccounts.length > 0) {\n const matchingVat = acdVatAccounts.find((vatAccount) => vatAccount.code === acdVatCode);\n\n if (matchingVat && typeof matchingVat.rate === 'number') {\n const rate = matchingVat.rate;\n\n if (acdVatCode === AcdVatCode.INTRACOM) {\n const intracomVat = vatList.find((v) => v.isVatIntracom && v.value === rate);\n return intracomVat ? Number(intracomVat.id) : Number(Vat.INTRACOM_WITHOUT_TAXE.id);\n }\n\n if (acdVatCode === AcdVatCode.AUTOL) {\n const autolVat = vatList.find((v) => v.isVatImportation && v.value === rate);\n return autolVat ? Number(autolVat.id) : Number(Vat.IMPORTATION_WITHOUT_TAXE.id);\n }\n\n if (acdVatCode === AcdVatCode.NON_AFFECTE) {\n return null;\n }\n\n const standardVat = vatList.find(\n (v) =>\n !v.isVatIntracom &&\n !v.isVatImportation &&\n v.id !== Vat.MARGE.id &&\n v.id !== Vat.MANUAL.id &&\n v.value === rate,\n );\n\n if (standardVat) {\n return Number(standardVat.id);\n }\n }\n }\n\n switch (acdVatCode) {\n case AcdVatCode.NORMAL:\n return Vat.TX_20.id;\n case AcdVatCode.REDUIT_10:\n return Vat.TX_10.id;\n case AcdVatCode.REDUIT_5_5:\n return Vat.TX_5_5.id;\n case AcdVatCode.REDUIT_2_1:\n return Vat.TX_2_1.id;\n case AcdVatCode.INTRACOM:\n // L'information de taux est perdue dans le code ACD, on retombe sur l'intracom a 0% par defaut.\n return Vat.INTRACOM_WITHOUT_TAXE.id;\n case AcdVatCode.AUTOL:\n // L'information de taux est perdue dans le code ACD, on retombe sur l'importation a 0% par defaut.\n return Vat.IMPORTATION_WITHOUT_TAXE.id;\n case AcdVatCode.NON_AFFECTE:\n case AcdVatCode.ONI:\n case AcdVatCode.SUR_IMMOBILISATION:\n case AcdVatCode.SPECIAL:\n case null:\n case undefined:\n default:\n return null;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"societyApproval.d.ts","sourceRoot":"","sources":["../../ts/utils/societyApproval.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,EAEL,2BAA2B,EAC3B,6BAA6B,EAE7B,+BAA+B,EAChC,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,+CAA+C,CAAC;AAQjF;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,iBAAiB,EAAE,QAAQ,GAAE,MAAW,GAAG,MAAM,CAE9F;AAED;;;;GAIG;AACH,wBAAgB,+BAA+B,CAC7C,WAAW,EAAE,iBAAiB,GAC7B,6BAA6B,GAAG,SAAS,CAE3C;AAYD;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,iBAAiB,EAC9B,cAAc,EAAE,2BAA2B,GAC1C,+BAA+B,GAAG,SAAS,CAG7C;AAcD;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"societyApproval.d.ts","sourceRoot":"","sources":["../../ts/utils/societyApproval.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,EAEL,2BAA2B,EAC3B,6BAA6B,EAE7B,+BAA+B,EAChC,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,+CAA+C,CAAC;AAQjF;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,iBAAiB,EAAE,QAAQ,GAAE,MAAW,GAAG,MAAM,CAE9F;AAED;;;;GAIG;AACH,wBAAgB,+BAA+B,CAC7C,WAAW,EAAE,iBAAiB,GAC7B,6BAA6B,GAAG,SAAS,CAE3C;AAYD;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,iBAAiB,EAC9B,cAAc,EAAE,2BAA2B,GAC1C,+BAA+B,GAAG,SAAS,CAG7C;AAcD;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CA8FhH"}
|
|
@@ -93,13 +93,16 @@ export function buildApprovalTemplateData(existingApproval, style) {
|
|
|
93
93
|
ECOrderCity: brand?.companyInformation?.ECOrderCity,
|
|
94
94
|
},
|
|
95
95
|
owner: {
|
|
96
|
-
identity: `${existingApproval?.exercice?.society?.users?.[0]?.idCivility === 1 ? 'Monsieur' : 'Madame'} ${existingApproval?.exercice?.society?.users?.[0]?.firstname} ${existingApproval?.exercice?.society?.users?.[0]?.lastname}
|
|
96
|
+
identity: `${existingApproval?.exercice?.society?.users?.[0]?.idCivility === 1 ? 'Monsieur' : 'Madame'} ${existingApproval?.exercice?.society?.users?.[0]?.firstname} ${existingApproval?.exercice?.society?.users?.[0]?.lastname}`,
|
|
97
97
|
quality: QualityList.find((ql) => ql.id === existingApproval?.exercice?.society?.users?.[0]?.businessPartners?.[0]?.idQuality)?.label,
|
|
98
98
|
},
|
|
99
99
|
// Variables stockées en base
|
|
100
100
|
...existingApproval,
|
|
101
101
|
generatingDatas: {
|
|
102
102
|
...existingApproval?.generatingDatas,
|
|
103
|
+
regulatedConventions: existingApproval?.generatingDatas?.regulatedConventions ??
|
|
104
|
+
existingApproval?.generatingDatas?.conventionsList ??
|
|
105
|
+
[],
|
|
103
106
|
...(existingApproval?.generatingDatas?.approvalDate
|
|
104
107
|
? {
|
|
105
108
|
approvalDate: dayjs(existingApproval?.generatingDatas?.approvalDate)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"societyApproval.js","sourceRoot":"","sources":["../../ts/utils/societyApproval.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,EACL,qBAAqB,EAGrB,mCAAmC,GAEpC,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,WAA8B,EAAE,WAAmB,EAAE;IACpF,OAAO,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,WAAW,CAAC,EAAE,IAAI,IAAI,QAAQ,CAAC;AACxF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,+BAA+B,CAC7C,WAA8B;IAE9B,OAAO,mCAAmC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,KAAK,WAAW,CAAC,CAAC;AAClG,CAAC;AAED;;;;GAIG;AACH,SAAS,mBAAmB,CAAC,cAAyC;IACpE,IAAI,CAAC,cAAc;QAAE,OAAO,EAAE,CAAC;IAC/B,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,cAAc,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC;AAC7E,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CACtC,WAA8B,EAC9B,cAA2C;IAE3C,MAAM,MAAM,GAAG,+BAA+B,CAAC,WAAW,CAAC,CAAC;IAC5D,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,cAAc,KAAK,cAAc,CAAC,CAAC;AAChF,CAAC;AAED,SAAS,oCAAoC,CAAC,WAA+B;IAC3E,MAAM,gBAAgB,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;IACpG,MAAM,aAAa,GACjB,WAAW,KAAK,iBAAiB,CAAC,IAAI,IAAI,WAAW,KAAK,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC;IAC9G,IAAI,cAAc,GAAG,CAAC,CAAC;IAEvB,OAAO,GAAG,EAAE;QACV,cAAc,IAAI,CAAC,CAAC;QACpB,OAAO,GAAG,gBAAgB,CAAC,cAAc,GAAG,CAAC,CAAC,IAAI,GAAG,cAAc,KAAK,IAAI,aAAa,EAAE,CAAC;IAC9F,CAAC,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CAAC,gBAAkC,EAAE,KAAa;IACzF,MAAM,UAAU,GAAG,qBAAqB,CACtC,CAAC,KAAK,CAAC,gBAAgB,EAAE,eAAe,EAAE,YAAY,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAC/E,CAAC,WAAW,EAAE,CAAC;IAChB,MAAM,iBAAiB,GAAG,GAAG,qBAAqB,CAAC,CAAC,KAAK,CAAC,gBAAgB,EAAE,eAAe,EAAE,YAAY,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CACtI,gBAAgB,EAAE,eAAe,EAAE,YAAY,IAAI,IAAI,CACxD;SACE,MAAM,CAAC,IAAI,CAAC;SACZ,MAAM,CAAC,MAAM,CAAC;SACd,WAAW,EAAE,EAAE,CAAC;IACnB,MAAM,qBAAqB,GAAG,qBAAqB,CACjD,gBAAgB,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,IAAI,CAAC,CAC1D,CAAC,WAAW,EAAE,CAAC;IAChB,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,OAAO;QACL,qBAAqB;QACrB,qBAAqB;QACrB,iBAAiB,EAAE,oCAAoC,CACrD,gBAAgB,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,IAAI,SAAS,CAC9D;QACD,KAAK,EAAE;YACL,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,KAAK,EAAE,yBAAyB;YAC1C,GAAG,EAAE,KAAK;YACV,UAAU,EAAE,KAAK;YACjB,IAAI,EAAE,KAAK;YACX,2BAA2B,EAAE,KAAK,EAAE,2BAA2B;SAChE;QACD,KAAK;QACL,UAAU;QACV,iBAAiB;QACjB,qBAAqB;QACrB,IAAI,EAAE,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC;QACjD,kBAAkB,EAAE;YAClB,GAAG,EAAE,KAAK,EAAE,kBAAkB,EAAE,GAAG;YACnC,gBAAgB,EAAE,KAAK,EAAE,kBAAkB,EAAE,gBAAgB;YAC7D,IAAI,EAAE,KAAK,EAAE,kBAAkB,EAAE,IAAI;YACrC,aAAa,EAAE,KAAK,EAAE,kBAAkB,EAAE,aAAa;YACvD,cAAc,EAAE,KAAK,EAAE,kBAAkB,EAAE,cAAc;YACzD,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE,MAAM;YACzC,WAAW,EAAE,KAAK,EAAE,kBAAkB,EAAE,WAAW;SACpD;QACD,KAAK,EAAE;YACL,QAAQ,EAAE,GAAG,gBAAgB,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,IAAI,gBAAgB,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,IAAI,gBAAgB,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,GAAG;YACpO,OAAO,EAAE,WAAW,CAAC,IAAI,CACvB,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,gBAAgB,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,CACpG,EAAE,KAAK;SACT;QACD,6BAA6B;QAC7B,GAAG,gBAAgB;QACnB,eAAe,EAAE;YACf,GAAG,gBAAgB,EAAE,eAAe;YACpC,GAAG,CAAC,gBAAgB,EAAE,eAAe,EAAE,YAAY;gBACjD,CAAC,CAAC;oBACE,YAAY,EAAE,KAAK,CAAC,gBAAgB,EAAE,eAAe,EAAE,YAAY,CAAC;yBACjE,MAAM,CAAC,IAAI,CAAC;yBACZ,MAAM,CAAC,cAAc,CAAC;yBACtB,WAAW,EAAE;iBACjB;gBACH,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,gBAAgB,EAAE,eAAe,EAAE,YAAY;gBACjD,CAAC,CAAC;oBACE,uBAAuB,EAAE,KAAK,CAAC,gBAAgB,EAAE,eAAe,EAAE,YAAY,CAAC;yBAC5E,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC;yBACf,MAAM,CAAC,IAAI,CAAC;yBACZ,MAAM,CAAC,cAAc,CAAC;iBAC1B;gBACH,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,gBAAgB,EAAE,eAAe,EAAE,4BAA4B;gBACjE,CAAC,CAAC;oBACE,4BAA4B,EAAE,KAAK,CAAC,gBAAgB,EAAE,eAAe,EAAE,4BAA4B,CAAC;yBACjG,MAAM,CAAC,IAAI,CAAC;yBACZ,MAAM,CAAC,cAAc,CAAC;iBAC1B;gBACH,CAAC,CAAC,EAAE,CAAC;SACR;QACD,QAAQ,EAAE;YACR,GAAG,gBAAgB,EAAE,QAAQ;YAC7B,OAAO,EAAE;gBACP,GAAG,gBAAgB,EAAE,QAAQ,EAAE,OAAO;gBACtC,YAAY,EAAE,mBAAmB,CAAC,gBAAgB,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC,WAAW,EAAE;gBACpG,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK;oBAC/C,CAAC,CAAC,CAAC,YAAY,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,uBAAuB,EAAE,UAAU,CAAC;wBACpG,IAAI,CAAC;oBACP,CAAC,CAAC,IAAI;aACT;YACD,OAAO,EAAE,KAAK,CAAC,gBAAgB,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,WAAW,EAAE;SACtG;QACD,WAAW;KACZ,CAAC;AACJ,CAAC","sourcesContent":["import { LegalForm, LegalFormTypeEnum } from '../types/Enum/LegalForm.js';\nimport {\n AdditionalMentionType,\n SocietyApprovalDocumentType,\n SocietyApprovalDocumentConfig,\n SocietyApprovalDocumentsByLegalForm,\n SocietyApprovalDocumentTemplate,\n} from '../types/Enum/SocietyApproval.js';\nimport { ISocietyApproval } from '../types/Interface/models/ISocietyApproval.js';\nimport { QualityList } from '../types/Enum/Quality.js';\nimport { getBrand } from './brands.js';\nimport { convertNumberToLetter } from './amount.js';\nimport dayjs from 'dayjs';\nimport { CityOfGreffeDetail } from '../types/Enum/CityOfGreffe.js';\nimport { siretToSiren } from './siretValidation.js';\n\n/**\n * Récupère le nom de la forme juridique\n * @param idLegalForm - L'identifiant de la forme juridique\n * @param fallback - Valeur par défaut si non trouvée\n * @returns Le nom de la forme juridique\n */\nexport function getLegalFormName(idLegalForm: LegalFormTypeEnum, fallback: string = ''): string {\n return Object.values(LegalForm).find((lf) => lf.id === idLegalForm)?.name ?? fallback;\n}\n\n/**\n * Récupère la configuration des documents d'approbation pour une forme juridique donnée\n * @param idLegalForm - L'identifiant de la forme juridique\n * @returns La configuration des documents ou undefined si non trouvée\n */\nexport function getApprovalDocumentsByLegalForm(\n idLegalForm: LegalFormTypeEnum,\n): SocietyApprovalDocumentConfig | undefined {\n return SocietyApprovalDocumentsByLegalForm.find((config) => config.idLegalForm === idLegalForm);\n}\n\n/**\n * Récupère le texte de la ville du greffe\n * @param idCityOfGreffe - L'identifiant de la ville du greffe\n * @returns Le texte de la ville ou une chaîne vide\n */\nfunction getCityOfGreffeName(idCityOfGreffe: number | null | undefined): string {\n if (!idCityOfGreffe) return '';\n return CityOfGreffeDetail.find((c) => c.id === idCityOfGreffe)?.text ?? '';\n}\n\n/**\n * Récupère le nom du template pour un document spécifique et une forme juridique\n * @param idLegalForm - L'identifiant de la forme juridique\n * @param idDocumentType - Le type de document d'approbation\n * @returns Le nom du template ou undefined si non trouvé\n */\nexport function getApprovalDocumentInfos(\n idLegalForm: LegalFormTypeEnum,\n idDocumentType: SocietyApprovalDocumentType,\n): SocietyApprovalDocumentTemplate | undefined {\n const config = getApprovalDocumentsByLegalForm(idLegalForm);\n return config?.documents.find((doc) => doc.idDocumentType === idDocumentType);\n}\n\nfunction createApprovalDecisionTitleGenerator(idLegalForm?: LegalFormTypeEnum): () => string {\n const decisionOrdinals = ['PREMIERE', 'DEUXIEME', 'TROISIEME', 'QUATRIEME', 'CINQUIEME', 'SIXIEME'];\n const decisionLabel =\n idLegalForm === LegalFormTypeEnum.SARL || idLegalForm === LegalFormTypeEnum.SAS ? 'RESOLUTION' : 'DECISION';\n let decisionNumber = 0;\n\n return () => {\n decisionNumber += 1;\n return `${decisionOrdinals[decisionNumber - 1] ?? `${decisionNumber}EME`} ${decisionLabel}`;\n };\n}\n\n/**\n * Construit les données formatées pour le template d'approbation\n * @param existingApproval - Les données d'approbation de la société\n * @param style - Le style HTML pour le document\n * @returns L'objet de données formaté pour le template\n */\nexport function buildApprovalTemplateData(existingApproval: ISocietyApproval, style: string): Record<string, any> {\n const yearInText = convertNumberToLetter(\n +dayjs(existingApproval?.generatingDatas?.approvalDate || null).format('YYYY'),\n ).toLowerCase();\n const dayAndMonthInText = `${convertNumberToLetter(+dayjs(existingApproval?.generatingDatas?.approvalDate || null).format('D'))} ${dayjs(\n existingApproval?.generatingDatas?.approvalDate || null,\n )\n .locale('fr')\n .format('MMMM')\n .toLowerCase()}`;\n const totalSharesHeldInText = convertNumberToLetter(\n existingApproval?.exercice?.society?.totalSharesHeld ?? 0,\n ).toLowerCase();\n const brand = getBrand();\n return {\n // Variables globales\n AdditionalMentionType,\n nextDecisionTitle: createApprovalDecisionTitleGenerator(\n existingApproval?.exercice?.society?.idLegalForm ?? undefined,\n ),\n rates: {\n flatTax: 0.314,\n flatLevy: 0.128, //prelevement forfaitaire\n csg: 0.106,\n solidarity: 0.075,\n crds: 0.005,\n socialSecurityContributions: 0.186, //= csg + solidarity + crds\n },\n style,\n yearInText,\n dayAndMonthInText,\n totalSharesHeldInText,\n date: dayjs().locale('fr').format('DD MMMM YYYY'),\n companyInformation: {\n rcs: brand?.companyInformation?.rcs,\n nomRaisonSociale: brand?.companyInformation?.nomRaisonSociale,\n city: brand?.companyInformation?.city,\n postalAddress: brand?.companyInformation?.postalAddress,\n montantCapital: brand?.companyInformation?.montantCapital,\n statut: brand?.companyInformation?.statut,\n ECOrderCity: brand?.companyInformation?.ECOrderCity,\n },\n owner: {\n identity: `${existingApproval?.exercice?.society?.users?.[0]?.idCivility === 1 ? 'Monsieur' : 'Madame'} ${existingApproval?.exercice?.society?.users?.[0]?.firstname} ${existingApproval?.exercice?.society?.users?.[0]?.lastname} `,\n quality: QualityList.find(\n (ql) => ql.id === existingApproval?.exercice?.society?.users?.[0]?.businessPartners?.[0]?.idQuality,\n )?.label,\n },\n // Variables stockées en base\n ...existingApproval,\n generatingDatas: {\n ...existingApproval?.generatingDatas,\n ...(existingApproval?.generatingDatas?.approvalDate\n ? {\n approvalDate: dayjs(existingApproval?.generatingDatas?.approvalDate)\n .locale('fr')\n .format('DD MMMM YYYY')\n .toUpperCase(),\n }\n : {}),\n ...(existingApproval?.generatingDatas?.approvalDate\n ? {\n approvalDateMore4Months: dayjs(existingApproval?.generatingDatas?.approvalDate)\n .add(4, 'month')\n .locale('fr')\n .format('DD MMMM YYYY'),\n }\n : {}),\n ...(existingApproval?.generatingDatas?.approvalDividendsPaymentDate\n ? {\n approvalDividendsPaymentDate: dayjs(existingApproval?.generatingDatas?.approvalDividendsPaymentDate)\n .locale('fr')\n .format('DD MMMM YYYY'),\n }\n : {}),\n },\n exercice: {\n ...existingApproval?.exercice,\n society: {\n ...existingApproval?.exercice?.society,\n cityOfGreffe: getCityOfGreffeName(existingApproval?.exercice?.society?.idCityOfGreffe).toUpperCase(),\n siren: existingApproval?.exercice?.society?.siret\n ? (siretToSiren(existingApproval.exercice.society.siret)?.replace(/(\\d{3})(\\d{3})(\\d{3})/, '$1 $2 $3') ??\n null)\n : null,\n },\n endDate: dayjs(existingApproval?.exercice?.endDate).locale('fr').format('DD MMMM YYYY').toLowerCase(),\n },\n QualityList,\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"societyApproval.js","sourceRoot":"","sources":["../../ts/utils/societyApproval.ts"],"names":[],"mappings":"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","sourcesContent":["import { LegalForm, LegalFormTypeEnum } from '../types/Enum/LegalForm.js';\nimport {\n AdditionalMentionType,\n SocietyApprovalDocumentType,\n SocietyApprovalDocumentConfig,\n SocietyApprovalDocumentsByLegalForm,\n SocietyApprovalDocumentTemplate,\n} from '../types/Enum/SocietyApproval.js';\nimport { ISocietyApproval } from '../types/Interface/models/ISocietyApproval.js';\nimport { QualityList } from '../types/Enum/Quality.js';\nimport { getBrand } from './brands.js';\nimport { convertNumberToLetter } from './amount.js';\nimport dayjs from 'dayjs';\nimport { CityOfGreffeDetail } from '../types/Enum/CityOfGreffe.js';\nimport { siretToSiren } from './siretValidation.js';\n\n/**\n * Récupère le nom de la forme juridique\n * @param idLegalForm - L'identifiant de la forme juridique\n * @param fallback - Valeur par défaut si non trouvée\n * @returns Le nom de la forme juridique\n */\nexport function getLegalFormName(idLegalForm: LegalFormTypeEnum, fallback: string = ''): string {\n return Object.values(LegalForm).find((lf) => lf.id === idLegalForm)?.name ?? fallback;\n}\n\n/**\n * Récupère la configuration des documents d'approbation pour une forme juridique donnée\n * @param idLegalForm - L'identifiant de la forme juridique\n * @returns La configuration des documents ou undefined si non trouvée\n */\nexport function getApprovalDocumentsByLegalForm(\n idLegalForm: LegalFormTypeEnum,\n): SocietyApprovalDocumentConfig | undefined {\n return SocietyApprovalDocumentsByLegalForm.find((config) => config.idLegalForm === idLegalForm);\n}\n\n/**\n * Récupère le texte de la ville du greffe\n * @param idCityOfGreffe - L'identifiant de la ville du greffe\n * @returns Le texte de la ville ou une chaîne vide\n */\nfunction getCityOfGreffeName(idCityOfGreffe: number | null | undefined): string {\n if (!idCityOfGreffe) return '';\n return CityOfGreffeDetail.find((c) => c.id === idCityOfGreffe)?.text ?? '';\n}\n\n/**\n * Récupère le nom du template pour un document spécifique et une forme juridique\n * @param idLegalForm - L'identifiant de la forme juridique\n * @param idDocumentType - Le type de document d'approbation\n * @returns Le nom du template ou undefined si non trouvé\n */\nexport function getApprovalDocumentInfos(\n idLegalForm: LegalFormTypeEnum,\n idDocumentType: SocietyApprovalDocumentType,\n): SocietyApprovalDocumentTemplate | undefined {\n const config = getApprovalDocumentsByLegalForm(idLegalForm);\n return config?.documents.find((doc) => doc.idDocumentType === idDocumentType);\n}\n\nfunction createApprovalDecisionTitleGenerator(idLegalForm?: LegalFormTypeEnum): () => string {\n const decisionOrdinals = ['PREMIERE', 'DEUXIEME', 'TROISIEME', 'QUATRIEME', 'CINQUIEME', 'SIXIEME'];\n const decisionLabel =\n idLegalForm === LegalFormTypeEnum.SARL || idLegalForm === LegalFormTypeEnum.SAS ? 'RESOLUTION' : 'DECISION';\n let decisionNumber = 0;\n\n return () => {\n decisionNumber += 1;\n return `${decisionOrdinals[decisionNumber - 1] ?? `${decisionNumber}EME`} ${decisionLabel}`;\n };\n}\n\n/**\n * Construit les données formatées pour le template d'approbation\n * @param existingApproval - Les données d'approbation de la société\n * @param style - Le style HTML pour le document\n * @returns L'objet de données formaté pour le template\n */\nexport function buildApprovalTemplateData(existingApproval: ISocietyApproval, style: string): Record<string, any> {\n const yearInText = convertNumberToLetter(\n +dayjs(existingApproval?.generatingDatas?.approvalDate || null).format('YYYY'),\n ).toLowerCase();\n const dayAndMonthInText = `${convertNumberToLetter(+dayjs(existingApproval?.generatingDatas?.approvalDate || null).format('D'))} ${dayjs(\n existingApproval?.generatingDatas?.approvalDate || null,\n )\n .locale('fr')\n .format('MMMM')\n .toLowerCase()}`;\n const totalSharesHeldInText = convertNumberToLetter(\n existingApproval?.exercice?.society?.totalSharesHeld ?? 0,\n ).toLowerCase();\n const brand = getBrand();\n return {\n // Variables globales\n AdditionalMentionType,\n nextDecisionTitle: createApprovalDecisionTitleGenerator(\n existingApproval?.exercice?.society?.idLegalForm ?? undefined,\n ),\n rates: {\n flatTax: 0.314,\n flatLevy: 0.128, //prelevement forfaitaire\n csg: 0.106,\n solidarity: 0.075,\n crds: 0.005,\n socialSecurityContributions: 0.186, //= csg + solidarity + crds\n },\n style,\n yearInText,\n dayAndMonthInText,\n totalSharesHeldInText,\n date: dayjs().locale('fr').format('DD MMMM YYYY'),\n companyInformation: {\n rcs: brand?.companyInformation?.rcs,\n nomRaisonSociale: brand?.companyInformation?.nomRaisonSociale,\n city: brand?.companyInformation?.city,\n postalAddress: brand?.companyInformation?.postalAddress,\n montantCapital: brand?.companyInformation?.montantCapital,\n statut: brand?.companyInformation?.statut,\n ECOrderCity: brand?.companyInformation?.ECOrderCity,\n },\n owner: {\n identity: `${existingApproval?.exercice?.society?.users?.[0]?.idCivility === 1 ? 'Monsieur' : 'Madame'} ${existingApproval?.exercice?.society?.users?.[0]?.firstname} ${existingApproval?.exercice?.society?.users?.[0]?.lastname}`,\n quality: QualityList.find(\n (ql) => ql.id === existingApproval?.exercice?.society?.users?.[0]?.businessPartners?.[0]?.idQuality,\n )?.label,\n },\n // Variables stockées en base\n ...existingApproval,\n generatingDatas: {\n ...existingApproval?.generatingDatas,\n regulatedConventions:\n existingApproval?.generatingDatas?.regulatedConventions ??\n existingApproval?.generatingDatas?.conventionsList ??\n [],\n ...(existingApproval?.generatingDatas?.approvalDate\n ? {\n approvalDate: dayjs(existingApproval?.generatingDatas?.approvalDate)\n .locale('fr')\n .format('DD MMMM YYYY')\n .toUpperCase(),\n }\n : {}),\n ...(existingApproval?.generatingDatas?.approvalDate\n ? {\n approvalDateMore4Months: dayjs(existingApproval?.generatingDatas?.approvalDate)\n .add(4, 'month')\n .locale('fr')\n .format('DD MMMM YYYY'),\n }\n : {}),\n ...(existingApproval?.generatingDatas?.approvalDividendsPaymentDate\n ? {\n approvalDividendsPaymentDate: dayjs(existingApproval?.generatingDatas?.approvalDividendsPaymentDate)\n .locale('fr')\n .format('DD MMMM YYYY'),\n }\n : {}),\n },\n exercice: {\n ...existingApproval?.exercice,\n society: {\n ...existingApproval?.exercice?.society,\n cityOfGreffe: getCityOfGreffeName(existingApproval?.exercice?.society?.idCityOfGreffe).toUpperCase(),\n siren: existingApproval?.exercice?.society?.siret\n ? (siretToSiren(existingApproval.exercice.society.siret)?.replace(/(\\d{3})(\\d{3})(\\d{3})/, '$1 $2 $3') ??\n null)\n : null,\n },\n endDate: dayjs(existingApproval?.exercice?.endDate).locale('fr').format('DD MMMM YYYY').toLowerCase(),\n },\n QualityList,\n };\n}\n"]}
|
|
@@ -21,5 +21,38 @@ describe('acdVat utils', () => {
|
|
|
21
21
|
expect(acdVatCodeToIdVat(AcdVatCode.AUTOL)).toBe(Vat.IMPORTATION_WITHOUT_TAXE.id);
|
|
22
22
|
expect(acdVatCodeToIdVat(AcdVatCode.NON_AFFECTE)).toBeNull();
|
|
23
23
|
});
|
|
24
|
+
test('should map ACD VAT codes with custom society VAT rates (e.g. DOM-TOM)', () => {
|
|
25
|
+
const domTomVatAccounts = [
|
|
26
|
+
{ code: 'NON_AFFECTE', rate: 0 },
|
|
27
|
+
{ code: 'TN', rate: 8.5 },
|
|
28
|
+
{ code: 'TR1', rate: 2.1 },
|
|
29
|
+
];
|
|
30
|
+
expect(acdVatCodeToIdVat('TN', domTomVatAccounts)).toBe(Vat.TX_8_5.id);
|
|
31
|
+
expect(acdVatCodeToIdVat('TR1', domTomVatAccounts)).toBe(Vat.TX_2_1.id);
|
|
32
|
+
expect(acdVatCodeToIdVat('NON_AFFECTE', domTomVatAccounts)).toBeNull();
|
|
33
|
+
expect(idVatToAcdVatCode(Vat.TX_8_5.id, domTomVatAccounts)).toBe('TN');
|
|
34
|
+
expect(idVatToAcdVatCode(Vat.TX_2_1.id, domTomVatAccounts)).toBe('TR1');
|
|
35
|
+
expect(idVatToAcdVatCode(Vat.WITHOUT_TAXE.id, domTomVatAccounts)).toBeNull();
|
|
36
|
+
});
|
|
37
|
+
test('should correctly handle 0% VAT codes (e.g. exoneration, intracom 0%, importation 0%)', () => {
|
|
38
|
+
const vatAccountsWithZeroRates = [
|
|
39
|
+
{ code: 'NON_AFFECTE', rate: 0 },
|
|
40
|
+
{ code: 'EXO', rate: 0 },
|
|
41
|
+
{ code: 'INTRACOM', rate: 0 },
|
|
42
|
+
{ code: 'AUTOL', rate: 0 },
|
|
43
|
+
{ code: 'TN', rate: 20 },
|
|
44
|
+
];
|
|
45
|
+
// Non affecté returns null
|
|
46
|
+
expect(acdVatCodeToIdVat('NON_AFFECTE', vatAccountsWithZeroRates)).toBeNull();
|
|
47
|
+
// Custom 0% code (e.g. EXO) maps to WITHOUT_TAXE
|
|
48
|
+
expect(acdVatCodeToIdVat('EXO', vatAccountsWithZeroRates)).toBe(Vat.WITHOUT_TAXE.id);
|
|
49
|
+
expect(idVatToAcdVatCode(Vat.WITHOUT_TAXE.id, vatAccountsWithZeroRates)).toBe('EXO');
|
|
50
|
+
// Intracom at 0%
|
|
51
|
+
expect(acdVatCodeToIdVat('INTRACOM', vatAccountsWithZeroRates)).toBe(Vat.INTRACOM_WITHOUT_TAXE.id);
|
|
52
|
+
expect(idVatToAcdVatCode(Vat.INTRACOM_WITHOUT_TAXE.id, vatAccountsWithZeroRates)).toBe(AcdVatCode.INTRACOM);
|
|
53
|
+
// Importation at 0%
|
|
54
|
+
expect(acdVatCodeToIdVat('AUTOL', vatAccountsWithZeroRates)).toBe(Vat.IMPORTATION_WITHOUT_TAXE.id);
|
|
55
|
+
expect(idVatToAcdVatCode(Vat.IMPORTATION_WITHOUT_TAXE.id, vatAccountsWithZeroRates)).toBe(AcdVatCode.AUTOL);
|
|
56
|
+
});
|
|
24
57
|
});
|
|
25
58
|
//# sourceMappingURL=acdVat.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acdVat.spec.js","sourceRoot":"","sources":["../../../ts/utils/tests/acdVat.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEpE,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,IAAI,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACxD,MAAM,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAChE,MAAM,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QACnE,MAAM,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QACrE,MAAM,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QACrE,MAAM,CAAC,iBAAiB,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC3E,MAAM,CAAC,iBAAiB,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAC3E,MAAM,CAAC,iBAAiB,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC7D,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAChE,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACnE,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACrE,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACrE,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;QAClF,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC;QAClF,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC/D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { describe, expect, test } from 'vitest';\nimport { Vat } from '../../types/Enum/Vat.js';\nimport { AcdVatCode } from '../../types/Interface/api/acd/Vat.js';\nimport { acdVatCodeToIdVat, idVatToAcdVatCode } from '../acdVat.js';\n\ndescribe('acdVat utils', () => {\n test('should map internal VAT ids to ACD VAT codes', () => {\n expect(idVatToAcdVatCode(Vat.TX_20.id)).toBe(AcdVatCode.NORMAL);\n expect(idVatToAcdVatCode(Vat.TX_10.id)).toBe(AcdVatCode.REDUIT_10);\n expect(idVatToAcdVatCode(Vat.TX_5_5.id)).toBe(AcdVatCode.REDUIT_5_5);\n expect(idVatToAcdVatCode(Vat.TX_2_1.id)).toBe(AcdVatCode.REDUIT_2_1);\n expect(idVatToAcdVatCode(Vat.INTRACOM_TX_20.id)).toBe(AcdVatCode.INTRACOM);\n expect(idVatToAcdVatCode(Vat.IMPORTATION_TX_20.id)).toBe(AcdVatCode.AUTOL);\n expect(idVatToAcdVatCode(Vat.WITHOUT_TAXE.id)).toBeNull();\n });\n\n test('should map ACD VAT codes back to internal VAT ids', () => {\n expect(acdVatCodeToIdVat(AcdVatCode.NORMAL)).toBe(Vat.TX_20.id);\n expect(acdVatCodeToIdVat(AcdVatCode.REDUIT_10)).toBe(Vat.TX_10.id);\n expect(acdVatCodeToIdVat(AcdVatCode.REDUIT_5_5)).toBe(Vat.TX_5_5.id);\n expect(acdVatCodeToIdVat(AcdVatCode.REDUIT_2_1)).toBe(Vat.TX_2_1.id);\n expect(acdVatCodeToIdVat(AcdVatCode.INTRACOM)).toBe(Vat.INTRACOM_WITHOUT_TAXE.id);\n expect(acdVatCodeToIdVat(AcdVatCode.AUTOL)).toBe(Vat.IMPORTATION_WITHOUT_TAXE.id);\n expect(acdVatCodeToIdVat(AcdVatCode.NON_AFFECTE)).toBeNull();\n });\n});\n"]}
|
|
1
|
+
{"version":3,"file":"acdVat.spec.js","sourceRoot":"","sources":["../../../ts/utils/tests/acdVat.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { describe, expect, test } from 'vitest';\nimport { Vat } from '../../types/Enum/Vat.js';\nimport { AcdVatCode } from '../../types/Interface/api/acd/Vat.js';\nimport { acdVatCodeToIdVat, idVatToAcdVatCode } from '../acdVat.js';\n\ndescribe('acdVat utils', () => {\n test('should map internal VAT ids to ACD VAT codes', () => {\n expect(idVatToAcdVatCode(Vat.TX_20.id)).toBe(AcdVatCode.NORMAL);\n expect(idVatToAcdVatCode(Vat.TX_10.id)).toBe(AcdVatCode.REDUIT_10);\n expect(idVatToAcdVatCode(Vat.TX_5_5.id)).toBe(AcdVatCode.REDUIT_5_5);\n expect(idVatToAcdVatCode(Vat.TX_2_1.id)).toBe(AcdVatCode.REDUIT_2_1);\n expect(idVatToAcdVatCode(Vat.INTRACOM_TX_20.id)).toBe(AcdVatCode.INTRACOM);\n expect(idVatToAcdVatCode(Vat.IMPORTATION_TX_20.id)).toBe(AcdVatCode.AUTOL);\n expect(idVatToAcdVatCode(Vat.WITHOUT_TAXE.id)).toBeNull();\n });\n\n test('should map ACD VAT codes back to internal VAT ids', () => {\n expect(acdVatCodeToIdVat(AcdVatCode.NORMAL)).toBe(Vat.TX_20.id);\n expect(acdVatCodeToIdVat(AcdVatCode.REDUIT_10)).toBe(Vat.TX_10.id);\n expect(acdVatCodeToIdVat(AcdVatCode.REDUIT_5_5)).toBe(Vat.TX_5_5.id);\n expect(acdVatCodeToIdVat(AcdVatCode.REDUIT_2_1)).toBe(Vat.TX_2_1.id);\n expect(acdVatCodeToIdVat(AcdVatCode.INTRACOM)).toBe(Vat.INTRACOM_WITHOUT_TAXE.id);\n expect(acdVatCodeToIdVat(AcdVatCode.AUTOL)).toBe(Vat.IMPORTATION_WITHOUT_TAXE.id);\n expect(acdVatCodeToIdVat(AcdVatCode.NON_AFFECTE)).toBeNull();\n });\n\n test('should map ACD VAT codes with custom society VAT rates (e.g. DOM-TOM)', () => {\n const domTomVatAccounts = [\n { code: 'NON_AFFECTE', rate: 0 },\n { code: 'TN', rate: 8.5 },\n { code: 'TR1', rate: 2.1 },\n ];\n\n expect(acdVatCodeToIdVat('TN', domTomVatAccounts)).toBe(Vat.TX_8_5.id);\n expect(acdVatCodeToIdVat('TR1', domTomVatAccounts)).toBe(Vat.TX_2_1.id);\n expect(acdVatCodeToIdVat('NON_AFFECTE', domTomVatAccounts)).toBeNull();\n\n expect(idVatToAcdVatCode(Vat.TX_8_5.id, domTomVatAccounts)).toBe('TN');\n expect(idVatToAcdVatCode(Vat.TX_2_1.id, domTomVatAccounts)).toBe('TR1');\n expect(idVatToAcdVatCode(Vat.WITHOUT_TAXE.id, domTomVatAccounts)).toBeNull();\n });\n\n test('should correctly handle 0% VAT codes (e.g. exoneration, intracom 0%, importation 0%)', () => {\n const vatAccountsWithZeroRates = [\n { code: 'NON_AFFECTE', rate: 0 },\n { code: 'EXO', rate: 0 },\n { code: 'INTRACOM', rate: 0 },\n { code: 'AUTOL', rate: 0 },\n { code: 'TN', rate: 20 },\n ];\n\n // Non affecté returns null\n expect(acdVatCodeToIdVat('NON_AFFECTE', vatAccountsWithZeroRates)).toBeNull();\n\n // Custom 0% code (e.g. EXO) maps to WITHOUT_TAXE\n expect(acdVatCodeToIdVat('EXO', vatAccountsWithZeroRates)).toBe(Vat.WITHOUT_TAXE.id);\n expect(idVatToAcdVatCode(Vat.WITHOUT_TAXE.id, vatAccountsWithZeroRates)).toBe('EXO');\n\n // Intracom at 0%\n expect(acdVatCodeToIdVat('INTRACOM', vatAccountsWithZeroRates)).toBe(Vat.INTRACOM_WITHOUT_TAXE.id);\n expect(idVatToAcdVatCode(Vat.INTRACOM_WITHOUT_TAXE.id, vatAccountsWithZeroRates)).toBe(AcdVatCode.INTRACOM);\n\n // Importation at 0%\n expect(acdVatCodeToIdVat('AUTOL', vatAccountsWithZeroRates)).toBe(Vat.IMPORTATION_WITHOUT_TAXE.id);\n expect(idVatToAcdVatCode(Vat.IMPORTATION_WITHOUT_TAXE.id, vatAccountsWithZeroRates)).toBe(AcdVatCode.AUTOL);\n });\n});\n"]}
|
package/package.json
CHANGED
|
@@ -84,7 +84,12 @@ export class Commercial extends Resource {
|
|
|
84
84
|
});
|
|
85
85
|
}
|
|
86
86
|
fetchStatusDocForClient(idSociety: number, listIdPrestationList: number[]): Promise<ReadAskOrRequiredDocuments[]> {
|
|
87
|
-
|
|
87
|
+
const uniqueListIdPrestationList = Array.isArray(listIdPrestationList)
|
|
88
|
+
? [...new Set(listIdPrestationList)]
|
|
89
|
+
: listIdPrestationList;
|
|
90
|
+
return this.axios.$get(`/commercial/${idSociety}/status-docs`, {
|
|
91
|
+
params: { listIdPrestationList: uniqueListIdPrestationList },
|
|
92
|
+
});
|
|
88
93
|
}
|
|
89
94
|
movePrestationsToNextMonth(idUser: number): Promise<number[]> {
|
|
90
95
|
return this.axios.$put('/commercial/move-prestations-to-next-month', { idUser });
|
|
@@ -93,7 +98,12 @@ export class Commercial extends Resource {
|
|
|
93
98
|
idSociety: number,
|
|
94
99
|
listIdPrestationList: number[],
|
|
95
100
|
): Promise<Promise<{ missingDocs: ReadInvalidFieldState[]; missingInfos: GedFileType[] }>> {
|
|
96
|
-
|
|
101
|
+
const uniqueListIdPrestationList = Array.isArray(listIdPrestationList)
|
|
102
|
+
? [...new Set(listIdPrestationList)]
|
|
103
|
+
: listIdPrestationList;
|
|
104
|
+
return this.axios.$get(`/commercial/${idSociety}/checkDocsAndInfosOk`, {
|
|
105
|
+
params: { listIdPrestationList: uniqueListIdPrestationList },
|
|
106
|
+
});
|
|
97
107
|
}
|
|
98
108
|
getPaginatedNewProspect(params: QueryPaginatedNewProspect): Promise<BasePaginate<Society>> {
|
|
99
109
|
return this.axios.$get('/commercial/paginated-new-prospect', {
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Resource } from '../Resource.js';
|
|
2
|
+
import { ISocietyFinancialProjection } from '../../types/index.js';
|
|
3
|
+
|
|
4
|
+
const ROUTE = 'statistics/financial-projection';
|
|
5
|
+
|
|
6
|
+
export class FinancialProjection extends Resource {
|
|
7
|
+
getSocietyProjections(idSociety: number): Promise<ISocietyFinancialProjection[]> {
|
|
8
|
+
return this.axios.$get(`${ROUTE}/${idSociety}`);
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
processSociety(idSociety: number): Promise<ISocietyFinancialProjection[]> {
|
|
12
|
+
return this.axios.$post(`${ROUTE}/process/${idSociety}`);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
processAll(): Promise<boolean> {
|
|
16
|
+
return this.axios.$post(`${ROUTE}/process-all`);
|
|
17
|
+
}
|
|
18
|
+
}
|
package/ts/api/resources.ts
CHANGED
|
@@ -191,6 +191,7 @@ import { Acd } from './resources/Acd.js';
|
|
|
191
191
|
import { UsersHistory } from './resources/UsersHistory.js';
|
|
192
192
|
import { Zendesk } from './resources/zendesk/Zendesk.js';
|
|
193
193
|
import { Formalism } from './resources/Formalism.js';
|
|
194
|
+
import { FinancialProjection } from './resources/FinancialProjection.js';
|
|
194
195
|
import { ZendeskTicket } from './resources/zendesk/Ticket.js';
|
|
195
196
|
import { Vialink } from './resources/Vialink.js';
|
|
196
197
|
import { KycMandate } from './resources/KycMandate.js';
|
|
@@ -393,6 +394,7 @@ export const resources = {
|
|
|
393
394
|
acd: Acd,
|
|
394
395
|
zendesk: Zendesk,
|
|
395
396
|
formalism: Formalism,
|
|
397
|
+
financialProjection: FinancialProjection,
|
|
396
398
|
zendeskTicket: ZendeskTicket,
|
|
397
399
|
vialink: Vialink,
|
|
398
400
|
kycMandate: KycMandate,
|
package/ts/index.ts
CHANGED
|
@@ -392,7 +392,7 @@ export const einvoicingReasonList: EInvocingReasonListType = {
|
|
|
392
392
|
id: EInvoicingReasonType.REJ_UNI,
|
|
393
393
|
reasonCode: EInvoicingReasonTypeCode.REJ_UNI,
|
|
394
394
|
label: 'Rejet sur contrôle unicité',
|
|
395
|
-
description: "
|
|
395
|
+
description: "Contrôle d'unicité de la facture",
|
|
396
396
|
acceptedStatus: [EInvoicingStatusCode.REJECTED],
|
|
397
397
|
},
|
|
398
398
|
REJ_COH: {
|
|
@@ -405,21 +405,21 @@ export const einvoicingReasonList: EInvocingReasonListType = {
|
|
|
405
405
|
REJ_ADR: {
|
|
406
406
|
id: EInvoicingReasonType.REJ_ADR,
|
|
407
407
|
reasonCode: EInvoicingReasonTypeCode.REJ_ADR,
|
|
408
|
-
label: "Rejet sur
|
|
408
|
+
label: "Rejet sur contrôle d'adressage",
|
|
409
409
|
description: "Contrôle d'adressage de la facture.",
|
|
410
410
|
acceptedStatus: [EInvoicingStatusCode.REJECTED],
|
|
411
411
|
},
|
|
412
412
|
REJ_CONT_B2G: {
|
|
413
413
|
id: EInvoicingReasonType.REJ_CONT_B2G,
|
|
414
414
|
reasonCode: EInvoicingReasonTypeCode.REJ_CONT_B2G,
|
|
415
|
-
label: 'Rejet sur
|
|
415
|
+
label: 'Rejet sur contrôle métier B2G',
|
|
416
416
|
description: "Contrôle B2G (vérification du n° d'engagement)",
|
|
417
417
|
acceptedStatus: [EInvoicingStatusCode.REJECTED],
|
|
418
418
|
},
|
|
419
419
|
REJ_REF_PJ: {
|
|
420
420
|
id: EInvoicingReasonType.REJ_REF_PJ,
|
|
421
421
|
reasonCode: EInvoicingReasonTypeCode.REJ_REF_PJ,
|
|
422
|
-
label: 'Rejet sur
|
|
422
|
+
label: 'Rejet sur référence de la PJ',
|
|
423
423
|
description: 'Contrôle de la référence de la PJ',
|
|
424
424
|
acceptedStatus: [EInvoicingStatusCode.REJECTED],
|
|
425
425
|
},
|
|
@@ -6,6 +6,7 @@ export enum NotificationTypeEnum {
|
|
|
6
6
|
INVOICE_ALMOST_EXPIRED = 5,
|
|
7
7
|
ORDER_ALMOST_EXPIRED = 6,
|
|
8
8
|
EXPORT_READY = 7,
|
|
9
|
+
NEW_SOCIETY_ACCESS = 8,
|
|
9
10
|
}
|
|
10
11
|
|
|
11
12
|
export type NotificationTypeType = {
|
|
@@ -49,6 +50,11 @@ export const NotificationType: NotificationTypeTypeEnum = {
|
|
|
49
50
|
title: 'Une facture arrive à échéance',
|
|
50
51
|
linkTitle: 'Consulter la facture',
|
|
51
52
|
},
|
|
53
|
+
NEW_SOCIETY_ACCESS: {
|
|
54
|
+
id: NotificationTypeEnum.NEW_SOCIETY_ACCESS,
|
|
55
|
+
title: 'Accès à une nouvelle société',
|
|
56
|
+
linkTitle: 'Accéder',
|
|
57
|
+
},
|
|
52
58
|
EXPORT_READY: {
|
|
53
59
|
id: NotificationTypeEnum.EXPORT_READY,
|
|
54
60
|
title: 'Votre export est prêt',
|
|
@@ -48,8 +48,8 @@ export type AdditionalMention = {
|
|
|
48
48
|
export const AdditionalMentions: AdditionalMention[] = [
|
|
49
49
|
{
|
|
50
50
|
id: AdditionalMentionType.EXECUTIVE_REMUNERATION,
|
|
51
|
-
label: 'Rémunération de la gérance',
|
|
52
|
-
applicableTo: [LegalFormTypeEnum.EURL, LegalFormTypeEnum.SARL],
|
|
51
|
+
label: 'Rémunération de la gérance/présidence',
|
|
52
|
+
applicableTo: [LegalFormTypeEnum.EURL, LegalFormTypeEnum.SARL, LegalFormTypeEnum.SASU],
|
|
53
53
|
},
|
|
54
54
|
{
|
|
55
55
|
id: AdditionalMentionType.TAKEOVER_OF_COMMITMENTS,
|
|
@@ -51,6 +51,11 @@ export class SocietyApprovalJsonDatas {
|
|
|
51
51
|
@IsOptional()
|
|
52
52
|
@IsEnum(RegulatedConventionType, { each: true })
|
|
53
53
|
conventionsList?: RegulatedConventionType[];
|
|
54
|
+
|
|
55
|
+
@ApiPropertyOptional()
|
|
56
|
+
@IsOptional()
|
|
57
|
+
@IsEnum(RegulatedConventionType, { each: true })
|
|
58
|
+
regulatedConventions?: RegulatedConventionType[];
|
|
54
59
|
}
|
|
55
60
|
|
|
56
61
|
export class CreateDocument {
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
|
|
2
|
+
import {
|
|
3
|
+
ArrayMaxSize,
|
|
4
|
+
ArrayMinSize,
|
|
5
|
+
ArrayUnique,
|
|
6
|
+
IsArray,
|
|
7
|
+
IsBoolean,
|
|
8
|
+
IsInt,
|
|
9
|
+
IsOptional,
|
|
10
|
+
IsPositive,
|
|
11
|
+
} from 'class-validator';
|
|
12
|
+
import { ToBoolean } from '../../../../utils/transforms/boolean.transform.js';
|
|
13
|
+
|
|
14
|
+
export class DeduplicateAcdAccounts {
|
|
15
|
+
@ApiProperty({ type: [Number], minItems: 1 })
|
|
16
|
+
@IsArray()
|
|
17
|
+
@ArrayMinSize(1)
|
|
18
|
+
@ArrayMaxSize(20)
|
|
19
|
+
@ArrayUnique()
|
|
20
|
+
@IsInt({ each: true })
|
|
21
|
+
@IsPositive({ each: true })
|
|
22
|
+
idSocieties: number[];
|
|
23
|
+
|
|
24
|
+
@ApiPropertyOptional({ default: true })
|
|
25
|
+
@IsOptional()
|
|
26
|
+
@IsBoolean()
|
|
27
|
+
@ToBoolean()
|
|
28
|
+
isDryRun?: boolean;
|
|
29
|
+
}
|
|
@@ -11,6 +11,13 @@ export enum AcdVatCode {
|
|
|
11
11
|
SPECIAL = 'TS',
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
+
export type AcdVatAccount = {
|
|
15
|
+
code: string;
|
|
16
|
+
deductible?: string;
|
|
17
|
+
collected?: string;
|
|
18
|
+
rate?: number;
|
|
19
|
+
};
|
|
20
|
+
|
|
14
21
|
export type AcdCompte = {
|
|
15
22
|
Code: string | null;
|
|
16
23
|
Categ: string | null;
|
|
@@ -26,6 +26,7 @@ import { RecurrenceType } from '../../../Enum/RecurrenceType.js';
|
|
|
26
26
|
import { IProductInvoice } from '../../models/IProductInvoice.js';
|
|
27
27
|
import { ISocietyGescom } from '../../models/ISocietyGescom.js';
|
|
28
28
|
import { IThirdParty } from '../../models/IThirdParty.js';
|
|
29
|
+
import { IEstimateInvoice } from '../../models/IEstimateInvoice.js';
|
|
29
30
|
import { ToBoolean } from '../../../../utils/transforms/boolean.transform.js';
|
|
30
31
|
|
|
31
32
|
export type IProductInvoiceToCreate = IProductInvoice & { save?: boolean };
|
|
@@ -537,6 +538,7 @@ export class CreateInvoiceDocument extends CommercialDocumentInputs {
|
|
|
537
538
|
language?: InvoiceLanguage;
|
|
538
539
|
reminder?: CreateReminder | null;
|
|
539
540
|
recurrence?: CreateRecurrence | null;
|
|
541
|
+
lastEmittedInvoice?: IEstimateInvoice | null;
|
|
540
542
|
|
|
541
543
|
@ApiPropertyOptional()
|
|
542
544
|
@IsOptional()
|
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
import { ApiPropertyOptional, ApiProperty } from '@nestjs/swagger';
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
IsString,
|
|
4
|
+
IsOptional,
|
|
5
|
+
IsArray,
|
|
6
|
+
IsEnum,
|
|
7
|
+
IsDateString,
|
|
8
|
+
IsNumber,
|
|
9
|
+
IsObject,
|
|
10
|
+
ValidateNested,
|
|
11
|
+
} from 'class-validator';
|
|
3
12
|
import { DocoonFlowType } from './DocoonInvoice.js';
|
|
4
13
|
import { EInvoicingStatusCode } from '#types/Enum/EInvoicingStatusCode.js';
|
|
5
14
|
import { EInvoicingReasonType } from '#types/Enum/EInvoicingReasonType.js';
|
|
@@ -48,17 +57,30 @@ export type CreateStructure = CreateLegalEntityStructure & {
|
|
|
48
57
|
parentStructureId: string;
|
|
49
58
|
};
|
|
50
59
|
|
|
60
|
+
export class ImportDocoonInvoiceFilters {
|
|
61
|
+
@ApiPropertyOptional()
|
|
62
|
+
@IsString()
|
|
63
|
+
@IsOptional()
|
|
64
|
+
documentId?: string;
|
|
65
|
+
}
|
|
66
|
+
|
|
51
67
|
export class ImportDocoonInvoice {
|
|
52
68
|
@ApiPropertyOptional()
|
|
53
|
-
@IsDateString()
|
|
54
69
|
@IsOptional()
|
|
70
|
+
@IsDateString()
|
|
55
71
|
updatedAfter?: string;
|
|
56
72
|
|
|
57
73
|
@ApiPropertyOptional()
|
|
74
|
+
@IsOptional()
|
|
58
75
|
@IsArray()
|
|
59
76
|
@IsString({ each: true })
|
|
60
|
-
@IsOptional()
|
|
61
77
|
flowType?: DocoonFlowType[];
|
|
78
|
+
|
|
79
|
+
@ApiPropertyOptional({ type: () => ImportDocoonInvoiceFilters })
|
|
80
|
+
@IsOptional()
|
|
81
|
+
@IsObject()
|
|
82
|
+
@ValidateNested()
|
|
83
|
+
filters?: ImportDocoonInvoiceFilters;
|
|
62
84
|
}
|
|
63
85
|
export class RejectEInvoice {
|
|
64
86
|
@ApiProperty()
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// societyFinancialProjections
|
|
2
|
+
export class ISocietyFinancialProjection {
|
|
3
|
+
id?: number;
|
|
4
|
+
monthYear: string; // MM-YYYY
|
|
5
|
+
revenuesAmount: number | null;
|
|
6
|
+
expensesAmount: number | null;
|
|
7
|
+
details: string | null; // JSON string containing categories
|
|
8
|
+
isProjected: boolean;
|
|
9
|
+
idSociety: number;
|
|
10
|
+
createdAt?: Date | null;
|
|
11
|
+
updatedAt?: Date | null;
|
|
12
|
+
}
|
package/ts/types/index.ts
CHANGED
|
@@ -146,6 +146,7 @@ export * from './Interface/models/ISocietyProceding.js';
|
|
|
146
146
|
export * from './Interface/models/ISocietySocial.js';
|
|
147
147
|
export * from './Interface/models/ISocietySoftware.js';
|
|
148
148
|
export * from './Interface/models/ISocietyStat.js';
|
|
149
|
+
export * from './Interface/models/ISocietyFinancialProjection.js';
|
|
149
150
|
export * from './Interface/models/ISocietyVehicle.js';
|
|
150
151
|
export * from './Interface/models/ISoftwareCompta.js';
|
|
151
152
|
export * from './Interface/models/ISource.js';
|
|
@@ -544,6 +545,7 @@ export * from './Enum/Kyc.js';
|
|
|
544
545
|
export * from './Interface/api/accountingTransaction/Create.js';
|
|
545
546
|
export * from './Interface/api/acd/Vat.js';
|
|
546
547
|
export * from './Interface/api/acd/Create.js';
|
|
548
|
+
export * from './Interface/api/acd/DeduplicateAccounts.js';
|
|
547
549
|
export * from './Interface/api/authentification/AuthenticationResponse.js';
|
|
548
550
|
export * from './Interface/api/exercice/ReadExercice.js';
|
|
549
551
|
export * from './Interface/api/authentification/AuthenticationResponse.js';
|