@silexpert/core 2.0.99 → 2.0.101

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/dist/api/resources/Search.d.ts +2 -1
  2. package/dist/api/resources/Search.d.ts.map +1 -1
  3. package/dist/api/resources/Search.js +3 -0
  4. package/dist/api/resources/Search.js.map +1 -1
  5. package/dist/api/resources/SocietyCreationCheckout.d.ts +7 -0
  6. package/dist/api/resources/SocietyCreationCheckout.d.ts.map +1 -0
  7. package/dist/api/resources/SocietyCreationCheckout.js +10 -0
  8. package/dist/api/resources/SocietyCreationCheckout.js.map +1 -0
  9. package/dist/api/resources.d.ts +2 -0
  10. package/dist/api/resources.d.ts.map +1 -1
  11. package/dist/api/resources.js +2 -0
  12. package/dist/api/resources.js.map +1 -1
  13. package/dist/types/Enum/Constants.d.ts +2 -0
  14. package/dist/types/Enum/Constants.d.ts.map +1 -1
  15. package/dist/types/Enum/Constants.js +2 -0
  16. package/dist/types/Enum/Constants.js.map +1 -1
  17. package/dist/types/Enum/MailAuto.d.ts +2 -1
  18. package/dist/types/Enum/MailAuto.d.ts.map +1 -1
  19. package/dist/types/Enum/MailAuto.js +1 -0
  20. package/dist/types/Enum/MailAuto.js.map +1 -1
  21. package/dist/types/Enum/SocietyApproval.js +12 -12
  22. package/dist/types/Enum/SocietyApproval.js.map +1 -1
  23. package/dist/types/Enum/SocietyCreationCheckoutStatus.d.ts +9 -0
  24. package/dist/types/Enum/SocietyCreationCheckoutStatus.d.ts.map +1 -0
  25. package/dist/types/Enum/SocietyCreationCheckoutStatus.js +10 -0
  26. package/dist/types/Enum/SocietyCreationCheckoutStatus.js.map +1 -0
  27. package/dist/types/Enum/Zendesk.d.ts +26 -0
  28. package/dist/types/Enum/Zendesk.d.ts.map +1 -1
  29. package/dist/types/Enum/Zendesk.js +49 -0
  30. package/dist/types/Enum/Zendesk.js.map +1 -1
  31. package/dist/types/Interface/api/kyc/Read.d.ts +2 -2
  32. package/dist/types/Interface/api/kyc/Read.d.ts.map +1 -1
  33. package/dist/types/Interface/api/kyc/Read.js.map +1 -1
  34. package/dist/types/Interface/api/pappers/ReadPappers.d.ts +1 -0
  35. package/dist/types/Interface/api/pappers/ReadPappers.d.ts.map +1 -1
  36. package/dist/types/Interface/api/pappers/ReadPappers.js +1 -0
  37. package/dist/types/Interface/api/pappers/ReadPappers.js.map +1 -1
  38. package/dist/types/Interface/api/society/CreateSociety.d.ts +1 -0
  39. package/dist/types/Interface/api/society/CreateSociety.d.ts.map +1 -1
  40. package/dist/types/Interface/api/society/CreateSociety.js +5 -0
  41. package/dist/types/Interface/api/society/CreateSociety.js.map +1 -1
  42. package/dist/types/Interface/api/societyCreationCheckout/SocietyCreationCheckout.d.ts +32 -0
  43. package/dist/types/Interface/api/societyCreationCheckout/SocietyCreationCheckout.d.ts.map +1 -0
  44. package/dist/types/Interface/api/societyCreationCheckout/SocietyCreationCheckout.js +83 -0
  45. package/dist/types/Interface/api/societyCreationCheckout/SocietyCreationCheckout.js.map +1 -0
  46. package/dist/types/Interface/api/stripe/Create.d.ts +1 -0
  47. package/dist/types/Interface/api/stripe/Create.d.ts.map +1 -1
  48. package/dist/types/Interface/api/stripe/Create.js +7 -0
  49. package/dist/types/Interface/api/stripe/Create.js.map +1 -1
  50. package/dist/types/Interface/api/zendesk/QueryTicket.d.ts +3 -1
  51. package/dist/types/Interface/api/zendesk/QueryTicket.d.ts.map +1 -1
  52. package/dist/types/Interface/api/zendesk/QueryTicket.js +15 -1
  53. package/dist/types/Interface/api/zendesk/QueryTicket.js.map +1 -1
  54. package/dist/types/Interface/models/IEInvoicingKycAndMandate.d.ts +1 -0
  55. package/dist/types/Interface/models/IEInvoicingKycAndMandate.d.ts.map +1 -1
  56. package/dist/types/Interface/models/IEInvoicingKycAndMandate.js +1 -0
  57. package/dist/types/Interface/models/IEInvoicingKycAndMandate.js.map +1 -1
  58. package/dist/types/Interface/models/ISocietyCreationCheckout.d.ts +23 -0
  59. package/dist/types/Interface/models/ISocietyCreationCheckout.d.ts.map +1 -0
  60. package/dist/types/Interface/models/ISocietyCreationCheckout.js +2 -0
  61. package/dist/types/Interface/models/ISocietyCreationCheckout.js.map +1 -0
  62. package/dist/types/index.d.ts +3 -0
  63. package/dist/types/index.d.ts.map +1 -1
  64. package/dist/types/index.js +3 -0
  65. package/dist/types/index.js.map +1 -1
  66. package/dist/utils/commercialManagement/document.d.ts.map +1 -1
  67. package/dist/utils/commercialManagement/document.js +1 -1
  68. package/dist/utils/commercialManagement/document.js.map +1 -1
  69. package/dist/utils/societyApproval.d.ts.map +1 -1
  70. package/dist/utils/societyApproval.js +5 -4
  71. package/dist/utils/societyApproval.js.map +1 -1
  72. package/package.json +1 -1
  73. package/ts/api/resources/Search.ts +9 -1
  74. package/ts/api/resources/SocietyCreationCheckout.ts +16 -0
  75. package/ts/api/resources.ts +2 -0
  76. package/ts/types/Enum/Constants.ts +3 -0
  77. package/ts/types/Enum/MailAuto.ts +1 -0
  78. package/ts/types/Enum/SocietyApproval.ts +12 -12
  79. package/ts/types/Enum/SocietyCreationCheckoutStatus.ts +8 -0
  80. package/ts/types/Enum/Zendesk.ts +71 -0
  81. package/ts/types/Interface/api/kyc/Read.ts +2 -2
  82. package/ts/types/Interface/api/pappers/ReadPappers.ts +1 -0
  83. package/ts/types/Interface/api/society/CreateSociety.ts +3 -0
  84. package/ts/types/Interface/api/societyCreationCheckout/SocietyCreationCheckout.ts +66 -0
  85. package/ts/types/Interface/api/stripe/Create.ts +5 -0
  86. package/ts/types/Interface/api/zendesk/QueryTicket.ts +12 -0
  87. package/ts/types/Interface/models/IEInvoicingKycAndMandate.ts +1 -0
  88. package/ts/types/Interface/models/ISocietyCreationCheckout.ts +23 -0
  89. package/ts/types/index.ts +3 -0
  90. package/ts/utils/commercialManagement/document.ts +3 -1
  91. package/ts/utils/societyApproval.ts +7 -3
