@silexpert/core 1.3.174 → 1.3.176

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 (59) hide show
  1. package/dist/cjs/api/resources.d.ts +1 -1
  2. package/dist/cjs/api/resources.js +1 -1
  3. package/dist/cjs/api/resources.js.map +1 -1
  4. package/dist/cjs/types/Enum/BalanceSheet.d.ts +14 -2
  5. package/dist/cjs/types/Enum/BalanceSheet.d.ts.map +1 -1
  6. package/dist/cjs/types/Enum/BalanceSheet.js +45 -10
  7. package/dist/cjs/types/Enum/BalanceSheet.js.map +1 -1
  8. package/dist/cjs/types/Enum/Ged.d.ts +3 -2
  9. package/dist/cjs/types/Enum/Ged.d.ts.map +1 -1
  10. package/dist/cjs/types/Enum/Ged.js +10 -4
  11. package/dist/cjs/types/Enum/Ged.js.map +1 -1
  12. package/dist/cjs/types/Interface/api/revenue/revenueMovement.d.ts +20 -0
  13. package/dist/cjs/types/Interface/api/revenue/revenueMovement.d.ts.map +1 -1
  14. package/dist/cjs/types/Interface/api/revenue/revenueMovement.js +37 -1
  15. package/dist/cjs/types/Interface/api/revenue/revenueMovement.js.map +1 -1
  16. package/dist/cjs/utils/exercice.d.ts +9 -0
  17. package/dist/cjs/utils/exercice.d.ts.map +1 -1
  18. package/dist/cjs/utils/exercice.js +15 -1
  19. package/dist/cjs/utils/exercice.js.map +1 -1
  20. package/dist/cjs/utils/vat/3310/century23.js +19 -18
  21. package/dist/cjs/utils/vat/3310/century23.js.map +1 -1
  22. package/dist/cjs/utils/vat/3310/century24.js +19 -18
  23. package/dist/cjs/utils/vat/3310/century24.js.map +1 -1
  24. package/dist/cjs/utils/vat/3310/century25.js +18 -17
  25. package/dist/cjs/utils/vat/3310/century25.js.map +1 -1
  26. package/dist/mjs/api/resources.d.ts +1 -1
  27. package/dist/mjs/api/resources.js +1 -1
  28. package/dist/mjs/api/resources.js.map +1 -1
  29. package/dist/mjs/types/Enum/BalanceSheet.d.ts +14 -2
  30. package/dist/mjs/types/Enum/BalanceSheet.d.ts.map +1 -1
  31. package/dist/mjs/types/Enum/BalanceSheet.js +42 -10
  32. package/dist/mjs/types/Enum/BalanceSheet.js.map +1 -1
  33. package/dist/mjs/types/Enum/Ged.d.ts +3 -2
  34. package/dist/mjs/types/Enum/Ged.d.ts.map +1 -1
  35. package/dist/mjs/types/Enum/Ged.js +10 -4
  36. package/dist/mjs/types/Enum/Ged.js.map +1 -1
  37. package/dist/mjs/types/Interface/api/revenue/revenueMovement.d.ts +20 -0
  38. package/dist/mjs/types/Interface/api/revenue/revenueMovement.d.ts.map +1 -1
  39. package/dist/mjs/types/Interface/api/revenue/revenueMovement.js +34 -0
  40. package/dist/mjs/types/Interface/api/revenue/revenueMovement.js.map +1 -1
  41. package/dist/mjs/utils/exercice.d.ts +9 -0
  42. package/dist/mjs/utils/exercice.d.ts.map +1 -1
  43. package/dist/mjs/utils/exercice.js +13 -0
  44. package/dist/mjs/utils/exercice.js.map +1 -1
  45. package/dist/mjs/utils/vat/3310/century23.js +19 -18
  46. package/dist/mjs/utils/vat/3310/century23.js.map +1 -1
  47. package/dist/mjs/utils/vat/3310/century24.js +19 -18
  48. package/dist/mjs/utils/vat/3310/century24.js.map +1 -1
  49. package/dist/mjs/utils/vat/3310/century25.js +17 -16
  50. package/dist/mjs/utils/vat/3310/century25.js.map +1 -1
  51. package/package.json +1 -1
  52. package/ts/api/resources.ts +1 -1
  53. package/ts/types/Enum/BalanceSheet.ts +51 -9
  54. package/ts/types/Enum/Ged.ts +10 -4
  55. package/ts/types/Interface/api/revenue/revenueMovement.ts +41 -0
  56. package/ts/utils/exercice.ts +14 -0
  57. package/ts/utils/vat/3310/century23.ts +16 -16
  58. package/ts/utils/vat/3310/century24.ts +18 -18
  59. package/ts/utils/vat/3310/century25.ts +19 -19
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@silexpert/core",
3
- "version": "1.3.174",
3
+ "version": "1.3.176",
4
4
  "description": "Silex Core perform HTTP Request and object binding. Silex core helps developers to retrieve and return formatted object",
5
5
  "homepage": "https://gitlab.compta-clementine.fr/dev/silex-api",
6
6
  "main": "dist/cjs/index.js",
