@silexpert/core 2.0.68-4 → 2.0.69
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/Account.d.ts +0 -1
- package/dist/api/resources/Account.d.ts.map +1 -1
- package/dist/api/resources/Account.js +0 -3
- package/dist/api/resources/Account.js.map +1 -1
- package/dist/api/resources/Acd.d.ts +1 -2
- package/dist/api/resources/Acd.d.ts.map +1 -1
- package/dist/api/resources/Acd.js +0 -3
- package/dist/api/resources/Acd.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/dist/types/Enum/MailAuto.d.ts +11 -11
- package/dist/types/Enum/MailAuto.d.ts.map +1 -1
- package/dist/types/Enum/MailAuto.js +48 -0
- package/dist/types/Enum/MailAuto.js.map +1 -1
- package/dist/types/Interface/api/account/Create.d.ts +1 -5
- package/dist/types/Interface/api/account/Create.d.ts.map +1 -1
- package/dist/types/Interface/api/account/Create.js +4 -38
- package/dist/types/Interface/api/account/Create.js.map +1 -1
- package/dist/types/Interface/api/accountingTransaction/QueryTransaction.js +1 -1
- package/dist/types/Interface/api/accountingTransaction/QueryTransaction.js.map +1 -1
- package/dist/types/Interface/api/commercialManagement/Create.d.ts +2 -1
- package/dist/types/Interface/api/commercialManagement/Create.d.ts.map +1 -1
- package/dist/types/Interface/api/commercialManagement/Create.js +5 -0
- package/dist/types/Interface/api/commercialManagement/Create.js.map +1 -1
- package/dist/types/Interface/api/docoon/Create.d.ts +1 -0
- package/dist/types/Interface/api/docoon/Create.d.ts.map +1 -1
- package/dist/types/Interface/api/docoon/Create.js +8 -1
- package/dist/types/Interface/api/docoon/Create.js.map +1 -1
- package/dist/types/Interface/api/product/CreateProduct.d.ts +0 -1
- package/dist/types/Interface/api/product/CreateProduct.d.ts.map +1 -1
- package/dist/types/Interface/api/product/CreateProduct.js +1 -8
- package/dist/types/Interface/api/product/CreateProduct.js.map +1 -1
- package/dist/types/Interface/api/registration/DeclareRegistration.d.ts +0 -1
- package/dist/types/Interface/api/registration/DeclareRegistration.d.ts.map +1 -1
- package/dist/types/Interface/api/registration/DeclareRegistration.js +0 -8
- package/dist/types/Interface/api/registration/DeclareRegistration.js.map +1 -1
- package/dist/types/Interface/api/user/RegisterProspect.d.ts +1 -0
- package/dist/types/Interface/api/user/RegisterProspect.d.ts.map +1 -1
- package/dist/types/Interface/api/user/RegisterProspect.js.map +1 -1
- package/dist/types/Interface/models/IAccount.d.ts +0 -1
- package/dist/types/Interface/models/IAccount.d.ts.map +1 -1
- package/dist/types/Interface/models/IAccount.js +0 -1
- package/dist/types/Interface/models/IAccount.js.map +1 -1
- package/dist/types/Interface/models/IAccountingFile.d.ts +1 -0
- package/dist/types/Interface/models/IAccountingFile.d.ts.map +1 -1
- package/dist/types/Interface/models/IAccountingFile.js +1 -0
- package/dist/types/Interface/models/IAccountingFile.js.map +1 -1
- package/dist/types/Interface/models/IProduct.d.ts +0 -3
- package/dist/types/Interface/models/IProduct.d.ts.map +1 -1
- package/dist/types/Interface/models/IProduct.js +0 -2
- package/dist/types/Interface/models/IProduct.js.map +1 -1
- package/dist/types/Interface/models/IProductInvoice.d.ts +0 -3
- package/dist/types/Interface/models/IProductInvoice.d.ts.map +1 -1
- package/dist/types/Interface/models/IProductInvoice.js +0 -2
- package/dist/types/Interface/models/IProductInvoice.js.map +1 -1
- package/dist/types/Interface/models/ISocietyGescom.d.ts +0 -1
- package/dist/types/Interface/models/ISocietyGescom.d.ts.map +1 -1
- package/dist/types/Interface/models/ISocietyGescom.js +0 -2
- package/dist/types/Interface/models/ISocietyGescom.js.map +1 -1
- package/dist/types/index.d.ts +0 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +0 -1
- package/dist/types/index.js.map +1 -1
- package/dist/utils/commercialManagement/document.d.ts +7 -0
- package/dist/utils/commercialManagement/document.d.ts.map +1 -1
- package/dist/utils/commercialManagement/document.js +129 -2
- package/dist/utils/commercialManagement/document.js.map +1 -1
- package/dist/utils/index.d.ts +0 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +0 -1
- package/dist/utils/index.js.map +1 -1
- package/package.json +1 -1
- package/ts/api/resources/Account.ts +0 -4
- package/ts/api/resources/Acd.ts +1 -5
- package/ts/index.ts +0 -1
- package/ts/types/Enum/MailAuto.ts +66 -1
- package/ts/types/Interface/api/account/Create.ts +3 -29
- package/ts/types/Interface/api/accountingTransaction/QueryTransaction.ts +1 -1
- package/ts/types/Interface/api/commercialManagement/Create.ts +4 -1
- package/ts/types/Interface/api/docoon/Create.ts +6 -1
- package/ts/types/Interface/api/product/CreateProduct.ts +1 -6
- package/ts/types/Interface/api/registration/DeclareRegistration.ts +0 -6
- package/ts/types/Interface/api/user/RegisterProspect.ts +1 -0
- package/ts/types/Interface/models/IAccount.ts +0 -1
- package/ts/types/Interface/models/IAccountingFile.ts +1 -0
- package/ts/types/Interface/models/IProduct.ts +0 -3
- package/ts/types/Interface/models/IProductInvoice.ts +0 -3
- package/ts/types/Interface/models/ISocietyGescom.ts +0 -2
- package/ts/types/index.ts +0 -1
- package/ts/utils/commercialManagement/document.ts +147 -2
- package/ts/utils/index.ts +0 -1
- package/dist/types/Interface/api/acd/Vat.d.ts +0 -52
- package/dist/types/Interface/api/acd/Vat.d.ts.map +0 -1
- package/dist/types/Interface/api/acd/Vat.js +0 -14
- package/dist/types/Interface/api/acd/Vat.js.map +0 -1
- package/dist/utils/acdVat.d.ts +0 -4
- package/dist/utils/acdVat.d.ts.map +0 -1
- package/dist/utils/acdVat.js +0 -57
- package/dist/utils/acdVat.js.map +0 -1
- package/dist/utils/tests/acdVat.spec.d.ts +0 -2
- package/dist/utils/tests/acdVat.spec.d.ts.map +0 -1
- package/dist/utils/tests/acdVat.spec.js +0 -25
- package/dist/utils/tests/acdVat.spec.js.map +0 -1
- package/ts/types/Interface/api/acd/Vat.ts +0 -52
- package/ts/utils/acdVat.ts +0 -63
- package/ts/utils/tests/acdVat.spec.ts +0 -26
|
@@ -4,4 +4,11 @@ import { CreateInvoiceDocument, CreateMailHeader, CreatePreSaleDocument, ReadCom
|
|
|
4
4
|
import 'dayjs/locale/fr.js';
|
|
5
5
|
export declare function generateCommercialDocument(idEstimateInvoiceType: EstimateInvoiceType, payload: CreateInvoiceDocument | CreatePreSaleDocument, shouldHideBrandName?: boolean, nodeEnv?: string | undefined): ReadCommercialDocumentTemplate;
|
|
6
6
|
export declare function generateMailHeader(params: CreateMailHeader, shouldHideBrandName?: boolean, nodeEnv?: string | undefined): ReadCommercialMailTemplate;
|
|
7
|
+
/**
|
|
8
|
+
* @description Si cette fonction est modifiée, penser à check si la fonction `checkErrors` de `emission.service.ts` du core doit être modifiée aussi
|
|
9
|
+
*/
|
|
10
|
+
export declare function checkCommercialDocumentInformation(payload: CreateInvoiceDocument | CreatePreSaleDocument): {
|
|
11
|
+
valid: boolean;
|
|
12
|
+
errors?: string[];
|
|
13
|
+
};
|
|
7
14
|
//# sourceMappingURL=document.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../../ts/utils/commercialManagement/document.ts"],"names":[],"mappings":"AACA,OAAO,EACL,8BAA8B,EAG/B,MAAM,wDAAwD,CAAC;
|
|
1
|
+
{"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../../ts/utils/commercialManagement/document.ts"],"names":[],"mappings":"AACA,OAAO,EACL,8BAA8B,EAG/B,MAAM,wDAAwD,CAAC;AAQhE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAO1E,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,qBAAqB,EACrB,0BAA0B,EAC3B,MAAM,sBAAsB,CAAC;AAK9B,OAAO,oBAAoB,CAAC;AAa5B,wBAAgB,0BAA0B,CACxC,qBAAqB,EAAE,mBAAmB,EAC1C,OAAO,EAAE,qBAAqB,GAAG,qBAAqB,EACtD,mBAAmB,UAAQ,EAC3B,OAAO,GAAE,MAAM,GAAG,SAAqB,GACtC,8BAA8B,CAuIhC;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,gBAAgB,EACxB,mBAAmB,UAAQ,EAC3B,OAAO,GAAE,MAAM,GAAG,SAAqB,GACtC,0BAA0B,CA4B5B;AASD;;GAEG;AACH,wBAAgB,kCAAkC,CAAC,OAAO,EAAE,qBAAqB,GAAG,qBAAqB,GAAG;IAC1G,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB,CA4HA"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import dayjs from 'dayjs';
|
|
2
|
-
import { AccountingCategoryList, FontIds, fontList, InvoiceLanguage } from '../../types/Enum/CommercialManagement.js';
|
|
2
|
+
import { AccountingCategoryList, CommercialVatMentionList, FontIds, fontList, InvoiceLanguage, } from '../../types/Enum/CommercialManagement.js';
|
|
3
3
|
import { EstimateInvoiceType } from '../../types/Enum/EstimateInvoice.js';
|
|
4
4
|
import { Vat } from '../../types/Enum/Vat.js';
|
|
5
5
|
import { integerToFormattedAmountString, integerToFormattedAmountObject } from '../amount.js';
|
|
6
6
|
import { CommercialDocumentCommonHTML, CommercialDocumentMailHTML } from './templates/common.js';
|
|
7
7
|
import { bodyTemplate } from './templates/body.js';
|
|
8
8
|
import { productToReadProductEditing } from './product.js';
|
|
9
|
-
import { vatToReadVatEditing } from './vat.js';
|
|
9
|
+
import { getById, vatToReadVatEditing } from './vat.js';
|
|
10
10
|
import { thirdPartyToReadThirdPartyEditing } from './thirdParty.js';
|
|
11
11
|
import { getBrandConfig } from '../brands.js';
|
|
12
12
|
import { internationalizationChoices, internationalizationConsistency } from './internationalization/choices.js';
|
|
@@ -158,4 +158,131 @@ export function generateMailHeader(params, shouldHideBrandName = false, nodeEnv
|
|
|
158
158
|
header: ejs.render(mailTemplate.header, data),
|
|
159
159
|
};
|
|
160
160
|
}
|
|
161
|
+
function isMissing(value) {
|
|
162
|
+
if (value === null || value === undefined)
|
|
163
|
+
return true;
|
|
164
|
+
if (typeof value === 'string')
|
|
165
|
+
return value.trim().length === 0;
|
|
166
|
+
if (Array.isArray(value))
|
|
167
|
+
return value.length === 0;
|
|
168
|
+
return false;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* @description Si cette fonction est modifiée, penser à check si la fonction `checkErrors` de `emission.service.ts` du core doit être modifiée aussi
|
|
172
|
+
*/
|
|
173
|
+
export function checkCommercialDocumentInformation(payload) {
|
|
174
|
+
const errors = [];
|
|
175
|
+
const products = orderBy(payload.products.map((product) => productToReadProductEditing(product), 'reorder'));
|
|
176
|
+
const vats = orderBy(Object.values(groupBy(products, 'vatFormatted')).map((v) => vatToReadVatEditing(v), 'value')).filter((v) => v.id !== Vat.MARGE.id);
|
|
177
|
+
const totalVats = sumBy(vats, (v) => round(v.amount));
|
|
178
|
+
const totalTaxExcluded = sumBy(products, (p) => round(p.totalTaxExcluded));
|
|
179
|
+
const totalTaxIncluded = round(totalTaxExcluded + totalVats);
|
|
180
|
+
const requiredData = [
|
|
181
|
+
// Invoice
|
|
182
|
+
{ value: payload.reference, error: 'Le numéro de facture est obligatoire.' },
|
|
183
|
+
{ value: payload.idEstimateInvoiceType, error: 'Le type de document est obligatoire.' },
|
|
184
|
+
{ value: payload.emissionDate, error: 'La date d’émission est obligatoire.' },
|
|
185
|
+
// Items
|
|
186
|
+
...products.flatMap((product, index) => {
|
|
187
|
+
const productLabel = product.itemSaleName?.trim() ? `"${product.itemSaleName}"` : `à la ligne ${index + 1}`;
|
|
188
|
+
return [
|
|
189
|
+
{
|
|
190
|
+
value: product.itemSaleName,
|
|
191
|
+
error: `Le nom de l'article ${productLabel} est obligatoire.`,
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
value: product.priceTaxExcluded,
|
|
195
|
+
error: `Le prix net de l'article ${productLabel} est obligatoire.`,
|
|
196
|
+
},
|
|
197
|
+
{
|
|
198
|
+
value: product.quantity,
|
|
199
|
+
error: `La quantité de l'article ${productLabel} est obligatoire.`,
|
|
200
|
+
},
|
|
201
|
+
{
|
|
202
|
+
value: product.unit,
|
|
203
|
+
error: `Le code EN 16931 de l'article ${productLabel} est obligatoire.`,
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
value: product.idVat,
|
|
207
|
+
error: `Le type de TVA de l'article ${productLabel} est obligatoire.`,
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
value: product.totalTaxExcluded,
|
|
211
|
+
error: `Le montant net de l'article ${productLabel} est obligatoire.`,
|
|
212
|
+
},
|
|
213
|
+
];
|
|
214
|
+
}),
|
|
215
|
+
// Seller
|
|
216
|
+
{ value: payload.name, error: 'Le nom du vendeur est obligatoire.' },
|
|
217
|
+
{ value: payload.siren, error: 'Le SIREN du vendeur est obligatoire.' },
|
|
218
|
+
{
|
|
219
|
+
value: payload.zipCode,
|
|
220
|
+
error: 'Le code postal du vendeur est obligatoire.',
|
|
221
|
+
},
|
|
222
|
+
{
|
|
223
|
+
value: payload.street,
|
|
224
|
+
error: 'L’adresse du vendeur est obligatoire.',
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
value: payload.city,
|
|
228
|
+
error: 'La ville du vendeur est obligatoire.',
|
|
229
|
+
},
|
|
230
|
+
{
|
|
231
|
+
value: payload.idCountry,
|
|
232
|
+
error: 'Le pays du vendeur est obligatoire.',
|
|
233
|
+
},
|
|
234
|
+
{
|
|
235
|
+
value: payload.settings?.mailContact,
|
|
236
|
+
error: 'L’email du vendeur est obligatoire.',
|
|
237
|
+
},
|
|
238
|
+
// Customer
|
|
239
|
+
{
|
|
240
|
+
value: payload.thirdParty.company ?? payload.thirdParty.fullname ?? 'NA',
|
|
241
|
+
error: 'Le nom de l’acheteur est obligatoire.',
|
|
242
|
+
},
|
|
243
|
+
{
|
|
244
|
+
value: payload.thirdParty?.idCountry,
|
|
245
|
+
error: 'Le pays de l’acheteur est obligatoire.',
|
|
246
|
+
},
|
|
247
|
+
// Vats
|
|
248
|
+
...vats.flatMap((vat, index) => [
|
|
249
|
+
{
|
|
250
|
+
value: vat.amount,
|
|
251
|
+
error: `Le montant de TVA à la ligne ${index + 1} est obligatoire.`,
|
|
252
|
+
},
|
|
253
|
+
{
|
|
254
|
+
value: vat.base,
|
|
255
|
+
error: `La base d’imposition de la TVA à la ligne ${index + 1} est obligatoire.`,
|
|
256
|
+
},
|
|
257
|
+
{
|
|
258
|
+
value: vat.value,
|
|
259
|
+
error: `Le type de TVA à la ligne ${index + 1} est obligatoire.`,
|
|
260
|
+
},
|
|
261
|
+
]),
|
|
262
|
+
// Totals
|
|
263
|
+
{ value: totalTaxExcluded, error: 'Le montant total hors taxe est obligatoire.' },
|
|
264
|
+
{
|
|
265
|
+
value: totalTaxExcluded,
|
|
266
|
+
error: 'La somme du montant net des lignes est obligatoire.',
|
|
267
|
+
},
|
|
268
|
+
{ value: totalVats, error: 'Le montant total de TVA est obligatoire.' },
|
|
269
|
+
{
|
|
270
|
+
value: totalTaxIncluded,
|
|
271
|
+
error: 'Le montant total TTC est obligatoire.',
|
|
272
|
+
},
|
|
273
|
+
];
|
|
274
|
+
// Check des mentions de tva
|
|
275
|
+
const vatType = CommercialVatMentionList.find((v) => v.value === payload.vatMention)?.taxType ?? 'standard';
|
|
276
|
+
// Si le type de tva est margin, autoliquidation, export ou exempt,
|
|
277
|
+
// aucun produit ne doit avoir de tva > 0
|
|
278
|
+
if (['margin', 'autoliquidation', 'export', 'exempt'].includes(vatType)) {
|
|
279
|
+
for (const product of products) {
|
|
280
|
+
if (getById(product.idVat)?.value !== 0) {
|
|
281
|
+
errors.push(`L'article ${product.itemSaleName} a une TVA non nulle alors que le type de TVA est ${vatType}.`);
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
errors.push(...requiredData.filter((data) => isMissing(data.value)).map((data) => data.error));
|
|
286
|
+
return { valid: errors.length === 0, errors: errors.length > 0 ? errors : undefined };
|
|
287
|
+
}
|
|
161
288
|
//# sourceMappingURL=document.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document.js","sourceRoot":"","sources":["../../../ts/utils/commercialManagement/document.ts"],"names":[],"mappings":"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","sourcesContent":["import dayjs from 'dayjs';\nimport {\n ReadCommercialDocumentTemplate,\n ReadDocumentEditing,\n ReadVatEditing,\n} from '../../types/Interface/api/commercialManagement/Read.js';\nimport { AccountingCategoryList, FontIds, fontList, InvoiceLanguage } from '../../types/Enum/CommercialManagement.js';\nimport { EstimateInvoiceType } from '../../types/Enum/EstimateInvoice.js';\nimport { Vat } from '../../types/Enum/Vat.js';\nimport { integerToFormattedAmountString, integerToFormattedAmountObject } from '../amount.js';\nimport { CommercialDocumentCommonHTML, CommercialDocumentMailHTML } from './templates/common.js';\nimport { bodyTemplate } from './templates/body.js';\nimport { productToReadProductEditing } from './product.js';\nimport { vatToReadVatEditing } from './vat.js';\nimport {\n CreateInvoiceDocument,\n CreateMailHeader,\n CreatePreSaleDocument,\n ReadCommercialMailTemplate,\n} from '../../types/index.js';\nimport { thirdPartyToReadThirdPartyEditing } from './thirdParty.js';\nimport { getBrandConfig } from '../brands.js';\nimport { internationalizationChoices, internationalizationConsistency } from './internationalization/choices.js';\nimport ejs from 'ejs';\nimport 'dayjs/locale/fr.js';\nimport { orderBy, groupBy, sumBy, round, uniq } from 'lodash-es';\nimport sanitize from 'sanitize-html';\n\ntype brandColorType = {\n primary: string;\n primary50: string;\n primary100: string;\n primary300: string;\n primary500: string;\n primary700: string;\n};\n\nexport function generateCommercialDocument(\n idEstimateInvoiceType: EstimateInvoiceType,\n payload: CreateInvoiceDocument | CreatePreSaleDocument,\n shouldHideBrandName = false,\n nodeEnv: string | undefined = undefined,\n): ReadCommercialDocumentTemplate {\n const products = orderBy(payload.products.map((product) => productToReadProductEditing(product), 'reorder'));\n const vats = orderBy(\n Object.values(groupBy(products, 'vatFormatted')).map((v) => vatToReadVatEditing(v), 'value'),\n ).filter((v) => v.id !== Vat.MARGE.id);\n\n const thirdParty = thirdPartyToReadThirdPartyEditing(payload.thirdParty);\n\n let forcedVats: ReadVatEditing[] | undefined = undefined;\n\n if (payload.advanceProducts?.length) {\n const advanceVats = Object.values(groupBy(payload.advanceProducts, 'vatFormatted'))\n .map((v) => vatToReadVatEditing(v), 'value')\n .filter((v) => v.id !== Vat.MARGE.id);\n\n forcedVats = vats.map((v) => {\n const base = v.base - (advanceVats.find((a) => a.id === v.id)?.base ?? 0);\n const toPay = v.toPay - (advanceVats.find((a) => a.id === v.id)?.toPay ?? 0);\n return {\n ...v,\n baseFormatted: integerToFormattedAmountString(base),\n amountFormatted: integerToFormattedAmountString(toPay),\n };\n });\n }\n\n const totalVats = sumBy(vats, (v) => round(v.amount));\n const totalTaxExcluded = sumBy(products, (p) => round(p.totalTaxExcluded));\n\n const totalTaxIncluded = totalTaxExcluded + totalVats;\n\n const locale = payload.language ?? InvoiceLanguage.FR;\n const languageOption = internationalizationChoices[locale];\n\n const accountingCategory = AccountingCategoryList.find((a) => a.id === payload.accountingCategory)?.label ?? null;\n\n const recoveryCost = payload.recoveryCost;\n const data: ReadDocumentEditing & { brandColors: brandColorType; brandName: string; shouldHideBrandName: boolean } = {\n ...payload,\n thirdParty,\n paymentLink: payload.paymentLink ?? '#',\n idEstimateInvoiceType,\n title: payload.title ?? null,\n penalties: payload.penalties\n ? (internationalizationConsistency(locale, payload.penalties, 'penalties') ?? payload.penalties)\n : null,\n termsOfPayment: payload.termsOfPayment\n ? (internationalizationConsistency(locale, payload.termsOfPayment, 'termsOfPayment') ?? payload.termsOfPayment)\n : null,\n recoveryCost: recoveryCost\n ? (internationalizationConsistency(locale, recoveryCost, 'recoveryCost') ?? recoveryCost)\n : null,\n discount: payload.discount\n ? (internationalizationConsistency(locale, payload.discount, 'discount') ?? payload.discount)\n : null,\n vatMention: payload.vatMention\n ? (internationalizationConsistency(locale, payload.vatMention, 'vatMention') ?? payload.vatMention)\n : null,\n phoneContact: payload.settings?.phoneContact ?? null,\n products,\n vats,\n totalTaxExcluded: totalTaxExcluded,\n totalTaxIncluded: round(totalTaxIncluded),\n totalTaxAndDiscountIncluded: round(totalTaxIncluded),\n generalDiscountFormatted: payload.generalDiscount2\n ? integerToFormattedAmountString(payload.generalDiscount2)\n : null,\n depositFormatted: payload.deposit ? integerToFormattedAmountString(payload.deposit) : null,\n totalTaxExcludedFormatted: integerToFormattedAmountString(totalTaxExcluded),\n totalTaxIncludedFormatted: integerToFormattedAmountString(totalTaxIncluded),\n totalTaxAndDiscountIncludedFormatted: integerToFormattedAmountString(\n totalTaxIncluded - (payload.generalDiscount2 ?? 0) - (payload.deposit ?? 0),\n ),\n totalVatAmountFormatted: integerToFormattedAmountString(totalVats),\n font: {\n id: payload.settings?.idFont ?? FontIds.CIRCULAR_STD,\n name: fontList.find((f) => f.id === payload.settings?.idFont)?.name ?? fontList[0].name,\n url: fontList.find((f) => f.id === payload.settings?.idFont)?.link ?? fontList[0].link,\n },\n capitalFormatted: payload.capital\n ? `${payload.capital}`\n .split('')\n .reduceRight((acc, char, i, { length }) => `${char}${(length - (i + 1)) % 3 === 0 ? ' ' : ''}${acc}`, '')\n .trim()\n : null,\n dueDateFormatted: payload.dueDate ? dayjs(payload.dueDate).format('DD/MM/YYYY') : null,\n expirationDateFormatted: payload.expirationDate ? dayjs(payload.expirationDate).format('DD/MM/YYYY') : null,\n emissionDateFormatted: payload.emissionDate ? dayjs(payload.emissionDate).format('DD/MM/YYYY') : null,\n shouldDisplayDiscountColumn: !!products.find((p) => p.discount2 && p.discount2 > 0),\n // @ts-ignore\n marginVats: uniq(products.filter((p) => p.marginVatFormatted !== null).map((p) => p.marginVatFormatted)),\n accountingCategoryFormatted: accountingCategory\n ? (internationalizationConsistency(locale, accountingCategory, 'accountingCategory') ?? null)\n : null,\n // @ts-ignore\n brandColors: getBrandConfig({ objectWaited: 'colors', nodeEnv }) as brandColorType,\n brandName: `${getBrandConfig({ objectWaited: 'name', nodeEnv }) as unknown as string}`,\n shouldHideBrandName,\n addressComplement: payload.addressComplement ?? null,\n paymentType: payload.paymentType\n ? (internationalizationConsistency(locale, payload.paymentType, 'paymentType') ?? payload.paymentType)\n : null,\n languageTemplate: languageOption,\n };\n\n const commonTemplate = new CommercialDocumentCommonHTML();\n const documentFreeText = [EstimateInvoiceType.DEVIS, EstimateInvoiceType.BON].includes(idEstimateInvoiceType)\n ? payload?.settings?.freeEstimateText\n : payload?.settings?.freeInvoiceText;\n\n return {\n header: ejs.render(commonTemplate.header, data),\n body: ejs.render(bodyTemplate, {\n ...data,\n comment:\n data.comment && typeof data.comment === 'string'\n ? sanitize(data.comment?.replace(/\\n/g, '<br/>'), { allowedTags: ['b', 'i', 'em', 'br', 'strong'] })\n : null,\n products: data.products.map((p) => ({\n ...p,\n comment:\n p.comment && typeof p.comment === 'string'\n ? sanitize(p.comment?.replace(/\\n/g, '<br/>'), { allowedTags: ['b', 'i', 'em', 'br', 'strong'] })\n : null,\n // @ts-expect-error\n unitFormatted: internationalizationConsistency(locale, p.unitFormatted, 'unit'),\n })),\n vats: forcedVats ?? vats,\n }),\n footer: ejs.render(commonTemplate.footer, {\n ...data,\n freeText: documentFreeText ?? null,\n }),\n data,\n };\n}\n\nexport function generateMailHeader(\n params: CreateMailHeader,\n shouldHideBrandName = false,\n nodeEnv: string | undefined = undefined,\n): ReadCommercialMailTemplate {\n const locale = params.payload.language ?? InvoiceLanguage.FR;\n const languageOption = internationalizationChoices[locale];\n dayjs.locale('fr');\n const data = {\n ...params.payload,\n totalTaxExcludedFormatted: integerToFormattedAmountObject(params.payload.totalTaxExcluded),\n totalTaxIncludedFormatted: integerToFormattedAmountObject(params.payload.totalTaxIncluded),\n totalVatFormatted: integerToFormattedAmountObject(\n params.payload.totalTaxIncluded - params.payload.totalTaxExcluded,\n ),\n dueDateFormatted: params.payload.dueDate ? dayjs(params.payload.dueDate).format('DD MMMM YYYY') : null,\n hasVat: params.hasVat,\n hostS3: params.hostS3,\n logoUrl: params.logoUrl,\n companyName: params.companyName,\n fileUrl: params.fileUrl,\n // @ts-ignore\n brandColors: getBrandConfig({ objectWaited: 'colors', nodeEnv }) as brandColorType,\n shouldHideBrandName,\n languageMail: languageOption,\n };\n\n const mailTemplate = new CommercialDocumentMailHTML();\n\n return {\n header: ejs.render(mailTemplate.header, data),\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"document.js","sourceRoot":"","sources":["../../../ts/utils/commercialManagement/document.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,OAAO,EACP,QAAQ,EACR,eAAe,GAChB,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAC9C,OAAO,EAAE,8BAA8B,EAAE,8BAA8B,EAAE,MAAM,cAAc,CAAC;AAC9F,OAAO,EAAE,4BAA4B,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AACjG,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAOxD,OAAO,EAAE,iCAAiC,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,2BAA2B,EAAE,+BAA+B,EAAE,MAAM,mCAAmC,CAAC;AACjH,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,oBAAoB,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,QAAQ,MAAM,eAAe,CAAC;AAWrC,MAAM,UAAU,0BAA0B,CACxC,qBAA0C,EAC1C,OAAsD,EACtD,mBAAmB,GAAG,KAAK,EAC3B,UAA8B,SAAS;IAEvC,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,2BAA2B,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;IAC7G,MAAM,IAAI,GAAG,OAAO,CAClB,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAC7F,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAEvC,MAAM,UAAU,GAAG,iCAAiC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAEzE,IAAI,UAAU,GAAiC,SAAS,CAAC;IAEzD,IAAI,OAAO,CAAC,eAAe,EAAE,MAAM,EAAE,CAAC;QACpC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC;aAChF,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;aAC3C,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAExC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YAC1B,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC;YAC1E,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC;YAC7E,OAAO;gBACL,GAAG,CAAC;gBACJ,aAAa,EAAE,8BAA8B,CAAC,IAAI,CAAC;gBACnD,eAAe,EAAE,8BAA8B,CAAC,KAAK,CAAC;aACvD,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IACtD,MAAM,gBAAgB,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAE3E,MAAM,gBAAgB,GAAG,gBAAgB,GAAG,SAAS,CAAC;IAEtD,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,IAAI,eAAe,CAAC,EAAE,CAAC;IACtD,MAAM,cAAc,GAAG,2BAA2B,CAAC,MAAM,CAAC,CAAC;IAE3D,MAAM,kBAAkB,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,kBAAkB,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC;IAElH,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAC1C,MAAM,IAAI,GAA2G;QACnH,GAAG,OAAO;QACV,UAAU;QACV,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,GAAG;QACvC,qBAAqB;QACrB,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,IAAI;QAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;YAC1B,CAAC,CAAC,CAAC,+BAA+B,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,EAAE,WAAW,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC;YAChG,CAAC,CAAC,IAAI;QACR,cAAc,EAAE,OAAO,CAAC,cAAc;YACpC,CAAC,CAAC,CAAC,+BAA+B,CAAC,MAAM,EAAE,OAAO,CAAC,cAAc,EAAE,gBAAgB,CAAC,IAAI,OAAO,CAAC,cAAc,CAAC;YAC/G,CAAC,CAAC,IAAI;QACR,YAAY,EAAE,YAAY;YACxB,CAAC,CAAC,CAAC,+BAA+B,CAAC,MAAM,EAAE,YAAY,EAAE,cAAc,CAAC,IAAI,YAAY,CAAC;YACzF,CAAC,CAAC,IAAI;QACR,QAAQ,EAAE,OAAO,CAAC,QAAQ;YACxB,CAAC,CAAC,CAAC,+BAA+B,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC;YAC7F,CAAC,CAAC,IAAI;QACR,UAAU,EAAE,OAAO,CAAC,UAAU;YAC5B,CAAC,CAAC,CAAC,+BAA+B,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,EAAE,YAAY,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC;YACnG,CAAC,CAAC,IAAI;QACR,YAAY,EAAE,OAAO,CAAC,QAAQ,EAAE,YAAY,IAAI,IAAI;QACpD,QAAQ;QACR,IAAI;QACJ,gBAAgB,EAAE,gBAAgB;QAClC,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,CAAC;QACzC,2BAA2B,EAAE,KAAK,CAAC,gBAAgB,CAAC;QACpD,wBAAwB,EAAE,OAAO,CAAC,gBAAgB;YAChD,CAAC,CAAC,8BAA8B,CAAC,OAAO,CAAC,gBAAgB,CAAC;YAC1D,CAAC,CAAC,IAAI;QACR,gBAAgB,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,8BAA8B,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI;QAC1F,yBAAyB,EAAE,8BAA8B,CAAC,gBAAgB,CAAC;QAC3E,yBAAyB,EAAE,8BAA8B,CAAC,gBAAgB,CAAC;QAC3E,oCAAoC,EAAE,8BAA8B,CAClE,gBAAgB,GAAG,CAAC,OAAO,CAAC,gBAAgB,IAAI,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC,CAC5E;QACD,uBAAuB,EAAE,8BAA8B,CAAC,SAAS,CAAC;QAClE,IAAI,EAAE;YACJ,EAAE,EAAE,OAAO,CAAC,QAAQ,EAAE,MAAM,IAAI,OAAO,CAAC,YAAY;YACpD,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI;YACvF,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI;SACvF;QACD,gBAAgB,EAAE,OAAO,CAAC,OAAO;YAC/B,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE;iBACjB,KAAK,CAAC,EAAE,CAAC;iBACT,WAAW,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,CAAC;iBACxG,IAAI,EAAE;YACX,CAAC,CAAC,IAAI;QACR,gBAAgB,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI;QACtF,uBAAuB,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI;QAC3G,qBAAqB,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI;QACrG,2BAA2B,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC;QACnF,aAAa;QACb,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,kBAAkB,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC;QACxG,2BAA2B,EAAE,kBAAkB;YAC7C,CAAC,CAAC,CAAC,+BAA+B,CAAC,MAAM,EAAE,kBAAkB,EAAE,oBAAoB,CAAC,IAAI,IAAI,CAAC;YAC7F,CAAC,CAAC,IAAI;QACR,aAAa;QACb,WAAW,EAAE,cAAc,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAmB;QAClF,SAAS,EAAE,GAAG,cAAc,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,CAAsB,EAAE;QACtF,mBAAmB;QACnB,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,IAAI,IAAI;QACpD,WAAW,EAAE,OAAO,CAAC,WAAW;YAC9B,CAAC,CAAC,CAAC,+BAA+B,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE,aAAa,CAAC,IAAI,OAAO,CAAC,WAAW,CAAC;YACtG,CAAC,CAAC,IAAI;QACR,gBAAgB,EAAE,cAAc;KACjC,CAAC;IAEF,MAAM,cAAc,GAAG,IAAI,4BAA4B,EAAE,CAAC;IAC1D,MAAM,gBAAgB,GAAG,CAAC,mBAAmB,CAAC,KAAK,EAAE,mBAAmB,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC;QAC3G,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,gBAAgB;QACrC,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,eAAe,CAAC;IAEvC,OAAO;QACL,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC;QAC/C,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,YAAY,EAAE;YAC7B,GAAG,IAAI;YACP,OAAO,EACL,IAAI,CAAC,OAAO,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ;gBAC9C,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,EAAE,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC;gBACpG,CAAC,CAAC,IAAI;YACV,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAClC,GAAG,CAAC;gBACJ,OAAO,EACL,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ;oBACxC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,EAAE,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC;oBACjG,CAAC,CAAC,IAAI;gBACV,mBAAmB;gBACnB,aAAa,EAAE,+BAA+B,CAAC,MAAM,EAAE,CAAC,CAAC,aAAa,EAAE,MAAM,CAAC;aAChF,CAAC,CAAC;YACH,IAAI,EAAE,UAAU,IAAI,IAAI;SACzB,CAAC;QACF,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE;YACxC,GAAG,IAAI;YACP,QAAQ,EAAE,gBAAgB,IAAI,IAAI;SACnC,CAAC;QACF,IAAI;KACL,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,MAAwB,EACxB,mBAAmB,GAAG,KAAK,EAC3B,UAA8B,SAAS;IAEvC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,IAAI,eAAe,CAAC,EAAE,CAAC;IAC7D,MAAM,cAAc,GAAG,2BAA2B,CAAC,MAAM,CAAC,CAAC;IAC3D,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACnB,MAAM,IAAI,GAAG;QACX,GAAG,MAAM,CAAC,OAAO;QACjB,yBAAyB,EAAE,8BAA8B,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC;QAC1F,yBAAyB,EAAE,8BAA8B,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC;QAC1F,iBAAiB,EAAE,8BAA8B,CAC/C,MAAM,CAAC,OAAO,CAAC,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAClE;QACD,gBAAgB,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI;QACtG,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,aAAa;QACb,WAAW,EAAE,cAAc,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAmB;QAClF,mBAAmB;QACnB,YAAY,EAAE,cAAc;KAC7B,CAAC;IAEF,MAAM,YAAY,GAAG,IAAI,0BAA0B,EAAE,CAAC;IAEtD,OAAO;QACL,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC;KAC9C,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,KAAc;IAC/B,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACvD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC;IAChE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;IACpD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kCAAkC,CAAC,OAAsD;IAIvG,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,2BAA2B,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;IAC7G,MAAM,IAAI,GAAG,OAAO,CAClB,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAC7F,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAEvC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IACtD,MAAM,gBAAgB,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC3E,MAAM,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAAC;IAE7D,MAAM,YAAY,GAA6C;QAC7D,UAAU;QACV,EAAE,KAAK,EAAE,OAAO,CAAC,SAAS,EAAE,KAAK,EAAE,uCAAuC,EAAE;QAC5E,EAAE,KAAK,EAAE,OAAO,CAAC,qBAAqB,EAAE,KAAK,EAAE,sCAAsC,EAAE;QACvF,EAAE,KAAK,EAAE,OAAO,CAAC,YAAY,EAAE,KAAK,EAAE,qCAAqC,EAAE;QAC7E,QAAQ;QACR,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;YACrC,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,cAAc,KAAK,GAAG,CAAC,EAAE,CAAC;YAE5G,OAAO;gBACL;oBACE,KAAK,EAAE,OAAO,CAAC,YAAY;oBAC3B,KAAK,EAAE,uBAAuB,YAAY,mBAAmB;iBAC9D;gBACD;oBACE,KAAK,EAAE,OAAO,CAAC,gBAAgB;oBAC/B,KAAK,EAAE,4BAA4B,YAAY,mBAAmB;iBACnE;gBACD;oBACE,KAAK,EAAE,OAAO,CAAC,QAAQ;oBACvB,KAAK,EAAE,4BAA4B,YAAY,mBAAmB;iBACnE;gBACD;oBACE,KAAK,EAAE,OAAO,CAAC,IAAI;oBACnB,KAAK,EAAE,iCAAiC,YAAY,mBAAmB;iBACxE;gBACD;oBACE,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,KAAK,EAAE,+BAA+B,YAAY,mBAAmB;iBACtE;gBACD;oBACE,KAAK,EAAE,OAAO,CAAC,gBAAgB;oBAC/B,KAAK,EAAE,+BAA+B,YAAY,mBAAmB;iBACtE;aACF,CAAC;QACJ,CAAC,CAAC;QACF,SAAS;QACT,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,oCAAoC,EAAE;QACpE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,sCAAsC,EAAE;QACvE;YACE,KAAK,EAAE,OAAO,CAAC,OAAO;YACtB,KAAK,EAAE,4CAA4C;SACpD;QACD;YACE,KAAK,EAAE,OAAO,CAAC,MAAM;YACrB,KAAK,EAAE,uCAAuC;SAC/C;QACD;YACE,KAAK,EAAE,OAAO,CAAC,IAAI;YACnB,KAAK,EAAE,sCAAsC;SAC9C;QACD;YACE,KAAK,EAAE,OAAO,CAAC,SAAS;YACxB,KAAK,EAAE,qCAAqC;SAC7C;QACD;YACE,KAAK,EAAE,OAAO,CAAC,QAAQ,EAAE,WAAW;YACpC,KAAK,EAAE,qCAAqC;SAC7C;QACD,WAAW;QACX;YACE,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,QAAQ,IAAI,IAAI;YACxE,KAAK,EAAE,uCAAuC;SAC/C;QACD;YACE,KAAK,EAAE,OAAO,CAAC,UAAU,EAAE,SAAS;YACpC,KAAK,EAAE,wCAAwC;SAChD;QACD,OAAO;QACP,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC;YAC9B;gBACE,KAAK,EAAE,GAAG,CAAC,MAAM;gBACjB,KAAK,EAAE,gCAAgC,KAAK,GAAG,CAAC,mBAAmB;aACpE;YACD;gBACE,KAAK,EAAE,GAAG,CAAC,IAAI;gBACf,KAAK,EAAE,6CAA6C,KAAK,GAAG,CAAC,mBAAmB;aACjF;YACD;gBACE,KAAK,EAAE,GAAG,CAAC,KAAK;gBAChB,KAAK,EAAE,6BAA6B,KAAK,GAAG,CAAC,mBAAmB;aACjE;SACF,CAAC;QACF,SAAS;QACT,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,6CAA6C,EAAE;QACjF;YACE,KAAK,EAAE,gBAAgB;YACvB,KAAK,EAAE,qDAAqD;SAC7D;QACD,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,0CAA0C,EAAE;QACvE;YACE,KAAK,EAAE,gBAAgB;YACvB,KAAK,EAAE,uCAAuC;SAC/C;KACF,CAAC;IAEF,4BAA4B;IAC5B,MAAM,OAAO,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,UAAU,CAAC,EAAE,OAAO,IAAI,UAAU,CAAC;IAE5G,mEAAmE;IACnE,yCAAyC;IACzC,IAAI,CAAC,QAAQ,EAAE,iBAAiB,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACxE,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC;gBACxC,MAAM,CAAC,IAAI,CAAC,aAAa,OAAO,CAAC,YAAY,qDAAqD,OAAO,GAAG,CAAC,CAAC;YAChH,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAE/F,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;AACxF,CAAC","sourcesContent":["import dayjs from 'dayjs';\nimport {\n ReadCommercialDocumentTemplate,\n ReadDocumentEditing,\n ReadVatEditing,\n} from '../../types/Interface/api/commercialManagement/Read.js';\nimport {\n AccountingCategoryList,\n CommercialVatMentionList,\n FontIds,\n fontList,\n InvoiceLanguage,\n} from '../../types/Enum/CommercialManagement.js';\nimport { EstimateInvoiceType } from '../../types/Enum/EstimateInvoice.js';\nimport { Vat } from '../../types/Enum/Vat.js';\nimport { integerToFormattedAmountString, integerToFormattedAmountObject } from '../amount.js';\nimport { CommercialDocumentCommonHTML, CommercialDocumentMailHTML } from './templates/common.js';\nimport { bodyTemplate } from './templates/body.js';\nimport { productToReadProductEditing } from './product.js';\nimport { getById, vatToReadVatEditing } from './vat.js';\nimport {\n CreateInvoiceDocument,\n CreateMailHeader,\n CreatePreSaleDocument,\n ReadCommercialMailTemplate,\n} from '../../types/index.js';\nimport { thirdPartyToReadThirdPartyEditing } from './thirdParty.js';\nimport { getBrandConfig } from '../brands.js';\nimport { internationalizationChoices, internationalizationConsistency } from './internationalization/choices.js';\nimport ejs from 'ejs';\nimport 'dayjs/locale/fr.js';\nimport { orderBy, groupBy, sumBy, round, uniq } from 'lodash-es';\nimport sanitize from 'sanitize-html';\n\ntype brandColorType = {\n primary: string;\n primary50: string;\n primary100: string;\n primary300: string;\n primary500: string;\n primary700: string;\n};\n\nexport function generateCommercialDocument(\n idEstimateInvoiceType: EstimateInvoiceType,\n payload: CreateInvoiceDocument | CreatePreSaleDocument,\n shouldHideBrandName = false,\n nodeEnv: string | undefined = undefined,\n): ReadCommercialDocumentTemplate {\n const products = orderBy(payload.products.map((product) => productToReadProductEditing(product), 'reorder'));\n const vats = orderBy(\n Object.values(groupBy(products, 'vatFormatted')).map((v) => vatToReadVatEditing(v), 'value'),\n ).filter((v) => v.id !== Vat.MARGE.id);\n\n const thirdParty = thirdPartyToReadThirdPartyEditing(payload.thirdParty);\n\n let forcedVats: ReadVatEditing[] | undefined = undefined;\n\n if (payload.advanceProducts?.length) {\n const advanceVats = Object.values(groupBy(payload.advanceProducts, 'vatFormatted'))\n .map((v) => vatToReadVatEditing(v), 'value')\n .filter((v) => v.id !== Vat.MARGE.id);\n\n forcedVats = vats.map((v) => {\n const base = v.base - (advanceVats.find((a) => a.id === v.id)?.base ?? 0);\n const toPay = v.toPay - (advanceVats.find((a) => a.id === v.id)?.toPay ?? 0);\n return {\n ...v,\n baseFormatted: integerToFormattedAmountString(base),\n amountFormatted: integerToFormattedAmountString(toPay),\n };\n });\n }\n\n const totalVats = sumBy(vats, (v) => round(v.amount));\n const totalTaxExcluded = sumBy(products, (p) => round(p.totalTaxExcluded));\n\n const totalTaxIncluded = totalTaxExcluded + totalVats;\n\n const locale = payload.language ?? InvoiceLanguage.FR;\n const languageOption = internationalizationChoices[locale];\n\n const accountingCategory = AccountingCategoryList.find((a) => a.id === payload.accountingCategory)?.label ?? null;\n\n const recoveryCost = payload.recoveryCost;\n const data: ReadDocumentEditing & { brandColors: brandColorType; brandName: string; shouldHideBrandName: boolean } = {\n ...payload,\n thirdParty,\n paymentLink: payload.paymentLink ?? '#',\n idEstimateInvoiceType,\n title: payload.title ?? null,\n penalties: payload.penalties\n ? (internationalizationConsistency(locale, payload.penalties, 'penalties') ?? payload.penalties)\n : null,\n termsOfPayment: payload.termsOfPayment\n ? (internationalizationConsistency(locale, payload.termsOfPayment, 'termsOfPayment') ?? payload.termsOfPayment)\n : null,\n recoveryCost: recoveryCost\n ? (internationalizationConsistency(locale, recoveryCost, 'recoveryCost') ?? recoveryCost)\n : null,\n discount: payload.discount\n ? (internationalizationConsistency(locale, payload.discount, 'discount') ?? payload.discount)\n : null,\n vatMention: payload.vatMention\n ? (internationalizationConsistency(locale, payload.vatMention, 'vatMention') ?? payload.vatMention)\n : null,\n phoneContact: payload.settings?.phoneContact ?? null,\n products,\n vats,\n totalTaxExcluded: totalTaxExcluded,\n totalTaxIncluded: round(totalTaxIncluded),\n totalTaxAndDiscountIncluded: round(totalTaxIncluded),\n generalDiscountFormatted: payload.generalDiscount2\n ? integerToFormattedAmountString(payload.generalDiscount2)\n : null,\n depositFormatted: payload.deposit ? integerToFormattedAmountString(payload.deposit) : null,\n totalTaxExcludedFormatted: integerToFormattedAmountString(totalTaxExcluded),\n totalTaxIncludedFormatted: integerToFormattedAmountString(totalTaxIncluded),\n totalTaxAndDiscountIncludedFormatted: integerToFormattedAmountString(\n totalTaxIncluded - (payload.generalDiscount2 ?? 0) - (payload.deposit ?? 0),\n ),\n totalVatAmountFormatted: integerToFormattedAmountString(totalVats),\n font: {\n id: payload.settings?.idFont ?? FontIds.CIRCULAR_STD,\n name: fontList.find((f) => f.id === payload.settings?.idFont)?.name ?? fontList[0].name,\n url: fontList.find((f) => f.id === payload.settings?.idFont)?.link ?? fontList[0].link,\n },\n capitalFormatted: payload.capital\n ? `${payload.capital}`\n .split('')\n .reduceRight((acc, char, i, { length }) => `${char}${(length - (i + 1)) % 3 === 0 ? ' ' : ''}${acc}`, '')\n .trim()\n : null,\n dueDateFormatted: payload.dueDate ? dayjs(payload.dueDate).format('DD/MM/YYYY') : null,\n expirationDateFormatted: payload.expirationDate ? dayjs(payload.expirationDate).format('DD/MM/YYYY') : null,\n emissionDateFormatted: payload.emissionDate ? dayjs(payload.emissionDate).format('DD/MM/YYYY') : null,\n shouldDisplayDiscountColumn: !!products.find((p) => p.discount2 && p.discount2 > 0),\n // @ts-ignore\n marginVats: uniq(products.filter((p) => p.marginVatFormatted !== null).map((p) => p.marginVatFormatted)),\n accountingCategoryFormatted: accountingCategory\n ? (internationalizationConsistency(locale, accountingCategory, 'accountingCategory') ?? null)\n : null,\n // @ts-ignore\n brandColors: getBrandConfig({ objectWaited: 'colors', nodeEnv }) as brandColorType,\n brandName: `${getBrandConfig({ objectWaited: 'name', nodeEnv }) as unknown as string}`,\n shouldHideBrandName,\n addressComplement: payload.addressComplement ?? null,\n paymentType: payload.paymentType\n ? (internationalizationConsistency(locale, payload.paymentType, 'paymentType') ?? payload.paymentType)\n : null,\n languageTemplate: languageOption,\n };\n\n const commonTemplate = new CommercialDocumentCommonHTML();\n const documentFreeText = [EstimateInvoiceType.DEVIS, EstimateInvoiceType.BON].includes(idEstimateInvoiceType)\n ? payload?.settings?.freeEstimateText\n : payload?.settings?.freeInvoiceText;\n\n return {\n header: ejs.render(commonTemplate.header, data),\n body: ejs.render(bodyTemplate, {\n ...data,\n comment:\n data.comment && typeof data.comment === 'string'\n ? sanitize(data.comment?.replace(/\\n/g, '<br/>'), { allowedTags: ['b', 'i', 'em', 'br', 'strong'] })\n : null,\n products: data.products.map((p) => ({\n ...p,\n comment:\n p.comment && typeof p.comment === 'string'\n ? sanitize(p.comment?.replace(/\\n/g, '<br/>'), { allowedTags: ['b', 'i', 'em', 'br', 'strong'] })\n : null,\n // @ts-expect-error\n unitFormatted: internationalizationConsistency(locale, p.unitFormatted, 'unit'),\n })),\n vats: forcedVats ?? vats,\n }),\n footer: ejs.render(commonTemplate.footer, {\n ...data,\n freeText: documentFreeText ?? null,\n }),\n data,\n };\n}\n\nexport function generateMailHeader(\n params: CreateMailHeader,\n shouldHideBrandName = false,\n nodeEnv: string | undefined = undefined,\n): ReadCommercialMailTemplate {\n const locale = params.payload.language ?? InvoiceLanguage.FR;\n const languageOption = internationalizationChoices[locale];\n dayjs.locale('fr');\n const data = {\n ...params.payload,\n totalTaxExcludedFormatted: integerToFormattedAmountObject(params.payload.totalTaxExcluded),\n totalTaxIncludedFormatted: integerToFormattedAmountObject(params.payload.totalTaxIncluded),\n totalVatFormatted: integerToFormattedAmountObject(\n params.payload.totalTaxIncluded - params.payload.totalTaxExcluded,\n ),\n dueDateFormatted: params.payload.dueDate ? dayjs(params.payload.dueDate).format('DD MMMM YYYY') : null,\n hasVat: params.hasVat,\n hostS3: params.hostS3,\n logoUrl: params.logoUrl,\n companyName: params.companyName,\n fileUrl: params.fileUrl,\n // @ts-ignore\n brandColors: getBrandConfig({ objectWaited: 'colors', nodeEnv }) as brandColorType,\n shouldHideBrandName,\n languageMail: languageOption,\n };\n\n const mailTemplate = new CommercialDocumentMailHTML();\n\n return {\n header: ejs.render(mailTemplate.header, data),\n };\n}\n\nfunction isMissing(value: unknown): boolean {\n if (value === null || value === undefined) return true;\n if (typeof value === 'string') return value.trim().length === 0;\n if (Array.isArray(value)) return value.length === 0;\n return false;\n}\n\n/**\n * @description Si cette fonction est modifiée, penser à check si la fonction `checkErrors` de `emission.service.ts` du core doit être modifiée aussi\n */\nexport function checkCommercialDocumentInformation(payload: CreateInvoiceDocument | CreatePreSaleDocument): {\n valid: boolean;\n errors?: string[];\n} {\n const errors: string[] = [];\n\n const products = orderBy(payload.products.map((product) => productToReadProductEditing(product), 'reorder'));\n const vats = orderBy(\n Object.values(groupBy(products, 'vatFormatted')).map((v) => vatToReadVatEditing(v), 'value'),\n ).filter((v) => v.id !== Vat.MARGE.id);\n\n const totalVats = sumBy(vats, (v) => round(v.amount));\n const totalTaxExcluded = sumBy(products, (p) => round(p.totalTaxExcluded));\n const totalTaxIncluded = round(totalTaxExcluded + totalVats);\n\n const requiredData: Array<{ value: unknown; error: string }> = [\n // Invoice\n { value: payload.reference, error: 'Le numéro de facture est obligatoire.' },\n { value: payload.idEstimateInvoiceType, error: 'Le type de document est obligatoire.' },\n { value: payload.emissionDate, error: 'La date d’émission est obligatoire.' },\n // Items\n ...products.flatMap((product, index) => {\n const productLabel = product.itemSaleName?.trim() ? `\"${product.itemSaleName}\"` : `à la ligne ${index + 1}`;\n\n return [\n {\n value: product.itemSaleName,\n error: `Le nom de l'article ${productLabel} est obligatoire.`,\n },\n {\n value: product.priceTaxExcluded,\n error: `Le prix net de l'article ${productLabel} est obligatoire.`,\n },\n {\n value: product.quantity,\n error: `La quantité de l'article ${productLabel} est obligatoire.`,\n },\n {\n value: product.unit,\n error: `Le code EN 16931 de l'article ${productLabel} est obligatoire.`,\n },\n {\n value: product.idVat,\n error: `Le type de TVA de l'article ${productLabel} est obligatoire.`,\n },\n {\n value: product.totalTaxExcluded,\n error: `Le montant net de l'article ${productLabel} est obligatoire.`,\n },\n ];\n }),\n // Seller\n { value: payload.name, error: 'Le nom du vendeur est obligatoire.' },\n { value: payload.siren, error: 'Le SIREN du vendeur est obligatoire.' },\n {\n value: payload.zipCode,\n error: 'Le code postal du vendeur est obligatoire.',\n },\n {\n value: payload.street,\n error: 'L’adresse du vendeur est obligatoire.',\n },\n {\n value: payload.city,\n error: 'La ville du vendeur est obligatoire.',\n },\n {\n value: payload.idCountry,\n error: 'Le pays du vendeur est obligatoire.',\n },\n {\n value: payload.settings?.mailContact,\n error: 'L’email du vendeur est obligatoire.',\n },\n // Customer\n {\n value: payload.thirdParty.company ?? payload.thirdParty.fullname ?? 'NA',\n error: 'Le nom de l’acheteur est obligatoire.',\n },\n {\n value: payload.thirdParty?.idCountry,\n error: 'Le pays de l’acheteur est obligatoire.',\n },\n // Vats\n ...vats.flatMap((vat, index) => [\n {\n value: vat.amount,\n error: `Le montant de TVA à la ligne ${index + 1} est obligatoire.`,\n },\n {\n value: vat.base,\n error: `La base d’imposition de la TVA à la ligne ${index + 1} est obligatoire.`,\n },\n {\n value: vat.value,\n error: `Le type de TVA à la ligne ${index + 1} est obligatoire.`,\n },\n ]),\n // Totals\n { value: totalTaxExcluded, error: 'Le montant total hors taxe est obligatoire.' },\n {\n value: totalTaxExcluded,\n error: 'La somme du montant net des lignes est obligatoire.',\n },\n { value: totalVats, error: 'Le montant total de TVA est obligatoire.' },\n {\n value: totalTaxIncluded,\n error: 'Le montant total TTC est obligatoire.',\n },\n ];\n\n // Check des mentions de tva\n const vatType = CommercialVatMentionList.find((v) => v.value === payload.vatMention)?.taxType ?? 'standard';\n\n // Si le type de tva est margin, autoliquidation, export ou exempt,\n // aucun produit ne doit avoir de tva > 0\n if (['margin', 'autoliquidation', 'export', 'exempt'].includes(vatType)) {\n for (const product of products) {\n if (getById(product.idVat)?.value !== 0) {\n errors.push(`L'article ${product.itemSaleName} a une TVA non nulle alors que le type de TVA est ${vatType}.`);\n }\n }\n }\n\n errors.push(...requiredData.filter((data) => isMissing(data.value)).map((data) => data.error));\n\n return { valid: errors.length === 0, errors: errors.length > 0 ? errors : undefined };\n}\n"]}
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -20,7 +20,6 @@ export * from './bankAccount.js';
|
|
|
20
20
|
export * from './commercialOffer.js';
|
|
21
21
|
export * from './societyApproval.js';
|
|
22
22
|
export * from './commercialManagement/saleEmail.js';
|
|
23
|
-
export * from './acdVat.js';
|
|
24
23
|
export * from './transforms/boolean.transform.js';
|
|
25
24
|
export * from './transforms/number.transform.js';
|
|
26
25
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../ts/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,6CAA6C,CAAC;AAC5D,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,sCAAsC,CAAC;AACrD,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qCAAqC,CAAC;AACpD,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../ts/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,6CAA6C,CAAC;AAC5D,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,sCAAsC,CAAC;AACrD,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qCAAqC,CAAC;AACpD,cAAc,mCAAmC,CAAC;AAClD,cAAc,kCAAkC,CAAC"}
|
package/dist/utils/index.js
CHANGED
|
@@ -20,7 +20,6 @@ export * from './bankAccount.js';
|
|
|
20
20
|
export * from './commercialOffer.js';
|
|
21
21
|
export * from './societyApproval.js';
|
|
22
22
|
export * from './commercialManagement/saleEmail.js';
|
|
23
|
-
export * from './acdVat.js';
|
|
24
23
|
export * from './transforms/boolean.transform.js';
|
|
25
24
|
export * from './transforms/number.transform.js';
|
|
26
25
|
//# sourceMappingURL=index.js.map
|
package/dist/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../ts/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,6CAA6C,CAAC;AAC5D,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,sCAAsC,CAAC;AACrD,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qCAAqC,CAAC;AACpD,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../ts/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,6CAA6C,CAAC;AAC5D,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,sCAAsC,CAAC;AACrD,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qCAAqC,CAAC;AACpD,cAAc,mCAAmC,CAAC;AAClD,cAAc,kCAAkC,CAAC","sourcesContent":["export * from './objectUtils/index.js';\nexport * from './stringUtils/index.js';\nexport * from './brands.js';\nexport * from './webmail.js';\nexport * from './decorators/isE164PhoneNumber.decorator.js';\nexport * from './documents.js';\nexport * from './balanceSheetModule.js';\nexport * from './siretValidation.js';\nexport * from './statutsGeneration.js';\nexport * from './exercice.js';\nexport * from './prestation.js';\nexport * from './task.js';\nexport * from './social.js';\nexport * from './commercialManagement/recurrence.js';\nexport * from './amount.js';\nexport * from './quotation.js';\nexport * from './isHtml.js';\nexport * from './isUrl.js';\nexport * from './bankAccount.js';\nexport * from './commercialOffer.js';\nexport * from './societyApproval.js';\nexport * from './commercialManagement/saleEmail.js';\nexport * from './transforms/boolean.transform.js';\nexport * from './transforms/number.transform.js';\n"]}
|
package/package.json
CHANGED
|
@@ -37,10 +37,6 @@ export class Account extends Resource {
|
|
|
37
37
|
return this.axios.$post(`/society/${idSociety}/accountsSociety`, params);
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
-
getOrCreateAccountsSociety(idSociety: number, params: CreateAccountSociety): Promise<IAccount> {
|
|
41
|
-
return this.axios.$post(`/society/${idSociety}/accountsSociety/get-or-create`, params);
|
|
42
|
-
}
|
|
43
|
-
|
|
44
40
|
getGenericAccounts(): Promise<BasePaginate<IAccount>> {
|
|
45
41
|
return this.axios.$get('/society/genericAccounts');
|
|
46
42
|
}
|
package/ts/api/resources/Acd.ts
CHANGED
|
@@ -1,12 +1,8 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { CreateAcdAuthentication } from '../../index.js';
|
|
2
2
|
import { Resource } from '../Resource.js';
|
|
3
3
|
|
|
4
4
|
export class Acd extends Resource {
|
|
5
5
|
authenticate(body: CreateAcdAuthentication): Promise<{ token: string }> {
|
|
6
6
|
return this.axios.$post('/connectors/acd/authenticate', body);
|
|
7
7
|
}
|
|
8
|
-
|
|
9
|
-
getAccounts(): Promise<IAccount[]> {
|
|
10
|
-
return this.axios.$get('/connectors/acd/accounts');
|
|
11
|
-
}
|
|
12
8
|
}
|
package/ts/index.ts
CHANGED
|
@@ -2,6 +2,5 @@ export * from './utils/index.js';
|
|
|
2
2
|
export * from './utils/commercialManagement/product.js';
|
|
3
3
|
export * from './utils/commercialManagement/vat.js';
|
|
4
4
|
export * from './utils/commercialManagement/recovery.js';
|
|
5
|
-
export * from './utils/acdVat.js';
|
|
6
5
|
export * from './types/index.js';
|
|
7
6
|
export * from './api/index.js';
|
|
@@ -228,7 +228,21 @@ export const MailAutoTypeDetail = [
|
|
|
228
228
|
},
|
|
229
229
|
];
|
|
230
230
|
|
|
231
|
-
export
|
|
231
|
+
export interface MailAutoListField {
|
|
232
|
+
name: string;
|
|
233
|
+
lg?: string;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
interface MailAutoListItem {
|
|
237
|
+
id: MailAuto;
|
|
238
|
+
onlyforRoles: string[] | null;
|
|
239
|
+
alias: string;
|
|
240
|
+
title: string;
|
|
241
|
+
subject: string | ((sendRefusedTemplate: boolean) => string);
|
|
242
|
+
fields: MailAutoListField[];
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
export const MailAutoList: MailAutoListItem[] = [
|
|
232
246
|
{
|
|
233
247
|
id: MailAuto.ASK_DOCUMENTS_FOR_BALANCE_SHEET,
|
|
234
248
|
onlyforRoles: null,
|
|
@@ -253,4 +267,55 @@ export const MailAutoList = [
|
|
|
253
267
|
subject: 'Rejet de prélèvement',
|
|
254
268
|
fields: [{ name: 'to', lg: 'xs12 sm5' }, { name: 'subject', lg: 'xs12 sm7' }, { name: 'contentHtml' }],
|
|
255
269
|
},
|
|
270
|
+
{
|
|
271
|
+
id: MailAuto.ASK_DOCUMENTS_CHECKLIST,
|
|
272
|
+
onlyforRoles: null,
|
|
273
|
+
alias: 'checklist-ask-documents',
|
|
274
|
+
title: 'Demande de documents',
|
|
275
|
+
subject: 'Demande de documents',
|
|
276
|
+
fields: [],
|
|
277
|
+
},
|
|
278
|
+
{
|
|
279
|
+
id: MailAuto.RELAUNCH_DOCUMENTS_CHECKLIST,
|
|
280
|
+
onlyforRoles: null,
|
|
281
|
+
alias: 'checklist-relaunch-documents',
|
|
282
|
+
title: 'Relance demande de documents',
|
|
283
|
+
subject: (sendRefusedTemplate: boolean) =>
|
|
284
|
+
sendRefusedTemplate ? "Refus d'un document" : 'Relance demande de documents',
|
|
285
|
+
fields: [],
|
|
286
|
+
},
|
|
287
|
+
{
|
|
288
|
+
id: MailAuto.ASK_DOCUMENTS_CUT_OFF,
|
|
289
|
+
onlyforRoles: null,
|
|
290
|
+
alias: 'cut-off-ask-documents',
|
|
291
|
+
title: "Demande d'informations et documents complémentaires",
|
|
292
|
+
subject: "Demande d'informations et documents complémentaires",
|
|
293
|
+
fields: [],
|
|
294
|
+
},
|
|
295
|
+
{
|
|
296
|
+
id: MailAuto.RELAUNCH_DOCUMENTS_CUT_OFF,
|
|
297
|
+
onlyforRoles: null,
|
|
298
|
+
alias: 'cut-off-relaunch-documents',
|
|
299
|
+
title: 'Relance demande de documents',
|
|
300
|
+
subject: (sendRefusedTemplate: boolean) =>
|
|
301
|
+
sendRefusedTemplate ? "Refus d'un document" : 'Relance demande de documents',
|
|
302
|
+
fields: [],
|
|
303
|
+
},
|
|
304
|
+
{
|
|
305
|
+
id: MailAuto.ASK_DOCUMENTS_BANK_STATEMENT,
|
|
306
|
+
onlyforRoles: null,
|
|
307
|
+
alias: 'ask-documents-bank-statement',
|
|
308
|
+
title: 'Demande de documents',
|
|
309
|
+
subject: 'Demande de documents',
|
|
310
|
+
fields: [],
|
|
311
|
+
},
|
|
312
|
+
{
|
|
313
|
+
id: MailAuto.RELAUNCH_DOCUMENTS_BANK_STATEMENT,
|
|
314
|
+
onlyforRoles: null,
|
|
315
|
+
alias: 'relaunch-documents-bank-statement',
|
|
316
|
+
title: 'Relance demande de documents',
|
|
317
|
+
subject: (sendRefusedTemplate: boolean) =>
|
|
318
|
+
sendRefusedTemplate ? "Refus d'un document" : 'Relance demande de documents',
|
|
319
|
+
fields: [],
|
|
320
|
+
},
|
|
256
321
|
];
|
|
@@ -1,45 +1,19 @@
|
|
|
1
|
-
import { IsArray, IsDateString, IsNumber, IsOptional, IsString
|
|
1
|
+
import { IsArray, IsDateString, IsNumber, IsOptional, IsString } from 'class-validator';
|
|
2
2
|
import { IAccount } from '../../../index.js';
|
|
3
3
|
import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
|
|
4
4
|
|
|
5
5
|
export class CreateAccountSociety {
|
|
6
6
|
@ApiProperty()
|
|
7
|
-
@IsInt()
|
|
8
7
|
number: number;
|
|
9
8
|
|
|
10
9
|
@ApiProperty()
|
|
11
|
-
@IsString()
|
|
12
10
|
name: string;
|
|
13
11
|
|
|
14
|
-
@
|
|
15
|
-
|
|
16
|
-
@IsOptional()
|
|
17
|
-
idNature?: number;
|
|
18
|
-
|
|
19
|
-
@ApiPropertyOptional()
|
|
20
|
-
@IsInt()
|
|
21
|
-
@IsOptional()
|
|
22
|
-
idAccountType?: number;
|
|
12
|
+
@ApiProperty()
|
|
13
|
+
idParentAccount: number;
|
|
23
14
|
|
|
24
15
|
@ApiPropertyOptional()
|
|
25
|
-
@IsInt()
|
|
26
|
-
@IsOptional()
|
|
27
16
|
idVat?: number;
|
|
28
|
-
|
|
29
|
-
@ApiPropertyOptional()
|
|
30
|
-
@IsInt()
|
|
31
|
-
@IsOptional()
|
|
32
|
-
idParentAccount?: number;
|
|
33
|
-
|
|
34
|
-
@ApiPropertyOptional()
|
|
35
|
-
@IsBoolean()
|
|
36
|
-
@IsOptional()
|
|
37
|
-
isGeneric?: boolean;
|
|
38
|
-
|
|
39
|
-
@ApiPropertyOptional()
|
|
40
|
-
@IsObject()
|
|
41
|
-
@IsOptional()
|
|
42
|
-
metadata?: Record<string, any>;
|
|
43
17
|
}
|
|
44
18
|
|
|
45
19
|
export class CreateAccount {
|
|
@@ -2,7 +2,7 @@ import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
|
|
|
2
2
|
import { TypeCustomerProviderOperation } from '../../../Enum/TypeCustomerProviderOperation.js';
|
|
3
3
|
import { AccountingJournal } from '../../../Enum/AccountingJournal.js';
|
|
4
4
|
import { IsBoolean, IsDateString, IsInt, IsOptional } from 'class-validator';
|
|
5
|
-
import { ToBoolean } from '
|
|
5
|
+
import { ToBoolean } from '../../../../utils/transforms/boolean.transform.js';
|
|
6
6
|
|
|
7
7
|
export class QueryTransaction {
|
|
8
8
|
id: number;
|
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
Length,
|
|
13
13
|
Min,
|
|
14
14
|
} from 'class-validator';
|
|
15
|
-
import { BorderLineType, IFile, ReadProductEditing } from '../../../index.js';
|
|
15
|
+
import { BorderLineType, CountryId, IFile, ReadProductEditing } from '../../../index.js';
|
|
16
16
|
import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
|
|
17
17
|
import {
|
|
18
18
|
AccountingCategoryId,
|
|
@@ -473,6 +473,9 @@ export class CommercialDocumentInputs {
|
|
|
473
473
|
@ApiProperty({ description: 'Commercial city address of seller' })
|
|
474
474
|
city: string | null;
|
|
475
475
|
|
|
476
|
+
@ApiProperty({ description: 'Commercial country address of seller' })
|
|
477
|
+
idCountry: CountryId | null;
|
|
478
|
+
|
|
476
479
|
@ApiProperty()
|
|
477
480
|
settings: ISocietyGescom;
|
|
478
481
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ApiPropertyOptional, ApiProperty } from '@nestjs/swagger';
|
|
2
|
-
import { IsString, IsOptional, IsArray, IsEnum, IsDateString } from 'class-validator';
|
|
2
|
+
import { IsString, IsOptional, IsArray, IsEnum, IsDateString, IsNumber } from 'class-validator';
|
|
3
3
|
import { DocoonFlowType } from './DocoonInvoice.js';
|
|
4
4
|
import { EInvoicingStatusCode } from '#types/Enum/EInvoicingStatusCode.js';
|
|
5
5
|
import { EInvoicingReasonType } from '#types/Enum/EInvoicingReasonType.js';
|
|
@@ -85,4 +85,9 @@ export class AcceptEInvoice {
|
|
|
85
85
|
@IsString()
|
|
86
86
|
@IsOptional()
|
|
87
87
|
internalComment?: string;
|
|
88
|
+
|
|
89
|
+
@ApiPropertyOptional()
|
|
90
|
+
@IsNumber()
|
|
91
|
+
@IsOptional()
|
|
92
|
+
idThirdParty?: number;
|
|
88
93
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IsBoolean,
|
|
1
|
+
import { IsBoolean, IsNumber, IsOptional, IsString, Min } from 'class-validator';
|
|
2
2
|
import { ProductType, Unit } from '../../../index.js';
|
|
3
3
|
import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
|
|
4
4
|
import { ToBoolean } from '../../../../utils/transforms/boolean.transform.js';
|
|
@@ -54,9 +54,4 @@ export class CreateProduct {
|
|
|
54
54
|
@IsString()
|
|
55
55
|
@IsOptional()
|
|
56
56
|
codeProduct?: string;
|
|
57
|
-
|
|
58
|
-
@ApiPropertyOptional()
|
|
59
|
-
@IsInt()
|
|
60
|
-
@IsOptional()
|
|
61
|
-
idAccount?: number;
|
|
62
57
|
}
|
|
@@ -19,6 +19,7 @@ export class IAccountingFile {
|
|
|
19
19
|
totalTaxExcluded?: number | null;
|
|
20
20
|
isMobile: boolean;
|
|
21
21
|
internComment?: string | null;
|
|
22
|
+
invoiceNumber?: string | null;
|
|
22
23
|
idAccountingTransaction?: number | null;
|
|
23
24
|
idEstimateInvoice?: number | null;
|
|
24
25
|
idAccountingFileType: number;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { IVat } from './IVat.js';
|
|
2
2
|
import { ISociety } from './ISociety.js';
|
|
3
|
-
import { IAccount } from './IAccount.js';
|
|
4
3
|
|
|
5
4
|
// products
|
|
6
5
|
export class IProduct {
|
|
@@ -16,7 +15,6 @@ export class IProduct {
|
|
|
16
15
|
amountOfPurchase: number | null;
|
|
17
16
|
marginVatType?: number;
|
|
18
17
|
idSociety: number;
|
|
19
|
-
idAccount?: number | null;
|
|
20
18
|
createdAt?: Date | null;
|
|
21
19
|
updatedAt?: Date | null;
|
|
22
20
|
deletedAt?: Date | null;
|
|
@@ -24,5 +22,4 @@ export class IProduct {
|
|
|
24
22
|
// Associations
|
|
25
23
|
vat?: IVat;
|
|
26
24
|
society?: ISociety;
|
|
27
|
-
account?: IAccount;
|
|
28
25
|
}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { IVat } from './IVat.js';
|
|
2
2
|
import { IProduct } from './IProduct.js';
|
|
3
|
-
import type { IAccount } from './IAccount.js';
|
|
4
3
|
import { DiscountType } from '../../Enum/CommercialManagement.js';
|
|
5
4
|
|
|
6
5
|
// itemsEstimates
|
|
@@ -8,7 +7,6 @@ export class IProductInvoice {
|
|
|
8
7
|
id?: number;
|
|
9
8
|
idEstimateInvoice: number;
|
|
10
9
|
idProduct: number | null;
|
|
11
|
-
idAccount?: number | null;
|
|
12
10
|
idVat: number;
|
|
13
11
|
marginVatType?: number;
|
|
14
12
|
amountOfPurchase: number | null;
|
|
@@ -28,5 +26,4 @@ export class IProductInvoice {
|
|
|
28
26
|
// Associations
|
|
29
27
|
vat?: IVat;
|
|
30
28
|
product?: IProduct;
|
|
31
|
-
account?: IAccount;
|
|
32
29
|
}
|
|
@@ -47,8 +47,6 @@ export class ISocietyGescom {
|
|
|
47
47
|
idSociety?: number | null;
|
|
48
48
|
shouldHideBrandName?: boolean;
|
|
49
49
|
shouldHideEmailHeader?: boolean;
|
|
50
|
-
// Regroupe les ecritures comptables par compte pour l export des ecritures comptables.
|
|
51
|
-
areEntriesGroupedByAccount?: boolean;
|
|
52
50
|
customerBlockBorderThickness?: number | null;
|
|
53
51
|
customerBlockBorderColor?: string | null;
|
|
54
52
|
lineSeparationThickness?: number | null;
|