@@ -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;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,CAgIA"}
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,CAkIA"}
@@ -282,7 +282,7 @@ export function checkCommercialDocumentInformation(payload) {
282
282
  if (['margin', 'autoliquidation', 'export', 'exempt'].includes(vatType)) {
283
283
  for (const product of products) {
284
284
  if (getById(product.idVat)?.value !== 0) {
285
- errors.push(`L'article ${product.itemSaleName} a une TVA non nulle alors que le type de TVA est ${vatType}.`);
285
+ errors.push(`L'article "${product.itemSaleName}" a une TVA non nulle alors que la mention légale de TVA est définie comme "${vatType}".`);
286
286
  }
287
287
  }
288
288
  }
@@ -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 {\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 // {\n // value: payload.thirdParty?.email,\n // error: 'L’email 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"]}
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,IAAI;QACJ,0CAA0C;QAC1C,kDAAkD;QAClD,KAAK;QACL,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,IAAI;QACJ,sCAAsC;QACtC,qDAAqD;QACrD,KAAK;QACL,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,CACT,cAAc,OAAO,CAAC,YAAY,+EAA+E,OAAO,IAAI,CAC7H,CAAC;YACJ,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 // {\n // value: payload.thirdParty?.email,\n // error: 'L’email 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(\n `L'article \"${product.itemSaleName}\" a une TVA non nulle alors que la mention légale de TVA est définie comme \"${vatType}\".`,\n );\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"]}
@@ -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;AAYD;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAwFhH"}
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,CA0FhH"}
@@ -1,4 +1,4 @@
1
- import { LegalForm } from '../types/Enum/LegalForm.js';
1
+ import { LegalForm, LegalFormTypeEnum } from '../types/Enum/LegalForm.js';
2
2
  import { AdditionalMentionType, SocietyApprovalDocumentsByLegalForm, } from '../types/Enum/SocietyApproval.js';
3
3
  import { QualityList } from '../types/Enum/Quality.js';
4
4
  import { getBrand } from './brands.js';
@@ -43,12 +43,13 @@ export function getApprovalDocumentInfos(idLegalForm, idDocumentType) {
43
43
  const config = getApprovalDocumentsByLegalForm(idLegalForm);
44
44
  return config?.documents.find((doc) => doc.idDocumentType === idDocumentType);
45
45
  }
46
- function createApprovalDecisionTitleGenerator() {
46
+ function createApprovalDecisionTitleGenerator(idLegalForm) {
47
47
  const decisionOrdinals = ['PREMIERE', 'DEUXIEME', 'TROISIEME', 'QUATRIEME', 'CINQUIEME', 'SIXIEME'];
48
+ const decisionLabel = idLegalForm === LegalFormTypeEnum.SARL || idLegalForm === LegalFormTypeEnum.SAS ? 'RESOLUTION' : 'DECISION';
48
49
  let decisionNumber = 0;
49
50
  return () => {
50
51
  decisionNumber += 1;
51
- return `${decisionOrdinals[decisionNumber - 1] ?? `${decisionNumber}EME`} DECISION`;
52
+ return `${decisionOrdinals[decisionNumber - 1] ?? `${decisionNumber}EME`} ${decisionLabel}`;
52
53
  };
53
54
  }
54
55
  /**
@@ -68,7 +69,7 @@ export function buildApprovalTemplateData(existingApproval, style) {
68
69
  return {
69
70
  // Variables globales
70
71
  AdditionalMentionType,
71
- nextDecisionTitle: createApprovalDecisionTitleGenerator(),
72
+ nextDecisionTitle: createApprovalDecisionTitleGenerator(existingApproval?.exercice?.society?.idLegalForm ?? undefined),
72
73
  rates: {
73
74
  flatTax: 0.314,
74
75
  flatLevy: 0.128, //prelevement forfaitaire
@@ -1 +1 @@
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(): () => string {\n const decisionOrdinals = ['PREMIERE', 'DEUXIEME', 'TROISIEME', 'QUATRIEME', 'CINQUIEME', 'SIXIEME'];\n let decisionNumber = 0;\n\n return () => {\n decisionNumber += 1;\n return `${decisionOrdinals[decisionNumber - 1] ?? `${decisionNumber}EME`} DECISION`;\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 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 ...(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"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@silexpert/core",
3
- "version": "2.0.99",
3
+ "version": "2.0.101",
4
4
  "description": "Silex Core perform HTTP Request and object binding. Silex core helps developers to retrieve and return formatted object",
5
5
  "keywords": [
6
6
  "accounting",
@@ -1,10 +1,18 @@
1
- import { QueryGetBusinessPappers, ReadBusinessPappers, QueryGetBusinessDocumentPappers } from '../../types/index.js';
1
+ import {
2
+ QueryGetBusinessPappers,
3
+ QuerySearchBusinessPappers,
4
+ ReadBusinessPappers,
5
+ QueryGetBusinessDocumentPappers,
6
+ } from '../../types/index.js';
2
7
  import { Resource } from '../Resource.js';
3
8
 
4
9
  export class Search extends Resource {
5
10
  getBusiness(query: QueryGetBusinessPappers): Promise<ReadBusinessPappers> {
6
11
  return this.axios.$get('/search/business', { params: query });
7
12
  }
13
+ searchBusiness(query: QuerySearchBusinessPappers): Promise<ReadBusinessPappers[]> {
14
+ return this.axios.$get('/search/businesses', { params: query });
15
+ }
8
16
  getDocumentFromToken(query: QueryGetBusinessDocumentPappers): Promise<void> {
9
17
  return this.axios.$get('/search/business/document', { params: query });
10
18
  }
@@ -0,0 +1,16 @@
1
+ import {
2
+ CreateSocietyCreationCheckout,
3
+ CreateSocietyCreationCheckoutResponse,
4
+ ReadSocietyCreationCheckout,
5
+ } from '../../types/index.js';
6
+ import { Resource } from '../Resource.js';
7
+
8
+ export class SocietyCreationCheckout extends Resource {
9
+ create(payload: CreateSocietyCreationCheckout): Promise<CreateSocietyCreationCheckoutResponse> {
10
+ return this.axios.$post('/society-creation-checkouts', payload);
11
+ }
12
+
13
+ get(token: string): Promise<ReadSocietyCreationCheckout> {
14
+ return this.axios.$get(`/society-creation-checkouts/${encodeURIComponent(token)}`);
15
+ }
16
+ }
@@ -195,6 +195,7 @@ import { ZendeskTicket } from './resources/zendesk/Ticket.js';
195
195
  import { Vialink } from './resources/Vialink.js';
196
196
  import { KycMandate } from './resources/KycMandate.js';
197
197
  import { PartneredAccountant } from './resources/PartneredAccountant.js';
198
+ import { SocietyCreationCheckout } from './resources/SocietyCreationCheckout.js';
198
199
 
199
200
  export const resources = {
200
201
  budgetInsight: BudgetInsight,
@@ -394,4 +395,5 @@ export const resources = {
394
395
  vialink: Vialink,
395
396
  kycMandate: KycMandate,
396
397
  partneredAccountant: PartneredAccountant,
398
+ societyCreationCheckout: SocietyCreationCheckout,
397
399
  };
@@ -35,3 +35,6 @@ export const ClementineSources = [
35
35
  { value: 9, text: 'Salon' },
36
36
  { value: 10, text: 'Kandbaz' },
37
37
  ];
38
+
39
+ export const SOCIETY_CREATION_CHECKOUT_METADATA_KEY = 'societyCreationCheckoutToken';
40
+ export const SOCIETY_CREATION_CHECKOUT_QUERY_PARAMETER = 'societyCreationCheckout';
@@ -145,6 +145,7 @@ export enum MailAuto {
145
145
  ID_APPROBATION_UNPAID_ARCHIVES = 173,
146
146
  ASK_DOCUMENTS_BANK_STATEMENT = 174,
147
147
  RELAUNCH_DOCUMENTS_BANK_STATEMENT = 175,
148
+ SOCIETY_ADDED = 176,
148
149
  }
149
150
 
150
151
  export enum MailAutoType {
@@ -225,12 +225,12 @@ export const SocietyApprovalDocumentsByLegalForm: SocietyApprovalDocumentConfig[
225
225
  templateName: 'DECLARATION_OF_CONFIDENTIALITY_FOR_ANNUAL_ACCOUNTS_PME_SARL',
226
226
  documentSectionType: DocumentSectionType.DECLARATION_OF_CONFIDENTIALITY_FOR_ANNUAL_ACCOUNTS,
227
227
  },
228
- // {
229
- // idDocumentType: SocietyApprovalDocumentType.INCOME_APPROPRIATION,
230
- // docName: 'Résolution d’affectation du résultat',
231
- // templateName: 'INCOME_APPROPRIATION_SARL',
232
- // documentSectionType: DocumentSectionType.INCOME_APPROPRIATION,
233
- // },
228
+ {
229
+ idDocumentType: SocietyApprovalDocumentType.INCOME_APPROPRIATION,
230
+ docName: 'Résolution d’affectation du résultat',
231
+ templateName: 'INCOME_APPROPRIATION_SARL',
232
+ documentSectionType: DocumentSectionType.INCOME_APPROPRIATION,
233
+ },
234
234
  {
235
235
  idDocumentType: SocietyApprovalDocumentType.LIST_OF_CONVENTIONS,
236
236
  docName: 'Rapport spécial des conventions réglementées',
@@ -273,12 +273,12 @@ export const SocietyApprovalDocumentsByLegalForm: SocietyApprovalDocumentConfig[
273
273
  templateName: 'DECLARATION_OF_CONFIDENTIALITY_FOR_ANNUAL_ACCOUNTS_PME_SAS',
274
274
  documentSectionType: DocumentSectionType.DECLARATION_OF_CONFIDENTIALITY_FOR_ANNUAL_ACCOUNTS,
275
275
  },
276
- // {
277
- // idDocumentType: SocietyApprovalDocumentType.INCOME_APPROPRIATION,
278
- // docName: 'Résolution d’affectation du résultat',
279
- // templateName: 'INCOME_APPROPRIATION_SARL',
280
- // documentSectionType: DocumentSectionType.INCOME_APPROPRIATION,
281
- // },
276
+ {
277
+ idDocumentType: SocietyApprovalDocumentType.INCOME_APPROPRIATION,
278
+ docName: 'Résolution d’affectation du résultat',
279
+ templateName: 'INCOME_APPROPRIATION_SAS',
280
+ documentSectionType: DocumentSectionType.INCOME_APPROPRIATION,
281
+ },
282
282
  {
283
283
  idDocumentType: SocietyApprovalDocumentType.LIST_OF_CONVENTIONS,
284
284
  docName: 'Rapport spécial des conventions réglementées',
@@ -0,0 +1,8 @@
1
+ export enum SocietyCreationCheckoutStatus {
2
+ PENDING = 'pending',
3
+ CHECKOUT_CREATED = 'checkout_created',
4
+ PROCESSING = 'processing',
5
+ COMPLETED = 'completed',
6
+ FAILED = 'failed',
7
+ EXPIRED = 'expired',
8
+ }
@@ -54,3 +54,74 @@ export enum ZendeskTicketChannelEnum {
54
54
  WEB_SERVICE = 'web_service',
55
55
  WHATSAPP = 'whatsapp',
56
56
  }
57
+
58
+ export type ZendeskTicketCategory =
59
+ | 'pièces_comptables'
60
+ | 'tva_et_comptabilité'
61
+ | 'démarches_administratives_tva'
62
+ | 'demande_de_remboursement_de_tva'
63
+ | 'conseils_tva'
64
+ | 'suivi_de_votre_dossier'
65
+ | 'attestations_et_documents_officiels'
66
+ | 'contrôle_du_fichier_des_écritures_comptables__fec_'
67
+ | 'reprise_de_votre_dossier_comptable'
68
+ | 'vérification_de_votre_dossier'
69
+ | 'documents_demandés_pour_votre_bilan'
70
+ | 'paramétrage_comptable'
71
+ | 'vérifications_sociales_et_paie'
72
+ | 'bilan_annuel'
73
+ | 'conseils_et_accompagnement'
74
+ | 'informations_manquantes_ou_non_conformes'
75
+ | 'traitement_prioritaire_du_bilan'
76
+ | 'relance_bilan'
77
+ | 'support_application';
78
+
79
+ export enum ZendeskTicketCategoryEnum {
80
+ PIECES_COMPTABLES = 'pièces_comptables',
81
+ TVA_ET_COMPTABILITE = 'tva_et_comptabilité',
82
+ DEMARCHES_ADMINISTRATIVES_TVA = 'démarches_administratives_tva',
83
+ DEMANDE_REMBOURSEMENT_TVA = 'demande_de_remboursement_de_tva',
84
+ CONSEILS_TVA = 'conseils_tva',
85
+ SUIVI_DOSSIER = 'suivi_de_votre_dossier',
86
+ ATTESTATIONS_DOCUMENTS_OFFICIELS = 'attestations_et_documents_officiels',
87
+ CONTROLE_FEC = 'contrôle_du_fichier_des_écritures_comptables__fec_',
88
+ REPRISE_DOSSIER_COMPTABLE = 'reprise_de_votre_dossier_comptable',
89
+ VERIFICATION_DOSSIER = 'vérification_de_votre_dossier',
90
+ DOCUMENTS_DEMANDES_BILAN = 'documents_demandés_pour_votre_bilan',
91
+ PARAMETRAGE_COMPTABLE = 'paramétrage_comptable',
92
+ VERIFICATIONS_SOCIALES_PAIE = 'vérifications_sociales_et_paie',
93
+ BILAN_ANNUEL = 'bilan_annuel',
94
+ CONSEILS_ACCOMPAGNEMENT = 'conseils_et_accompagnement',
95
+ INFORMATIONS_MANQUANTES_NON_CONFORMES = 'informations_manquantes_ou_non_conformes',
96
+ TRAITEMENT_PRIORITAIRE_BILAN = 'traitement_prioritaire_du_bilan',
97
+ RELANCE_BILAN = 'relance_bilan',
98
+ SUPPORT_APPLICATION = 'support_application',
99
+ }
100
+
101
+ export const ZendeskTicketCategoryList: Array<{ id: ZendeskTicketCategoryEnum; label: string }> = [
102
+ { id: ZendeskTicketCategoryEnum.PIECES_COMPTABLES, label: 'Pièces comptables' },
103
+ { id: ZendeskTicketCategoryEnum.TVA_ET_COMPTABILITE, label: 'TVA et comptabilité' },
104
+ { id: ZendeskTicketCategoryEnum.CONSEILS_TVA, label: 'Conseils TVA' },
105
+ { id: ZendeskTicketCategoryEnum.DEMARCHES_ADMINISTRATIVES_TVA, label: 'Démarches administratives TVA' },
106
+ { id: ZendeskTicketCategoryEnum.DEMANDE_REMBOURSEMENT_TVA, label: 'Demande de remboursement de TVA' },
107
+ { id: ZendeskTicketCategoryEnum.SUIVI_DOSSIER, label: 'Suivi de votre dossier' },
108
+ { id: ZendeskTicketCategoryEnum.ATTESTATIONS_DOCUMENTS_OFFICIELS, label: 'Attestations et documents officiels' },
109
+ {
110
+ id: ZendeskTicketCategoryEnum.CONTROLE_FEC,
111
+ label: 'Contrôle du Fichier des Écritures Comptables (FEC)',
112
+ },
113
+ { id: ZendeskTicketCategoryEnum.REPRISE_DOSSIER_COMPTABLE, label: 'Reprise de votre dossier comptable' },
114
+ { id: ZendeskTicketCategoryEnum.VERIFICATION_DOSSIER, label: 'Vérification de votre dossier' },
115
+ { id: ZendeskTicketCategoryEnum.DOCUMENTS_DEMANDES_BILAN, label: 'Documents demandés pour votre bilan' },
116
+ { id: ZendeskTicketCategoryEnum.PARAMETRAGE_COMPTABLE, label: 'Paramétrage comptable' },
117
+ { id: ZendeskTicketCategoryEnum.VERIFICATIONS_SOCIALES_PAIE, label: 'Vérifications sociales et paie' },
118
+ { id: ZendeskTicketCategoryEnum.BILAN_ANNUEL, label: 'Bilan annuel' },
119
+ { id: ZendeskTicketCategoryEnum.CONSEILS_ACCOMPAGNEMENT, label: 'Conseils et accompagnement' },
120
+ {
121
+ id: ZendeskTicketCategoryEnum.INFORMATIONS_MANQUANTES_NON_CONFORMES,
122
+ label: 'Informations manquantes ou non conformes',
123
+ },
124
+ { id: ZendeskTicketCategoryEnum.TRAITEMENT_PRIORITAIRE_BILAN, label: 'Traitement prioritaire du bilan' },
125
+ { id: ZendeskTicketCategoryEnum.RELANCE_BILAN, label: 'Relance bilan' },
126
+ { id: ZendeskTicketCategoryEnum.SUPPORT_APPLICATION, label: 'Support application' },
127
+ ];
@@ -1,4 +1,4 @@
1
- import { IEInvoicingKycAndMandate, ReadDocoonTenantDirectoryLines } from '../../../../index.js';
1
+ import { IEInvoicingKycAndMandate, ReadDocoonDirectoryLineAdded } from '../../../../index.js';
2
2
 
3
3
  export enum EInvoicingAddressingIdentifierStatus {
4
4
  ACTIVE = 'ACTIVE',
@@ -12,7 +12,7 @@ export type _InvoicingKycMAndateWithDirectoryLineInfo = IEInvoicingKycAndMandate
12
12
  status: EInvoicingAddressingIdentifierStatus;
13
13
  statusLabel: string;
14
14
  /** @deprecated do not use, will be removed in future versions */
15
- directoryLineInfo?: ReadDocoonTenantDirectoryLines;
15
+ directoryLineInfo?: ReadDocoonDirectoryLineAdded;
16
16
  };
17
17
  export interface LegalRepresentative {
18
18
  type: 'INDIVIDU' | 'ENTREPRISE';
@@ -45,6 +45,7 @@ export type ReadHeadOfficePappers = {
45
45
 
46
46
  export class ReadBusinessPappers {
47
47
  siren: string | null;
48
+ siret: string | null;
48
49
  name: string | null;
49
50
  firstname: string | null;
50
51
  lastname: string | null;
@@ -18,6 +18,9 @@ export class CreateSociety {
18
18
  @ApiPropertyOptional()
19
19
  name?: string;
20
20
 
21
+ @ApiPropertyOptional()
22
+ siret?: string;
23
+
21
24
  @ApiPropertyOptional()
22
25
  address?: string;
23
26
 
@@ -0,0 +1,66 @@
1
+ import { IsNotEmpty, IsOptional, IsString, Matches, MaxLength, ValidateNested } from 'class-validator';
2
+ import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
3
+ import { SocietyCreationCheckoutStatus } from '../../../Enum/SocietyCreationCheckoutStatus.js';
4
+
5
+ export class CreateSocietyCreationCheckoutCompany {
6
+ @ApiProperty()
7
+ @IsString()
8
+ @Matches(/^\d{9}$/)
9
+ siren: string;
10
+
11
+ @ApiPropertyOptional()
12
+ @IsOptional()
13
+ @IsString()
14
+ @Matches(/^\d{14}$/)
15
+ siret?: string;
16
+ }
17
+
18
+ export class CreateSocietyCreationCheckout {
19
+ @ApiProperty({ type: CreateSocietyCreationCheckoutCompany })
20
+ @ValidateNested()
21
+ company: CreateSocietyCreationCheckoutCompany;
22
+
23
+ @ApiProperty()
24
+ @IsString()
25
+ @IsNotEmpty()
26
+ @MaxLength(255)
27
+ stripePriceId: string;
28
+
29
+ @ApiProperty()
30
+ @IsString()
31
+ @Matches(/^\/(?!\/)/)
32
+ @MaxLength(1024)
33
+ returnPath: string;
34
+ }
35
+
36
+ export class CreateSocietyCreationCheckoutResponse {
37
+ @ApiProperty()
38
+ token: string;
39
+
40
+ @ApiProperty()
41
+ url: string;
42
+ }
43
+
44
+ export class ReadSocietyCreationCheckout {
45
+ @ApiProperty()
46
+ token: string;
47
+
48
+ @ApiProperty({ enum: SocietyCreationCheckoutStatus })
49
+ status: SocietyCreationCheckoutStatus;
50
+
51
+ @ApiPropertyOptional()
52
+ idSociety: number | null;
53
+ }
54
+
55
+ export interface SocietyCreationData {
56
+ idUser: number;
57
+ idTypeCompta: number;
58
+ name: string;
59
+ siret: string;
60
+ nafCode?: string;
61
+ address?: string;
62
+ addressComplement?: string;
63
+ zipCode?: string;
64
+ city?: string;
65
+ idLegalForm?: number;
66
+ }
@@ -48,6 +48,11 @@ export class CreateSubscriptionSession {
48
48
  @ApiProperty()
49
49
  @IsString()
50
50
  priceId: string;
51
+
52
+ @ApiPropertyOptional()
53
+ @IsOptional()
54
+ @IsString()
55
+ returnUrl?: string;
51
56
  }
52
57
 
53
58
  export class CreateCommercialSession {
@@ -13,6 +13,8 @@ import {
13
13
  } from 'class-validator';
14
14
  import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
15
15
  import {
16
+ ZendeskTicketCategory,
17
+ ZendeskTicketCategoryEnum,
16
18
  ZendeskTicketChannel,
17
19
  ZendeskTicketChannelEnum,
18
20
  ZendeskTicketPriority,
@@ -81,6 +83,16 @@ export class CreateZendeskTicket {
81
83
  @IsOptional()
82
84
  @IsNumber()
83
85
  organizationId?: number;
86
+
87
+ @ApiPropertyOptional()
88
+ @IsOptional()
89
+ @IsNumber()
90
+ ticketFormId?: number;
91
+
92
+ @ApiPropertyOptional()
93
+ @IsOptional()
94
+ @IsEnum(ZendeskTicketCategoryEnum)
95
+ category?: ZendeskTicketCategory;
84
96
  }
85
97
 
86
98
  export class UpdateZendeskTicket {
@@ -14,6 +14,7 @@ export class IEInvoicingKycAndMandate {
14
14
  onboardingStatus?: string | null; // DRAFT | IN_PROGRESS | COMPLETED | REJECTED | ACTION_NEEDED | EXPIRED | CANCELLED
15
15
  sentToDocoon: boolean;
16
16
  docoonDirectoryLineId?: string | null; // id at docoon
17
+ isCDAR: boolean;
17
18
  payloadRequest?: FinishProcess;
18
19
  payloadSignature?: FinishProcess;
19
20
  idSociety: number;
@@ -0,0 +1,23 @@
1
+ import type { SocietyCreationCheckoutStatus } from '../../Enum/SocietyCreationCheckoutStatus.js';
2
+ import type { SocietyCreationData } from '../api/societyCreationCheckout/SocietyCreationCheckout.js';
3
+ import type { ISociety } from './ISociety.js';
4
+ import type { IUser } from './IUser.js';
5
+
6
+ export interface ISocietyCreationCheckout {
7
+ id?: number;
8
+ token: string;
9
+ idOwner: number;
10
+ societyData: SocietyCreationData;
11
+ stripePriceId: string;
12
+ stripeCheckoutSessionId?: string | null;
13
+ idSociety?: number | null;
14
+ status: SocietyCreationCheckoutStatus;
15
+ processingStartedAt?: Date | null;
16
+ attemptCount: number;
17
+ internalError?: string | null;
18
+ expiresAt: Date;
19
+ createdAt?: Date;
20
+ updatedAt?: Date;
21
+ owner?: IUser;
22
+ society?: ISociety | null;
23
+ }