@silexpert/core 1.3.136 → 1.3.137

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 (50) hide show
  1. package/dist/cjs/api/resources/Payment.d.ts +3 -2
  2. package/dist/cjs/api/resources/Payment.d.ts.map +1 -1
  3. package/dist/cjs/api/resources/Payment.js +3 -0
  4. package/dist/cjs/api/resources/Payment.js.map +1 -1
  5. package/dist/cjs/types/Interface/api/payment/Params.d.ts +3 -0
  6. package/dist/cjs/types/Interface/api/payment/Params.d.ts.map +1 -1
  7. package/dist/cjs/types/Interface/api/payment/Params.js +9 -1
  8. package/dist/cjs/types/Interface/api/payment/Params.js.map +1 -1
  9. package/dist/cjs/types/Interface/api/payment/Util.d.ts +0 -2
  10. package/dist/cjs/types/Interface/api/payment/Util.d.ts.map +1 -1
  11. package/dist/cjs/types/Interface/api/payment/Util.js.map +1 -1
  12. package/dist/cjs/types/Interface/models/IPrestation.d.ts.map +1 -1
  13. package/dist/cjs/types/Interface/models/IPrestation.js.map +1 -1
  14. package/dist/cjs/utils/payment.js +54 -50
  15. package/dist/cjs/utils/payment.js.map +1 -1
  16. package/dist/cjs/utils/prestation.d.ts +1 -0
  17. package/dist/cjs/utils/prestation.d.ts.map +1 -1
  18. package/dist/cjs/utils/prestation.js +1 -0
  19. package/dist/cjs/utils/prestation.js.map +1 -1
  20. package/dist/cjs/utils/tests/payment.spec.js +33 -33
  21. package/dist/cjs/utils/tests/payment.spec.js.map +1 -1
  22. package/dist/mjs/api/resources/Payment.d.ts +3 -2
  23. package/dist/mjs/api/resources/Payment.d.ts.map +1 -1
  24. package/dist/mjs/api/resources/Payment.js +3 -0
  25. package/dist/mjs/api/resources/Payment.js.map +1 -1
  26. package/dist/mjs/types/Interface/api/payment/Params.d.ts +3 -0
  27. package/dist/mjs/types/Interface/api/payment/Params.d.ts.map +1 -1
  28. package/dist/mjs/types/Interface/api/payment/Params.js +8 -0
  29. package/dist/mjs/types/Interface/api/payment/Params.js.map +1 -1
  30. package/dist/mjs/types/Interface/api/payment/Util.d.ts +0 -2
  31. package/dist/mjs/types/Interface/api/payment/Util.d.ts.map +1 -1
  32. package/dist/mjs/types/Interface/api/payment/Util.js.map +1 -1
  33. package/dist/mjs/types/Interface/models/IPrestation.d.ts.map +1 -1
  34. package/dist/mjs/types/Interface/models/IPrestation.js.map +1 -1
  35. package/dist/mjs/utils/payment.js +52 -48
  36. package/dist/mjs/utils/payment.js.map +1 -1
  37. package/dist/mjs/utils/prestation.d.ts +1 -0
  38. package/dist/mjs/utils/prestation.d.ts.map +1 -1
  39. package/dist/mjs/utils/prestation.js +1 -0
  40. package/dist/mjs/utils/prestation.js.map +1 -1
  41. package/dist/mjs/utils/tests/payment.spec.js +34 -34
  42. package/dist/mjs/utils/tests/payment.spec.js.map +1 -1
  43. package/package.json +1 -1
  44. package/ts/api/resources/Payment.ts +6 -1
  45. package/ts/types/Interface/api/payment/Params.ts +5 -0
  46. package/ts/types/Interface/api/payment/Util.ts +2 -2
  47. package/ts/types/Interface/models/IPrestation.ts +1 -0
  48. package/ts/utils/payment.ts +49 -49
  49. package/ts/utils/prestation.ts +1 -0
  50. package/ts/utils/tests/payment.spec.ts +34 -34