@@ -374,7 +374,7 @@ export const resources = {
374
374
  analyticsUtm: AnalyticsUtm,
375
375
  caarl: Caarl,
376
376
  gdpr: Gdpr,
377
- StripePurchase: StripePurchase,
377
+ stripePurchase: StripePurchase,
378
378
  documentRequest: DocumentRequest,
379
379
  balanceSheetReport: BalanceSheetReport,
380
380
  revenue: Revenue,
@@ -1,4 +1,5 @@
1
1
  /* eslint-disable @typescript-eslint/no-duplicate-enum-values */
2
+ import { ReadBalanceSheetItem, ReadBalanceSheetList } from '../Interface/api/balanceSheet/ReadBalanceSheet';
2
3
  import { ThirdPartyType } from './ThirdPartyType';
3
4
  import { MathematicalSign } from './Util';
4
5
 
@@ -324,11 +325,13 @@ export enum BalanceSheetLabel {
324
325
  FOND_COMMERCIAL = 'Fonds commercial',
325
326
  AUTRES_IMMOBILISATIONS_INCORPORELLES = 'Autres immobilisations inc.',
326
327
  AVANCES_ET_ACOMPTES_INCORPORELLES = 'Avances et acomptes',
328
+ IMMOBILISATIONS_INCORPORELLES_EN_COURS = 'Immobilisations incorporelles en cours',
327
329
  TERRAINS = 'Terrains',
328
330
  CONSTRUCTIONS = 'Constructions',
329
331
  INSTALLATIONS_TECHNIQUES = 'Installations techniques, matériels, et outillage industriels',
330
332
  AUTRES_IMMOBILISATIONS_CORPORELLES = 'Autres immobilisations corp.',
331
333
  IMMOBILISATIONS_CORPORELLES_EN_COURS = 'Immobilisations corporelles en cours',
334
+ TITRES_IMMOBILISES_DE_LACTIVITE = 'Titres immobilisés de l\'activité de portefeuille',
332
335
  AVANCES_ET_ACOMPTES_CORPORELLES = 'Avances et acomptes',
333
336
  CREANCES_RATTACHEES_PARTICIPATIONS = 'Créances rattachées à des participations',
334
337
  AUTRES_TITRES_IMMOBILISES = 'Autres titres immobilisés',
@@ -336,11 +339,13 @@ export enum BalanceSheetLabel {
336
339
  AUTRES_IMMOBILISATIONS_FINANCIERES = 'Autres immobilisations fin.',
337
340
  TOTAL_1 = 'Total (I)',
338
341
  MATIERES_PREMIERES_ET_AUTRES_APPROVISIONNEMENTS = 'Matières premières et autres approvisionnements',
342
+ EN_COURS_DE_PRODUCTION_BIENS_SERVICES = 'En cours de production (biens et services)',
339
343
  PRODUITS_INTERMEDIAIRES_ET_FINIS = 'Produits intermédiaires et finis',
340
344
  MARCHANDISES = 'Marchandises',
341
345
  AVANCES_ET_ACOMPTES_VERSES_SUR_COMMANDES = 'Avances et acomptes versés sur commandes',
342
346
  CREANCES_CLIENTS_ET_COMPTES_RATTACHES = 'Créances clients et comptes rattachés',
343
347
  AUTRES_CREANCES = 'Autres créances',
348
+ AUTRES_TITRES = 'Autres titres',
344
349
  CAPITAL_SOUSCRIT_APPELE_NON_VERSE = 'Capital souscrit - appelé, non versé',
345
350
  VALEUR_MOBILIERE_PLACEMENT_ACTION_PROPRE = 'Actions propres',
346
351
  VALEUR_MOBILIERE_PLACEMENT = 'Valeurs mobilières de placement',
@@ -352,6 +357,8 @@ export enum BalanceSheetLabel {
352
357
  TOTAL_GENERAL = 'Total général (I+II+III+IV+V)',
353
358
  PARTICIPATIONS = 'Participations',
354
359
  FRAIS_DE_RECHERCHE_DEVELOPPEMENT = 'Frais de recherche et de développement',
360
+ INSTRUMENTS_DE_TRESORERIE = 'Instruments de trésorerie',
361
+ CHARGES_A_REPARTIR_SUR_PLUSIEURS_EXERCICES ='Charges à répartir sur plusieurs exercices (III)'
355
362
  }
356
363
 
357
364
  export const BALANCE_SHEET_LIST_ACTIVE: BalanceSheetList = [
@@ -407,7 +414,7 @@ export const BALANCE_SHEET_LIST_ACTIVE: BalanceSheetList = [
407
414
  accountsDescription: [],
408
415
  },
409
416
  {
410
- name: 'Immobilisations incorporelles en cours',
417
+ name: BalanceSheetLabel.IMMOBILISATIONS_INCORPORELLES_EN_COURS,
411
418
  accounts: ['232'],
412
419
  accountsDeducted: ['2932'],
413
420
  accountsDescription: [],
@@ -479,7 +486,7 @@ export const BALANCE_SHEET_LIST_ACTIVE: BalanceSheetList = [
479
486
  accountsDescription: [],
480
487
  },
481
488
  {
482
- name: 'Titres immobilisés de l\'activité de portefeuille',
489
+ name: BalanceSheetLabel.TITRES_IMMOBILISES_DE_LACTIVITE,
483
490
  accounts: ['273'],
484
491
  accountsDeducted: ['2973'],
485
492
  accountsDescription: [],
@@ -533,7 +540,7 @@ export const BALANCE_SHEET_LIST_ACTIVE: BalanceSheetList = [
533
540
  accountsDescription: [],
534
541
  },
535
542
  {
536
- name: 'En cours de production (biens et services)',
543
+ name: BalanceSheetLabel.EN_COURS_DE_PRODUCTION_BIENS_SERVICES,
537
544
  accounts: ['33', '34'],
538
545
  accountsDeducted: ['393', '394'],
539
546
  accountsDescription: [],
@@ -628,7 +635,7 @@ export const BALANCE_SHEET_LIST_ACTIVE: BalanceSheetList = [
628
635
  accountsDescription: [],
629
636
  },
630
637
  {
631
- name: 'Autres titres',
638
+ name: BalanceSheetLabel.AUTRES_TITRES,
632
639
  accounts: ['503', '504', '505', '506', '507', '508'],
633
640
  accountsDeducted: ['5903', '5904', '5905', '5906', '5907', '5908'],
634
641
  accountsDescription: [],
@@ -636,7 +643,7 @@ export const BALANCE_SHEET_LIST_ACTIVE: BalanceSheetList = [
636
643
  ],
637
644
  },
638
645
  {
639
- name: 'Instruments de trésorerie',
646
+ name: BalanceSheetLabel.INSTRUMENTS_DE_TRESORERIE,
640
647
  key: 'treasuryInstruments',
641
648
  accounts: ['52'],
642
649
  type: 'active',
@@ -667,7 +674,7 @@ export const BALANCE_SHEET_LIST_ACTIVE: BalanceSheetList = [
667
674
  calculationAdd: ['circulatingActive'],
668
675
  },
669
676
  {
670
- name: 'Charges à répartir sur plusieurs exercices (III)',
677
+ name: BalanceSheetLabel.CHARGES_A_REPARTIR_SUR_PLUSIEURS_EXERCICES,
671
678
  key: 'total3',
672
679
  accounts: ['481'],
673
680
  accountsDescription: [],
@@ -718,10 +725,12 @@ export enum BalanceSheetPassiveLabel {
718
725
  RESERVE_LEGALE = 'Réserve légale',
719
726
  PRIMES_EMISSION = 'Primes d\'émission, de fusion, d\'apport',
720
727
  ECART_DE_REEVALUATION = 'Ecart de réévaluation',
728
+ ECART_EQUIVALENCE = 'Ecart d\'équivalence',
721
729
  RESERVES_STATUAIRES = 'Réserves statutaires ou contractuelles',
722
730
  RESERVES_REGLEMENTEES = 'Réserves réglementées',
723
731
  AUTRES_RESERVES = 'Autres',
724
732
  REPORT_A_NOUVEAU = 'Report à nouveau',
733
+ RESULTAT_DE_L_EXERCICE = 'Résultat de l\'exercice (bénéfice ou perte)',
725
734
  SUBVENTIONS_INVESTISSEMENT = 'Subventions d\'investissement',
726
735
  PROVISIONS_REFLEMENTEES = 'Provisions réglementées',
727
736
  PROVISIONS_POUR_RISQUES = 'Provisions pour risques',
@@ -740,6 +749,7 @@ export enum BalanceSheetPassiveLabel {
740
749
  TOTAL_GENERAL = 'Total général (I+II+III+IV)',
741
750
  CONCOURS = '(1) Dont concours bancaires courants et soldes créditeurs de banques',
742
751
  EMPRUNTS_PARTICIPATIFS = '(2) Dont emprunts participatifs',
752
+ INSTRUMENTS_DE_TRESORERIE = 'Instruments de trésorerie'
743
753
  }
744
754
 
745
755
  export const SOCIAL_CAPITAL_NUMBERS = ['101', '108', '102'];
@@ -769,7 +779,7 @@ export const BALANCE_SHEET_LIST_PASSIVE: BalanceSheetList = [
769
779
  accountsDescription: [],
770
780
  },
771
781
  {
772
- name: 'Ecart d\'équivalence',
782
+ name: BalanceSheetPassiveLabel.ECART_EQUIVALENCE,
773
783
  key: 'equivalenceGap',
774
784
  accounts: ['107'],
775
785
  isSubcategory: true,
@@ -815,7 +825,7 @@ export const BALANCE_SHEET_LIST_PASSIVE: BalanceSheetList = [
815
825
  accountsDescription: [],
816
826
  },
817
827
  {
818
- name: 'Résultat de l\'exercice (bénéfice ou perte)',
828
+ name: BalanceSheetPassiveLabel.RESULTAT_DE_L_EXERCICE,
819
829
  key: 'resultExercice',
820
830
  accounts: ['12'], // comptes 6 - 7
821
831
  isSubcategory: true,
@@ -975,7 +985,7 @@ export const BALANCE_SHEET_LIST_PASSIVE: BalanceSheetList = [
975
985
  accountsDescription: [],
976
986
  },
977
987
  {
978
- name: 'Instruments de trésorerie',
988
+ name: BalanceSheetPassiveLabel.INSTRUMENTS_DE_TRESORERIE,
979
989
  key: 'treasuryInstruments',
980
990
  accounts: ['52'],
981
991
  isSubcategory: true,
@@ -1075,3 +1085,35 @@ export const balanceSheetTotalRanges = [
1075
1085
  highValue: 10000000,
1076
1086
  },
1077
1087
  ] as const;
1088
+
1089
+ export function balanceSheetToObject(data: ReadBalanceSheetList): ReadBalanceSheetList {
1090
+ const result: ReadBalanceSheetList = [];
1091
+
1092
+ function recurse(items: ReadBalanceSheetList) {
1093
+ for (const item of items) {
1094
+ // Ajoute l'élément actuel dans le résultat
1095
+ result.push({
1096
+ name: item.name,
1097
+ total: item.total,
1098
+ totalDeducted: item.totalDeducted,
1099
+ totalNet: item.totalNet,
1100
+ key: item.key,
1101
+ });
1102
+
1103
+ // Si l'élément a une description, on le parcourt récursivement
1104
+ if (item.description && Array.isArray(item.description)) {
1105
+ recurse(item.description);
1106
+ }
1107
+ }
1108
+ }
1109
+
1110
+ recurse(data);
1111
+ return result;
1112
+ }
1113
+
1114
+ export function getBalanceSheetValue(
1115
+ values: ReadBalanceSheetItem[],
1116
+ label: BalanceSheetLabel | BalanceSheetPassiveLabel,
1117
+ ): ReadBalanceSheetItem | null {
1118
+ return values?.find((v) => v.name === label) ?? null;
1119
+ }
@@ -138,7 +138,7 @@ export enum TypeFile {
138
138
  CHECKLIST_NOTE = 76, // Note de conseils
139
139
  INSURANCE_CONTRACT = 77, // Contrat d'assurance
140
140
  COMPANY_CONTRIBUTION_PROOF = 78, // Justificatif des apports fait à la société
141
- NOTARY_STATEMENT_AND_PURCHASE_DEED = 79, // Décompte de notaire et acte d'achat
141
+ NOTARY_STATEMENT = 79, // Décompte de notaire
142
142
  PV_RESULT_ALLOCATION = 80, // PV d'AG d'affectation du résultat
143
143
  SUBSIDY_PROOF = 81, // Justificatifs des subventions reçues
144
144
  LOAN_AMORTIZATION_TABLE = 82, // Tableau d'amortissement des emprunts
@@ -170,6 +170,7 @@ export enum TypeFile {
170
170
  STRIPE_AMAZON_STATEMENTS = 108, // Vos relevés stripe, amazon etc
171
171
  INVOICING_SOFTWARE_SUMMARY = 109, // Un récapitulatif de votre logiciel de facturation détaillé par type d'encaissement et par taux de TVA
172
172
  MILEAGE_ALLOWANCES_SUMMARY = 110, // Un récapitulatif de vos indemnités kilométriques
173
+ PURCHASE_DEED = 111, // Acte d'achat
173
174
  }
174
175
 
175
176
  /** @deprecated this is a legacy enum try to use TypeFile enum if you can or use both enum's */
@@ -651,12 +652,17 @@ export const TypeFileDetail: Record<number, {
651
652
  idGedFolder: GedFolder.JURIDICAL,
652
653
  helpText: 'Vos relevés bancaires personnels indiquant le montant d’épargne disponible, votre avis d\'imposition personnel'
653
654
  },
654
- [TypeFile.NOTARY_STATEMENT_AND_PURCHASE_DEED]: {
655
- typeFile: TypeFile.NOTARY_STATEMENT_AND_PURCHASE_DEED,
656
- name: 'Décompte de notaire et acte d\'achat',
655
+ [TypeFile.NOTARY_STATEMENT]: {
656
+ typeFile: TypeFile.NOTARY_STATEMENT,
657
+ name: 'Décompte de notaire',
657
658
  idGedFolder: GedFolder.JURIDICAL,
658
659
  helpText: 'Le décompte du notaire définitif doit détailler toutes les opérations intervenues'
659
660
  },
661
+ [TypeFile.PURCHASE_DEED]: {
662
+ typeFile: TypeFile.PURCHASE_DEED,
663
+ name: 'Acte d\'achat',
664
+ idGedFolder: GedFolder.JURIDICAL,
665
+ },
660
666
  [TypeFile.PV_RESULT_ALLOCATION]: {
661
667
  typeFile: TypeFile.PV_RESULT_ALLOCATION,
662
668
  name: 'PV d\'AG d\'affectation du résultat',
@@ -255,3 +255,44 @@ export interface IManageRetroactivityResponse {
255
255
  arr: number;
256
256
  }[];
257
257
  }
258
+
259
+ /**
260
+ * DTO pour gérer la rétroactivité batch de toutes les sociétés sans mouvements
261
+ */
262
+ export class IManageRetroactivityBatchRequest {
263
+ @ApiPropertyOptional({
264
+ description: 'Limite du nombre de sociétés à traiter',
265
+ example: 10,
266
+ })
267
+ @IsOptional()
268
+ @IsInt()
269
+ limit?: number = 10;
270
+
271
+ @ApiPropertyOptional({
272
+ description: 'Offset pour pagination',
273
+ example: 0,
274
+ })
275
+ @IsOptional()
276
+ @IsInt()
277
+ offset?: number = 0;
278
+
279
+ @ApiPropertyOptional({
280
+ description: 'Date de référence pour la rétroactivité',
281
+ })
282
+ @IsOptional()
283
+ @IsDate()
284
+ date?: Date;
285
+ }
286
+
287
+ /**
288
+ * Réponse pour la gestion batch de la rétroactivité
289
+ */
290
+ export interface IManageRetroactivityBatchResponse {
291
+ message: string;
292
+ totalSocietiesProcessed: number;
293
+ results: IManageRetroactivityResponse[];
294
+ errors: Array<{
295
+ idSociety: number;
296
+ error: string;
297
+ }>;
298
+ }
@@ -32,3 +32,17 @@ const exerciceNumber = (endDate: Date, exerciceList: IExercice[]): number => {
32
32
  };
33
33
 
34
34
  export { exerciceNumber, isExerciceAfterRecoveryDate };
35
+
36
+ /**
37
+ * Compute the real number of months in an exercice, inclusive of the last day.
38
+ * For accounting correctness, we include the end day in the diff.
39
+ *
40
+ * @param startDate - Exercice start date
41
+ * @param endDate - Exercice end date
42
+ * @returns Number of months in the exercice
43
+ */
44
+ export const getNbExerciceMonths = (startDate: Date, endDate: Date): number => {
45
+ const start = dayjs(startDate);
46
+ const end = dayjs(endDate).add(1, 'day');
47
+ return Math.round(end.diff(start, 'months', true));
48
+ };
@@ -462,12 +462,12 @@ export function getCerfa3310Century23Payload(
462
462
  ),
463
463
  ) + (payload?.vatControl?.deducted?.other ?? 0);
464
464
 
465
- const report =
465
+ const isNil = payload.isNil === true;
466
+ const report = isNil ? 0 :
466
467
  (payload.vat?.deductible?.toReport && payload.vat?.deductible?.toReport >= 0
467
468
  ? _round(payload.vat?.deductible?.toReport ?? 0)
468
469
  : (payload.previousVatDeclaration?.credit?.toReport ?? 0)) + (payload?.vatControl?.deducted?.reported ?? 0);
469
470
  const coefficient = _round(payload.vat?.deductible?.coefficient ?? 100, 2);
470
- const isNil = payload.isNil === true;
471
471
  const isHolidayDeposit = payload.isHolidayDeposit === true;
472
472
 
473
473
  const sumToAdd =
@@ -1048,7 +1048,7 @@ export function getCerfa3310Century23RegistrationFields(data: Cerfa3310_2023): A
1048
1048
  tag: 'Valeur',
1049
1049
  isMultiple: false,
1050
1050
  description:
1051
- "MOA Livraisons d'electricité, de gaz naturel, de chaleur ou de froid imposables en France, base hors taxe",
1051
+ 'MOA Livraisons d\'electricité, de gaz naturel, de chaleur ou de froid imposables en France, base hors taxe',
1052
1052
  value: data.taxedOperations.energyDelivery,
1053
1053
  },
1054
1054
  {
@@ -1056,7 +1056,7 @@ export function getCerfa3310Century23RegistrationFields(data: Cerfa3310_2023): A
1056
1056
  tag: 'Valeur',
1057
1057
  isMultiple: false,
1058
1058
  description:
1059
- "MOA Achats de biens ou de prestations de services réalisés auprès d'un assujetti non établi en France, art 283-1 du CGI",
1059
+ 'MOA Achats de biens ou de prestations de services réalisés auprès d\'un assujetti non établi en France, art 283-1 du CGI',
1060
1060
  value: data.taxedOperations.purchaseOfServicesNotInFrance,
1061
1061
  },
1062
1062
  {
@@ -1105,7 +1105,7 @@ export function getCerfa3310Century23RegistrationFields(data: Cerfa3310_2023): A
1105
1105
  key: 'DC',
1106
1106
  tag: 'Valeur',
1107
1107
  isMultiple: false,
1108
- description: "MOA Livraisons intracommunautaires à destination d'une personne assujettie 100077",
1108
+ description: 'MOA Livraisons intracommunautaires à destination d\'une personne assujettie 100077',
1109
1109
  value: data.untaxedOperations.intracommunityDelivery,
1110
1110
  },
1111
1111
  {
@@ -1127,7 +1127,7 @@ export function getCerfa3310Century23RegistrationFields(data: Cerfa3310_2023): A
1127
1127
  tag: 'Valeur',
1128
1128
  isMultiple: false,
1129
1129
  description:
1130
- "MOA Livraisons d'electricité, de gaz naturel, de chaleur ou de froid non imposables en France 100122",
1130
+ 'MOA Livraisons d\'electricité, de gaz naturel, de chaleur ou de froid non imposables en France 100122',
1131
1131
  value: data.untaxedOperations.energyDelivery,
1132
1132
  },
1133
1133
  {
@@ -1334,7 +1334,7 @@ export function getCerfa3310Century23RegistrationFields(data: Cerfa3310_2023): A
1334
1334
  tag: 'Valeur',
1335
1335
  isMultiple: false,
1336
1336
  description:
1337
- "PCD Pourcentage de déduction applicable pour la période s'il est différent de 100% Valeur entière et au plus 2 décimales",
1337
+ 'PCD Pourcentage de déduction applicable pour la période s\'il est différent de 100% Valeur entière et au plus 2 décimales',
1338
1338
  value:
1339
1339
  isDefined(data.vat.deductible.coefficient) && data.vat.deductible.coefficient !== 100
1340
1340
  ? data.vat.deductible.coefficient
@@ -1365,7 +1365,7 @@ export function getCerfa3310Century23RegistrationFields(data: Cerfa3310_2023): A
1365
1365
  key: 'HJ',
1366
1366
  tag: 'Valeur',
1367
1367
  isMultiple: false,
1368
- description: "CCITBX Mention membre d'un groupe Table TBX avec X pour sélectionné, CCI/7037 = CAV/1131 =",
1368
+ description: 'CCITBX Mention membre d\'un groupe Table TBX avec X pour sélectionné, CCI/7037 = CAV/1131 =',
1369
1369
  value: null,
1370
1370
  },
1371
1371
  {
@@ -1571,7 +1571,7 @@ export function getCerfa3310Century23RegistrationFields(data: Cerfa3310_2023): A
1571
1571
  tag: 'Valeur',
1572
1572
  isMultiple: false,
1573
1573
  description:
1574
- "CCITBX Mention de qualité de représentant d'un assujetti unique Table TBX avec X pour sélectionné, CCI/7037 = CAV/1131 =",
1574
+ 'CCITBX Mention de qualité de représentant d\'un assujetti unique Table TBX avec X pour sélectionné, CCI/7037 = CAV/1131 =',
1575
1575
  value: null,
1576
1576
  },
1577
1577
  {
@@ -1592,7 +1592,7 @@ export function getCerfa3310Century23RegistrationFields(data: Cerfa3310_2023): A
1592
1592
  key: 'MD',
1593
1593
  tag: 'Valeur',
1594
1594
  isMultiple: false,
1595
- description: "MOA Retenue de TVA sur droits d'auteur taxe due",
1595
+ description: 'MOA Retenue de TVA sur droits d\'auteur taxe due',
1596
1596
  value: data.vat.otherRate.author.tax,
1597
1597
  },
1598
1598
  {
@@ -1613,7 +1613,7 @@ export function getCerfa3310Century23RegistrationFields(data: Cerfa3310_2023): A
1613
1613
  key: 'MG',
1614
1614
  tag: 'Valeur',
1615
1615
  isMultiple: false,
1616
- description: "MOA Retenue de TVA sur droits d'auteur base HT",
1616
+ description: 'MOA Retenue de TVA sur droits d\'auteur base HT',
1617
1617
  value: data.vat.otherRate.oldRate.base,
1618
1618
  },
1619
1619
  {
@@ -1799,12 +1799,12 @@ export const cerfa3310Century23Fields: CerfaPayloadForm[] = [
1799
1799
  type: 'number',
1800
1800
  },
1801
1801
  {
1802
- label: "B3 - Achats d'electricité, de gaz naturel, de chaleur ou de froid imposables en France",
1802
+ label: 'B3 - Achats d\'electricité, de gaz naturel, de chaleur ou de froid imposables en France',
1803
1803
  key: 'taxedOperations.energyDelivery',
1804
1804
  type: 'number',
1805
1805
  },
1806
1806
  {
1807
- label: "B4 - Achats de biens ou de prestations de services réalisés auprès d'un assujetti non établi en France",
1807
+ label: 'B4 - Achats de biens ou de prestations de services réalisés auprès d\'un assujetti non établi en France',
1808
1808
  key: 'taxedOperations.regularizations',
1809
1809
  type: 'number',
1810
1810
  },
@@ -1834,7 +1834,7 @@ export const cerfa3310Century23Fields: CerfaPayloadForm[] = [
1834
1834
  type: 'number',
1835
1835
  },
1836
1836
  {
1837
- label: "F3 - Livraisons d'électricité, de gaz naturel, de chaleur ou de froid non imposables en France",
1837
+ label: 'F3 - Livraisons d\'électricité, de gaz naturel, de chaleur ou de froid non imposables en France',
1838
1838
  key: 'untaxedOperations.energyDelivery',
1839
1839
  type: 'number',
1840
1840
  },
@@ -1864,7 +1864,7 @@ export const cerfa3310Century23Fields: CerfaPayloadForm[] = [
1864
1864
  type: 'number',
1865
1865
  },
1866
1866
  {
1867
- label: "F9 - Opérations internes réalisées entre membres d'un assujetti unique",
1867
+ label: 'F9 - Opérations internes réalisées entre membres d\'un assujetti unique',
1868
1868
  key: 'untaxedOperations.internalUniq',
1869
1869
  type: 'number',
1870
1870
  },
@@ -1951,7 +1951,7 @@ export const cerfa3310Century23Fields: CerfaPayloadForm[] = [
1951
1951
  type: 'number',
1952
1952
  },
1953
1953
  {
1954
- label: "29 - Taxes assimilées calculées sur l'annexe n° 3310 A",
1954
+ label: '29 - Taxes assimilées calculées sur l\'annexe n° 3310 A',
1955
1955
  key: 'credit.assimiledTaxes',
1956
1956
  type: 'number',
1957
1957
  },
@@ -461,13 +461,13 @@ export function getCerfa3310Century24Payload(
461
461
  ),
462
462
  ) + (payload?.vatControl?.deducted?.other ?? 0);
463
463
 
464
- const report =
464
+ const isNil = payload.isNil === true;
465
+ const report = isNil ? 0 :
465
466
  (isDefined(payload.vat?.deductible?.toReport) && payload.vat?.deductible?.toReport >= 0
466
467
  ? _round(payload.vat?.deductible?.toReport ?? 0)
467
468
  : (payload.previousVatDeclaration?.credit?.toReport ?? 0)) + (payload?.vatControl?.deducted?.reported ?? 0);
468
- const coefficient = _round(payload.vat?.deductible?.coefficient ?? 100, 2);
469
- const isNil = payload.isNil === true;
470
- const isHolidayDeposit = payload.isHolidayDeposit === true;
469
+ const coefficient = _round(payload.vat?.deductible?.coefficient ?? 100, 2);
470
+ const isHolidayDeposit = payload.isHolidayDeposit === true;
471
471
 
472
472
  const sumToAdd =
473
473
  setZeroIfIsNegative(
@@ -1053,7 +1053,7 @@ export function getCerfa3310Century24RegistrationFields(data: Cerfa3310_2024): A
1053
1053
  tag: 'Valeur',
1054
1054
  isMultiple: false,
1055
1055
  description:
1056
- "MOA Livraisons d'electricité, de gaz naturel, de chaleur ou de froid imposables en France, base hors taxe",
1056
+ 'MOA Livraisons d\'electricité, de gaz naturel, de chaleur ou de froid imposables en France, base hors taxe',
1057
1057
  value: data.taxedOperations.energyDelivery,
1058
1058
  },
1059
1059
  {
@@ -1061,7 +1061,7 @@ export function getCerfa3310Century24RegistrationFields(data: Cerfa3310_2024): A
1061
1061
  tag: 'Valeur',
1062
1062
  isMultiple: false,
1063
1063
  description:
1064
- "MOA Achats de biens ou de prestations de services réalisés auprès d'un assujetti non établi en France, art 283-1 du CGI",
1064
+ 'MOA Achats de biens ou de prestations de services réalisés auprès d\'un assujetti non établi en France, art 283-1 du CGI',
1065
1065
  value: data.taxedOperations.purchaseOfServicesNotInFrance,
1066
1066
  },
1067
1067
  {
@@ -1124,7 +1124,7 @@ export function getCerfa3310Century24RegistrationFields(data: Cerfa3310_2024): A
1124
1124
  key: 'DC',
1125
1125
  tag: 'Valeur',
1126
1126
  isMultiple: false,
1127
- description: "MOA Livraisons intracommunautaires à destination d'une personne assujettie 100077",
1127
+ description: 'MOA Livraisons intracommunautaires à destination d\'une personne assujettie 100077',
1128
1128
  value: data.untaxedOperations.intracommunityDelivery,
1129
1129
  },
1130
1130
  {
@@ -1146,7 +1146,7 @@ export function getCerfa3310Century24RegistrationFields(data: Cerfa3310_2024): A
1146
1146
  tag: 'Valeur',
1147
1147
  isMultiple: false,
1148
1148
  description:
1149
- "MOA Livraisons d'electricité, de gaz naturel, de chaleur ou de froid non imposables en France 100122",
1149
+ 'MOA Livraisons d\'electricité, de gaz naturel, de chaleur ou de froid non imposables en France 100122',
1150
1150
  value: data.untaxedOperations.energyDelivery,
1151
1151
  },
1152
1152
  {
@@ -1353,7 +1353,7 @@ export function getCerfa3310Century24RegistrationFields(data: Cerfa3310_2024): A
1353
1353
  tag: 'Valeur',
1354
1354
  isMultiple: false,
1355
1355
  description:
1356
- "PCD Pourcentage de déduction applicable pour la période s'il est différent de 100% Valeur entière et au plus 2 décimales",
1356
+ 'PCD Pourcentage de déduction applicable pour la période s\'il est différent de 100% Valeur entière et au plus 2 décimales',
1357
1357
  value:
1358
1358
  isDefined(data.vat.deductible.coefficient) && data.vat.deductible.coefficient !== 100
1359
1359
  ? data.vat.deductible.coefficient
@@ -1384,7 +1384,7 @@ export function getCerfa3310Century24RegistrationFields(data: Cerfa3310_2024): A
1384
1384
  key: 'HJ',
1385
1385
  tag: 'Valeur',
1386
1386
  isMultiple: false,
1387
- description: "CCITBX Mention membre d'un groupe Table TBX avec X pour sélectionné, CCI/7037 = CAV/1131 =",
1387
+ description: 'CCITBX Mention membre d\'un groupe Table TBX avec X pour sélectionné, CCI/7037 = CAV/1131 =',
1388
1388
  value: null,
1389
1389
  },
1390
1390
  {
@@ -1591,7 +1591,7 @@ export function getCerfa3310Century24RegistrationFields(data: Cerfa3310_2024): A
1591
1591
  tag: 'Valeur',
1592
1592
  isMultiple: false,
1593
1593
  description:
1594
- "CCITBX Mention de qualité de représentant d'un assujetti unique Table TBX avec X pour sélectionné, CCI/7037 = CAV/1131 =",
1594
+ 'CCITBX Mention de qualité de représentant d\'un assujetti unique Table TBX avec X pour sélectionné, CCI/7037 = CAV/1131 =',
1595
1595
  value: null,
1596
1596
  },
1597
1597
  {
@@ -1612,7 +1612,7 @@ export function getCerfa3310Century24RegistrationFields(data: Cerfa3310_2024): A
1612
1612
  key: 'MD',
1613
1613
  tag: 'Valeur',
1614
1614
  isMultiple: false,
1615
- description: "MOA Retenue de TVA sur droits d'auteur taxe due",
1615
+ description: 'MOA Retenue de TVA sur droits d\'auteur taxe due',
1616
1616
  value: data.vat.otherRate.author.tax,
1617
1617
  },
1618
1618
  {
@@ -1633,7 +1633,7 @@ export function getCerfa3310Century24RegistrationFields(data: Cerfa3310_2024): A
1633
1633
  key: 'MG',
1634
1634
  tag: 'Valeur',
1635
1635
  isMultiple: false,
1636
- description: "MOA Retenue de TVA sur droits d'auteur base HT",
1636
+ description: 'MOA Retenue de TVA sur droits d\'auteur base HT',
1637
1637
  value: data.vat.otherRate.oldRate.base,
1638
1638
  },
1639
1639
  {
@@ -1820,12 +1820,12 @@ export const cerfa3310Century24Fields: CerfaPayloadForm[] = [
1820
1820
  type: 'number',
1821
1821
  },
1822
1822
  {
1823
- label: "B3 - Achats d'electricité, de gaz naturel, de chaleur ou de froid imposables en France",
1823
+ label: 'B3 - Achats d\'electricité, de gaz naturel, de chaleur ou de froid imposables en France',
1824
1824
  key: 'taxedOperations.energyDelivery',
1825
1825
  type: 'number',
1826
1826
  },
1827
1827
  {
1828
- label: "B4 - Achats de biens ou de prestations de services réalisés auprès d'un assujetti non établi en France",
1828
+ label: 'B4 - Achats de biens ou de prestations de services réalisés auprès d\'un assujetti non établi en France',
1829
1829
  key: 'taxedOperations.regularizations',
1830
1830
  type: 'number',
1831
1831
  },
@@ -1855,7 +1855,7 @@ export const cerfa3310Century24Fields: CerfaPayloadForm[] = [
1855
1855
  type: 'number',
1856
1856
  },
1857
1857
  {
1858
- label: "F3 - Livraisons d'électricité, de gaz naturel, de chaleur ou de froid non imposables en France",
1858
+ label: 'F3 - Livraisons d\'électricité, de gaz naturel, de chaleur ou de froid non imposables en France',
1859
1859
  key: 'untaxedOperations.energyDelivery',
1860
1860
  type: 'number',
1861
1861
  },
@@ -1885,7 +1885,7 @@ export const cerfa3310Century24Fields: CerfaPayloadForm[] = [
1885
1885
  type: 'number',
1886
1886
  },
1887
1887
  {
1888
- label: "F9 - Opérations internes réalisées entre membres d'un assujetti unique",
1888
+ label: 'F9 - Opérations internes réalisées entre membres d\'un assujetti unique',
1889
1889
  key: 'untaxedOperations.internalUniq',
1890
1890
  type: 'number',
1891
1891
  },
@@ -1972,7 +1972,7 @@ export const cerfa3310Century24Fields: CerfaPayloadForm[] = [
1972
1972
  type: 'number',
1973
1973
  },
1974
1974
  {
1975
- label: "29 - Taxes assimilées calculées sur l'annexe n° 3310 A",
1975
+ label: '29 - Taxes assimilées calculées sur l\'annexe n° 3310 A',
1976
1976
  key: 'credit.assimiledTaxes',
1977
1977
  type: 'number',
1978
1978
  },