@@ -1 +1 @@
1
- {"version":3,"file":"prestation.js","sourceRoot":"","sources":["../../../ts/utils/prestation.ts"],"names":[],"mappings":"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","sourcesContent":["import { IExercice, IPrestation, IPrestationList } from '../types';\nimport { Vat } from '../types/Enum/Vat';\nimport { getTaxesIncludedAmount } from './vat/utils';\nimport { intersection } from './noLodash';\nimport {\n ClementineSubscriptionAccountancySoftwarePrestations,\n PrestationDetail,\n PrestationType,\n} from '../types/Enum/PrestationType';\nimport { LegalFormTypeEnum } from '../types/Enum/LegalForm';\nimport { PrestationOptionType, PrestationOption } from '../types/Enum/PrestationOption';\nimport { PriceGridClementine } from '../types/Enum/PriceGridClementine';\nimport { PriceGridPourcentage } from '../types/Enum/PriceGridPourcentage';\nimport { PriceGridLegalstart } from '../types/Enum/PriceGridLegalstart';\nimport { PriceGridStatutsExpress } from '../types/Enum/PriceGridStatutsExpress';\nimport { ClosingType } from '../types/Enum/ClosingType';\nimport { getBrandNameByNodeEnv } from './brands';\nimport * as dayjs from 'dayjs';\nimport { exerciceNumber } from './exercice';\n\ntype priceGridBrand = {\n idTypeBrand: number;\n price: priceGrid[];\n};\n\ntype priceGrid = {\n idPrestationList: number[];\n priceWithTaxesIncluded: boolean;\n applicationCost: number;\n monthlyNbr?: monthlyNbr[];\n exerciceNbr?: exerciceNbr[];\n turnoverCreatedYear?: turnover[];\n turnoverPastYear?: turnover[];\n turnoverMonthly?: turnover[];\n turnoverYearly?: turnover[];\n employee?: employee[];\n partner?: employee[];\n properties?: propertie[];\n vatRegimeMonthly?: vatRegime[];\n vatRegimeYearly?: vatRegime[];\n taxSystem?: taxSystem[];\n legalForm?: legalForm[];\n employeeByLegalForm?: employeeByLegalForm[];\n};\n\ntype monthlyNbr = {\n minimum: number;\n maximum: number;\n value: number;\n closingType: number[];\n};\n\ntype exerciceNbr = {\n minimum: number;\n maximum: number;\n price: number;\n};\n\ntype turnover = {\n turnoverValue: number;\n price: number;\n};\n\ntype legalForm = {\n idLegalForm: number;\n price: number;\n};\n\ntype employee = {\n amountMinimum: number;\n amountMaximum: number;\n price: number;\n};\n\ntype employeeByLegalForm = {\n idLegalForm: number;\n price: number;\n};\n\ntype propertie = {\n amount: number;\n price: number;\n};\n\ntype vatRegime = {\n type: number;\n price: number;\n};\n\ntype taxSystem = {\n id: number;\n price: number;\n};\n\nconst isOtherAccountingMissions = (idPrestationList: number): boolean =>\n [\n PrestationType.PREVISIONNEL,\n PrestationType.BILAN_INTERMEDIAIRE,\n PrestationType.AVANCE_OU_ABANDON_COMPTE_COURANT_ASSOCIE,\n PrestationType.AUTRE_MISSION_COMPTABLE,\n PrestationType.TVS,\n PrestationType.ETUDE_FISCALE,\n PrestationType.BILAN_PREVISIONNEL,\n ].includes(idPrestationList);\n\nconst isOtherJuridicalMissions = (isJuridique: boolean, isCatalog: boolean, idPrestationList: number): boolean =>\n idPrestationList !== PrestationType.GESTION_JURIDIQUE && isCatalog && isJuridique;\n\nconst isOtherSocialMission = (idPrestationList: number): boolean =>\n idPrestationList === PrestationType.AUTRE_MISSION_SOCIALE_HORS_PAIE;\n\nconst isAdditionalPresta = (hidden: boolean, isCatalog: boolean): boolean => !hidden && isCatalog;\n\nconst isOnlyPrevi = (idPrestationList: number[]): boolean =>\n !idPrestationList.filter(\n (idPL: number) =>\n ![PrestationType.PREVISIONNEL, PrestationType.BILAN_PREVISIONNEL, PrestationType.PV_AG].includes(idPL),\n ).length;\n\nconst isOnlySocial = (idPrestationList: number[]): boolean =>\n !idPrestationList.filter((idPL: number) => ![PrestationType.FRUCTUPAIE, PrestationType.SOCIAL].includes(idPL)).length;\n\nconst isOnlyJuridic = (idPrestationList: number[]): boolean =>\n !idPrestationList.filter((idPL: number) => ![PrestationType.GESTION_JURIDIQUE].includes(idPL)).length;\n\nconst isCreation = (idPrestationList: number[]): boolean =>\n !!intersection(idPrestationList, [\n PrestationType.CREATION_SOCIETE,\n PrestationType.STATUTS_FREE,\n PrestationType.STATUTS_OPTION_1,\n PrestationType.STATUTS_OPTION_2,\n PrestationType.STATUTS_OPTION_AE,\n ]).length;\n\nconst isFromStatutsExpress = (idPrestationList: number[]): boolean =>\n !idPrestationList.filter(\n (idPL: number) =>\n ![\n PrestationType.STATUTS_FREE,\n PrestationType.STATUTS_OPTION_1,\n PrestationType.STATUTS_OPTION_2,\n PrestationType.STATUTS_OPTION_AE,\n ].includes(idPL),\n ).length;\n\nconst isExpress = (idPrestationList: number): boolean => {\n const prestationDetailValues = Object.values(PrestationDetail) as any;\n const prestaList = prestationDetailValues.find((pr: any) => pr.id === idPrestationList);\n return !!prestaList.isBack;\n};\n\nconst isConsultingHour = (idPrestationList: number[]): boolean =>\n !!intersection(idPrestationList, [PrestationType.CONSULTING_HOUR]).length;\n\nconst isSoftwarePrestation = (idPrestationList: number[]): boolean =>\n !!intersection(idPrestationList, [PrestationType.STEERING, PrestationType.VAT, PrestationType.BALANCESHEET])\n .length; /* &&\n idPrestationList.length === 1 */ // Commenté car si un client résilie un software pour un utre software, condition non prise en charge\n\nconst calculateScoringOfPrestation = (\n idPrestationType: PrestationType,\n prestations: IPrestation[],\n currentIdPrestation: number,\n): number => {\n const prestationsSignedPaid = prestations.filter(\n (prestation) =>\n prestation.paid &&\n prestation.signed &&\n prestation.terminationList === null &&\n prestation.id !== currentIdPrestation,\n );\n\n const currentPrestation = prestations.find(\n (el) => el.idPrestationList === idPrestationType && el.terminationList === null,\n );\n\n // SPECIAL CASE:\n // If current prestation is a software prestation\n // and the current prestation is an annual payment, return 0 point\n if (\n isSoftwarePrestation([idPrestationType]) &&\n currentPrestation?.exercices?.length &&\n //@ts-expect-error\n (currentPrestation?.exercices[0].ExercicePrestation?.totalPrestation < 80 ||\n //@ts-expect-error\n currentPrestation?.exercices[0].ExercicePrestation?.monthNumber !== 1)\n ) {\n return 0;\n }\n\n // Get the list of prestations that are half price\n const prestationHalfPriceList = Object.values(PrestationDetail).filter(\n (p) =>\n p.isComptable &&\n !p.isCatalog &&\n p.id &&\n ![PrestationType.BALANCESHEET, PrestationType.VAT, PrestationType.STEERING].includes(p.id),\n );\n const prestationHalfPriceIds = prestationHalfPriceList.map((t) => t.id);\n\n // Get the number of points for the new prestation\n const prestaDetails = Object.values(PrestationDetail).find((prestaDetail) => prestaDetail.id === idPrestationType);\n let numberPoint = prestaDetails?.point || 0;\n\n // For each back exercices, add 100 points\n // -> for new prestations only\n if (\n [\n PrestationType.EXPERTISE,\n PrestationType.SUPPORT,\n PrestationType.PREMIUM,\n PrestationType.CUSTOM_MADE,\n PrestationType.GESTION_IMMO,\n PrestationType.EI,\n PrestationType.MICRO,\n ].includes(idPrestationType) &&\n currentPrestation?.exercices?.length &&\n currentPrestation?.exercices.find((el) => el.isBack)\n ) {\n numberPoint += (currentPrestation?.exercices.filter((el) => el.isBack).length ?? 1) * 100;\n }\n\n // Get list of prestations that are already done\n // and check if one of them is in the list of prestations that are half price\n const prestationsExistIds = prestationsSignedPaid.map((prestation) => prestation.idPrestationList);\n const prestationHalfPriceAlreadyDoneIds = prestationsExistIds.filter((id) => prestationHalfPriceIds.includes(id));\n\n // If one of the prestations already done is in the list of prestations that are half price and if the idPrestationType is in prestationHalfPriceIds, return 50% of points\n if (prestationHalfPriceAlreadyDoneIds.length && prestationHalfPriceIds.includes(idPrestationType))\n return Math.floor(numberPoint * 0.3);\n\n return numberPoint;\n};\n\nexport const calculateMonthlyAmount = (params: {\n monthlyPrice: number;\n monthNumber: number;\n monthOffer: number;\n idVatForInternalInvoicing?: number | null;\n returnTaxesIncludedValue?: boolean;\n}): number => {\n const { monthlyPrice, monthNumber, monthOffer, idVatForInternalInvoicing, returnTaxesIncludedValue = true } = params;\n\n if (!idVatForInternalInvoicing && returnTaxesIncludedValue)\n throw new Error('Taux de TVA manquant pour calculer le montant TTC');\n\n if (!idVatForInternalInvoicing || !returnTaxesIncludedValue) return monthlyPrice * (monthNumber - monthOffer);\n\n return (\n monthlyPrice *\n (monthNumber - monthOffer) *\n (1 + Object.values(Vat).find((el) => el.id === idVatForInternalInvoicing).value / 100)\n );\n};\n\nexport const getPriceGrid = (idTypeBrand: number, idPrestationList: number): priceGrid | undefined => {\n let currentBrandPriceGrid: priceGridBrand | undefined;\n let currentPriceGrid: priceGrid | undefined;\n\n const currentEnvName = getBrandNameByNodeEnv(process.env.NODE_ENV);\n const listEnvEnum = {\n PriceGridClementine,\n PriceGridPourcentage,\n PriceGridLegalstart,\n PriceGridStatutsExpress,\n };\n // @ts-ignore\n const currentPriceGridFile: priceGridBrand[] = listEnvEnum[`PriceGrid${currentEnvName}`];\n if (currentPriceGridFile)\n currentBrandPriceGrid = currentPriceGridFile.find(\n (priceGrid: priceGridBrand) => priceGrid.idTypeBrand === idTypeBrand,\n );\n if (currentBrandPriceGrid)\n currentPriceGrid = currentBrandPriceGrid?.price.find((price: priceGrid) =>\n price.idPrestationList.includes(idPrestationList),\n );\n return currentPriceGrid;\n};\n\nconst calculatePrestationPriceWithPriceGrid = (\n idPrestationList: number,\n endDate: string,\n NbrMonth: number /* Nbr de mois dans l'exercice */,\n turnover: number,\n rentsNumber: number,\n employeesNumber: number,\n associatesNumber: number,\n idTypeBrand: number,\n idVatRegime: number,\n pastBalanceSheet: boolean,\n isYearly: boolean /* Prestation annuel ou mensuel */,\n totalMonth: number /* Nbr de moiis offer */,\n idTaxSystem: number,\n idLegalForm: number,\n exerciceNbr: number,\n balanceSheetOffered: number = 0 /* montant du bilan offer */,\n): {\n totalPrestation: number;\n reduceMonth: number;\n canBeCreated: boolean;\n monthNbr: number;\n price: number;\n} => {\n let totalPrestation: number = 0;\n let reduceMonth: number = 0;\n let monthNbr: number = NbrMonth;\n let yearlyPrice: number | undefined;\n let finalMonthlyPrice: number | undefined;\n const canBeCreated: boolean = true;\n let recalculateMonthly: boolean = false;\n\n /* Récupération de la grille tarifaire */\n const currentPriceGrid: priceGrid | undefined = getPriceGrid(idTypeBrand, idPrestationList);\n\n if (currentPriceGrid) {\n let monthlyPrice: number | undefined;\n let vatRegimePrice: number | undefined;\n let taxSystemPrice: number | undefined;\n\n /* Gestion du régime de TVA */\n if (currentPriceGrid.vatRegimeMonthly && !isYearly)\n vatRegimePrice = currentPriceGrid.vatRegimeMonthly?.find((regime) => regime.type === idVatRegime)?.price;\n else if (currentPriceGrid.vatRegimeYearly && isYearly)\n vatRegimePrice = currentPriceGrid.vatRegimeYearly?.find((regime) => regime.type === idVatRegime)?.price;\n\n /* Gestion du Régime d'imposition */\n if (currentPriceGrid.taxSystem && idTaxSystem)\n taxSystemPrice = currentPriceGrid.taxSystem?.find((tax) => tax.id === idTaxSystem)?.price;\n\n /* Gestion des montants */\n /* Récupératioin des prix mensuels */\n if (currentPriceGrid.turnoverMonthly && !isYearly)\n monthlyPrice = currentPriceGrid.turnoverMonthly?.find((turn) => turnover < turn.turnoverValue)?.price;\n else if (currentPriceGrid.properties)\n monthlyPrice = currentPriceGrid.properties?.find((property) => property.amount === rentsNumber)?.price;\n else if (currentPriceGrid.employee) {\n monthlyPrice = currentPriceGrid.employee?.find(\n (emp) => emp.amountMinimum <= employeesNumber && emp.amountMaximum >= employeesNumber,\n )?.price;\n monthlyPrice = monthlyPrice ? monthlyPrice * employeesNumber : 0;\n } else if (currentPriceGrid.employeeByLegalForm) {\n monthlyPrice = currentPriceGrid.employeeByLegalForm?.find((emp) => emp.idLegalForm === idLegalForm)?.price;\n monthlyPrice = monthlyPrice ? monthlyPrice * employeesNumber : 0;\n /* Récupération des prix annuels */\n } else if (currentPriceGrid.turnoverYearly && isYearly)\n yearlyPrice = currentPriceGrid.turnoverYearly?.find((turn) => turnover < turn.turnoverValue)?.price;\n else if (!pastBalanceSheet && currentPriceGrid.turnoverCreatedYear)\n yearlyPrice = currentPriceGrid.turnoverCreatedYear?.find((turn) => turnover < turn.turnoverValue)?.price;\n else if (pastBalanceSheet && currentPriceGrid.turnoverPastYear)\n yearlyPrice = currentPriceGrid.turnoverPastYear?.find((turn) => turnover < turn.turnoverValue)?.price;\n else if (currentPriceGrid.partner)\n yearlyPrice = currentPriceGrid.partner?.find(\n (part) => part.amountMinimum <= associatesNumber && part.amountMaximum >= associatesNumber,\n )?.price;\n else if (currentPriceGrid.legalForm)\n yearlyPrice = currentPriceGrid.legalForm?.find((form) => form.idLegalForm === idLegalForm)?.price;\n else if (currentPriceGrid.exerciceNbr)\n yearlyPrice = currentPriceGrid.exerciceNbr?.find(\n (el) => el.minimum <= exerciceNbr && exerciceNbr <= el.maximum,\n )?.price;\n /* Calcul du prix mensuel final */\n finalMonthlyPrice =\n (monthlyPrice ? monthlyPrice : 0) + (vatRegimePrice ? vatRegimePrice : 0) + (taxSystemPrice ? taxSystemPrice : 0);\n\n /* Gestion des mois */\n let cloturedPast: boolean = false;\n if (dayjs(endDate, 'YYYY-MM-DD').subtract(15, 'day').isBefore(dayjs())) cloturedPast = true;\n let monthlyNbrList: monthlyNbr[] | undefined;\n let monthlyNbr: monthlyNbr | undefined;\n if (currentPriceGrid.monthlyNbr) {\n monthlyNbrList = currentPriceGrid.monthlyNbr?.filter((el) =>\n el.closingType.includes(cloturedPast ? ClosingType.OUTDATED : ClosingType.IN_PROGRESS),\n );\n if (monthlyNbrList) {\n monthlyNbr = monthlyNbrList.find((el) => el.minimum <= monthNbr && monthNbr <= el.maximum);\n if (monthlyNbr) {\n monthNbr = monthlyNbr.value;\n }\n }\n }\n\n /* Gestion des offres, mois offer */\n if (totalMonth > 0) {\n if (isYearly) {\n yearlyPrice = (10 - totalMonth) * (yearlyPrice ? yearlyPrice / 10 : 0);\n } else {\n monthNbr = monthNbr - totalMonth;\n }\n }\n\n /* Calcul du nombre de mois soustraient */\n reduceMonth = monthNbr === NbrMonth - totalMonth ? totalMonth : 0;\n\n /* Gestion des offres, bilan offer */\n if (balanceSheetOffered > 0) {\n yearlyPrice = undefined;\n recalculateMonthly = false;\n finalMonthlyPrice = balanceSheetOffered / monthNbr;\n }\n\n /* Prix Final */\n totalPrestation = yearlyPrice ? yearlyPrice : finalMonthlyPrice * monthNbr;\n }\n return {\n totalPrestation,\n reduceMonth,\n canBeCreated,\n monthNbr: yearlyPrice ? 0 : recalculateMonthly ? NbrMonth : monthNbr,\n price: yearlyPrice\n ? yearlyPrice\n : recalculateMonthly\n ? totalPrestation / monthNbr\n : finalMonthlyPrice\n ? finalMonthlyPrice\n : 0,\n };\n};\n\nconst calculatePrestationPriceWithPrestationList = (prestationList: IPrestationList): number => {\n let totalPrestation: number = 0;\n\n totalPrestation = prestationList?.price || 0;\n\n return totalPrestation;\n};\n\n/**\n * From idLegalForm, get application fees amount (without taxes included if no idVat passed, or with taxes included calculated by given idVat)\n * @param idLegalForm\n * @param idVat\n * @returns amount of application fees, without taxes included\n */\nconst getApplicationFeesAmount = (idLegalForm: number, idVat?: number) => {\n let applicationFeesAmount = 50;\n if (idLegalForm === LegalFormTypeEnum.SCI) applicationFeesAmount = 150;\n\n //Sans tva, on envoie le montant HT\n if (!idVat) return applicationFeesAmount;\n\n //Avec tva, on envoie le montant TTC\n return getTaxesIncludedAmount(applicationFeesAmount, idVat);\n};\n\nconst calculatePrestationPrice = (\n idPrestationList: number,\n prestationList: IPrestationList,\n endDate: string,\n NbrMonth: number /* Nbr de mois dans l'exercice */,\n turnover: number,\n rentsNumber: number,\n employeesNumber: number,\n associatesNumber: number,\n idTypeBrand: number,\n idVatRegime: number,\n pastBalanceSheet: boolean,\n optionsList: number[],\n totalPercentage: number /* total pourcentage offer (%) */,\n totalAmount: number /* total montant offer (€) */,\n totalMonth: number /* total mois offer (mois) */,\n isWithApplicationFees: boolean /* frais de dossier */,\n idTaxSystem: number,\n idLegalForm: number,\n isYearly: boolean = false /* prestation annuel ou mensuel */,\n isSubPrestation: boolean = false,\n balanceSheetOffered: number = 0,\n exerciceList: IExercice[] = [],\n): {\n totalPrestation: number;\n reduceMonth: number;\n canBeCreated: boolean;\n calculDetail: string;\n monthlyPrice: string;\n price: number;\n} => {\n let totalPrestation: number = 0;\n let reduceMonth: number = 0;\n let canBeCreated: boolean = true;\n let monthNbr: number = 0;\n let price: number = 0;\n let totalWithReduce: {\n totalPrestation: number;\n reduceMonth: number;\n canBeCreated: boolean;\n monthNbr: number;\n price: number;\n } = { totalPrestation: 0, reduceMonth: 0, canBeCreated: true, monthNbr: 0, price: 0 };\n\n /* Gestion du prix en fonction de la prestation */\n if (\n [\n PrestationType.COMPTA_PRO,\n PrestationType.COMPTA_PRO_EXPRESS,\n PrestationType.COMPTA_ENTREPRISE,\n PrestationType.COMPTA_ENTREPRISE_EXPRESS,\n PrestationType.COMPTA_SCI,\n PrestationType.COMPTA_SCI_EXPRESS,\n PrestationType.BILAN_PREVISIONNEL,\n PrestationType.COMPTA_PREMIUM,\n PrestationType.COMPTA_POURCENTAGE_PREMIUM,\n PrestationType.COMPTA_POURCENTAGE_PREMIUM_EXPRESS,\n PrestationType.COMPTA_POURCENTAGE,\n PrestationType.COMPTA_POURCENTAGE_EXPRESS,\n PrestationType.SOCIAL,\n PrestationType.GESTION_JURIDIQUE,\n PrestationType.COMPTA_PRO_COMPTASTART,\n PrestationType.COMPTA_PRO_COMPTASTART_EXPRESS,\n PrestationType.COMPTA_EI_KLEMS,\n PrestationType.COMPTA_EI_KLEMS_EXPRESS,\n PrestationType.COMPTA_MICRO_KLEMS,\n PrestationType.COMPTA_MICRO_KLEMS_EXPRESS,\n PrestationType.COMPTA_LOUEUR_MEUBLE_NON_PRO_KLEMS,\n PrestationType.COMPTA_LOUEUR_MEUBLE_NON_PRO_KLEMS_EXPRESS,\n PrestationType.STATUTS_OPTION_2,\n PrestationType.EXPERTISE,\n PrestationType.SUPPORT,\n PrestationType.PREMIUM,\n PrestationType.CUSTOM_MADE,\n PrestationType.EI,\n PrestationType.MICRO,\n PrestationType.GESTION_IMMO,\n ].includes(idPrestationList)\n ) {\n let exerciceNbr: number = 0;\n if (exerciceList.length) exerciceNbr = exerciceNumber(dayjs(endDate, 'YYYY-MM-DD').toDate(), exerciceList);\n totalWithReduce = calculatePrestationPriceWithPriceGrid(\n idPrestationList,\n endDate,\n NbrMonth,\n turnover,\n rentsNumber,\n employeesNumber,\n associatesNumber,\n idTypeBrand,\n idVatRegime,\n pastBalanceSheet,\n isYearly,\n totalMonth,\n idTaxSystem,\n idLegalForm,\n exerciceNbr,\n balanceSheetOffered,\n );\n totalPrestation = totalWithReduce.totalPrestation;\n reduceMonth = totalWithReduce.reduceMonth;\n canBeCreated = totalWithReduce.canBeCreated;\n monthNbr = totalWithReduce.monthNbr;\n price = totalWithReduce.price;\n } else {\n totalPrestation = calculatePrestationPriceWithPrestationList(prestationList);\n if ([PrestationType.CREATION_SOCIETE].includes(idPrestationList) && !isSubPrestation) {\n // totalPrestation += 50;\n // La création est offerte désormais\n // inutile d'ajouter les frais de greffe et d'annonce légale,\n // car ne compte pas dans le calcul pour les sales\n }\n }\n /* Gestion des offres */\n /* Offre montant offer */\n if (totalAmount > 0) totalPrestation = totalPrestation - totalAmount;\n /* Offre pourcentage offer */\n if (totalPercentage > 0) totalPrestation = totalPrestation - totalPrestation * (totalPercentage / 100);\n /* Gesstioin du prix minimum acceptable pour la prestation */\n if (prestationList && prestationList.minimumPrice && totalPrestation < prestationList.minimumPrice)\n totalPrestation = prestationList.minimumPrice;\n /* Gestion des options */\n let OptionTotalPrice: number = 0;\n if (optionsList.length) {\n optionsList.forEach((optionId) => {\n const optionPrice: number | undefined = Object.values(PrestationOption).find(\n (option) => option.id === optionId,\n )?.price;\n if (optionPrice) OptionTotalPrice += optionPrice;\n });\n }\n totalPrestation += OptionTotalPrice ? OptionTotalPrice : 0;\n /* Gestion des frais de dossier */\n // if (isWithApplicationFees) {\n // const applicationFeesAmount = getApplicationFeesAmount(idLegalForm);\n // totalPrestation += applicationFeesAmount;\n // }\n\n const calculDetail = `${monthNbr > 0 ? monthNbr + ' mois x ' + Math.round(price * 100) / 100 + '€' : Math.round(price * 100) / 100 + '€'} ${totalAmount > 0 ? '- ' + totalAmount + '€' : ''} ${totalPercentage > 0 ? '- ' + totalPercentage + '%' : ''} ${isWithApplicationFees ? '+ 50€' : ''}`;\n\n return {\n totalPrestation,\n reduceMonth,\n canBeCreated,\n calculDetail,\n monthlyPrice: monthNbr > 0 ? Math.round(price * 100) / 100 + '€/mois' : Math.round(price * 100) / 100 + '€',\n price,\n };\n};\n\nconst getPrestationOptions = (idPrestationList: number): PrestationOptionType[] => {\n const PrestationOptionList: PrestationOptionType[] = Object.values(PrestationOption).filter((option) =>\n option.brand.includes(getBrandNameByNodeEnv(process.env.NODE_ENV)),\n );\n return PrestationOptionList.filter((option) => option.prestationList.includes(idPrestationList));\n};\n\nconst isAbleToUpdatePrice = (\n idTypeBrand: number,\n idPrestationList: number,\n turnover: number,\n pastBalanceSheet: boolean,\n): boolean => {\n /* Récupération de la grille tarifaire */\n const currentPriceGrid: priceGrid | undefined = getPriceGrid(idTypeBrand, idPrestationList);\n if (currentPriceGrid) {\n if (\n [\n PrestationType.COMPTA_PREMIUM,\n PrestationType.COMPTA_POURCENTAGE_PREMIUM,\n PrestationType.COMPTA_POURCENTAGE_PREMIUM_EXPRESS,\n ].includes(idPrestationList) &&\n // @ts-ignore: error after prettier formatting\n currentPriceGrid.turnoverMonthly[currentPriceGrid.turnoverMonthly.length - 2].turnoverValue < turnover\n )\n return true;\n else if (\n [PrestationType.COMPTA_POURCENTAGE, PrestationType.COMPTA_POURCENTAGE_EXPRESS].includes(idPrestationList) &&\n // @ts-ignore: error after prettier formatting\n currentPriceGrid.turnoverMonthly[currentPriceGrid.turnoverMonthly.length - 1].turnoverValue < turnover\n )\n return true;\n else if (\n [PrestationType.BILAN_PREVISIONNEL].includes(idPrestationList) &&\n !pastBalanceSheet &&\n // @ts-ignore: error after prettier formatting\n currentPriceGrid.turnoverCreatedYear[currentPriceGrid.turnoverCreatedYear.length - 1].turnoverValue < turnover\n )\n return true;\n else if (\n [PrestationType.BILAN_PREVISIONNEL].includes(idPrestationList) &&\n pastBalanceSheet &&\n // @ts-ignore: error after prettier formatting\n currentPriceGrid.turnoverPastYear[currentPriceGrid.turnoverPastYear.length - 1].turnoverValue < turnover\n )\n return true;\n else return false;\n }\n return false;\n};\n\nconst idPrestationListToOfferType = (idPrestationList: number): 'software' | 'expertise' => {\n if (ClementineSubscriptionAccountancySoftwarePrestations.includes(idPrestationList)) return 'software';\n return 'expertise';\n};\n\nexport {\n isOtherAccountingMissions,\n isOtherJuridicalMissions,\n isAdditionalPresta,\n isOtherSocialMission,\n isOnlyPrevi,\n isOnlySocial,\n isOnlyJuridic,\n isCreation,\n isFromStatutsExpress,\n isExpress,\n isConsultingHour,\n isSoftwarePrestation,\n calculateScoringOfPrestation,\n calculatePrestationPrice,\n getPrestationOptions,\n isAbleToUpdatePrice,\n calculatePrestationPriceWithPriceGrid,\n getApplicationFeesAmount,\n idPrestationListToOfferType,\n};\n"]}
1
+ {"version":3,"file":"prestation.js","sourceRoot":"","sources":["../../../ts/utils/prestation.ts"],"names":[],"mappings":"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","sourcesContent":["import { IExercice, IPrestation, IPrestationList } from '../types';\nimport { Vat } from '../types/Enum/Vat';\nimport { getTaxesIncludedAmount } from './vat/utils';\nimport { intersection } from './noLodash';\nimport {\n ClementineSubscriptionAccountancySoftwarePrestations,\n PrestationDetail,\n PrestationType,\n} from '../types/Enum/PrestationType';\nimport { LegalFormTypeEnum } from '../types/Enum/LegalForm';\nimport { PrestationOptionType, PrestationOption } from '../types/Enum/PrestationOption';\nimport { PriceGridClementine } from '../types/Enum/PriceGridClementine';\nimport { PriceGridPourcentage } from '../types/Enum/PriceGridPourcentage';\nimport { PriceGridLegalstart } from '../types/Enum/PriceGridLegalstart';\nimport { PriceGridStatutsExpress } from '../types/Enum/PriceGridStatutsExpress';\nimport { ClosingType } from '../types/Enum/ClosingType';\nimport { getBrandNameByNodeEnv } from './brands';\nimport * as dayjs from 'dayjs';\nimport { exerciceNumber } from './exercice';\n\ntype priceGridBrand = {\n idTypeBrand: number;\n price: priceGrid[];\n};\n\ntype priceGrid = {\n idPrestationList: number[];\n priceWithTaxesIncluded: boolean;\n applicationCost: number;\n monthlyNbr?: monthlyNbr[];\n exerciceNbr?: exerciceNbr[];\n turnoverCreatedYear?: turnover[];\n turnoverPastYear?: turnover[];\n turnoverMonthly?: turnover[];\n turnoverYearly?: turnover[];\n employee?: employee[];\n partner?: employee[];\n properties?: propertie[];\n vatRegimeMonthly?: vatRegime[];\n vatRegimeYearly?: vatRegime[];\n taxSystem?: taxSystem[];\n legalForm?: legalForm[];\n employeeByLegalForm?: employeeByLegalForm[];\n};\n\ntype monthlyNbr = {\n minimum: number;\n maximum: number;\n value: number;\n closingType: number[];\n};\n\ntype exerciceNbr = {\n minimum: number;\n maximum: number;\n price: number;\n};\n\ntype turnover = {\n turnoverValue: number;\n price: number;\n};\n\ntype legalForm = {\n idLegalForm: number;\n price: number;\n};\n\ntype employee = {\n amountMinimum: number;\n amountMaximum: number;\n price: number;\n};\n\ntype employeeByLegalForm = {\n idLegalForm: number;\n price: number;\n};\n\ntype propertie = {\n amount: number;\n price: number;\n};\n\ntype vatRegime = {\n type: number;\n price: number;\n};\n\ntype taxSystem = {\n id: number;\n price: number;\n};\n\nconst isOtherAccountingMissions = (idPrestationList: number): boolean =>\n [\n PrestationType.PREVISIONNEL,\n PrestationType.BILAN_INTERMEDIAIRE,\n PrestationType.AVANCE_OU_ABANDON_COMPTE_COURANT_ASSOCIE,\n PrestationType.AUTRE_MISSION_COMPTABLE,\n PrestationType.TVS,\n PrestationType.ETUDE_FISCALE,\n PrestationType.BILAN_PREVISIONNEL,\n ].includes(idPrestationList);\n\nconst isOtherJuridicalMissions = (isJuridique: boolean, isCatalog: boolean, idPrestationList: number): boolean =>\n idPrestationList !== PrestationType.GESTION_JURIDIQUE && isCatalog && isJuridique;\n\nconst isOtherSocialMission = (idPrestationList: number): boolean =>\n idPrestationList === PrestationType.AUTRE_MISSION_SOCIALE_HORS_PAIE;\n\nconst isAdditionalPresta = (hidden: boolean, isCatalog: boolean): boolean => !hidden && isCatalog;\n\nconst isOnlyPrevi = (idPrestationList: number[]): boolean =>\n !idPrestationList.filter(\n (idPL: number) =>\n ![PrestationType.PREVISIONNEL, PrestationType.BILAN_PREVISIONNEL, PrestationType.PV_AG].includes(idPL),\n ).length;\n\nconst isOnlySocial = (idPrestationList: number[]): boolean =>\n !idPrestationList.filter((idPL: number) => ![PrestationType.FRUCTUPAIE, PrestationType.SOCIAL].includes(idPL)).length;\n\nconst isOnlyJuridic = (idPrestationList: number[]): boolean =>\n !idPrestationList.filter((idPL: number) => ![PrestationType.GESTION_JURIDIQUE].includes(idPL)).length;\n\nconst isCreation = (idPrestationList: number[]): boolean =>\n !!intersection(idPrestationList, [\n PrestationType.CREATION_SOCIETE,\n PrestationType.STATUTS_FREE,\n PrestationType.STATUTS_OPTION_1,\n PrestationType.STATUTS_OPTION_2,\n PrestationType.STATUTS_OPTION_AE,\n ]).length;\n\nconst isFromStatutsExpress = (idPrestationList: number[]): boolean =>\n !idPrestationList.filter(\n (idPL: number) =>\n ![\n PrestationType.STATUTS_FREE,\n PrestationType.STATUTS_OPTION_1,\n PrestationType.STATUTS_OPTION_2,\n PrestationType.STATUTS_OPTION_AE,\n ].includes(idPL),\n ).length;\n\nconst isExpress = (idPrestationList: number): boolean => {\n const prestationDetailValues = Object.values(PrestationDetail) as any;\n const prestaList = prestationDetailValues.find((pr: any) => pr.id === idPrestationList);\n return !!prestaList.isBack;\n};\n\nconst isConsultingHour = (idPrestationList: number[]): boolean =>\n !!intersection(idPrestationList, [PrestationType.CONSULTING_HOUR]).length;\n\nconst isSoftwarePrestation = (idPrestationList: number[]): boolean =>\n !!intersection(idPrestationList, [PrestationType.STEERING, PrestationType.VAT, PrestationType.BALANCESHEET])\n .length; /* &&\n idPrestationList.length === 1 */ // Commenté car si un client résilie un software pour un utre software, condition non prise en charge\n\nconst calculateScoringOfPrestation = (\n idPrestationType: PrestationType,\n prestations: IPrestation[],\n currentIdPrestation: number,\n): number => {\n const prestationsSignedPaid = prestations.filter(\n (prestation) =>\n prestation.paid &&\n prestation.signed &&\n prestation.terminationList === null &&\n prestation.id !== currentIdPrestation,\n );\n\n const currentPrestation = prestations.find(\n (el) => el.idPrestationList === idPrestationType && el.terminationList === null,\n );\n\n // SPECIAL CASE:\n // If current prestation is a software prestation\n // and the current prestation is an annual payment, return 0 point\n if (\n isSoftwarePrestation([idPrestationType]) &&\n currentPrestation?.exercices?.length &&\n //@ts-expect-error\n (currentPrestation?.exercices[0].ExercicePrestation?.totalPrestation < 80 ||\n //@ts-expect-error\n currentPrestation?.exercices[0].ExercicePrestation?.monthNumber !== 1)\n ) {\n return 0;\n }\n\n // Get the list of prestations that are half price\n const prestationHalfPriceList = Object.values(PrestationDetail).filter(\n (p) =>\n p.isComptable &&\n !p.isCatalog &&\n p.id &&\n ![PrestationType.BALANCESHEET, PrestationType.VAT, PrestationType.STEERING].includes(p.id),\n );\n const prestationHalfPriceIds = prestationHalfPriceList.map((t) => t.id);\n\n // Get the number of points for the new prestation\n const prestaDetails = Object.values(PrestationDetail).find((prestaDetail) => prestaDetail.id === idPrestationType);\n let numberPoint = prestaDetails?.point || 0;\n\n // For each back exercices, add 100 points\n // -> for new prestations only\n if (\n [\n PrestationType.EXPERTISE,\n PrestationType.SUPPORT,\n PrestationType.PREMIUM,\n PrestationType.CUSTOM_MADE,\n PrestationType.GESTION_IMMO,\n PrestationType.EI,\n PrestationType.MICRO,\n ].includes(idPrestationType) &&\n currentPrestation?.exercices?.length &&\n currentPrestation?.exercices.find((el) => el.isBack)\n ) {\n numberPoint += (currentPrestation?.exercices.filter((el) => el.isBack).length ?? 1) * 100;\n }\n\n // Get list of prestations that are already done\n // and check if one of them is in the list of prestations that are half price\n const prestationsExistIds = prestationsSignedPaid.map((prestation) => prestation.idPrestationList);\n const prestationHalfPriceAlreadyDoneIds = prestationsExistIds.filter((id) => prestationHalfPriceIds.includes(id));\n\n // If one of the prestations already done is in the list of prestations that are half price and if the idPrestationType is in prestationHalfPriceIds, return 50% of points\n if (prestationHalfPriceAlreadyDoneIds.length && prestationHalfPriceIds.includes(idPrestationType))\n return Math.floor(numberPoint * 0.3);\n\n return numberPoint;\n};\n\nexport const calculateMonthlyAmount = (params: {\n monthlyPrice: number;\n monthNumber: number;\n monthOffer: number;\n idVatForInternalInvoicing?: number | null;\n returnTaxesIncludedValue?: boolean;\n}): number => {\n const { monthlyPrice, monthNumber, monthOffer, idVatForInternalInvoicing, returnTaxesIncludedValue = true } = params;\n\n if (!idVatForInternalInvoicing && returnTaxesIncludedValue)\n throw new Error('Taux de TVA manquant pour calculer le montant TTC');\n\n if (!idVatForInternalInvoicing || !returnTaxesIncludedValue) return monthlyPrice * (monthNumber - monthOffer);\n\n return (\n monthlyPrice *\n (monthNumber - monthOffer) *\n (1 + Object.values(Vat).find((el) => el.id === idVatForInternalInvoicing).value / 100)\n );\n};\n\nexport const getPriceGrid = (idTypeBrand: number, idPrestationList: number): priceGrid | undefined => {\n let currentBrandPriceGrid: priceGridBrand | undefined;\n let currentPriceGrid: priceGrid | undefined;\n\n const currentEnvName = getBrandNameByNodeEnv(process.env.NODE_ENV);\n const listEnvEnum = {\n PriceGridClementine,\n PriceGridPourcentage,\n PriceGridLegalstart,\n PriceGridStatutsExpress,\n };\n // @ts-ignore\n const currentPriceGridFile: priceGridBrand[] = listEnvEnum[`PriceGrid${currentEnvName}`];\n if (currentPriceGridFile)\n currentBrandPriceGrid = currentPriceGridFile.find(\n (priceGrid: priceGridBrand) => priceGrid.idTypeBrand === idTypeBrand,\n );\n if (currentBrandPriceGrid)\n currentPriceGrid = currentBrandPriceGrid?.price.find((price: priceGrid) =>\n price.idPrestationList.includes(idPrestationList),\n );\n return currentPriceGrid;\n};\n\nconst calculatePrestationPriceWithPriceGrid = (\n idPrestationList: number,\n endDate: string,\n NbrMonth: number /* Nbr de mois dans l'exercice */,\n turnover: number,\n rentsNumber: number,\n employeesNumber: number,\n associatesNumber: number,\n idTypeBrand: number,\n idVatRegime: number,\n pastBalanceSheet: boolean,\n isYearly: boolean /* Prestation annuel ou mensuel */,\n totalMonth: number /* Nbr de moiis offer */,\n idTaxSystem: number,\n idLegalForm: number,\n exerciceNbr: number,\n balanceSheetOffered: number = 0 /* montant du bilan offer */,\n): {\n totalPrestation: number;\n reduceMonth: number;\n canBeCreated: boolean;\n monthNbr: number;\n price: number;\n} => {\n let totalPrestation: number = 0;\n let reduceMonth: number = 0;\n let monthNbr: number = NbrMonth;\n let yearlyPrice: number | undefined;\n let finalMonthlyPrice: number | undefined;\n const canBeCreated: boolean = true;\n let recalculateMonthly: boolean = false;\n\n /* Récupération de la grille tarifaire */\n const currentPriceGrid: priceGrid | undefined = getPriceGrid(idTypeBrand, idPrestationList);\n\n if (currentPriceGrid) {\n let monthlyPrice: number | undefined;\n let vatRegimePrice: number | undefined;\n let taxSystemPrice: number | undefined;\n\n /* Gestion du régime de TVA */\n if (currentPriceGrid.vatRegimeMonthly && !isYearly)\n vatRegimePrice = currentPriceGrid.vatRegimeMonthly?.find((regime) => regime.type === idVatRegime)?.price;\n else if (currentPriceGrid.vatRegimeYearly && isYearly)\n vatRegimePrice = currentPriceGrid.vatRegimeYearly?.find((regime) => regime.type === idVatRegime)?.price;\n\n /* Gestion du Régime d'imposition */\n if (currentPriceGrid.taxSystem && idTaxSystem)\n taxSystemPrice = currentPriceGrid.taxSystem?.find((tax) => tax.id === idTaxSystem)?.price;\n\n /* Gestion des montants */\n /* Récupératioin des prix mensuels */\n if (currentPriceGrid.turnoverMonthly && !isYearly)\n monthlyPrice = currentPriceGrid.turnoverMonthly?.find((turn) => turnover < turn.turnoverValue)?.price;\n else if (currentPriceGrid.properties)\n monthlyPrice = currentPriceGrid.properties?.find((property) => property.amount === rentsNumber)?.price;\n else if (currentPriceGrid.employee) {\n monthlyPrice = currentPriceGrid.employee?.find(\n (emp) => emp.amountMinimum <= employeesNumber && emp.amountMaximum >= employeesNumber,\n )?.price;\n monthlyPrice = monthlyPrice ? monthlyPrice * employeesNumber : 0;\n } else if (currentPriceGrid.employeeByLegalForm) {\n monthlyPrice = currentPriceGrid.employeeByLegalForm?.find((emp) => emp.idLegalForm === idLegalForm)?.price;\n monthlyPrice = monthlyPrice ? monthlyPrice * employeesNumber : 0;\n /* Récupération des prix annuels */\n } else if (currentPriceGrid.turnoverYearly && isYearly)\n yearlyPrice = currentPriceGrid.turnoverYearly?.find((turn) => turnover < turn.turnoverValue)?.price;\n else if (!pastBalanceSheet && currentPriceGrid.turnoverCreatedYear)\n yearlyPrice = currentPriceGrid.turnoverCreatedYear?.find((turn) => turnover < turn.turnoverValue)?.price;\n else if (pastBalanceSheet && currentPriceGrid.turnoverPastYear)\n yearlyPrice = currentPriceGrid.turnoverPastYear?.find((turn) => turnover < turn.turnoverValue)?.price;\n else if (currentPriceGrid.partner)\n yearlyPrice = currentPriceGrid.partner?.find(\n (part) => part.amountMinimum <= associatesNumber && part.amountMaximum >= associatesNumber,\n )?.price;\n else if (currentPriceGrid.legalForm)\n yearlyPrice = currentPriceGrid.legalForm?.find((form) => form.idLegalForm === idLegalForm)?.price;\n else if (currentPriceGrid.exerciceNbr)\n yearlyPrice = currentPriceGrid.exerciceNbr?.find(\n (el) => el.minimum <= exerciceNbr && exerciceNbr <= el.maximum,\n )?.price;\n /* Calcul du prix mensuel final */\n finalMonthlyPrice =\n (monthlyPrice ? monthlyPrice : 0) + (vatRegimePrice ? vatRegimePrice : 0) + (taxSystemPrice ? taxSystemPrice : 0);\n\n /* Gestion des mois */\n let cloturedPast: boolean = false;\n if (dayjs(endDate, 'YYYY-MM-DD').subtract(15, 'day').isBefore(dayjs())) cloturedPast = true;\n let monthlyNbrList: monthlyNbr[] | undefined;\n let monthlyNbr: monthlyNbr | undefined;\n if (currentPriceGrid.monthlyNbr) {\n monthlyNbrList = currentPriceGrid.monthlyNbr?.filter((el) =>\n el.closingType.includes(cloturedPast ? ClosingType.OUTDATED : ClosingType.IN_PROGRESS),\n );\n if (monthlyNbrList) {\n monthlyNbr = monthlyNbrList.find((el) => el.minimum <= monthNbr && monthNbr <= el.maximum);\n if (monthlyNbr) {\n monthNbr = monthlyNbr.value;\n }\n }\n }\n\n /* Gestion des offres, mois offer */\n if (totalMonth > 0) {\n if (isYearly) {\n yearlyPrice = (10 - totalMonth) * (yearlyPrice ? yearlyPrice / 10 : 0);\n } else {\n monthNbr = monthNbr - totalMonth;\n }\n }\n\n /* Calcul du nombre de mois soustraient */\n reduceMonth = monthNbr === NbrMonth - totalMonth ? totalMonth : 0;\n\n /* Gestion des offres, bilan offer */\n if (balanceSheetOffered > 0) {\n yearlyPrice = undefined;\n recalculateMonthly = false;\n finalMonthlyPrice = balanceSheetOffered / monthNbr;\n }\n\n /* Prix Final */\n totalPrestation = yearlyPrice ? yearlyPrice : finalMonthlyPrice * monthNbr;\n }\n return {\n totalPrestation,\n reduceMonth,\n canBeCreated,\n monthNbr: yearlyPrice ? 0 : recalculateMonthly ? NbrMonth : monthNbr,\n price: yearlyPrice\n ? yearlyPrice\n : recalculateMonthly\n ? totalPrestation / monthNbr\n : finalMonthlyPrice\n ? finalMonthlyPrice\n : 0,\n };\n};\n\nconst calculatePrestationPriceWithPrestationList = (prestationList: IPrestationList): number => {\n let totalPrestation: number = 0;\n\n totalPrestation = prestationList?.price || 0;\n\n return totalPrestation;\n};\n\n/**\n * From idLegalForm, get application fees amount (without taxes included if no idVat passed, or with taxes included calculated by given idVat)\n * @param idLegalForm\n * @param idVat\n * @returns amount of application fees, without taxes included\n * @deprecated Application fees are not charged anymore\n */\nconst getApplicationFeesAmount = (idLegalForm: number, idVat?: number) => {\n let applicationFeesAmount = 50;\n if (idLegalForm === LegalFormTypeEnum.SCI) applicationFeesAmount = 150;\n\n //Sans tva, on envoie le montant HT\n if (!idVat) return applicationFeesAmount;\n\n //Avec tva, on envoie le montant TTC\n return getTaxesIncludedAmount(applicationFeesAmount, idVat);\n};\n\nconst calculatePrestationPrice = (\n idPrestationList: number,\n prestationList: IPrestationList,\n endDate: string,\n NbrMonth: number /* Nbr de mois dans l'exercice */,\n turnover: number,\n rentsNumber: number,\n employeesNumber: number,\n associatesNumber: number,\n idTypeBrand: number,\n idVatRegime: number,\n pastBalanceSheet: boolean,\n optionsList: number[],\n totalPercentage: number /* total pourcentage offer (%) */,\n totalAmount: number /* total montant offer (€) */,\n totalMonth: number /* total mois offer (mois) */,\n isWithApplicationFees: boolean /* frais de dossier */,\n idTaxSystem: number,\n idLegalForm: number,\n isYearly: boolean = false /* prestation annuel ou mensuel */,\n isSubPrestation: boolean = false,\n balanceSheetOffered: number = 0,\n exerciceList: IExercice[] = [],\n): {\n totalPrestation: number;\n reduceMonth: number;\n canBeCreated: boolean;\n calculDetail: string;\n monthlyPrice: string;\n price: number;\n} => {\n let totalPrestation: number = 0;\n let reduceMonth: number = 0;\n let canBeCreated: boolean = true;\n let monthNbr: number = 0;\n let price: number = 0;\n let totalWithReduce: {\n totalPrestation: number;\n reduceMonth: number;\n canBeCreated: boolean;\n monthNbr: number;\n price: number;\n } = { totalPrestation: 0, reduceMonth: 0, canBeCreated: true, monthNbr: 0, price: 0 };\n\n /* Gestion du prix en fonction de la prestation */\n if (\n [\n PrestationType.COMPTA_PRO,\n PrestationType.COMPTA_PRO_EXPRESS,\n PrestationType.COMPTA_ENTREPRISE,\n PrestationType.COMPTA_ENTREPRISE_EXPRESS,\n PrestationType.COMPTA_SCI,\n PrestationType.COMPTA_SCI_EXPRESS,\n PrestationType.BILAN_PREVISIONNEL,\n PrestationType.COMPTA_PREMIUM,\n PrestationType.COMPTA_POURCENTAGE_PREMIUM,\n PrestationType.COMPTA_POURCENTAGE_PREMIUM_EXPRESS,\n PrestationType.COMPTA_POURCENTAGE,\n PrestationType.COMPTA_POURCENTAGE_EXPRESS,\n PrestationType.SOCIAL,\n PrestationType.GESTION_JURIDIQUE,\n PrestationType.COMPTA_PRO_COMPTASTART,\n PrestationType.COMPTA_PRO_COMPTASTART_EXPRESS,\n PrestationType.COMPTA_EI_KLEMS,\n PrestationType.COMPTA_EI_KLEMS_EXPRESS,\n PrestationType.COMPTA_MICRO_KLEMS,\n PrestationType.COMPTA_MICRO_KLEMS_EXPRESS,\n PrestationType.COMPTA_LOUEUR_MEUBLE_NON_PRO_KLEMS,\n PrestationType.COMPTA_LOUEUR_MEUBLE_NON_PRO_KLEMS_EXPRESS,\n PrestationType.STATUTS_OPTION_2,\n PrestationType.EXPERTISE,\n PrestationType.SUPPORT,\n PrestationType.PREMIUM,\n PrestationType.CUSTOM_MADE,\n PrestationType.EI,\n PrestationType.MICRO,\n PrestationType.GESTION_IMMO,\n ].includes(idPrestationList)\n ) {\n let exerciceNbr: number = 0;\n if (exerciceList.length) exerciceNbr = exerciceNumber(dayjs(endDate, 'YYYY-MM-DD').toDate(), exerciceList);\n totalWithReduce = calculatePrestationPriceWithPriceGrid(\n idPrestationList,\n endDate,\n NbrMonth,\n turnover,\n rentsNumber,\n employeesNumber,\n associatesNumber,\n idTypeBrand,\n idVatRegime,\n pastBalanceSheet,\n isYearly,\n totalMonth,\n idTaxSystem,\n idLegalForm,\n exerciceNbr,\n balanceSheetOffered,\n );\n totalPrestation = totalWithReduce.totalPrestation;\n reduceMonth = totalWithReduce.reduceMonth;\n canBeCreated = totalWithReduce.canBeCreated;\n monthNbr = totalWithReduce.monthNbr;\n price = totalWithReduce.price;\n } else {\n totalPrestation = calculatePrestationPriceWithPrestationList(prestationList);\n if ([PrestationType.CREATION_SOCIETE].includes(idPrestationList) && !isSubPrestation) {\n // totalPrestation += 50;\n // La création est offerte désormais\n // inutile d'ajouter les frais de greffe et d'annonce légale,\n // car ne compte pas dans le calcul pour les sales\n }\n }\n /* Gestion des offres */\n /* Offre montant offer */\n if (totalAmount > 0) totalPrestation = totalPrestation - totalAmount;\n /* Offre pourcentage offer */\n if (totalPercentage > 0) totalPrestation = totalPrestation - totalPrestation * (totalPercentage / 100);\n /* Gesstioin du prix minimum acceptable pour la prestation */\n if (prestationList && prestationList.minimumPrice && totalPrestation < prestationList.minimumPrice)\n totalPrestation = prestationList.minimumPrice;\n /* Gestion des options */\n let OptionTotalPrice: number = 0;\n if (optionsList.length) {\n optionsList.forEach((optionId) => {\n const optionPrice: number | undefined = Object.values(PrestationOption).find(\n (option) => option.id === optionId,\n )?.price;\n if (optionPrice) OptionTotalPrice += optionPrice;\n });\n }\n totalPrestation += OptionTotalPrice ? OptionTotalPrice : 0;\n /* Gestion des frais de dossier */\n // if (isWithApplicationFees) {\n // const applicationFeesAmount = getApplicationFeesAmount(idLegalForm);\n // totalPrestation += applicationFeesAmount;\n // }\n\n const calculDetail = `${monthNbr > 0 ? monthNbr + ' mois x ' + Math.round(price * 100) / 100 + '€' : Math.round(price * 100) / 100 + '€'} ${totalAmount > 0 ? '- ' + totalAmount + '€' : ''} ${totalPercentage > 0 ? '- ' + totalPercentage + '%' : ''} ${isWithApplicationFees ? '+ 50€' : ''}`;\n\n return {\n totalPrestation,\n reduceMonth,\n canBeCreated,\n calculDetail,\n monthlyPrice: monthNbr > 0 ? Math.round(price * 100) / 100 + '€/mois' : Math.round(price * 100) / 100 + '€',\n price,\n };\n};\n\nconst getPrestationOptions = (idPrestationList: number): PrestationOptionType[] => {\n const PrestationOptionList: PrestationOptionType[] = Object.values(PrestationOption).filter((option) =>\n option.brand.includes(getBrandNameByNodeEnv(process.env.NODE_ENV)),\n );\n return PrestationOptionList.filter((option) => option.prestationList.includes(idPrestationList));\n};\n\nconst isAbleToUpdatePrice = (\n idTypeBrand: number,\n idPrestationList: number,\n turnover: number,\n pastBalanceSheet: boolean,\n): boolean => {\n /* Récupération de la grille tarifaire */\n const currentPriceGrid: priceGrid | undefined = getPriceGrid(idTypeBrand, idPrestationList);\n if (currentPriceGrid) {\n if (\n [\n PrestationType.COMPTA_PREMIUM,\n PrestationType.COMPTA_POURCENTAGE_PREMIUM,\n PrestationType.COMPTA_POURCENTAGE_PREMIUM_EXPRESS,\n ].includes(idPrestationList) &&\n // @ts-ignore: error after prettier formatting\n currentPriceGrid.turnoverMonthly[currentPriceGrid.turnoverMonthly.length - 2].turnoverValue < turnover\n )\n return true;\n else if (\n [PrestationType.COMPTA_POURCENTAGE, PrestationType.COMPTA_POURCENTAGE_EXPRESS].includes(idPrestationList) &&\n // @ts-ignore: error after prettier formatting\n currentPriceGrid.turnoverMonthly[currentPriceGrid.turnoverMonthly.length - 1].turnoverValue < turnover\n )\n return true;\n else if (\n [PrestationType.BILAN_PREVISIONNEL].includes(idPrestationList) &&\n !pastBalanceSheet &&\n // @ts-ignore: error after prettier formatting\n currentPriceGrid.turnoverCreatedYear[currentPriceGrid.turnoverCreatedYear.length - 1].turnoverValue < turnover\n )\n return true;\n else if (\n [PrestationType.BILAN_PREVISIONNEL].includes(idPrestationList) &&\n pastBalanceSheet &&\n // @ts-ignore: error after prettier formatting\n currentPriceGrid.turnoverPastYear[currentPriceGrid.turnoverPastYear.length - 1].turnoverValue < turnover\n )\n return true;\n else return false;\n }\n return false;\n};\n\nconst idPrestationListToOfferType = (idPrestationList: number): 'software' | 'expertise' => {\n if (ClementineSubscriptionAccountancySoftwarePrestations.includes(idPrestationList)) return 'software';\n return 'expertise';\n};\n\nexport {\n isOtherAccountingMissions,\n isOtherJuridicalMissions,\n isAdditionalPresta,\n isOtherSocialMission,\n isOnlyPrevi,\n isOnlySocial,\n isOnlyJuridic,\n isCreation,\n isFromStatutsExpress,\n isExpress,\n isConsultingHour,\n isSoftwarePrestation,\n calculateScoringOfPrestation,\n calculatePrestationPrice,\n getPrestationOptions,\n isAbleToUpdatePrice,\n calculatePrestationPriceWithPriceGrid,\n getApplicationFeesAmount,\n idPrestationListToOfferType,\n};\n"]}
@@ -1,5 +1,5 @@
1
1
  import * as dayjs from 'dayjs';
2
- import { Vat, PaymentMethod, LegalFormTypeEnum, getTaxesIncludedAmount } from '../../types';
2
+ import { Vat, PaymentMethod, getTaxesIncludedAmount } from '../../types';
3
3
  import MockDate from 'mockdate';
4
4
  import { calculatePaymentsAuto } from '../payment';
5
5
  describe('Payment', () => {
@@ -72,7 +72,7 @@ describe('Payment', () => {
72
72
  // =====================
73
73
  // errors handling
74
74
  // =====================
75
- test('should return error if prestationList doesn\'t correspond (!hidden, isCatalog, isComptable)', () => {
75
+ test("should return error if prestationList doesn't correspond (!hidden, isCatalog, isComptable)", () => {
76
76
  expect.assertions(2);
77
77
  try {
78
78
  prestationList.hidden = true;
@@ -80,8 +80,8 @@ describe('Payment', () => {
80
80
  idTypeBrand: 1,
81
81
  firstExerciceNonExpresssEndDate,
82
82
  idPrestation,
83
- isWithApplicationFees: true,
84
- idLegalForm: LegalFormTypeEnum.SARL,
83
+ // isWithApplicationFees: true,
84
+ // idLegalForm: LegalFormTypeEnum.SARL,
85
85
  prestationList: {
86
86
  ...prestationList,
87
87
  isCatalog: true,
@@ -108,8 +108,8 @@ describe('Payment', () => {
108
108
  idTypeBrand: 1,
109
109
  firstExerciceNonExpresssEndDate,
110
110
  idPrestation,
111
- isWithApplicationFees: true,
112
- idLegalForm: LegalFormTypeEnum.SARL,
111
+ // isWithApplicationFees: true,
112
+ // idLegalForm: LegalFormTypeEnum.SARL,
113
113
  prestationList,
114
114
  idVat,
115
115
  listPartialExercicePrestationExpress: [listPartialExercicePrestationExpress[0]],
@@ -126,8 +126,8 @@ describe('Payment', () => {
126
126
  idTypeBrand: 1,
127
127
  firstExerciceNonExpresssEndDate,
128
128
  idPrestation,
129
- isWithApplicationFees: true,
130
- idLegalForm: LegalFormTypeEnum.SARL,
129
+ // isWithApplicationFees: true,
130
+ // idLegalForm: LegalFormTypeEnum.SARL,
131
131
  prestationList,
132
132
  idVat,
133
133
  listPartialExercicePrestationExpress,
@@ -151,8 +151,8 @@ describe('Payment', () => {
151
151
  idTypeBrand: 1,
152
152
  firstExerciceNonExpresssEndDate: newFirstExerciceNonExpresssEndDate,
153
153
  idPrestation,
154
- isWithApplicationFees: true,
155
- idLegalForm: LegalFormTypeEnum.SARL,
154
+ // isWithApplicationFees: true,
155
+ // idLegalForm: LegalFormTypeEnum.SARL,
156
156
  prestationList,
157
157
  idVat,
158
158
  listPartialExercicePrestationExpress: [],
@@ -177,8 +177,8 @@ describe('Payment', () => {
177
177
  idTypeBrand: 1,
178
178
  firstExerciceNonExpresssEndDate: newFirstExerciceNonExpresssEndDate,
179
179
  idPrestation,
180
- isWithApplicationFees: true,
181
- idLegalForm: LegalFormTypeEnum.SARL,
180
+ // isWithApplicationFees: true,
181
+ // idLegalForm: LegalFormTypeEnum.SARL,
182
182
  prestationList,
183
183
  idVat,
184
184
  listPartialExercicePrestationExpress: [],
@@ -209,8 +209,8 @@ describe('Payment', () => {
209
209
  idTypeBrand: 1,
210
210
  firstExerciceNonExpresssEndDate: newFirstExerciceNonExpresssEndDate,
211
211
  idPrestation,
212
- isWithApplicationFees: false,
213
- idLegalForm: LegalFormTypeEnum.SARL,
212
+ // isWithApplicationFees: false,
213
+ // idLegalForm: LegalFormTypeEnum.SARL,
214
214
  prestationList,
215
215
  idVat,
216
216
  listPartialExercicePrestationExpress: [],
@@ -237,8 +237,8 @@ describe('Payment', () => {
237
237
  idTypeBrand: 1,
238
238
  firstExerciceNonExpresssEndDate: newFirstExerciceNonExpresssEndDate,
239
239
  idPrestation,
240
- isWithApplicationFees: false,
241
- idLegalForm: LegalFormTypeEnum.SARL,
240
+ // isWithApplicationFees: false,
241
+ // idLegalForm: LegalFormTypeEnum.SARL,
242
242
  prestationList,
243
243
  idVat,
244
244
  listPartialExercicePrestationExpress: [],
@@ -260,8 +260,8 @@ describe('Payment', () => {
260
260
  idTypeBrand: 1,
261
261
  firstExerciceNonExpresssEndDate: newFirstExerciceNonExpresssEndDate,
262
262
  idPrestation,
263
- isWithApplicationFees: true,
264
- idLegalForm: LegalFormTypeEnum.SARL,
263
+ // isWithApplicationFees: true,
264
+ // idLegalForm: LegalFormTypeEnum.SARL,
265
265
  prestationList,
266
266
  idVat,
267
267
  listPartialExercicePrestationExpress: [],
@@ -287,8 +287,8 @@ describe('Payment', () => {
287
287
  idTypeBrand: 1,
288
288
  firstExerciceNonExpresssEndDate: newFirstExerciceNonExpresssEndDate,
289
289
  idPrestation,
290
- isWithApplicationFees: true,
291
- idLegalForm: LegalFormTypeEnum.SARL,
290
+ // isWithApplicationFees: true,
291
+ // idLegalForm: LegalFormTypeEnum.SARL,
292
292
  prestationList,
293
293
  idVat,
294
294
  listPartialExercicePrestationExpress: [],
@@ -313,8 +313,8 @@ describe('Payment', () => {
313
313
  idTypeBrand: 1,
314
314
  firstExerciceNonExpresssEndDate: newFirstExerciceNonExpresssEndDate,
315
315
  idPrestation,
316
- isWithApplicationFees: false,
317
- idLegalForm: LegalFormTypeEnum.SARL,
316
+ // isWithApplicationFees: false,
317
+ // idLegalForm: LegalFormTypeEnum.SARL,
318
318
  prestationList,
319
319
  idVat,
320
320
  listPartialExercicePrestationExpress: [],
@@ -347,8 +347,8 @@ describe('Payment', () => {
347
347
  idTypeBrand: 1,
348
348
  firstExerciceNonExpresssEndDate,
349
349
  idPrestation,
350
- isWithApplicationFees: true,
351
- idLegalForm: LegalFormTypeEnum.SARL,
350
+ // isWithApplicationFees: true,
351
+ // idLegalForm: LegalFormTypeEnum.SARL,
352
352
  prestationList,
353
353
  idVat,
354
354
  listPartialExercicePrestationExpress: listPartialExercicePrestationExpressCloned,
@@ -366,8 +366,8 @@ describe('Payment', () => {
366
366
  idTypeBrand: 1,
367
367
  firstExerciceNonExpresssEndDate,
368
368
  idPrestation,
369
- isWithApplicationFees: false,
370
- idLegalForm: LegalFormTypeEnum.SARL,
369
+ // isWithApplicationFees: false,
370
+ // idLegalForm: LegalFormTypeEnum.SARL,
371
371
  prestationList,
372
372
  idVat,
373
373
  listPartialExercicePrestationExpress,
@@ -404,8 +404,8 @@ describe('Payment', () => {
404
404
  idTypeBrand: 1,
405
405
  firstExerciceNonExpresssEndDate,
406
406
  idPrestation,
407
- isWithApplicationFees: false,
408
- idLegalForm: LegalFormTypeEnum.SARL,
407
+ // isWithApplicationFees: false,
408
+ // idLegalForm: LegalFormTypeEnum.SARL,
409
409
  prestationList,
410
410
  idVat,
411
411
  listPartialExercicePrestationExpress,
@@ -424,8 +424,8 @@ describe('Payment', () => {
424
424
  idTypeBrand: 1,
425
425
  firstExerciceNonExpresssEndDate,
426
426
  idPrestation,
427
- isWithApplicationFees: true,
428
- idLegalForm: LegalFormTypeEnum.SARL,
427
+ // isWithApplicationFees: true,
428
+ // idLegalForm: LegalFormTypeEnum.SARL,
429
429
  prestationList,
430
430
  idVat,
431
431
  listPartialExercicePrestationExpress,
@@ -441,8 +441,8 @@ describe('Payment', () => {
441
441
  idTypeBrand: 1,
442
442
  firstExerciceNonExpresssEndDate,
443
443
  idPrestation,
444
- isWithApplicationFees: true,
445
- idLegalForm: LegalFormTypeEnum.SARL,
444
+ // isWithApplicationFees: true,
445
+ // idLegalForm: LegalFormTypeEnum.SARL,
446
446
  prestationList,
447
447
  idVat,
448
448
  listPartialExercicePrestationExpress: [],
@@ -457,8 +457,8 @@ describe('Payment', () => {
457
457
  idTypeBrand: 1,
458
458
  firstExerciceNonExpresssEndDate: dayjs('2024-12-31').toDate(),
459
459
  idPrestation,
460
- isWithApplicationFees: true,
461
- idLegalForm: LegalFormTypeEnum.SARL,
460
+ // isWithApplicationFees: true,
461
+ // idLegalForm: LegalFormTypeEnum.SARL,
462
462
  prestationList,
463
463
  idVat: Vat.TX_20.id,
464
464
  listPartialExercicePrestationExpress: [],
@@ -1 +1 @@
1
- {"version":3,"file":"payment.spec.js","sourceRoot":"","sources":["../../../../ts/utils/tests/payment.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import * as dayjs from 'dayjs';\nimport { IRegulation, Vat, PaymentMethod, LegalFormTypeEnum, getTaxesIncludedAmount } from '../../types';\nimport MockDate from 'mockdate';\n\nimport { calculatePaymentsAuto } from '../payment';\nimport { PartialExercicePrestationExpress } from '../../types/Interface/api/payment/Util';\n\ndescribe('Payment', () => {\n describe('calculatePayments', () => {\n const idPrestation = 1;\n const idSociety = 1;\n const yearlyAmountNonExpress = 1800;\n const nextYearlyAmountNonExpress = 1800;\n const appCost = 14.9;\n\n const firstExerciceNonExpresssEndDate = dayjs().add(11, 'month').endOf('month').toDate();\n const prestationList = {\n id: 34,\n name: 'Compta Pro',\n isComptable: true,\n isJuridique: false,\n isSocial: false,\n isAttestation: false,\n inAverageCart: true,\n isBack: false,\n minimumPrice: null,\n price: null,\n isCatalog: false,\n isPlannable: false,\n hidden: false,\n isComplementary: false,\n signaturePosition: '400,54,569,90',\n signaturePage: 7,\n };\n const idVat = Vat.TX_10.id;\n const listPartialExercicePrestationExpress: PartialExercicePrestationExpress[] = [\n {\n startDate: dayjs().subtract(2, 'year').startOf('month').toDate(),\n endDate: dayjs().subtract(13, 'month').endOf('month').toDate(),\n countExpressMonthlyPayment: 2,\n totalAmount: 1200,\n },\n {\n startDate: dayjs().subtract(1, 'year').startOf('month').toDate(),\n endDate: dayjs().subtract(1, 'month').endOf('month').toDate(),\n countExpressMonthlyPayment: 2,\n totalAmount: 1800,\n },\n ];\n const listRegulations: IRegulation[] = [\n {\n amount: 600,\n amountUsed: 0,\n date: new Date(),\n processed: true,\n idPaymentMethod: PaymentMethod.BANK_CARD.id,\n idSociety,\n },\n {\n amount: 300,\n amountUsed: 0,\n date: new Date(),\n processed: true,\n idPaymentMethod: PaymentMethod.BANK_CARD.id,\n idSociety,\n },\n {\n amount: 300,\n amountUsed: 300,\n date: new Date(),\n processed: true,\n idPaymentMethod: PaymentMethod.BANK_CARD.id,\n idSociety,\n },\n ];\n\n // =====================\n // errors handling\n // =====================\n test('should return error if prestationList doesn\\'t correspond (!hidden, isCatalog, isComptable)', () => {\n expect.assertions(2);\n try {\n prestationList.hidden = true;\n calculatePaymentsAuto({\n idTypeBrand: 1,\n firstExerciceNonExpresssEndDate,\n idPrestation,\n isWithApplicationFees: true,\n idLegalForm: LegalFormTypeEnum.SARL,\n prestationList: {\n ...prestationList,\n isCatalog: true,\n },\n idVat,\n listPartialExercicePrestationExpress,\n listRegulations,\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress,\n });\n } catch (error) {\n expect(error).toBeInstanceOf(Error);\n // @ts-ignore\n expect(error.message).toStrictEqual('Ce type de prestation ne correspond pas aux conditions attendues.');\n }\n });\n\n // =====================\n // logical\n // =====================\n // express\n test('if only one express, monthly payments of actual exo should be in parallel of express monthly payments, smoothed in number of remaining months (mini 3 months) (if not in 3 last month)', () => {\n const payments = calculatePaymentsAuto({\n idTypeBrand: 1,\n firstExerciceNonExpresssEndDate,\n idPrestation,\n isWithApplicationFees: true,\n idLegalForm: LegalFormTypeEnum.SARL,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress: [listPartialExercicePrestationExpress[0]],\n listRegulations,\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress,\n });\n\n const firstExpressDatePayment = payments.filter(\n (p) => dayjs(p.closingDate).diff(firstExerciceNonExpresssEndDate) < 0,\n )[0].datePayment;\n const firstNonExpressDatePayment = payments.filter(\n (p) => dayjs(p.closingDate).diff(firstExerciceNonExpresssEndDate) === 0,\n )[0].datePayment;\n expect(dayjs(firstNonExpressDatePayment).diff(firstExpressDatePayment, 'month')).toStrictEqual(0);\n });\n test('if more than one express, monthly payments of actual exo should be in a row of express monthly payments and smoothed, smoothed in number of remaining months after express monthly payments (mini 3 months) (if in 3 last month of exercice)', () => {\n const payments = calculatePaymentsAuto({\n idTypeBrand: 1,\n firstExerciceNonExpresssEndDate,\n idPrestation,\n isWithApplicationFees: true,\n idLegalForm: LegalFormTypeEnum.SARL,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress,\n listRegulations,\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress,\n });\n\n const lastExpressDatePayment = payments\n .filter((p) => dayjs(p.closingDate).diff(firstExerciceNonExpresssEndDate) < 0)\n .splice(-1)?.[0]?.datePayment;\n const firstNonExpressDatePayment = payments.filter(\n (p) => dayjs(p.closingDate).diff(firstExerciceNonExpresssEndDate) === 0,\n )?.[0]?.datePayment;\n expect(dayjs(firstNonExpressDatePayment).diff(lastExpressDatePayment, 'month')).toStrictEqual(1);\n });\n // non express\n test('should return a number of payments equal to nb of remaining months in exercice (if not in 3 last months)', () => {\n const mockedDate = dayjs('2024-05-15').toDate();\n MockDate.set(mockedDate);\n\n const nbMonthDelay = 6;\n const newFirstExerciceNonExpresssEndDate = dayjs().add(nbMonthDelay, 'month').endOf('month').toDate();\n\n const payments = calculatePaymentsAuto({\n idTypeBrand: 1,\n firstExerciceNonExpresssEndDate: newFirstExerciceNonExpresssEndDate,\n idPrestation,\n isWithApplicationFees: true,\n idLegalForm: LegalFormTypeEnum.SARL,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress: [],\n listRegulations: [\n {\n amount: 50,\n amountUsed: 0,\n } as IRegulation,\n ],\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress,\n });\n\n // const listNonExpressPayments = payments.filter(p => p.closingDate === newFirstExerciceNonExpresssEndDate);\n const listNonExpressPayments = payments.filter(\n (p) => dayjs(p.closingDate).diff(newFirstExerciceNonExpresssEndDate) === 0,\n );\n expect(listNonExpressPayments.length).toStrictEqual(1 + nbMonthDelay); //On ajoute 1 pour les frais de dossier\n\n MockDate.reset();\n });\n test('should return a number of payments equal to 3 (if in 3 last month of exercice)', () => {\n const nbMonthDelay = 1;\n const newFirstExerciceNonExpresssEndDate = dayjs().add(nbMonthDelay, 'month').endOf('month').toDate();\n\n const payments = calculatePaymentsAuto({\n idTypeBrand: 1,\n firstExerciceNonExpresssEndDate: newFirstExerciceNonExpresssEndDate,\n idPrestation,\n isWithApplicationFees: true,\n idLegalForm: LegalFormTypeEnum.SARL,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress: [],\n listRegulations: [\n {\n amount: 50,\n amountUsed: 0,\n } as IRegulation,\n ],\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress,\n });\n\n const listNonExpressPayments = payments.filter(\n (p) => dayjs(p.closingDate).diff(newFirstExerciceNonExpresssEndDate) === 0,\n );\n expect(listNonExpressPayments.length).toStrictEqual(1 + 3); //On ajoute 1 pour les frais de dossier\n });\n test('should (yearlyAmountNonExpress - sum of listRegulations) / count of monthly payments be equal to monthly payment amount (if not in 3 last month)', () => {\n const mockedDate = dayjs('2024-05-15').toDate();\n MockDate.set(mockedDate);\n\n const nbMonthDelay = 6;\n const newFirstExerciceNonExpresssEndDate = dayjs().add(nbMonthDelay, 'month').endOf('month').toDate();\n const newListRegulations = [\n {\n amount: 50,\n amountUsed: 0,\n } as IRegulation,\n ];\n const payments = calculatePaymentsAuto({\n idTypeBrand: 1,\n firstExerciceNonExpresssEndDate: newFirstExerciceNonExpresssEndDate,\n idPrestation,\n isWithApplicationFees: false,\n idLegalForm: LegalFormTypeEnum.SARL,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress: [],\n listRegulations: newListRegulations,\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress,\n });\n\n const diff =\n getTaxesIncludedAmount(yearlyAmountNonExpress, idVat) -\n newListRegulations.reduce((acc, r: IRegulation) => acc + r.amount - r.amountUsed, 0);\n const amount = Math.round((100 * diff) / nbMonthDelay) / 100;\n\n expect(payments[1].amount).toStrictEqual(amount);\n\n MockDate.reset();\n });\n test('should (totalAmount - firstPaymentAmount) / 3 be equal to monthly payment amount (if in 3 last month of exercice)', () => {\n const nbMonthDelay = 1;\n const newFirstExerciceNonExpresssEndDate = dayjs().add(nbMonthDelay, 'month').endOf('month').toDate();\n const newListRegulations = [\n {\n amount: 50,\n amountUsed: 0,\n } as IRegulation,\n ];\n const payments = calculatePaymentsAuto({\n idTypeBrand: 1,\n firstExerciceNonExpresssEndDate: newFirstExerciceNonExpresssEndDate,\n idPrestation,\n isWithApplicationFees: false,\n idLegalForm: LegalFormTypeEnum.SARL,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress: [],\n listRegulations: newListRegulations,\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress,\n });\n\n const diff =\n getTaxesIncludedAmount(yearlyAmountNonExpress, idVat) -\n newListRegulations.reduce((acc, r: IRegulation) => acc + r.amount - r.amountUsed, 0);\n const amount = Math.round((100 * diff) / 3) / 100;\n\n expect(payments[1].amount).toStrictEqual(amount);\n });\n // annual price increase\n test('should apply annual price increase (2,75%) if signed before last 3 months of civil year', () => {\n const mockedDate = dayjs('2024-08-15').toDate();\n MockDate.set(mockedDate);\n\n const newFirstExerciceNonExpresssEndDate = dayjs().add(11, 'month').endOf('month').toDate();\n\n const payments = calculatePaymentsAuto({\n idTypeBrand: 1,\n firstExerciceNonExpresssEndDate: newFirstExerciceNonExpresssEndDate,\n idPrestation,\n isWithApplicationFees: true,\n idLegalForm: LegalFormTypeEnum.SARL,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress: [],\n listRegulations: [\n {\n amount: 50,\n amountUsed: 0,\n } as IRegulation,\n ],\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress,\n });\n\n const listNonExpressPayments = payments.filter(\n (p) => dayjs(p.closingDate).diff(newFirstExerciceNonExpresssEndDate) === 0,\n );\n const firstPaymentWithTaxRateForced = listNonExpressPayments[1].amount * 1.0275;\n expect(firstPaymentWithTaxRateForced - listNonExpressPayments.splice(-2)[0].amount).toBeLessThanOrEqual(0.01); //Permet de gérer le pb d'arrondi\n\n MockDate.reset();\n });\n test('should not apply annual price increase (2,75%) if signed in last 3 months of civil year', () => {\n const mockedDate = dayjs('2024-11-15').toDate();\n MockDate.set(mockedDate);\n\n const newFirstExerciceNonExpresssEndDate = dayjs().add(11, 'month').endOf('month').toDate();\n\n const payments = calculatePaymentsAuto({\n idTypeBrand: 1,\n firstExerciceNonExpresssEndDate: newFirstExerciceNonExpresssEndDate,\n idPrestation,\n isWithApplicationFees: true,\n idLegalForm: LegalFormTypeEnum.SARL,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress: [],\n listRegulations: [\n {\n amount: 50,\n amountUsed: 0,\n } as IRegulation,\n ],\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress,\n });\n\n const listNonExpressPayments = payments.filter((p) => dayjs(p.datePayment).diff(dayjs('2025-06-01')) === 0);\n expect(listNonExpressPayments[0].amount).toStrictEqual(listNonExpressPayments.splice(-2)[0].amount);\n\n MockDate.reset();\n });\n\n test('should apply 14,9€ HT increase for the second exercice created (only offered on first exo) (no rules for 3 last months)', () => {\n const mockedDate = dayjs('2024-06-15').toDate();\n MockDate.set(mockedDate);\n\n const newFirstExerciceNonExpresssEndDate = dayjs().add(12, 'month').endOf('month').toDate();\n\n const payments = calculatePaymentsAuto({\n idTypeBrand: 1,\n firstExerciceNonExpresssEndDate: newFirstExerciceNonExpresssEndDate,\n idPrestation,\n isWithApplicationFees: false,\n idLegalForm: LegalFormTypeEnum.SARL,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress: [],\n listRegulations: [\n {\n amount: 50,\n amountUsed: 50,\n } as IRegulation,\n ],\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress,\n });\n\n const paymentsOfFirstExo =\n payments.filter((p) => dayjs(p.datePayment).diff(dayjs('2025-06-01')) === 0)[0].amount ?? 0;\n const paymentsOfSecondExo =\n payments.filter((p) => dayjs(p.datePayment).diff(dayjs('2025-07-01')) === 0).splice(-1)[0].amount ?? 0;\n expect(\n Math.round(100 * (paymentsOfFirstExo + getTaxesIncludedAmount(appCost, idVat) * 1.0275)) / 100,\n ).toStrictEqual(paymentsOfSecondExo);\n\n MockDate.reset();\n });\n\n // misc\n test('should payments been generated sorted by exercices start date', () => {\n const listPartialExercicePrestationExpressCloned = [...listPartialExercicePrestationExpress];\n listPartialExercicePrestationExpressCloned[0] = {\n ...listPartialExercicePrestationExpress[0],\n startDate: dayjs().add(1, 'year').startOf('month').toDate(),\n };\n listPartialExercicePrestationExpressCloned[1] = {\n ...listPartialExercicePrestationExpress[1],\n startDate: dayjs().startOf('month').toDate(),\n };\n const payments = calculatePaymentsAuto({\n idTypeBrand: 1,\n firstExerciceNonExpresssEndDate,\n idPrestation,\n isWithApplicationFees: true,\n idLegalForm: LegalFormTypeEnum.SARL,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress: listPartialExercicePrestationExpressCloned,\n listRegulations,\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress,\n });\n expect(payments.length).toBeGreaterThanOrEqual(4);\n expect(\n dayjs(payments[payments.length - 1].datePayment).diff(dayjs(payments?.[0]?.datePayment), 'month'),\n ).toBeGreaterThan(0);\n });\n test('if regulations are bigger than sum exercice prestation amounts, should pass some exercice payments', () => {\n const mockedDate = dayjs('2024-03-15').toDate();\n MockDate.set(mockedDate);\n\n const payments = calculatePaymentsAuto({\n idTypeBrand: 1,\n firstExerciceNonExpresssEndDate,\n idPrestation,\n isWithApplicationFees: false,\n idLegalForm: LegalFormTypeEnum.SARL,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress,\n listRegulations: [\n {\n amount: 2000,\n amountUsed: 0,\n date: new Date(),\n processed: true,\n idPaymentMethod: PaymentMethod.BANK_CARD.id,\n idSociety,\n },\n ],\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress,\n });\n expect(payments.length).toBeGreaterThanOrEqual(2);\n expect(payments[0]).toMatchObject({\n amount: 1320, // 1200 * 1,1\n idPrestation: 1,\n idPaymentMethod: PaymentMethod.BANK_CARD.id,\n });\n expect(payments[1]).toMatchObject({\n amount: 680, // 2000 - (1200 * 1,1)\n idPrestation: 1,\n idPaymentMethod: PaymentMethod.BANK_CARD.id,\n });\n MockDate.reset();\n });\n test('should not consider actual month if signed in last 3 days of month', () => {\n const mockedDate = dayjs('2024-03-29').toDate();\n MockDate.set(mockedDate);\n\n const payments = calculatePaymentsAuto({\n idTypeBrand: 1,\n firstExerciceNonExpresssEndDate,\n idPrestation,\n isWithApplicationFees: false,\n idLegalForm: LegalFormTypeEnum.SARL,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress,\n listRegulations,\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress,\n });\n expect(payments.length).toBeGreaterThanOrEqual(4);\n expect(payments?.[1]?.datePayment).toStrictEqual(dayjs().add(2, 'month').startOf('month').toDate());\n MockDate.reset();\n });\n test('last payment returned should be last of a year (12/XX)', () => {\n const mockedDate = dayjs('2024-03-29').toDate();\n MockDate.set(mockedDate);\n\n const payments = calculatePaymentsAuto({\n idTypeBrand: 1,\n firstExerciceNonExpresssEndDate,\n idPrestation,\n isWithApplicationFees: true,\n idLegalForm: LegalFormTypeEnum.SARL,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress,\n listRegulations,\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress,\n });\n expect(payments.length).toBeGreaterThanOrEqual(4);\n expect(dayjs(payments[payments.length - 1].datePayment).month()).toStrictEqual(11);\n });\n test('first payment and last payment should have at least one year difference (ex. : 23 - 24)', () => {\n const payments = calculatePaymentsAuto({\n idTypeBrand: 1,\n firstExerciceNonExpresssEndDate,\n idPrestation,\n isWithApplicationFees: true,\n idLegalForm: LegalFormTypeEnum.SARL,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress: [],\n listRegulations,\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress,\n });\n expect(\n dayjs(payments.slice(-1)?.[0]?.datePayment).diff(dayjs(payments?.[0]?.datePayment), 'year', true),\n ).toBeGreaterThan(1);\n });\n test('real case : idSociety 114440', () => {\n const payments = calculatePaymentsAuto({\n idTypeBrand: 1,\n firstExerciceNonExpresssEndDate: dayjs('2024-12-31').toDate(),\n idPrestation,\n isWithApplicationFees: true,\n idLegalForm: LegalFormTypeEnum.SARL,\n prestationList,\n idVat: Vat.TX_20.id,\n listPartialExercicePrestationExpress: [],\n listRegulations: [\n {\n amount: 1006.8,\n amountUsed: 0,\n date: dayjs('2024-06-06').toDate(),\n processed: false,\n idPaymentMethod: PaymentMethod.BANK_CARD.id,\n idSociety,\n },\n ],\n yearlyAmountNonExpress: 1433,\n nextYearlyAmountNonExpress: 1433,\n });\n expect(\n dayjs(payments.slice(-1)?.[0]?.datePayment).diff(dayjs(payments?.[0]?.datePayment), 'year', true),\n ).toBeGreaterThan(1);\n });\n });\n});\n"]}
1
+ {"version":3,"file":"payment.spec.js","sourceRoot":"","sources":["../../../../ts/utils/tests/payment.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import * as dayjs from 'dayjs';\nimport { IRegulation, Vat, PaymentMethod, getTaxesIncludedAmount } from '../../types';\nimport MockDate from 'mockdate';\n\nimport { calculatePaymentsAuto } from '../payment';\nimport { PartialExercicePrestationExpress } from '../../types/Interface/api/payment/Util';\n\ndescribe('Payment', () => {\n describe('calculatePayments', () => {\n const idPrestation = 1;\n const idSociety = 1;\n const yearlyAmountNonExpress = 1800;\n const nextYearlyAmountNonExpress = 1800;\n const appCost = 14.9;\n\n const firstExerciceNonExpresssEndDate = dayjs().add(11, 'month').endOf('month').toDate();\n const prestationList = {\n id: 34,\n name: 'Compta Pro',\n isComptable: true,\n isJuridique: false,\n isSocial: false,\n isAttestation: false,\n inAverageCart: true,\n isBack: false,\n minimumPrice: null,\n price: null,\n isCatalog: false,\n isPlannable: false,\n hidden: false,\n isComplementary: false,\n signaturePosition: '400,54,569,90',\n signaturePage: 7,\n };\n const idVat = Vat.TX_10.id;\n const listPartialExercicePrestationExpress: PartialExercicePrestationExpress[] = [\n {\n startDate: dayjs().subtract(2, 'year').startOf('month').toDate(),\n endDate: dayjs().subtract(13, 'month').endOf('month').toDate(),\n countExpressMonthlyPayment: 2,\n totalAmount: 1200,\n },\n {\n startDate: dayjs().subtract(1, 'year').startOf('month').toDate(),\n endDate: dayjs().subtract(1, 'month').endOf('month').toDate(),\n countExpressMonthlyPayment: 2,\n totalAmount: 1800,\n },\n ];\n const listRegulations: IRegulation[] = [\n {\n amount: 600,\n amountUsed: 0,\n date: new Date(),\n processed: true,\n idPaymentMethod: PaymentMethod.BANK_CARD.id,\n idSociety,\n },\n {\n amount: 300,\n amountUsed: 0,\n date: new Date(),\n processed: true,\n idPaymentMethod: PaymentMethod.BANK_CARD.id,\n idSociety,\n },\n {\n amount: 300,\n amountUsed: 300,\n date: new Date(),\n processed: true,\n idPaymentMethod: PaymentMethod.BANK_CARD.id,\n idSociety,\n },\n ];\n\n // =====================\n // errors handling\n // =====================\n test(\"should return error if prestationList doesn't correspond (!hidden, isCatalog, isComptable)\", () => {\n expect.assertions(2);\n try {\n prestationList.hidden = true;\n calculatePaymentsAuto({\n idTypeBrand: 1,\n firstExerciceNonExpresssEndDate,\n idPrestation,\n // isWithApplicationFees: true,\n // idLegalForm: LegalFormTypeEnum.SARL,\n prestationList: {\n ...prestationList,\n isCatalog: true,\n },\n idVat,\n listPartialExercicePrestationExpress,\n listRegulations,\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress,\n });\n } catch (error) {\n expect(error).toBeInstanceOf(Error);\n // @ts-ignore\n expect(error.message).toStrictEqual('Ce type de prestation ne correspond pas aux conditions attendues.');\n }\n });\n\n // =====================\n // logical\n // =====================\n // express\n test('if only one express, monthly payments of actual exo should be in parallel of express monthly payments, smoothed in number of remaining months (mini 3 months) (if not in 3 last month)', () => {\n const payments = calculatePaymentsAuto({\n idTypeBrand: 1,\n firstExerciceNonExpresssEndDate,\n idPrestation,\n // isWithApplicationFees: true,\n // idLegalForm: LegalFormTypeEnum.SARL,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress: [listPartialExercicePrestationExpress[0]],\n listRegulations,\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress,\n });\n\n const firstExpressDatePayment = payments.filter(\n (p) => dayjs(p.closingDate).diff(firstExerciceNonExpresssEndDate) < 0,\n )[0].datePayment;\n const firstNonExpressDatePayment = payments.filter(\n (p) => dayjs(p.closingDate).diff(firstExerciceNonExpresssEndDate) === 0,\n )[0].datePayment;\n expect(dayjs(firstNonExpressDatePayment).diff(firstExpressDatePayment, 'month')).toStrictEqual(0);\n });\n test('if more than one express, monthly payments of actual exo should be in a row of express monthly payments and smoothed, smoothed in number of remaining months after express monthly payments (mini 3 months) (if in 3 last month of exercice)', () => {\n const payments = calculatePaymentsAuto({\n idTypeBrand: 1,\n firstExerciceNonExpresssEndDate,\n idPrestation,\n // isWithApplicationFees: true,\n // idLegalForm: LegalFormTypeEnum.SARL,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress,\n listRegulations,\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress,\n });\n\n const lastExpressDatePayment = payments\n .filter((p) => dayjs(p.closingDate).diff(firstExerciceNonExpresssEndDate) < 0)\n .splice(-1)?.[0]?.datePayment;\n const firstNonExpressDatePayment = payments.filter(\n (p) => dayjs(p.closingDate).diff(firstExerciceNonExpresssEndDate) === 0,\n )?.[0]?.datePayment;\n expect(dayjs(firstNonExpressDatePayment).diff(lastExpressDatePayment, 'month')).toStrictEqual(1);\n });\n // non express\n test('should return a number of payments equal to nb of remaining months in exercice (if not in 3 last months)', () => {\n const mockedDate = dayjs('2024-05-15').toDate();\n MockDate.set(mockedDate);\n\n const nbMonthDelay = 6;\n const newFirstExerciceNonExpresssEndDate = dayjs().add(nbMonthDelay, 'month').endOf('month').toDate();\n\n const payments = calculatePaymentsAuto({\n idTypeBrand: 1,\n firstExerciceNonExpresssEndDate: newFirstExerciceNonExpresssEndDate,\n idPrestation,\n // isWithApplicationFees: true,\n // idLegalForm: LegalFormTypeEnum.SARL,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress: [],\n listRegulations: [\n {\n amount: 50,\n amountUsed: 0,\n } as IRegulation,\n ],\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress,\n });\n\n // const listNonExpressPayments = payments.filter(p => p.closingDate === newFirstExerciceNonExpresssEndDate);\n const listNonExpressPayments = payments.filter(\n (p) => dayjs(p.closingDate).diff(newFirstExerciceNonExpresssEndDate) === 0,\n );\n expect(listNonExpressPayments.length).toStrictEqual(1 + nbMonthDelay); //On ajoute 1 pour les frais de dossier\n\n MockDate.reset();\n });\n test('should return a number of payments equal to 3 (if in 3 last month of exercice)', () => {\n const nbMonthDelay = 1;\n const newFirstExerciceNonExpresssEndDate = dayjs().add(nbMonthDelay, 'month').endOf('month').toDate();\n\n const payments = calculatePaymentsAuto({\n idTypeBrand: 1,\n firstExerciceNonExpresssEndDate: newFirstExerciceNonExpresssEndDate,\n idPrestation,\n // isWithApplicationFees: true,\n // idLegalForm: LegalFormTypeEnum.SARL,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress: [],\n listRegulations: [\n {\n amount: 50,\n amountUsed: 0,\n } as IRegulation,\n ],\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress,\n });\n\n const listNonExpressPayments = payments.filter(\n (p) => dayjs(p.closingDate).diff(newFirstExerciceNonExpresssEndDate) === 0,\n );\n expect(listNonExpressPayments.length).toStrictEqual(1 + 3); //On ajoute 1 pour les frais de dossier\n });\n test('should (yearlyAmountNonExpress - sum of listRegulations) / count of monthly payments be equal to monthly payment amount (if not in 3 last month)', () => {\n const mockedDate = dayjs('2024-05-15').toDate();\n MockDate.set(mockedDate);\n\n const nbMonthDelay = 6;\n const newFirstExerciceNonExpresssEndDate = dayjs().add(nbMonthDelay, 'month').endOf('month').toDate();\n const newListRegulations = [\n {\n amount: 50,\n amountUsed: 0,\n } as IRegulation,\n ];\n const payments = calculatePaymentsAuto({\n idTypeBrand: 1,\n firstExerciceNonExpresssEndDate: newFirstExerciceNonExpresssEndDate,\n idPrestation,\n // isWithApplicationFees: false,\n // idLegalForm: LegalFormTypeEnum.SARL,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress: [],\n listRegulations: newListRegulations,\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress,\n });\n\n const diff =\n getTaxesIncludedAmount(yearlyAmountNonExpress, idVat) -\n newListRegulations.reduce((acc, r: IRegulation) => acc + r.amount - r.amountUsed, 0);\n const amount = Math.round((100 * diff) / nbMonthDelay) / 100;\n\n expect(payments[1].amount).toStrictEqual(amount);\n\n MockDate.reset();\n });\n test('should (totalAmount - firstPaymentAmount) / 3 be equal to monthly payment amount (if in 3 last month of exercice)', () => {\n const nbMonthDelay = 1;\n const newFirstExerciceNonExpresssEndDate = dayjs().add(nbMonthDelay, 'month').endOf('month').toDate();\n const newListRegulations = [\n {\n amount: 50,\n amountUsed: 0,\n } as IRegulation,\n ];\n const payments = calculatePaymentsAuto({\n idTypeBrand: 1,\n firstExerciceNonExpresssEndDate: newFirstExerciceNonExpresssEndDate,\n idPrestation,\n // isWithApplicationFees: false,\n // idLegalForm: LegalFormTypeEnum.SARL,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress: [],\n listRegulations: newListRegulations,\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress,\n });\n\n const diff =\n getTaxesIncludedAmount(yearlyAmountNonExpress, idVat) -\n newListRegulations.reduce((acc, r: IRegulation) => acc + r.amount - r.amountUsed, 0);\n const amount = Math.round((100 * diff) / 3) / 100;\n\n expect(payments[1].amount).toStrictEqual(amount);\n });\n // annual price increase\n test('should apply annual price increase (2,75%) if signed before last 3 months of civil year', () => {\n const mockedDate = dayjs('2024-08-15').toDate();\n MockDate.set(mockedDate);\n\n const newFirstExerciceNonExpresssEndDate = dayjs().add(11, 'month').endOf('month').toDate();\n\n const payments = calculatePaymentsAuto({\n idTypeBrand: 1,\n firstExerciceNonExpresssEndDate: newFirstExerciceNonExpresssEndDate,\n idPrestation,\n // isWithApplicationFees: true,\n // idLegalForm: LegalFormTypeEnum.SARL,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress: [],\n listRegulations: [\n {\n amount: 50,\n amountUsed: 0,\n } as IRegulation,\n ],\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress,\n });\n\n const listNonExpressPayments = payments.filter(\n (p) => dayjs(p.closingDate).diff(newFirstExerciceNonExpresssEndDate) === 0,\n );\n const firstPaymentWithTaxRateForced = listNonExpressPayments[1].amount * 1.0275;\n expect(firstPaymentWithTaxRateForced - listNonExpressPayments.splice(-2)[0].amount).toBeLessThanOrEqual(0.01); //Permet de gérer le pb d'arrondi\n\n MockDate.reset();\n });\n test('should not apply annual price increase (2,75%) if signed in last 3 months of civil year', () => {\n const mockedDate = dayjs('2024-11-15').toDate();\n MockDate.set(mockedDate);\n\n const newFirstExerciceNonExpresssEndDate = dayjs().add(11, 'month').endOf('month').toDate();\n\n const payments = calculatePaymentsAuto({\n idTypeBrand: 1,\n firstExerciceNonExpresssEndDate: newFirstExerciceNonExpresssEndDate,\n idPrestation,\n // isWithApplicationFees: true,\n // idLegalForm: LegalFormTypeEnum.SARL,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress: [],\n listRegulations: [\n {\n amount: 50,\n amountUsed: 0,\n } as IRegulation,\n ],\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress,\n });\n\n const listNonExpressPayments = payments.filter((p) => dayjs(p.datePayment).diff(dayjs('2025-06-01')) === 0);\n expect(listNonExpressPayments[0].amount).toStrictEqual(listNonExpressPayments.splice(-2)[0].amount);\n\n MockDate.reset();\n });\n\n test('should apply 14,9€ HT increase for the second exercice created (only offered on first exo) (no rules for 3 last months)', () => {\n const mockedDate = dayjs('2024-06-15').toDate();\n MockDate.set(mockedDate);\n\n const newFirstExerciceNonExpresssEndDate = dayjs().add(12, 'month').endOf('month').toDate();\n\n const payments = calculatePaymentsAuto({\n idTypeBrand: 1,\n firstExerciceNonExpresssEndDate: newFirstExerciceNonExpresssEndDate,\n idPrestation,\n // isWithApplicationFees: false,\n // idLegalForm: LegalFormTypeEnum.SARL,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress: [],\n listRegulations: [\n {\n amount: 50,\n amountUsed: 50,\n } as IRegulation,\n ],\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress,\n });\n\n const paymentsOfFirstExo =\n payments.filter((p) => dayjs(p.datePayment).diff(dayjs('2025-06-01')) === 0)[0].amount ?? 0;\n const paymentsOfSecondExo =\n payments.filter((p) => dayjs(p.datePayment).diff(dayjs('2025-07-01')) === 0).splice(-1)[0].amount ?? 0;\n expect(\n Math.round(100 * (paymentsOfFirstExo + getTaxesIncludedAmount(appCost, idVat) * 1.0275)) / 100,\n ).toStrictEqual(paymentsOfSecondExo);\n\n MockDate.reset();\n });\n\n // misc\n test('should payments been generated sorted by exercices start date', () => {\n const listPartialExercicePrestationExpressCloned = [...listPartialExercicePrestationExpress];\n listPartialExercicePrestationExpressCloned[0] = {\n ...listPartialExercicePrestationExpress[0],\n startDate: dayjs().add(1, 'year').startOf('month').toDate(),\n };\n listPartialExercicePrestationExpressCloned[1] = {\n ...listPartialExercicePrestationExpress[1],\n startDate: dayjs().startOf('month').toDate(),\n };\n const payments = calculatePaymentsAuto({\n idTypeBrand: 1,\n firstExerciceNonExpresssEndDate,\n idPrestation,\n // isWithApplicationFees: true,\n // idLegalForm: LegalFormTypeEnum.SARL,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress: listPartialExercicePrestationExpressCloned,\n listRegulations,\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress,\n });\n expect(payments.length).toBeGreaterThanOrEqual(4);\n expect(\n dayjs(payments[payments.length - 1].datePayment).diff(dayjs(payments?.[0]?.datePayment), 'month'),\n ).toBeGreaterThan(0);\n });\n test('if regulations are bigger than sum exercice prestation amounts, should pass some exercice payments', () => {\n const mockedDate = dayjs('2024-03-15').toDate();\n MockDate.set(mockedDate);\n\n const payments = calculatePaymentsAuto({\n idTypeBrand: 1,\n firstExerciceNonExpresssEndDate,\n idPrestation,\n // isWithApplicationFees: false,\n // idLegalForm: LegalFormTypeEnum.SARL,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress,\n listRegulations: [\n {\n amount: 2000,\n amountUsed: 0,\n date: new Date(),\n processed: true,\n idPaymentMethod: PaymentMethod.BANK_CARD.id,\n idSociety,\n },\n ],\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress,\n });\n expect(payments.length).toBeGreaterThanOrEqual(2);\n expect(payments[0]).toMatchObject({\n amount: 1320, // 1200 * 1,1\n idPrestation: 1,\n idPaymentMethod: PaymentMethod.BANK_CARD.id,\n });\n expect(payments[1]).toMatchObject({\n amount: 680, // 2000 - (1200 * 1,1)\n idPrestation: 1,\n idPaymentMethod: PaymentMethod.BANK_CARD.id,\n });\n MockDate.reset();\n });\n test('should not consider actual month if signed in last 3 days of month', () => {\n const mockedDate = dayjs('2024-03-29').toDate();\n MockDate.set(mockedDate);\n\n const payments = calculatePaymentsAuto({\n idTypeBrand: 1,\n firstExerciceNonExpresssEndDate,\n idPrestation,\n // isWithApplicationFees: false,\n // idLegalForm: LegalFormTypeEnum.SARL,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress,\n listRegulations,\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress,\n });\n expect(payments.length).toBeGreaterThanOrEqual(4);\n expect(payments?.[1]?.datePayment).toStrictEqual(dayjs().add(2, 'month').startOf('month').toDate());\n MockDate.reset();\n });\n test('last payment returned should be last of a year (12/XX)', () => {\n const mockedDate = dayjs('2024-03-29').toDate();\n MockDate.set(mockedDate);\n\n const payments = calculatePaymentsAuto({\n idTypeBrand: 1,\n firstExerciceNonExpresssEndDate,\n idPrestation,\n // isWithApplicationFees: true,\n // idLegalForm: LegalFormTypeEnum.SARL,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress,\n listRegulations,\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress,\n });\n expect(payments.length).toBeGreaterThanOrEqual(4);\n expect(dayjs(payments[payments.length - 1].datePayment).month()).toStrictEqual(11);\n });\n test('first payment and last payment should have at least one year difference (ex. : 23 - 24)', () => {\n const payments = calculatePaymentsAuto({\n idTypeBrand: 1,\n firstExerciceNonExpresssEndDate,\n idPrestation,\n // isWithApplicationFees: true,\n // idLegalForm: LegalFormTypeEnum.SARL,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress: [],\n listRegulations,\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress,\n });\n expect(\n dayjs(payments.slice(-1)?.[0]?.datePayment).diff(dayjs(payments?.[0]?.datePayment), 'year', true),\n ).toBeGreaterThan(1);\n });\n test('real case : idSociety 114440', () => {\n const payments = calculatePaymentsAuto({\n idTypeBrand: 1,\n firstExerciceNonExpresssEndDate: dayjs('2024-12-31').toDate(),\n idPrestation,\n // isWithApplicationFees: true,\n // idLegalForm: LegalFormTypeEnum.SARL,\n prestationList,\n idVat: Vat.TX_20.id,\n listPartialExercicePrestationExpress: [],\n listRegulations: [\n {\n amount: 1006.8,\n amountUsed: 0,\n date: dayjs('2024-06-06').toDate(),\n processed: false,\n idPaymentMethod: PaymentMethod.BANK_CARD.id,\n idSociety,\n },\n ],\n yearlyAmountNonExpress: 1433,\n nextYearlyAmountNonExpress: 1433,\n });\n expect(\n dayjs(payments.slice(-1)?.[0]?.datePayment).diff(dayjs(payments?.[0]?.datePayment), 'year', true),\n ).toBeGreaterThan(1);\n });\n });\n});\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@silexpert/core",
3
- "version": "1.3.136",
3
+ "version": "1.3.137",
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",
@@ -24,6 +24,7 @@ import {
24
24
  UpdatePayment,
25
25
  QueryStripeSubscriptionId,
26
26
  UpdatePaymentMethod,
27
+ CreatePaymentsRebilling,
27
28
  } from '../../types';
28
29
  import { IPaymentRecovery } from '../../types/Interface/models/IPaymentRecovery';
29
30
  import Stripe from 'stripe';
@@ -119,10 +120,14 @@ export class Payment extends Resource {
119
120
  });
120
121
  }
121
122
 
122
- generateForAutoBilling(payload: CreatePaymentsAutoBilling): Promise<ReadStatsSocietyUnpaid[]> {
123
+ generateForAutoBilling(payload: CreatePaymentsAutoBilling): Promise<number> {
123
124
  return this.axios.$post('payment/auto-billing', payload);
124
125
  }
125
126
 
127
+ generateForRebilling(payload: CreatePaymentsRebilling): Promise<number> {
128
+ return this.axios.$post('payment/rebilling', payload);
129
+ }
130
+
126
131
  getAllInvoices(idExercice: number, query: QueryPaymentInvoice): Promise<ReadPaymentInvoice[]> {
127
132
  return this.axios.$get(`/exercices/${idExercice}/invoices`, { params: query });
128
133
  }
@@ -8,6 +8,11 @@ export class CreatePaymentsAutoBilling {
8
8
  @IsInt()
9
9
  idSociety?: number;
10
10
  }
11
+ export class CreatePaymentsRebilling {
12
+ @ApiProperty()
13
+ @IsInt()
14
+ idSociety: number;
15
+ }
11
16
 
12
17
  export class UpdateCollectable {
13
18
  @ApiProperty()