@silexpert/core 1.2.26 → 1.2.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/api/index.d.ts.map +1 -1
- package/dist/cjs/api/index.js +8 -3
- package/dist/cjs/api/index.js.map +1 -1
- package/dist/cjs/api/resources/Employee.d.ts.map +1 -1
- package/dist/cjs/api/resources/Employee.js +1 -0
- package/dist/cjs/api/resources/Employee.js.map +1 -1
- package/dist/cjs/api/resources/RegistrationForm.d.ts +3 -2
- package/dist/cjs/api/resources/RegistrationForm.d.ts.map +1 -1
- package/dist/cjs/api/resources/RegistrationForm.js +4 -1
- package/dist/cjs/api/resources/RegistrationForm.js.map +1 -1
- package/dist/cjs/api/resources/Task.d.ts.map +1 -1
- package/dist/cjs/api/resources/Task.js +1 -0
- package/dist/cjs/api/resources/Task.js.map +1 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +0 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types/Enum/Aspone.d.ts +57 -0
- package/dist/cjs/types/Enum/Aspone.d.ts.map +1 -1
- package/dist/cjs/types/Enum/Aspone.js +94 -1
- package/dist/cjs/types/Enum/Aspone.js.map +1 -1
- package/dist/cjs/types/Enum/BalanceSheet.js +1 -1
- package/dist/cjs/types/Enum/BalanceSheet.js.map +1 -1
- package/dist/cjs/types/Enum/BalanceSheetQuestion.d.ts.map +1 -1
- package/dist/cjs/types/Enum/BalanceSheetQuestion.js +2 -0
- package/dist/cjs/types/Enum/BalanceSheetQuestion.js.map +1 -1
- package/dist/cjs/types/Enum/BalanceSheetQuestionWording.d.ts.map +1 -1
- package/dist/cjs/types/Enum/BalanceSheetQuestionWording.js +1 -0
- package/dist/cjs/types/Enum/BalanceSheetQuestionWording.js.map +1 -1
- package/dist/cjs/types/Enum/CerfaType.d.ts +2 -1
- package/dist/cjs/types/Enum/CerfaType.d.ts.map +1 -1
- package/dist/cjs/types/Enum/CerfaType.js +1 -0
- package/dist/cjs/types/Enum/CerfaType.js.map +1 -1
- package/dist/cjs/types/Enum/CommercialManagement.d.ts +28 -0
- package/dist/cjs/types/Enum/CommercialManagement.d.ts.map +1 -1
- package/dist/cjs/types/Enum/CommercialManagement.js +137 -1
- package/dist/cjs/types/Enum/CommercialManagement.js.map +1 -1
- package/dist/cjs/types/Enum/RevisionGuide.d.ts.map +1 -1
- package/dist/cjs/types/Enum/RevisionGuide.js +5 -0
- package/dist/cjs/types/Enum/RevisionGuide.js.map +1 -1
- package/dist/cjs/types/Enum/Role.d.ts.map +1 -1
- package/dist/cjs/types/Enum/Role.js +1 -0
- package/dist/cjs/types/Enum/Role.js.map +1 -1
- package/dist/cjs/types/Enum/SalesContractBrandClementine.js +4 -4
- package/dist/cjs/types/Enum/SalesContractBrandClementine.js.map +1 -1
- package/dist/cjs/types/Enum/SalesContractBrandPourcentage.d.ts +1 -26
- package/dist/cjs/types/Enum/SalesContractBrandPourcentage.d.ts.map +1 -1
- package/dist/cjs/types/Enum/SalesContractBrandPourcentage.js +6 -6
- package/dist/cjs/types/Enum/SalesContractBrandPourcentage.js.map +1 -1
- package/dist/cjs/types/Enum/TransactionKind.d.ts.map +1 -1
- package/dist/cjs/types/Enum/TransactionKind.js.map +1 -1
- package/dist/cjs/types/Enum/TransactionStatus.d.ts.map +1 -1
- package/dist/cjs/types/Enum/TransactionStatus.js.map +1 -1
- package/dist/cjs/types/Enum/TypePayment.d.ts.map +1 -1
- package/dist/cjs/types/Enum/TypePayment.js +1 -0
- package/dist/cjs/types/Enum/TypePayment.js.map +1 -1
- package/dist/cjs/types/Interface/api/accountingFiles/Ocr.d.ts.map +1 -1
- package/dist/cjs/types/Interface/api/accountingFiles/Ocr.js.map +1 -1
- package/dist/cjs/types/Interface/api/cerfa/2573.d.ts +91 -0
- package/dist/cjs/types/Interface/api/cerfa/2573.d.ts.map +1 -0
- package/dist/cjs/types/Interface/api/cerfa/2573.js +3 -0
- package/dist/cjs/types/Interface/api/cerfa/2573.js.map +1 -0
- package/dist/cjs/types/Interface/api/cerfa/CreateCerfa.d.ts +1 -0
- package/dist/cjs/types/Interface/api/cerfa/CreateCerfa.d.ts.map +1 -1
- package/dist/cjs/types/Interface/api/cerfa/CreateCerfa.js +1 -0
- package/dist/cjs/types/Interface/api/cerfa/CreateCerfa.js.map +1 -1
- package/dist/cjs/types/Interface/api/cerfa/ReadCerfa.d.ts +2 -1
- package/dist/cjs/types/Interface/api/cerfa/ReadCerfa.d.ts.map +1 -1
- package/dist/cjs/types/Interface/api/cerfa/ReadCerfa.js.map +1 -1
- package/dist/cjs/types/Interface/api/checklist/Read.d.ts +1 -0
- package/dist/cjs/types/Interface/api/checklist/Read.d.ts.map +1 -1
- package/dist/cjs/types/Interface/api/checklist/Read.js.map +1 -1
- package/dist/cjs/types/Interface/api/commercialManagement/Create.d.ts +15 -0
- package/dist/cjs/types/Interface/api/commercialManagement/Create.d.ts.map +1 -1
- package/dist/cjs/types/Interface/api/commercialManagement/Create.js +70 -1
- package/dist/cjs/types/Interface/api/commercialManagement/Create.js.map +1 -1
- package/dist/cjs/types/Interface/api/commercialManagement/Read.d.ts +4 -0
- package/dist/cjs/types/Interface/api/commercialManagement/Read.d.ts.map +1 -1
- package/dist/cjs/types/Interface/api/commercialManagement/Read.js.map +1 -1
- package/dist/cjs/types/Interface/api/config/ConfigType.d.ts +282 -0
- package/dist/cjs/types/Interface/api/config/ConfigType.d.ts.map +1 -0
- package/dist/cjs/types/Interface/api/config/ConfigType.js +3 -0
- package/dist/cjs/types/Interface/api/config/ConfigType.js.map +1 -0
- package/dist/cjs/types/Interface/api/crisp/GetCrisp.d.ts.map +1 -1
- package/dist/cjs/types/Interface/api/crisp/GetCrisp.js.map +1 -1
- package/dist/cjs/types/Interface/api/exerciceQuestion/CreateExerciceQuestion.d.ts.map +1 -1
- package/dist/cjs/types/Interface/api/exerciceQuestion/CreateExerciceQuestion.js +3 -1
- package/dist/cjs/types/Interface/api/exerciceQuestion/CreateExerciceQuestion.js.map +1 -1
- package/dist/cjs/types/Interface/api/journal/Journals.d.ts.map +1 -1
- package/dist/cjs/types/Interface/api/journal/Journals.js.map +1 -1
- package/dist/cjs/types/Interface/api/kilometricAllowance/CreateKilometricAllowanceValidation.d.ts.map +1 -1
- package/dist/cjs/types/Interface/api/kilometricAllowance/CreateKilometricAllowanceValidation.js +3 -1
- package/dist/cjs/types/Interface/api/kilometricAllowance/CreateKilometricAllowanceValidation.js.map +1 -1
- package/dist/cjs/types/Interface/api/notion/NotionResponse.d.ts +4 -4
- package/dist/cjs/types/Interface/api/notion/NotionResponse.d.ts.map +1 -1
- package/dist/cjs/types/Interface/api/notion/NotionResponse.js.map +1 -1
- package/dist/cjs/types/Interface/api/pappers/QueryPappers.d.ts.map +1 -1
- package/dist/cjs/types/Interface/api/pappers/QueryPappers.js.map +1 -1
- package/dist/cjs/types/Interface/api/promoCode/CreateDefaultPromoCode.d.ts.map +1 -1
- package/dist/cjs/types/Interface/api/promoCode/CreateDefaultPromoCode.js +3 -1
- package/dist/cjs/types/Interface/api/promoCode/CreateDefaultPromoCode.js.map +1 -1
- package/dist/cjs/types/Interface/api/promoCode/ReadDefaultPromotion.d.ts.map +1 -1
- package/dist/cjs/types/Interface/api/promoCode/ReadDefaultPromotion.js.map +1 -1
- package/dist/cjs/types/Interface/api/registration/CreateRegistration.d.ts +2 -0
- package/dist/cjs/types/Interface/api/registration/CreateRegistration.d.ts.map +1 -1
- package/dist/cjs/types/Interface/api/registration/CreateRegistration.js.map +1 -1
- package/dist/cjs/types/Interface/api/shopify/ShopifyFinancialStatus.d.ts.map +1 -1
- package/dist/cjs/types/Interface/api/shopify/ShopifyFinancialStatus.js.map +1 -1
- package/dist/cjs/types/Interface/api/shopify/ShopifyOrder.d.ts.map +1 -1
- package/dist/cjs/types/Interface/api/shopify/ShopifyOrder.js.map +1 -1
- package/dist/cjs/types/Interface/api/shopify/discount_code.d.ts.map +1 -1
- package/dist/cjs/types/Interface/api/shopify/discount_code.js.map +1 -1
- package/dist/cjs/types/Interface/api/shopify/shipping_line.d.ts.map +1 -1
- package/dist/cjs/types/Interface/api/shopify/shipping_line.js.map +1 -1
- package/dist/cjs/types/Interface/models/IBalanceSheetQuestion.d.ts.map +1 -1
- package/dist/cjs/types/Interface/models/IBalanceSheetQuestion.js.map +1 -1
- package/dist/cjs/types/Interface/models/IFecFile.d.ts.map +1 -1
- package/dist/cjs/types/Interface/models/IFecFile.js.map +1 -1
- package/dist/cjs/types/Interface/models/IRegistration.d.ts.map +1 -1
- package/dist/cjs/types/Interface/models/IRegistration.js.map +1 -1
- package/dist/cjs/types/Interface/models/ISaleEmail.d.ts +15 -0
- package/dist/cjs/types/Interface/models/ISaleEmail.d.ts.map +1 -0
- package/dist/cjs/types/Interface/models/ISaleEmail.js +3 -0
- package/dist/cjs/types/Interface/models/ISaleEmail.js.map +1 -0
- package/dist/cjs/types/Interface/models/IUser.d.ts.map +1 -1
- package/dist/cjs/types/Interface/models/IUser.js.map +1 -1
- package/dist/cjs/types/index.d.ts +2 -0
- package/dist/cjs/types/index.d.ts.map +1 -1
- package/dist/cjs/types/index.js +2 -0
- package/dist/cjs/types/index.js.map +1 -1
- package/dist/cjs/utils/brands.d.ts.map +1 -1
- package/dist/cjs/utils/brands.js +5 -0
- package/dist/cjs/utils/brands.js.map +1 -1
- package/dist/cjs/utils/checkup.d.ts.map +1 -1
- package/dist/cjs/utils/checkup.js +5 -0
- package/dist/cjs/utils/checkup.js.map +1 -1
- package/dist/cjs/utils/commercialManagement/document.d.ts.map +1 -1
- package/dist/cjs/utils/commercialManagement/document.js +6 -5
- package/dist/cjs/utils/commercialManagement/document.js.map +1 -1
- package/dist/cjs/utils/commercialManagement/recurrence.js +2 -2
- package/dist/cjs/utils/commercialManagement/recurrence.js.map +1 -1
- package/dist/cjs/utils/commercialManagement/saleEmail.d.ts +10 -0
- package/dist/cjs/utils/commercialManagement/saleEmail.d.ts.map +1 -0
- package/dist/cjs/utils/commercialManagement/saleEmail.js +34 -0
- package/dist/cjs/utils/commercialManagement/saleEmail.js.map +1 -0
- package/dist/cjs/utils/commercialManagement/vat.d.ts.map +1 -1
- package/dist/cjs/utils/commercialManagement/vat.js +1 -0
- package/dist/cjs/utils/commercialManagement/vat.js.map +1 -1
- package/dist/cjs/utils/date.d.ts.map +1 -1
- package/dist/cjs/utils/date.js +9 -0
- package/dist/cjs/utils/date.js.map +1 -1
- package/dist/cjs/utils/decorators.d.ts.map +1 -1
- package/dist/cjs/utils/decorators.js +3 -4
- package/dist/cjs/utils/decorators.js.map +1 -1
- package/dist/cjs/utils/email.d.ts.map +1 -1
- package/dist/cjs/utils/email.js +22 -0
- package/dist/cjs/utils/email.js.map +1 -1
- package/dist/cjs/utils/isUrl.d.ts.map +1 -1
- package/dist/cjs/utils/isUrl.js +1 -2
- package/dist/cjs/utils/isUrl.js.map +1 -1
- package/dist/cjs/utils/noLodash.d.ts.map +1 -1
- package/dist/cjs/utils/noLodash.js +10 -2
- package/dist/cjs/utils/noLodash.js.map +1 -1
- package/dist/cjs/utils/objectUtils/flattenObject.d.ts.map +1 -1
- package/dist/cjs/utils/objectUtils/flattenObject.js +1 -0
- package/dist/cjs/utils/objectUtils/flattenObject.js.map +1 -1
- package/dist/cjs/utils/objectUtils/fullFlattenObject.d.ts.map +1 -1
- package/dist/cjs/utils/objectUtils/fullFlattenObject.js +1 -0
- package/dist/cjs/utils/objectUtils/fullFlattenObject.js.map +1 -1
- package/dist/cjs/utils/objectUtils/unflattenObject.d.ts.map +1 -1
- package/dist/cjs/utils/objectUtils/unflattenObject.js +0 -1
- package/dist/cjs/utils/objectUtils/unflattenObject.js.map +1 -1
- package/dist/cjs/utils/payment.d.ts.map +1 -1
- package/dist/cjs/utils/payment.js +6 -1
- package/dist/cjs/utils/payment.js.map +1 -1
- package/dist/cjs/utils/phone.d.ts.map +1 -1
- package/dist/cjs/utils/phone.js +1 -0
- package/dist/cjs/utils/phone.js.map +1 -1
- package/dist/cjs/utils/quotation.js +2 -2
- package/dist/cjs/utils/quotation.js.map +1 -1
- package/dist/cjs/utils/social.js +0 -1
- package/dist/cjs/utils/social.js.map +1 -1
- package/dist/cjs/utils/statutsGeneration.js +2 -2
- package/dist/cjs/utils/statutsGeneration.js.map +1 -1
- package/dist/cjs/utils/tests/payment.spec.js +30 -39
- package/dist/cjs/utils/tests/payment.spec.js.map +1 -1
- package/dist/cjs/utils/transforms/boolean.transform.d.ts.map +1 -1
- package/dist/cjs/utils/transforms/boolean.transform.js +3 -1
- package/dist/cjs/utils/transforms/boolean.transform.js.map +1 -1
- package/dist/cjs/utils/vat/3310/century23.d.ts.map +1 -1
- package/dist/cjs/utils/vat/3310/century23.js +23 -0
- package/dist/cjs/utils/vat/3310/century23.js.map +1 -1
- package/dist/cjs/utils/vat/3310/century24.d.ts.map +1 -1
- package/dist/cjs/utils/vat/3310/century24.js +23 -0
- package/dist/cjs/utils/vat/3310/century24.js.map +1 -1
- package/dist/cjs/utils/vat/3517/century23.d.ts.map +1 -1
- package/dist/cjs/utils/vat/3517/century23.js +4 -0
- package/dist/cjs/utils/vat/3517/century23.js.map +1 -1
- package/dist/cjs/utils/vat/registration.d.ts.map +1 -1
- package/dist/cjs/utils/vat/registration.js +0 -1
- package/dist/cjs/utils/vat/registration.js.map +1 -1
- package/dist/mjs/api/index.d.ts.map +1 -1
- package/dist/mjs/api/index.js +7 -1
- package/dist/mjs/api/index.js.map +1 -1
- package/dist/mjs/api/resources/Employee.d.ts.map +1 -1
- package/dist/mjs/api/resources/Employee.js +1 -0
- package/dist/mjs/api/resources/Employee.js.map +1 -1
- package/dist/mjs/api/resources/RegistrationForm.d.ts +3 -2
- package/dist/mjs/api/resources/RegistrationForm.d.ts.map +1 -1
- package/dist/mjs/api/resources/RegistrationForm.js +4 -1
- package/dist/mjs/api/resources/RegistrationForm.js.map +1 -1
- package/dist/mjs/api/resources/Task.d.ts.map +1 -1
- package/dist/mjs/api/resources/Task.js +1 -0
- package/dist/mjs/api/resources/Task.js.map +1 -1
- package/dist/mjs/index.d.ts.map +1 -1
- package/dist/mjs/index.js +0 -1
- package/dist/mjs/index.js.map +1 -1
- package/dist/mjs/types/Enum/Aspone.d.ts +57 -0
- package/dist/mjs/types/Enum/Aspone.d.ts.map +1 -1
- package/dist/mjs/types/Enum/Aspone.js +93 -0
- package/dist/mjs/types/Enum/Aspone.js.map +1 -1
- package/dist/mjs/types/Enum/BalanceSheet.js +1 -1
- package/dist/mjs/types/Enum/BalanceSheet.js.map +1 -1
- package/dist/mjs/types/Enum/BalanceSheetQuestion.d.ts.map +1 -1
- package/dist/mjs/types/Enum/BalanceSheetQuestion.js +2 -0
- package/dist/mjs/types/Enum/BalanceSheetQuestion.js.map +1 -1
- package/dist/mjs/types/Enum/BalanceSheetQuestionWording.d.ts.map +1 -1
- package/dist/mjs/types/Enum/BalanceSheetQuestionWording.js +1 -0
- package/dist/mjs/types/Enum/BalanceSheetQuestionWording.js.map +1 -1
- package/dist/mjs/types/Enum/CerfaType.d.ts +2 -1
- package/dist/mjs/types/Enum/CerfaType.d.ts.map +1 -1
- package/dist/mjs/types/Enum/CerfaType.js +1 -0
- package/dist/mjs/types/Enum/CerfaType.js.map +1 -1
- package/dist/mjs/types/Enum/CommercialManagement.d.ts +28 -0
- package/dist/mjs/types/Enum/CommercialManagement.d.ts.map +1 -1
- package/dist/mjs/types/Enum/CommercialManagement.js +136 -0
- package/dist/mjs/types/Enum/CommercialManagement.js.map +1 -1
- package/dist/mjs/types/Enum/RevisionGuide.d.ts.map +1 -1
- package/dist/mjs/types/Enum/RevisionGuide.js +5 -0
- package/dist/mjs/types/Enum/RevisionGuide.js.map +1 -1
- package/dist/mjs/types/Enum/Role.d.ts.map +1 -1
- package/dist/mjs/types/Enum/Role.js +1 -0
- package/dist/mjs/types/Enum/Role.js.map +1 -1
- package/dist/mjs/types/Enum/SalesContractBrandClementine.js +4 -4
- package/dist/mjs/types/Enum/SalesContractBrandClementine.js.map +1 -1
- package/dist/mjs/types/Enum/SalesContractBrandPourcentage.d.ts +1 -26
- package/dist/mjs/types/Enum/SalesContractBrandPourcentage.d.ts.map +1 -1
- package/dist/mjs/types/Enum/SalesContractBrandPourcentage.js +6 -6
- package/dist/mjs/types/Enum/SalesContractBrandPourcentage.js.map +1 -1
- package/dist/mjs/types/Enum/TransactionKind.d.ts.map +1 -1
- package/dist/mjs/types/Enum/TransactionKind.js.map +1 -1
- package/dist/mjs/types/Enum/TransactionStatus.d.ts.map +1 -1
- package/dist/mjs/types/Enum/TransactionStatus.js.map +1 -1
- package/dist/mjs/types/Enum/TypePayment.d.ts.map +1 -1
- package/dist/mjs/types/Enum/TypePayment.js +1 -0
- package/dist/mjs/types/Enum/TypePayment.js.map +1 -1
- package/dist/mjs/types/Interface/api/accountingFiles/Ocr.d.ts.map +1 -1
- package/dist/mjs/types/Interface/api/accountingFiles/Ocr.js.map +1 -1
- package/dist/mjs/types/Interface/api/cerfa/2573.d.ts +91 -0
- package/dist/mjs/types/Interface/api/cerfa/2573.d.ts.map +1 -0
- package/dist/mjs/types/Interface/api/cerfa/2573.js +2 -0
- package/dist/mjs/types/Interface/api/cerfa/2573.js.map +1 -0
- package/dist/mjs/types/Interface/api/cerfa/CreateCerfa.d.ts +1 -0
- package/dist/mjs/types/Interface/api/cerfa/CreateCerfa.d.ts.map +1 -1
- package/dist/mjs/types/Interface/api/cerfa/CreateCerfa.js +1 -0
- package/dist/mjs/types/Interface/api/cerfa/CreateCerfa.js.map +1 -1
- package/dist/mjs/types/Interface/api/cerfa/ReadCerfa.d.ts +2 -1
- package/dist/mjs/types/Interface/api/cerfa/ReadCerfa.d.ts.map +1 -1
- package/dist/mjs/types/Interface/api/cerfa/ReadCerfa.js.map +1 -1
- package/dist/mjs/types/Interface/api/checklist/Read.d.ts +1 -0
- package/dist/mjs/types/Interface/api/checklist/Read.d.ts.map +1 -1
- package/dist/mjs/types/Interface/api/checklist/Read.js.map +1 -1
- package/dist/mjs/types/Interface/api/commercialManagement/Create.d.ts +15 -0
- package/dist/mjs/types/Interface/api/commercialManagement/Create.d.ts.map +1 -1
- package/dist/mjs/types/Interface/api/commercialManagement/Create.js +79 -1
- package/dist/mjs/types/Interface/api/commercialManagement/Create.js.map +1 -1
- package/dist/mjs/types/Interface/api/commercialManagement/Read.d.ts +4 -0
- package/dist/mjs/types/Interface/api/commercialManagement/Read.d.ts.map +1 -1
- package/dist/mjs/types/Interface/api/commercialManagement/Read.js.map +1 -1
- package/dist/mjs/types/Interface/api/config/ConfigType.d.ts +282 -0
- package/dist/mjs/types/Interface/api/config/ConfigType.d.ts.map +1 -0
- package/dist/mjs/types/Interface/api/config/ConfigType.js +2 -0
- package/dist/mjs/types/Interface/api/config/ConfigType.js.map +1 -0
- package/dist/mjs/types/Interface/api/crisp/GetCrisp.d.ts.map +1 -1
- package/dist/mjs/types/Interface/api/crisp/GetCrisp.js.map +1 -1
- package/dist/mjs/types/Interface/api/exerciceQuestion/CreateExerciceQuestion.d.ts.map +1 -1
- package/dist/mjs/types/Interface/api/exerciceQuestion/CreateExerciceQuestion.js +3 -1
- package/dist/mjs/types/Interface/api/exerciceQuestion/CreateExerciceQuestion.js.map +1 -1
- package/dist/mjs/types/Interface/api/journal/Journals.d.ts.map +1 -1
- package/dist/mjs/types/Interface/api/journal/Journals.js.map +1 -1
- package/dist/mjs/types/Interface/api/kilometricAllowance/CreateKilometricAllowanceValidation.d.ts.map +1 -1
- package/dist/mjs/types/Interface/api/kilometricAllowance/CreateKilometricAllowanceValidation.js +3 -1
- package/dist/mjs/types/Interface/api/kilometricAllowance/CreateKilometricAllowanceValidation.js.map +1 -1
- package/dist/mjs/types/Interface/api/notion/NotionResponse.d.ts +4 -4
- package/dist/mjs/types/Interface/api/notion/NotionResponse.d.ts.map +1 -1
- package/dist/mjs/types/Interface/api/notion/NotionResponse.js.map +1 -1
- package/dist/mjs/types/Interface/api/pappers/QueryPappers.d.ts.map +1 -1
- package/dist/mjs/types/Interface/api/pappers/QueryPappers.js +3 -0
- package/dist/mjs/types/Interface/api/pappers/QueryPappers.js.map +1 -1
- package/dist/mjs/types/Interface/api/promoCode/CreateDefaultPromoCode.d.ts.map +1 -1
- package/dist/mjs/types/Interface/api/promoCode/CreateDefaultPromoCode.js +4 -1
- package/dist/mjs/types/Interface/api/promoCode/CreateDefaultPromoCode.js.map +1 -1
- package/dist/mjs/types/Interface/api/promoCode/ReadDefaultPromotion.d.ts.map +1 -1
- package/dist/mjs/types/Interface/api/promoCode/ReadDefaultPromotion.js.map +1 -1
- package/dist/mjs/types/Interface/api/registration/CreateRegistration.d.ts +2 -0
- package/dist/mjs/types/Interface/api/registration/CreateRegistration.d.ts.map +1 -1
- package/dist/mjs/types/Interface/api/registration/CreateRegistration.js.map +1 -1
- package/dist/mjs/types/Interface/api/shopify/ShopifyFinancialStatus.d.ts.map +1 -1
- package/dist/mjs/types/Interface/api/shopify/ShopifyFinancialStatus.js.map +1 -1
- package/dist/mjs/types/Interface/api/shopify/ShopifyOrder.d.ts.map +1 -1
- package/dist/mjs/types/Interface/api/shopify/ShopifyOrder.js.map +1 -1
- package/dist/mjs/types/Interface/api/shopify/discount_code.d.ts.map +1 -1
- package/dist/mjs/types/Interface/api/shopify/discount_code.js.map +1 -1
- package/dist/mjs/types/Interface/api/shopify/shipping_line.d.ts.map +1 -1
- package/dist/mjs/types/Interface/api/shopify/shipping_line.js.map +1 -1
- package/dist/mjs/types/Interface/models/IBalanceSheetQuestion.d.ts.map +1 -1
- package/dist/mjs/types/Interface/models/IBalanceSheetQuestion.js.map +1 -1
- package/dist/mjs/types/Interface/models/IFecFile.d.ts.map +1 -1
- package/dist/mjs/types/Interface/models/IFecFile.js.map +1 -1
- package/dist/mjs/types/Interface/models/IRegistration.d.ts.map +1 -1
- package/dist/mjs/types/Interface/models/IRegistration.js.map +1 -1
- package/dist/mjs/types/Interface/models/ISaleEmail.d.ts +15 -0
- package/dist/mjs/types/Interface/models/ISaleEmail.d.ts.map +1 -0
- package/dist/mjs/types/Interface/models/ISaleEmail.js +2 -0
- package/dist/mjs/types/Interface/models/ISaleEmail.js.map +1 -0
- package/dist/mjs/types/Interface/models/IUser.d.ts.map +1 -1
- package/dist/mjs/types/Interface/models/IUser.js.map +1 -1
- package/dist/mjs/types/index.d.ts +2 -0
- package/dist/mjs/types/index.d.ts.map +1 -1
- package/dist/mjs/types/index.js +2 -0
- package/dist/mjs/types/index.js.map +1 -1
- package/dist/mjs/utils/brands.d.ts.map +1 -1
- package/dist/mjs/utils/brands.js +5 -0
- package/dist/mjs/utils/brands.js.map +1 -1
- package/dist/mjs/utils/checkup.d.ts.map +1 -1
- package/dist/mjs/utils/checkup.js +5 -0
- package/dist/mjs/utils/checkup.js.map +1 -1
- package/dist/mjs/utils/commercialManagement/document.d.ts.map +1 -1
- package/dist/mjs/utils/commercialManagement/document.js +2 -1
- package/dist/mjs/utils/commercialManagement/document.js.map +1 -1
- package/dist/mjs/utils/commercialManagement/recurrence.js +2 -2
- package/dist/mjs/utils/commercialManagement/recurrence.js.map +1 -1
- package/dist/mjs/utils/commercialManagement/saleEmail.d.ts +10 -0
- package/dist/mjs/utils/commercialManagement/saleEmail.d.ts.map +1 -0
- package/dist/mjs/utils/commercialManagement/saleEmail.js +30 -0
- package/dist/mjs/utils/commercialManagement/saleEmail.js.map +1 -0
- package/dist/mjs/utils/commercialManagement/vat.d.ts.map +1 -1
- package/dist/mjs/utils/commercialManagement/vat.js +1 -0
- package/dist/mjs/utils/commercialManagement/vat.js.map +1 -1
- package/dist/mjs/utils/date.d.ts.map +1 -1
- package/dist/mjs/utils/date.js +9 -0
- package/dist/mjs/utils/date.js.map +1 -1
- package/dist/mjs/utils/decorators.d.ts.map +1 -1
- package/dist/mjs/utils/decorators.js +3 -4
- package/dist/mjs/utils/decorators.js.map +1 -1
- package/dist/mjs/utils/email.d.ts.map +1 -1
- package/dist/mjs/utils/email.js +22 -0
- package/dist/mjs/utils/email.js.map +1 -1
- package/dist/mjs/utils/isUrl.d.ts.map +1 -1
- package/dist/mjs/utils/isUrl.js +1 -2
- package/dist/mjs/utils/isUrl.js.map +1 -1
- package/dist/mjs/utils/noLodash.d.ts.map +1 -1
- package/dist/mjs/utils/noLodash.js +8 -1
- package/dist/mjs/utils/noLodash.js.map +1 -1
- package/dist/mjs/utils/objectUtils/flattenObject.d.ts.map +1 -1
- package/dist/mjs/utils/objectUtils/flattenObject.js +1 -0
- package/dist/mjs/utils/objectUtils/flattenObject.js.map +1 -1
- package/dist/mjs/utils/objectUtils/fullFlattenObject.d.ts.map +1 -1
- package/dist/mjs/utils/objectUtils/fullFlattenObject.js +1 -0
- package/dist/mjs/utils/objectUtils/fullFlattenObject.js.map +1 -1
- package/dist/mjs/utils/objectUtils/unflattenObject.d.ts.map +1 -1
- package/dist/mjs/utils/objectUtils/unflattenObject.js +0 -1
- package/dist/mjs/utils/objectUtils/unflattenObject.js.map +1 -1
- package/dist/mjs/utils/payment.d.ts.map +1 -1
- package/dist/mjs/utils/payment.js +6 -1
- package/dist/mjs/utils/payment.js.map +1 -1
- package/dist/mjs/utils/phone.d.ts.map +1 -1
- package/dist/mjs/utils/phone.js +1 -0
- package/dist/mjs/utils/phone.js.map +1 -1
- package/dist/mjs/utils/quotation.js +1 -1
- package/dist/mjs/utils/quotation.js.map +1 -1
- package/dist/mjs/utils/social.js +0 -1
- package/dist/mjs/utils/social.js.map +1 -1
- package/dist/mjs/utils/statutsGeneration.js +2 -2
- package/dist/mjs/utils/statutsGeneration.js.map +1 -1
- package/dist/mjs/utils/tests/payment.spec.js +15 -15
- package/dist/mjs/utils/tests/payment.spec.js.map +1 -1
- package/dist/mjs/utils/transforms/boolean.transform.d.ts.map +1 -1
- package/dist/mjs/utils/transforms/boolean.transform.js +3 -1
- package/dist/mjs/utils/transforms/boolean.transform.js.map +1 -1
- package/dist/mjs/utils/vat/3310/century23.d.ts.map +1 -1
- package/dist/mjs/utils/vat/3310/century23.js +23 -0
- package/dist/mjs/utils/vat/3310/century23.js.map +1 -1
- package/dist/mjs/utils/vat/3310/century24.d.ts.map +1 -1
- package/dist/mjs/utils/vat/3310/century24.js +23 -0
- package/dist/mjs/utils/vat/3310/century24.js.map +1 -1
- package/dist/mjs/utils/vat/3517/century23.d.ts.map +1 -1
- package/dist/mjs/utils/vat/3517/century23.js +4 -0
- package/dist/mjs/utils/vat/3517/century23.js.map +1 -1
- package/dist/mjs/utils/vat/registration.d.ts.map +1 -1
- package/dist/mjs/utils/vat/registration.js +0 -1
- package/dist/mjs/utils/vat/registration.js.map +1 -1
- package/eslint.config.mjs +47 -0
- package/package.json +7 -10
- package/ts/api/index.ts +9 -2
- package/ts/api/resources/Employee.ts +1 -0
- package/ts/api/resources/RegistrationForm.ts +8 -2
- package/ts/api/resources/Task.ts +1 -0
- package/ts/index.ts +0 -1
- package/ts/types/Enum/Aspone.ts +98 -1
- package/ts/types/Enum/BalanceSheet.ts +1 -1
- package/ts/types/Enum/BalanceSheetQuestion.ts +2 -0
- package/ts/types/Enum/BalanceSheetQuestionWording.ts +1 -0
- package/ts/types/Enum/CerfaType.ts +1 -0
- package/ts/types/Enum/CommercialManagement.ts +143 -1
- package/ts/types/Enum/RevisionGuide.ts +5 -0
- package/ts/types/Enum/Role.ts +1 -0
- package/ts/types/Enum/SalesContractBrandClementine.ts +4 -4
- package/ts/types/Enum/SalesContractBrandPourcentage.ts +7 -7
- package/ts/types/Enum/TransactionKind.ts +1 -0
- package/ts/types/Enum/TransactionStatus.ts +1 -0
- package/ts/types/Enum/TypePayment.ts +1 -0
- package/ts/types/Interface/api/accountingFiles/Ocr.ts +1 -0
- package/ts/types/Interface/api/cerfa/2573.ts +88 -0
- package/ts/types/Interface/api/cerfa/CreateCerfa.ts +1 -0
- package/ts/types/Interface/api/cerfa/ReadCerfa.ts +2 -0
- package/ts/types/Interface/api/checklist/Read.ts +1 -0
- package/ts/types/Interface/api/commercialManagement/Create.ts +58 -2
- package/ts/types/Interface/api/commercialManagement/Read.ts +5 -0
- package/ts/types/Interface/api/config/ConfigType.ts +325 -0
- package/ts/types/Interface/api/crisp/GetCrisp.ts +2 -0
- package/ts/types/Interface/api/exerciceQuestion/CreateExerciceQuestion.ts +1 -0
- package/ts/types/Interface/api/journal/Journals.ts +0 -1
- package/ts/types/Interface/api/kilometricAllowance/CreateKilometricAllowanceValidation.ts +1 -0
- package/ts/types/Interface/api/notion/NotionResponse.ts +2 -4
- package/ts/types/Interface/api/pappers/QueryPappers.ts +9 -0
- package/ts/types/Interface/api/promoCode/CreateDefaultPromoCode.ts +1 -0
- package/ts/types/Interface/api/promoCode/ReadDefaultPromotion.ts +1 -0
- package/ts/types/Interface/api/registration/CreateRegistration.ts +2 -0
- package/ts/types/Interface/api/shopify/ShopifyFinancialStatus.ts +1 -0
- package/ts/types/Interface/api/shopify/ShopifyOrder.ts +2 -0
- package/ts/types/Interface/api/shopify/discount_code.ts +1 -0
- package/ts/types/Interface/api/shopify/shipping_line.ts +2 -0
- package/ts/types/Interface/models/IBalanceSheetQuestion.ts +1 -0
- package/ts/types/Interface/models/IFecFile.ts +1 -0
- package/ts/types/Interface/models/IRegistration.ts +1 -0
- package/ts/types/Interface/models/ISaleEmail.ts +18 -0
- package/ts/types/Interface/models/IUser.ts +1 -0
- package/ts/types/index.ts +2 -0
- package/ts/utils/brands.ts +5 -0
- package/ts/utils/checkup.ts +5 -0
- package/ts/utils/commercialManagement/document.ts +3 -2
- package/ts/utils/commercialManagement/recurrence.ts +2 -2
- package/ts/utils/commercialManagement/saleEmail.ts +43 -0
- package/ts/utils/commercialManagement/vat.ts +1 -0
- package/ts/utils/date.ts +9 -0
- package/ts/utils/decorators.ts +5 -4
- package/ts/utils/email.ts +22 -1
- package/ts/utils/isUrl.ts +1 -2
- package/ts/utils/noLodash.ts +7 -1
- package/ts/utils/objectUtils/flattenObject.ts +1 -0
- package/ts/utils/objectUtils/fullFlattenObject.ts +1 -0
- package/ts/utils/objectUtils/unflattenObject.ts +0 -1
- package/ts/utils/payment.ts +8 -3
- package/ts/utils/phone.ts +1 -0
- package/ts/utils/quotation.ts +1 -1
- package/ts/utils/social.ts +1 -1
- package/ts/utils/statutsGeneration.ts +4 -4
- package/ts/utils/tests/payment.spec.ts +15 -15
- package/ts/utils/transforms/boolean.transform.ts +1 -0
- package/ts/utils/vat/3310/century23.ts +24 -0
- package/ts/utils/vat/3310/century24.ts +23 -0
- package/ts/utils/vat/3517/century23.ts +4 -0
- package/ts/utils/vat/registration.ts +0 -1
- package/tsconfig-base.json +1 -2
|
@@ -82,12 +82,17 @@ const calculatePaymentsAuto = (params) => {
|
|
|
82
82
|
const { idTypeBrand, isWithApplicationFees, firstExerciceNonExpresssEndDate, idPrestation, idLegalForm, prestationList, idVat, yearlyAmountNonExpress, nextYearlyAmountNonExpress, listPartialExercicePrestationExpress, listRegulations, recoveryDate } = params;
|
|
83
83
|
if (!yearlyAmountNonExpress)
|
|
84
84
|
throw new Error('Le montant annuel des prestations non express ne peut pas être nul.');
|
|
85
|
-
|
|
85
|
+
// Si on est dans les 3 derniers jours du mois actuel,
|
|
86
|
+
// on ne le compte pas et on facture à partir du début de mois suivant
|
|
87
|
+
let initializedPaymentDate = dayjs().endOf('month').diff(dayjs(), 'day') < 3 /* || dayjs().date() >= 14 */
|
|
86
88
|
? dayjs().add(2, 'month').startOf('month').toDate()
|
|
87
89
|
: dayjs().add(1, 'month').startOf('month').toDate();
|
|
88
90
|
//Si date de reprise, alors on initialise à cette date
|
|
89
91
|
if (recoveryDate && dayjs(recoveryDate).isAfter(dayjs(), 'month')) {
|
|
90
92
|
initializedPaymentDate = dayjs(recoveryDate).startOf('month').toDate();
|
|
93
|
+
//Si jour de la date de reprise >= 14, alors on débute la facturation 1 mois plus tard
|
|
94
|
+
if (dayjs(initializedPaymentDate).date() >= 14)
|
|
95
|
+
initializedPaymentDate = dayjs(initializedPaymentDate).add(1, 'month').startOf('month').toDate();
|
|
91
96
|
}
|
|
92
97
|
// On récupère la grille tarifaire pour savoir si les tarifs sont HT ou TTC
|
|
93
98
|
// et pour connaitre le montant du coût de l'app
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payment.js","sourceRoot":"","sources":["../../../ts/utils/payment.ts"],"names":[],"mappings":"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","sourcesContent":["'use strict';\n\nimport { IPayment, IRegulation, ParamsForPaymentsAuto, PaymentMethod, PaymentAuto, getTaxesIncludedAmount } from '../types';\nimport * as dayjs from 'dayjs';\nimport { PartialExercicePrestationExpress } from '../types/Interface/api/payment/Util';\nimport { getApplicationFeesAmount, getPriceGrid } from './prestation';\n\ninterface PaymentsWithList extends IPayment {\n type: 'isComptable' | 'isJuridique' | 'isSocial' | 'isOther',\n listPayments: IPayment[]\n}\n\n/**\n * A partir d'une liste de payment (avec include jusqu'à prestationList, \n * avec en attributs 'isComptable' | 'isJuridique' | 'isSocial' | 'isOther')\n * permet de récupérer uniquement le premier paiement de chaque type \n * et les autres payments dans listPayments\n * avec possibilité de filtrer avec le tableau de filtres\n * @param payments \n * @param types \n * @returns \n */\nconst groupPaymentsByServiceType = (payments: IPayment[], types: ('isComptable' | 'isJuridique' | 'isSocial' | 'isOther')[] = ['isComptable', 'isJuridique', 'isSocial', 'isOther']): PaymentsWithList[] => {\n const prestaComptable = payments.filter((el) => el?.paymentsPrestations?.prestationsList?.isComptable ?? false);\n const prestaSocial = payments.filter((el) => !el?.paymentsPrestations?.prestationsList?.isComptable && el?.paymentsPrestations?.prestationsList?.isSocial);\n const prestaJuridique = payments.filter((el) => !el?.paymentsPrestations?.prestationsList?.isComptable && el?.paymentsPrestations?.prestationsList?.isJuridique);\n const prestaOther = payments.filter((el) => !el?.paymentsPrestations?.prestationsList?.isComptable && !el?.paymentsPrestations?.prestationsList?.isJuridique && !el?.paymentsPrestations?.prestationsList?.isSocial);\n \n const societyPayment: PaymentsWithList[] = [];\n if (prestaComptable.length && types.includes('isComptable')) {\n societyPayment.push({\n ...prestaComptable[0], // Données de base\n type: 'isComptable',\n listPayments: prestaComptable,\n });\n }\n if (prestaSocial.length && types.includes('isSocial')) {\n societyPayment.push({\n ...prestaSocial[0], // Données de base\n type: 'isSocial',\n listPayments: prestaSocial,\n });\n }\n if (prestaJuridique.length && types.includes('isJuridique')) {\n societyPayment.push({\n ...prestaJuridique[0], // Données de base\n type: 'isJuridique',\n listPayments: prestaJuridique,\n });\n }\n if (prestaOther.length && types.includes('isOther')) {\n societyPayment.push({\n ...prestaOther[0], // Données de base\n type: 'isOther',\n listPayments: prestaOther,\n });\n }\n return societyPayment;\n};\n\nconst calculateFees = (amount: number, paymentDate: Date):number => {\n const yearlyPriceIncreasing = 1.0275;\n\n // Commenté car en fin d'année, pour appliquer le taux d'inflation annuel, \n // un script enlève les 2,75€ appliqués pour appliquer le bon taux\n // const oneYearLessIfIn3LastMonthsOfYear = dayjs(goToClient).month() >= 9 ? 1 : 0;\n\n if (dayjs(paymentDate).year() - dayjs().year() > 0) {\n const nbYearsMore = dayjs(paymentDate).year() - dayjs().year()/* - oneYearLessIfIn3LastMonthsOfYear */;\n // on applique X fois l'augmentation\n // ex. : si on lance l'appel en 2024, et qu'on génére un paiement pour 2026, on applique 2 fois l'augmentation\n // soit amount * yearlyPriceIncreasing * yearlyPriceIncreasing\n // soit amount * yearlyPriceIncreasing ^ nbYearsMore\n amount = amount * Math.pow(yearlyPriceIncreasing, nbYearsMore);\n }\n return amount;\n};\n\n/**\n// * @param {number} firstPaymentAmount - amount of the first payment (first regulation of the customer)\n * @param {Date} firstExerciceNonExpresssEndDate - end date of the first exercice non express\n * @param {number} idPrestation - prestation id\n * @param {number} idLegalForm - legal form id of the society\n * @param {boolean} isWithApplicationFees - if the prestation has application fees to paid\n * @param {IPrestationList} prestationList - type of prestation (hidden: 0, isCatalog: 1, isComptable: 1)\n * @param {number} idVat - vat id of society linked\n * @param {number} yearlyAmountNonExpress - yearly amount of non express prestation (HT)\n * @param {number} nextYearlyAmountNonExpress - yearly amount of non express prestation for next years (HT)\n * @param {PartialExercicePrestationExpress[]} listPartialExercicePrestationExpress - list of exercicePrestation linked to idPrestation -> used to get express\n * @param {IRegulation[]} listRegulations - list of regulations linked to idPrestation (TTC)\n * @param {Date} recoveryDate - date of recovery of the society\n * @returns { IPayment[] } list of payment to create for billing auto, after each presta go to onBoarding\n */\nconst calculatePaymentsAuto = (params: ParamsForPaymentsAuto):PaymentAuto[] => {\n const { idTypeBrand, isWithApplicationFees, firstExerciceNonExpresssEndDate, idPrestation, idLegalForm, prestationList, idVat, yearlyAmountNonExpress, nextYearlyAmountNonExpress, listPartialExercicePrestationExpress, listRegulations, recoveryDate } = params;\n \n if (!yearlyAmountNonExpress) throw new Error('Le montant annuel des prestations non express ne peut pas être nul.');\n\n let initializedPaymentDate = dayjs().endOf('month').diff(dayjs(), 'day') < 3/* || dayjs().date() >= 15 */\n ? dayjs().add(2, 'month').startOf('month').toDate()\n : dayjs().add(1, 'month').startOf('month').toDate();\n \n //Si date de reprise, alors on initialise à cette date\n if (recoveryDate && dayjs(recoveryDate).isAfter(dayjs(), 'month')) {\n initializedPaymentDate = dayjs(recoveryDate).startOf('month').toDate();\n }\n\n // On récupère la grille tarifaire pour savoir si les tarifs sont HT ou TTC \n // et pour connaitre le montant du coût de l'app\n if (!prestationList.id) throw new Error('idPrestationList manquant');\n const priceGrid = getPriceGrid(idTypeBrand, prestationList.id);\n if (!priceGrid) throw new Error('Impossible de trouver la grille tarifaire correspondante');\n const { applicationCost, priceWithTaxesIncluded } = priceGrid;\n const applicationCostTotalTTC = (priceWithTaxesIncluded ? applicationCost : getTaxesIncludedAmount(applicationCost, idVat)) * 12;\n const applicationFeesAmountTTC = getApplicationFeesAmount(idLegalForm, idVat);\n\n if (prestationList?.isCatalog || !prestationList?.isComptable) throw new Error('Ce type de prestation ne correspond pas aux conditions attendues.');\n if (listPartialExercicePrestationExpress.length && listPartialExercicePrestationExpress?.some((ep: PartialExercicePrestationExpress) => !ep?.startDate)) throw new Error('Start date of some exercice are missing');\n \n let yearlyAmountNonExpressClone = yearlyAmountNonExpress;\n if (isWithApplicationFees) {\n yearlyAmountNonExpressClone -= getApplicationFeesAmount(idLegalForm); //HT\n }\n\n const nbExoExpress = listPartialExercicePrestationExpress.length;\n const listPayments:PaymentAuto[] = [];\n\n // on récupère le/les premiers réglements effectués, non alloués\n // const isApplicationFeesAlreadyPaid = false;\n const sumRegulations = listRegulations.reduce((acc: number, r:IRegulation) => {\n //Si la regulation est rattachée à un paymentExpectation, on récupère le détail\n // et on ne prend que les frais de dossier (applicationFee) + le montant de la compta (accountingFee)\n \n // Commenté temporairement :\n // Pour l'instant, on ne prend plus en compte les paymentExpectation :\n // On part du principe que si isWithApplicationFees = true, alors les regulations contiennent les frais de dossier\n // sinon, ils sont offerts et n'apparaissent pas\n /* if (r.paymentsExpectation?.payload) {\n const payload = JSON.parse(r.paymentsExpectation?.payload);\n if (+payload?.applicationFee > 0) {\n isApplicationFeesAlreadyPaid = true;\n acc += +payload?.applicationFee;\n }\n if (+payload?.accountingFee > 0) acc += +payload?.accountingFee;\n return acc;\n } else {\n return acc + r.amount - r.amountUsed;\n } */\n return acc + r.amount - r.amountUsed;\n }, 0);\n let remainingAmount = -sumRegulations; //TTC\n let paymentDate = initializedPaymentDate;\n\n //On order les exercicePrestation par startDate ASC et id ASC\n listPartialExercicePrestationExpress.sort((a, b) => {\n const aStartDate = a?.startDate as Date;\n const bStartDate = b?.startDate as Date;\n return dayjs(aStartDate).diff(bStartDate);\n });\n\n // Si les frais de dossiers sont facturés, on ajoute un paiement sur le mois en cours\n if (isWithApplicationFees) {\n listPayments.push({\n amount: applicationFeesAmountTTC, //TTC\n isPaid: true,\n datePayment: dayjs().toDate(),\n idPrestation,\n idPaymentMethod: listRegulations[0]?.idPaymentMethod ?? PaymentMethod.DIRECT_DEBIT.id,\n closingDate: listPartialExercicePrestationExpress?.length ? listPartialExercicePrestationExpress[0].endDate : firstExerciceNonExpresssEndDate,\n comment: 'Frais de dossier',\n });\n remainingAmount += applicationFeesAmountTTC;\n }\n \n // =========================\n // EXPRESS\n // =========================\n listPartialExercicePrestationExpress.forEach((exercicePrestation:PartialExercicePrestationExpress, indexEP: number) => {\n const remainingBeforeThisExo = remainingAmount;\n\n remainingAmount += !priceWithTaxesIncluded \n ? getTaxesIncludedAmount(exercicePrestation.totalAmount, idVat) \n : exercicePrestation.totalAmount; //TTC\n \n \n // Si le premier règlement couvre le coût de cet exercicePrestation, \n // on créé un paiement pour cet exo et on passe au suivant\n if (remainingAmount <= 0) {\n listPayments.push({\n amount: Math.round(100 * (!priceWithTaxesIncluded \n ? getTaxesIncludedAmount(exercicePrestation.totalAmount, idVat) \n : exercicePrestation.totalAmount)) / 100, //TTC\n isPaid: true,\n datePayment: dayjs().toDate(),\n idPrestation,\n idPaymentMethod: listRegulations[0]?.idPaymentMethod ?? PaymentMethod.DIRECT_DEBIT.id,\n closingDate: exercicePrestation.endDate,\n });\n return;\n } else if (remainingBeforeThisExo < 0 && remainingAmount > 0) {\n // Si le paiement couvre une partie du paiement, on créé un paiement pour cette partie lié à l'exo \n listPayments.push({\n amount: Math.round(100 * -remainingBeforeThisExo) / 100, //TTC\n isPaid: true,\n datePayment: dayjs().toDate(),\n idPrestation,\n idPaymentMethod: listRegulations[0]?.idPaymentMethod ?? PaymentMethod.DIRECT_DEBIT.id,\n closingDate: exercicePrestation.endDate,\n });\n }\n \n //express : on étale en countExpressMonthlyPayment (nb de mensualités)\n let remainingAmountByExercicePrestation = remainingAmount; //TTC\n let countExpressMonthlyPayment = exercicePrestation?.countExpressMonthlyPayment ?? 1; //TTC\n //Si un premier règlement est généré avec le montant des regulations, on le considère comme une mensualité (unioquement pour le premier express et la première mensualité)\n if (indexEP === 0 && sumRegulations > 0) countExpressMonthlyPayment -= 1;\n\n const monthlyAmount = remainingAmountByExercicePrestation / countExpressMonthlyPayment; //TTC\n for (let index = 1; index <= countExpressMonthlyPayment; index++) {\n // On arrondis les 11 premières mensualités, mais on récupère le reste pour la dernière mensualité, pour éviter les centimes perdus en arrondis\n // et on applique le taux de tva de la société\n const amount = index < countExpressMonthlyPayment ? monthlyAmount : remainingAmountByExercicePrestation; //TTC\n \n // On évite les paiements de moins d'0,01 € (pour les paymentsExpectations ayant une différence de 1 cents)\n if (amount >= 0.005)\n listPayments.push({\n amount: Math.round(100 * amount) / 100,\n datePayment: paymentDate,\n idPrestation,\n idPaymentMethod: PaymentMethod.DIRECT_DEBIT.id,\n closingDate: exercicePrestation.endDate,\n });\n remainingAmountByExercicePrestation -= monthlyAmount; \n paymentDate = dayjs(paymentDate).add(1, 'month').startOf('month').toDate();\n }\n remainingAmount = 0;\n });\n\n // =========================\n // NON EXPRESS\n // =========================\n // on lisse sur le nb de mois restants (avec au minimum 3 mensualités)\n // Si un seul exo express, alors on met les paiements de l'exo actuel en parallèle\n // sinon, ils sont à la suite des express\n if (nbExoExpress <= 1) paymentDate = initializedPaymentDate;\n let exerciceEndDate = dayjs(firstExerciceNonExpresssEndDate).toDate();\n\n let hasGeneratedWholeYear = false;\n let isFirstNonExpress = true;\n let countNonExpressGenerated = 0;\n \n // On génère des paiements jusqu'à ce qu'un exercice soit entier (12 mois), non express\n // et qu'au moins 13 mois de paiements ont été générés depuis la date de reprise\n while (!hasGeneratedWholeYear || countNonExpressGenerated < 2) {\n //On compte le nb de mois restants entre la date à laquelle le paiement va être créé et la date de fin d'exercice\n let countMonthsBeforeExerciceEnd = Math.ceil(dayjs(exerciceEndDate).diff(paymentDate, 'months', true));\n if (countMonthsBeforeExerciceEnd < 3) countMonthsBeforeExerciceEnd = 3;\n\n // Si un client signe un Express dans les 3 derniers mois de l'année (par exemple en décembre 2024)\n // on ne doit pas générer l'année 2025 sur 13 mois à partir du 12/24\n // mais on doit attendre le début de l'exercice concerné (ici, 01/25)\n if (countMonthsBeforeExerciceEnd > 12) {\n paymentDate = dayjs(paymentDate).add(1, 'month').startOf('month').toDate();\n continue;\n }\n\n const exoAmount = isFirstNonExpress ? yearlyAmountNonExpressClone : nextYearlyAmountNonExpress;\n const remainingBeforeThisExo = remainingAmount;\n remainingAmount += priceWithTaxesIncluded ? exoAmount : getTaxesIncludedAmount(exoAmount, idVat);\n\n // Si le premier règlement couvre le coût de cet exercicePrestation, \n // on créé un paiement pour cet exo et on passe au suivant\n if (remainingAmount <= 0) {\n listPayments.push({\n amount: Math.round(100 * (priceWithTaxesIncluded ? exoAmount : getTaxesIncludedAmount(exoAmount, idVat))) / 100, //TTC\n isPaid: true,\n datePayment: dayjs().toDate(),\n idPrestation,\n idPaymentMethod: listRegulations[0]?.idPaymentMethod ?? PaymentMethod.DIRECT_DEBIT.id,\n closingDate: exerciceEndDate,\n });\n exerciceEndDate = dayjs(exerciceEndDate).startOf('month').add(1, 'year').endOf('month').toDate();\n continue;\n } else if (remainingBeforeThisExo < 0 && remainingAmount > 0) {\n // Si le paiement couvre une partie du paiement, on créé un paiement pour cette partie lié à l'exo \n listPayments.push({\n amount: Math.round(100 * -remainingBeforeThisExo) / 100, //TTC\n isPaid: true,\n datePayment: dayjs().toDate(),\n idPrestation,\n idPaymentMethod: listRegulations[0]?.idPaymentMethod ?? PaymentMethod.DIRECT_DEBIT.id,\n closingDate: exerciceEndDate,\n });\n }\n\n let remainingAmountByExercicePrestation = remainingAmount;\n\n // - frais d'application dès les second exo non express\n if (!isFirstNonExpress) remainingAmountByExercicePrestation += applicationCostTotalTTC;\n\n const monthlyAmount = remainingAmountByExercicePrestation / countMonthsBeforeExerciceEnd; //TTC\n\n if (monthlyAmount > 0) {\n for (let index = 1; index <= countMonthsBeforeExerciceEnd; index++) {\n let amount = index < countMonthsBeforeExerciceEnd ? monthlyAmount : remainingAmountByExercicePrestation;\n \n // Si besoin, on applique les frais nécessaires :\n // - 2,75% d'augmentation chaque année, sauf si souscriptiuon dans les 3 derniers mois de l'année civile)\n amount = calculateFees(amount, paymentDate);\n \n listPayments.push({\n amount: Math.round(100 * amount) / 100,\n datePayment: paymentDate,\n idPrestation,\n idPaymentMethod: PaymentMethod.DIRECT_DEBIT.id,\n closingDate: exerciceEndDate,\n });\n remainingAmountByExercicePrestation -= monthlyAmount; \n paymentDate = dayjs(paymentDate).add(1, 'month').startOf('month').toDate();\n }\n exerciceEndDate = dayjs(exerciceEndDate).startOf('month').add(1, 'year').endOf('month').toDate();\n }\n remainingAmount = 0;\n if (countMonthsBeforeExerciceEnd === 12) hasGeneratedWholeYear = true;\n isFirstNonExpress = false;\n countNonExpressGenerated += 1;\n }\n\n remainingAmount = 0;\n\n // =========================\n // JUSQU'EN DECEMBRE\n // =========================\n // On applique le taux de tva de la société, si besoin, selon la grille tarifaire\n remainingAmount += priceWithTaxesIncluded ? nextYearlyAmountNonExpress : getTaxesIncludedAmount(nextYearlyAmountNonExpress, idVat);\n\n let remainingAmountByExercicePrestation = remainingAmount;\n //On compte le nb de mois restants entre la date à laquelle le paiement va être créé et la date de fin d'exercice\n let countMonthsBeforeExerciceEnd = Math.ceil(dayjs(exerciceEndDate).diff(paymentDate, 'months', true));\n if (countMonthsBeforeExerciceEnd < 3) countMonthsBeforeExerciceEnd = 3;\n\n // - frais d'application dès les second exo non express\n remainingAmountByExercicePrestation += applicationCostTotalTTC;\n \n const monthlyAmount = remainingAmountByExercicePrestation / countMonthsBeforeExerciceEnd;\n \n // Si aucun paiement généré, on stoppe là\n if (!listPayments.length) return [];\n\n while (dayjs(listPayments.slice(-1)[0].datePayment).month() < 11) {\n let amount = monthlyAmount;\n\n // Si besoin, on applique les frais nécessaires :\n // - 2,75% d'augmentation chaque année, sauf si souscriptiuon dans les 3 derniers mois de l'année civile)\n // - frais d'application dès les second exo non express\n amount = calculateFees(amount, paymentDate);\n\n listPayments.push({\n amount: Math.round(100 * amount) / 100,\n datePayment: paymentDate,\n idPrestation,\n idPaymentMethod: PaymentMethod.DIRECT_DEBIT.id,\n closingDate: exerciceEndDate,\n });\n paymentDate = dayjs(paymentDate).add(1, 'month').startOf('month').toDate();\n }\n\n return listPayments;\n};\n\nexport {\n groupPaymentsByServiceType, calculatePaymentsAuto,\n};"]}
|
|
1
|
+
{"version":3,"file":"payment.js","sourceRoot":"","sources":["../../../ts/utils/payment.ts"],"names":[],"mappings":"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","sourcesContent":["'use strict';\n\nimport { IPayment, IRegulation, ParamsForPaymentsAuto, PaymentMethod, PaymentAuto, getTaxesIncludedAmount } from '../types';\nimport * as dayjs from 'dayjs';\nimport { PartialExercicePrestationExpress } from '../types/Interface/api/payment/Util';\nimport { getApplicationFeesAmount, getPriceGrid } from './prestation';\n\ninterface PaymentsWithList extends IPayment {\n type: 'isComptable' | 'isJuridique' | 'isSocial' | 'isOther',\n listPayments: IPayment[]\n}\n\n/**\n * A partir d'une liste de payment (avec include jusqu'à prestationList, \n * avec en attributs 'isComptable' | 'isJuridique' | 'isSocial' | 'isOther')\n * permet de récupérer uniquement le premier paiement de chaque type \n * et les autres payments dans listPayments\n * avec possibilité de filtrer avec le tableau de filtres\n * @param payments \n * @param types \n * @returns \n */\nconst groupPaymentsByServiceType = (payments: IPayment[], types: ('isComptable' | 'isJuridique' | 'isSocial' | 'isOther')[] = ['isComptable', 'isJuridique', 'isSocial', 'isOther']): PaymentsWithList[] => {\n const prestaComptable = payments.filter((el) => el?.paymentsPrestations?.prestationsList?.isComptable ?? false);\n const prestaSocial = payments.filter((el) => !el?.paymentsPrestations?.prestationsList?.isComptable && el?.paymentsPrestations?.prestationsList?.isSocial);\n const prestaJuridique = payments.filter((el) => !el?.paymentsPrestations?.prestationsList?.isComptable && el?.paymentsPrestations?.prestationsList?.isJuridique);\n const prestaOther = payments.filter((el) => !el?.paymentsPrestations?.prestationsList?.isComptable && !el?.paymentsPrestations?.prestationsList?.isJuridique && !el?.paymentsPrestations?.prestationsList?.isSocial);\n \n const societyPayment: PaymentsWithList[] = [];\n if (prestaComptable.length && types.includes('isComptable')) {\n societyPayment.push({\n ...prestaComptable[0], // Données de base\n type: 'isComptable',\n listPayments: prestaComptable,\n });\n }\n if (prestaSocial.length && types.includes('isSocial')) {\n societyPayment.push({\n ...prestaSocial[0], // Données de base\n type: 'isSocial',\n listPayments: prestaSocial,\n });\n }\n if (prestaJuridique.length && types.includes('isJuridique')) {\n societyPayment.push({\n ...prestaJuridique[0], // Données de base\n type: 'isJuridique',\n listPayments: prestaJuridique,\n });\n }\n if (prestaOther.length && types.includes('isOther')) {\n societyPayment.push({\n ...prestaOther[0], // Données de base\n type: 'isOther',\n listPayments: prestaOther,\n });\n }\n return societyPayment;\n};\n\nconst calculateFees = (amount: number, paymentDate: Date):number => {\n const yearlyPriceIncreasing = 1.0275;\n\n // Commenté car en fin d'année, pour appliquer le taux d'inflation annuel, \n // un script enlève les 2,75€ appliqués pour appliquer le bon taux\n // const oneYearLessIfIn3LastMonthsOfYear = dayjs(goToClient).month() >= 9 ? 1 : 0;\n\n if (dayjs(paymentDate).year() - dayjs().year() > 0) {\n const nbYearsMore = dayjs(paymentDate).year() - dayjs().year()/* - oneYearLessIfIn3LastMonthsOfYear */;\n // on applique X fois l'augmentation\n // ex. : si on lance l'appel en 2024, et qu'on génére un paiement pour 2026, on applique 2 fois l'augmentation\n // soit amount * yearlyPriceIncreasing * yearlyPriceIncreasing\n // soit amount * yearlyPriceIncreasing ^ nbYearsMore\n amount = amount * Math.pow(yearlyPriceIncreasing, nbYearsMore);\n }\n return amount;\n};\n\n/**\n// * @param {number} firstPaymentAmount - amount of the first payment (first regulation of the customer)\n * @param {Date} firstExerciceNonExpresssEndDate - end date of the first exercice non express\n * @param {number} idPrestation - prestation id\n * @param {number} idLegalForm - legal form id of the society\n * @param {boolean} isWithApplicationFees - if the prestation has application fees to paid\n * @param {IPrestationList} prestationList - type of prestation (hidden: 0, isCatalog: 1, isComptable: 1)\n * @param {number} idVat - vat id of society linked\n * @param {number} yearlyAmountNonExpress - yearly amount of non express prestation (HT)\n * @param {number} nextYearlyAmountNonExpress - yearly amount of non express prestation for next years (HT)\n * @param {PartialExercicePrestationExpress[]} listPartialExercicePrestationExpress - list of exercicePrestation linked to idPrestation -> used to get express\n * @param {IRegulation[]} listRegulations - list of regulations linked to idPrestation (TTC)\n * @param {Date} recoveryDate - date of recovery of the society\n * @returns { IPayment[] } list of payment to create for billing auto, after each presta go to onBoarding\n */\nconst calculatePaymentsAuto = (params: ParamsForPaymentsAuto):PaymentAuto[] => {\n const { idTypeBrand, isWithApplicationFees, firstExerciceNonExpresssEndDate, idPrestation, idLegalForm, prestationList, idVat, yearlyAmountNonExpress, nextYearlyAmountNonExpress, listPartialExercicePrestationExpress, listRegulations, recoveryDate } = params;\n \n if (!yearlyAmountNonExpress) throw new Error('Le montant annuel des prestations non express ne peut pas être nul.');\n\n // Si on est dans les 3 derniers jours du mois actuel,\n // on ne le compte pas et on facture à partir du début de mois suivant\n let initializedPaymentDate = dayjs().endOf('month').diff(dayjs(), 'day') < 3/* || dayjs().date() >= 14 */\n ? dayjs().add(2, 'month').startOf('month').toDate()\n : dayjs().add(1, 'month').startOf('month').toDate();\n \n //Si date de reprise, alors on initialise à cette date\n if (recoveryDate && dayjs(recoveryDate).isAfter(dayjs(), 'month')) {\n initializedPaymentDate = dayjs(recoveryDate).startOf('month').toDate();\n\n //Si jour de la date de reprise >= 14, alors on débute la facturation 1 mois plus tard\n if (dayjs(initializedPaymentDate).date() >= 14) initializedPaymentDate = dayjs(initializedPaymentDate).add(1, 'month').startOf('month').toDate();\n }\n\n // On récupère la grille tarifaire pour savoir si les tarifs sont HT ou TTC \n // et pour connaitre le montant du coût de l'app\n if (!prestationList.id) throw new Error('idPrestationList manquant');\n const priceGrid = getPriceGrid(idTypeBrand, prestationList.id);\n if (!priceGrid) throw new Error('Impossible de trouver la grille tarifaire correspondante');\n const { applicationCost, priceWithTaxesIncluded } = priceGrid;\n const applicationCostTotalTTC = (priceWithTaxesIncluded ? applicationCost : getTaxesIncludedAmount(applicationCost, idVat)) * 12;\n const applicationFeesAmountTTC = getApplicationFeesAmount(idLegalForm, idVat);\n\n if (prestationList?.isCatalog || !prestationList?.isComptable) throw new Error('Ce type de prestation ne correspond pas aux conditions attendues.');\n if (listPartialExercicePrestationExpress.length && listPartialExercicePrestationExpress?.some((ep: PartialExercicePrestationExpress) => !ep?.startDate)) throw new Error('Start date of some exercice are missing');\n \n let yearlyAmountNonExpressClone = yearlyAmountNonExpress;\n if (isWithApplicationFees) {\n yearlyAmountNonExpressClone -= getApplicationFeesAmount(idLegalForm); //HT\n }\n\n const nbExoExpress = listPartialExercicePrestationExpress.length;\n const listPayments:PaymentAuto[] = [];\n\n // on récupère le/les premiers réglements effectués, non alloués\n // const isApplicationFeesAlreadyPaid = false;\n const sumRegulations = listRegulations.reduce((acc: number, r:IRegulation) => {\n //Si la regulation est rattachée à un paymentExpectation, on récupère le détail\n // et on ne prend que les frais de dossier (applicationFee) + le montant de la compta (accountingFee)\n \n // Commenté temporairement :\n // Pour l'instant, on ne prend plus en compte les paymentExpectation :\n // On part du principe que si isWithApplicationFees = true, alors les regulations contiennent les frais de dossier\n // sinon, ils sont offerts et n'apparaissent pas\n /* if (r.paymentsExpectation?.payload) {\n const payload = JSON.parse(r.paymentsExpectation?.payload);\n if (+payload?.applicationFee > 0) {\n isApplicationFeesAlreadyPaid = true;\n acc += +payload?.applicationFee;\n }\n if (+payload?.accountingFee > 0) acc += +payload?.accountingFee;\n return acc;\n } else {\n return acc + r.amount - r.amountUsed;\n } */\n return acc + r.amount - r.amountUsed;\n }, 0);\n let remainingAmount = -sumRegulations; //TTC\n let paymentDate = initializedPaymentDate;\n\n //On order les exercicePrestation par startDate ASC et id ASC\n listPartialExercicePrestationExpress.sort((a, b) => {\n const aStartDate = a?.startDate;\n const bStartDate = b?.startDate;\n return dayjs(aStartDate).diff(bStartDate);\n });\n\n // Si les frais de dossiers sont facturés, on ajoute un paiement sur le mois en cours\n if (isWithApplicationFees) {\n listPayments.push({\n amount: applicationFeesAmountTTC, //TTC\n isPaid: true,\n datePayment: dayjs().toDate(),\n idPrestation,\n idPaymentMethod: listRegulations[0]?.idPaymentMethod ?? PaymentMethod.DIRECT_DEBIT.id,\n closingDate: listPartialExercicePrestationExpress?.length ? listPartialExercicePrestationExpress[0].endDate : firstExerciceNonExpresssEndDate,\n comment: 'Frais de dossier',\n });\n remainingAmount += applicationFeesAmountTTC;\n }\n \n // =========================\n // EXPRESS\n // =========================\n listPartialExercicePrestationExpress.forEach((exercicePrestation:PartialExercicePrestationExpress, indexEP: number) => {\n const remainingBeforeThisExo = remainingAmount;\n\n remainingAmount += !priceWithTaxesIncluded \n ? getTaxesIncludedAmount(exercicePrestation.totalAmount, idVat) \n : exercicePrestation.totalAmount; //TTC\n \n \n // Si le premier règlement couvre le coût de cet exercicePrestation, \n // on créé un paiement pour cet exo et on passe au suivant\n if (remainingAmount <= 0) {\n listPayments.push({\n amount: Math.round(100 * (!priceWithTaxesIncluded \n ? getTaxesIncludedAmount(exercicePrestation.totalAmount, idVat) \n : exercicePrestation.totalAmount)) / 100, //TTC\n isPaid: true,\n datePayment: dayjs().toDate(),\n idPrestation,\n idPaymentMethod: listRegulations[0]?.idPaymentMethod ?? PaymentMethod.DIRECT_DEBIT.id,\n closingDate: exercicePrestation.endDate,\n });\n return;\n } else if (remainingBeforeThisExo < 0 && remainingAmount > 0) {\n // Si le paiement couvre une partie du paiement, on créé un paiement pour cette partie lié à l'exo \n listPayments.push({\n amount: Math.round(100 * -remainingBeforeThisExo) / 100, //TTC\n isPaid: true,\n datePayment: dayjs().toDate(),\n idPrestation,\n idPaymentMethod: listRegulations[0]?.idPaymentMethod ?? PaymentMethod.DIRECT_DEBIT.id,\n closingDate: exercicePrestation.endDate,\n });\n }\n \n //express : on étale en countExpressMonthlyPayment (nb de mensualités)\n let remainingAmountByExercicePrestation = remainingAmount; //TTC\n let countExpressMonthlyPayment = exercicePrestation?.countExpressMonthlyPayment ?? 1; //TTC\n //Si un premier règlement est généré avec le montant des regulations, on le considère comme une mensualité (unioquement pour le premier express et la première mensualité)\n if (indexEP === 0 && sumRegulations > 0) countExpressMonthlyPayment -= 1;\n\n const monthlyAmount = remainingAmountByExercicePrestation / countExpressMonthlyPayment; //TTC\n for (let index = 1; index <= countExpressMonthlyPayment; index++) {\n // On arrondis les 11 premières mensualités, mais on récupère le reste pour la dernière mensualité, pour éviter les centimes perdus en arrondis\n // et on applique le taux de tva de la société\n const amount = index < countExpressMonthlyPayment ? monthlyAmount : remainingAmountByExercicePrestation; //TTC\n \n // On évite les paiements de moins d'0,01 € (pour les paymentsExpectations ayant une différence de 1 cents)\n if (amount >= 0.005)\n listPayments.push({\n amount: Math.round(100 * amount) / 100,\n datePayment: paymentDate,\n idPrestation,\n idPaymentMethod: PaymentMethod.DIRECT_DEBIT.id,\n closingDate: exercicePrestation.endDate,\n });\n remainingAmountByExercicePrestation -= monthlyAmount; \n paymentDate = dayjs(paymentDate).add(1, 'month').startOf('month').toDate();\n }\n remainingAmount = 0;\n });\n\n // =========================\n // NON EXPRESS\n // =========================\n // on lisse sur le nb de mois restants (avec au minimum 3 mensualités)\n // Si un seul exo express, alors on met les paiements de l'exo actuel en parallèle\n // sinon, ils sont à la suite des express\n if (nbExoExpress <= 1) paymentDate = initializedPaymentDate;\n let exerciceEndDate = dayjs(firstExerciceNonExpresssEndDate).toDate();\n\n let hasGeneratedWholeYear = false;\n let isFirstNonExpress = true;\n let countNonExpressGenerated = 0;\n \n // On génère des paiements jusqu'à ce qu'un exercice soit entier (12 mois), non express\n // et qu'au moins 13 mois de paiements ont été générés depuis la date de reprise\n while (!hasGeneratedWholeYear || countNonExpressGenerated < 2) {\n //On compte le nb de mois restants entre la date à laquelle le paiement va être créé et la date de fin d'exercice\n let countMonthsBeforeExerciceEnd = Math.ceil(dayjs(exerciceEndDate).diff(paymentDate, 'months', true));\n if (countMonthsBeforeExerciceEnd < 3) countMonthsBeforeExerciceEnd = 3;\n\n // Si un client signe un Express dans les 3 derniers mois de l'année (par exemple en décembre 2024)\n // on ne doit pas générer l'année 2025 sur 13 mois à partir du 12/24\n // mais on doit attendre le début de l'exercice concerné (ici, 01/25)\n if (countMonthsBeforeExerciceEnd > 12) {\n paymentDate = dayjs(paymentDate).add(1, 'month').startOf('month').toDate();\n continue;\n }\n\n const exoAmount = isFirstNonExpress ? yearlyAmountNonExpressClone : nextYearlyAmountNonExpress;\n const remainingBeforeThisExo = remainingAmount;\n remainingAmount += priceWithTaxesIncluded ? exoAmount : getTaxesIncludedAmount(exoAmount, idVat);\n\n // Si le premier règlement couvre le coût de cet exercicePrestation, \n // on créé un paiement pour cet exo et on passe au suivant\n if (remainingAmount <= 0) {\n listPayments.push({\n amount: Math.round(100 * (priceWithTaxesIncluded ? exoAmount : getTaxesIncludedAmount(exoAmount, idVat))) / 100, //TTC\n isPaid: true,\n datePayment: dayjs().toDate(),\n idPrestation,\n idPaymentMethod: listRegulations[0]?.idPaymentMethod ?? PaymentMethod.DIRECT_DEBIT.id,\n closingDate: exerciceEndDate,\n });\n exerciceEndDate = dayjs(exerciceEndDate).startOf('month').add(1, 'year').endOf('month').toDate();\n continue;\n } else if (remainingBeforeThisExo < 0 && remainingAmount > 0) {\n // Si le paiement couvre une partie du paiement, on créé un paiement pour cette partie lié à l'exo \n listPayments.push({\n amount: Math.round(100 * -remainingBeforeThisExo) / 100, //TTC\n isPaid: true,\n datePayment: dayjs().toDate(),\n idPrestation,\n idPaymentMethod: listRegulations[0]?.idPaymentMethod ?? PaymentMethod.DIRECT_DEBIT.id,\n closingDate: exerciceEndDate,\n });\n }\n\n let remainingAmountByExercicePrestation = remainingAmount;\n\n // - frais d'application dès les second exo non express\n if (!isFirstNonExpress) remainingAmountByExercicePrestation += applicationCostTotalTTC;\n\n const monthlyAmount = remainingAmountByExercicePrestation / countMonthsBeforeExerciceEnd; //TTC\n\n if (monthlyAmount > 0) {\n for (let index = 1; index <= countMonthsBeforeExerciceEnd; index++) {\n let amount = index < countMonthsBeforeExerciceEnd ? monthlyAmount : remainingAmountByExercicePrestation;\n \n // Si besoin, on applique les frais nécessaires :\n // - 2,75% d'augmentation chaque année, sauf si souscriptiuon dans les 3 derniers mois de l'année civile)\n amount = calculateFees(amount, paymentDate);\n \n listPayments.push({\n amount: Math.round(100 * amount) / 100,\n datePayment: paymentDate,\n idPrestation,\n idPaymentMethod: PaymentMethod.DIRECT_DEBIT.id,\n closingDate: exerciceEndDate,\n });\n remainingAmountByExercicePrestation -= monthlyAmount; \n paymentDate = dayjs(paymentDate).add(1, 'month').startOf('month').toDate();\n }\n exerciceEndDate = dayjs(exerciceEndDate).startOf('month').add(1, 'year').endOf('month').toDate();\n }\n remainingAmount = 0;\n if (countMonthsBeforeExerciceEnd === 12) hasGeneratedWholeYear = true;\n isFirstNonExpress = false;\n countNonExpressGenerated += 1;\n }\n\n remainingAmount = 0;\n\n // =========================\n // JUSQU'EN DECEMBRE\n // =========================\n // On applique le taux de tva de la société, si besoin, selon la grille tarifaire\n remainingAmount += priceWithTaxesIncluded ? nextYearlyAmountNonExpress : getTaxesIncludedAmount(nextYearlyAmountNonExpress, idVat);\n\n let remainingAmountByExercicePrestation = remainingAmount;\n //On compte le nb de mois restants entre la date à laquelle le paiement va être créé et la date de fin d'exercice\n let countMonthsBeforeExerciceEnd = Math.ceil(dayjs(exerciceEndDate).diff(paymentDate, 'months', true));\n if (countMonthsBeforeExerciceEnd < 3) countMonthsBeforeExerciceEnd = 3;\n\n // - frais d'application dès les second exo non express\n remainingAmountByExercicePrestation += applicationCostTotalTTC;\n \n const monthlyAmount = remainingAmountByExercicePrestation / countMonthsBeforeExerciceEnd;\n \n // Si aucun paiement généré, on stoppe là\n if (!listPayments.length) return [];\n\n while (dayjs(listPayments.slice(-1)[0].datePayment).month() < 11) {\n let amount = monthlyAmount;\n\n // Si besoin, on applique les frais nécessaires :\n // - 2,75% d'augmentation chaque année, sauf si souscriptiuon dans les 3 derniers mois de l'année civile)\n // - frais d'application dès les second exo non express\n amount = calculateFees(amount, paymentDate);\n\n listPayments.push({\n amount: Math.round(100 * amount) / 100,\n datePayment: paymentDate,\n idPrestation,\n idPaymentMethod: PaymentMethod.DIRECT_DEBIT.id,\n closingDate: exerciceEndDate,\n });\n paymentDate = dayjs(paymentDate).add(1, 'month').startOf('month').toDate();\n }\n\n return listPayments;\n};\n\nexport {\n groupPaymentsByServiceType, calculatePaymentsAuto,\n};"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"phone.d.ts","sourceRoot":"","sources":["../../../ts/utils/phone.ts"],"names":[],"mappings":"AAKA,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,SAAQ,GAAG,MAAM,GAAG,IAAI,CAcjG;AAED,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"phone.d.ts","sourceRoot":"","sources":["../../../ts/utils/phone.ts"],"names":[],"mappings":"AAKA,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,SAAQ,GAAG,MAAM,GAAG,IAAI,CAcjG;AAED,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAQvE;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,SAAS,GAAE,aAAa,GAAG,wBAAwB,GAAG,2BAA2C,GAAG,MAAM,GAAG,IAAI,CA8BzK;AAED,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAUvE"}
|
package/dist/mjs/utils/phone.js
CHANGED
|
@@ -22,6 +22,7 @@ export function formatPhoneNumberToE164(phoneNumber, prefix = '+33') {
|
|
|
22
22
|
export function getPhoneNumberWithoutPrefix(phoneNumber) {
|
|
23
23
|
let number = phoneNumber;
|
|
24
24
|
// @ts-ignore
|
|
25
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
25
26
|
Object.keys(PhonePrefix).map((index) => PhonePrefix[index].prefix).forEach((prefix) => {
|
|
26
27
|
number = number.replace(prefix, '');
|
|
27
28
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"phone.js","sourceRoot":"","sources":["../../../ts/utils/phone.ts"],"names":[],"mappings":"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","sourcesContent":["import { SegmentedMessage } from 'sms-segments-calculator';\nimport { PhonePrefix } from '../types/Enum/Phone';\nimport { Role } from '../types/Enum/Role';\nimport { RoleDetail } from '../types/Enum/RoleDetail';\n\nexport function formatPhoneNumberToE164(phoneNumber: string | null, prefix = '+33'): string | null {\n if (!phoneNumber) return null;\n if (phoneNumber.charAt(0) !== '+') {\n const numberInt = phoneNumber.replace(/\\D/g, '');\n if (prefix) {\n if (numberInt.length === 10 && numberInt.charAt(0) === '0') {\n return `${prefix}${numberInt.substring(1)}`;\n }\n return `${prefix}${numberInt}`;\n }\n if (numberInt.charAt(0) === '0' && numberInt.length === 10) return `+33${numberInt.substring(1)}`;\n return numberInt;\n }\n return phoneNumber;\n}\n\nexport function getPhoneNumberWithoutPrefix(phoneNumber: string): string {\n let number = phoneNumber;\n // @ts-ignore\n Object.keys(PhonePrefix).map((index) => PhonePrefix[index].prefix).forEach((prefix) => {\n number = number.replace(prefix, '');\n });\n return number;\n}\n\nexport function countSegmentsFromMessage(message: string): number {\n return new SegmentedMessage(message, 'auto').segmentsCount;\n}\n\nexport function getPhoneNumberFromRoles(roles: number[], attribute: 'phoneNumber' | 'phoneNumberPourcentage' | 'phoneNumberStatutsExpress' = 'phoneNumber'): string | null {\n if (roles.some((role) => [Role.FRONT_OFFICE, Role.EXPERT_ACCOUNTANT].includes(role))) {\n return RoleDetail.FRONT_OFFICE[attribute];\n }\n\n if (roles.some((role) => [Role.FRONT_OFFICE_EXPRESS].includes(role))) {\n return RoleDetail.FRONT_OFFICE_EXPRESS[attribute];\n }\n\n if (roles.some((role) => [Role.COMMERCIAL].includes(role))) {\n return RoleDetail.COMMERCIAL[attribute];\n }\n\n if (roles.some((role) => [Role.FACTURATION].includes(role))) {\n return RoleDetail.FACTURATION[attribute];\n }\n\n if (roles.some((role) => [Role.CUSTOMER_SUCCESS].includes(role))) {\n return RoleDetail.CUSTOMER_SUCCESS[attribute];\n }\n\n if (roles.some((role) => [Role.JURIDIC, Role.JURIDICAL_SUPPORT].includes(role))) {\n return RoleDetail.JURIDIC[attribute];\n }\n\n if (roles.some((role) => [Role.SOCIAL].includes(role))) {\n return RoleDetail.SOCIAL[attribute];\n }\n\n return null;\n}\n\nexport function formatPhoneNumberToNational(phoneNumber: string): string {\n\n const phoneWithoutSpace = phoneNumber.replace(/ /g, '');\n\n if (phoneWithoutSpace?.startsWith('+33')) {\n return phoneWithoutSpace.replace('+33', '0');\n }\n\n // Fonction à mettre à jour en fonction des cas de notre bdd\n return phoneWithoutSpace;\n}"]}
|
|
1
|
+
{"version":3,"file":"phone.js","sourceRoot":"","sources":["../../../ts/utils/phone.ts"],"names":[],"mappings":"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","sourcesContent":["import { SegmentedMessage } from 'sms-segments-calculator';\nimport { PhonePrefix } from '../types/Enum/Phone';\nimport { Role } from '../types/Enum/Role';\nimport { RoleDetail } from '../types/Enum/RoleDetail';\n\nexport function formatPhoneNumberToE164(phoneNumber: string | null, prefix = '+33'): string | null {\n if (!phoneNumber) return null;\n if (phoneNumber.charAt(0) !== '+') {\n const numberInt = phoneNumber.replace(/\\D/g, '');\n if (prefix) {\n if (numberInt.length === 10 && numberInt.charAt(0) === '0') {\n return `${prefix}${numberInt.substring(1)}`;\n }\n return `${prefix}${numberInt}`;\n }\n if (numberInt.charAt(0) === '0' && numberInt.length === 10) return `+33${numberInt.substring(1)}`;\n return numberInt;\n }\n return phoneNumber;\n}\n\nexport function getPhoneNumberWithoutPrefix(phoneNumber: string): string {\n let number = phoneNumber;\n // @ts-ignore\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n Object.keys(PhonePrefix).map((index) => PhonePrefix[index].prefix).forEach((prefix) => {\n number = number.replace(prefix, '');\n });\n return number;\n}\n\nexport function countSegmentsFromMessage(message: string): number {\n return new SegmentedMessage(message, 'auto').segmentsCount;\n}\n\nexport function getPhoneNumberFromRoles(roles: number[], attribute: 'phoneNumber' | 'phoneNumberPourcentage' | 'phoneNumberStatutsExpress' = 'phoneNumber'): string | null {\n if (roles.some((role) => [Role.FRONT_OFFICE, Role.EXPERT_ACCOUNTANT].includes(role))) {\n return RoleDetail.FRONT_OFFICE[attribute];\n }\n\n if (roles.some((role) => [Role.FRONT_OFFICE_EXPRESS].includes(role))) {\n return RoleDetail.FRONT_OFFICE_EXPRESS[attribute];\n }\n\n if (roles.some((role) => [Role.COMMERCIAL].includes(role))) {\n return RoleDetail.COMMERCIAL[attribute];\n }\n\n if (roles.some((role) => [Role.FACTURATION].includes(role))) {\n return RoleDetail.FACTURATION[attribute];\n }\n\n if (roles.some((role) => [Role.CUSTOMER_SUCCESS].includes(role))) {\n return RoleDetail.CUSTOMER_SUCCESS[attribute];\n }\n\n if (roles.some((role) => [Role.JURIDIC, Role.JURIDICAL_SUPPORT].includes(role))) {\n return RoleDetail.JURIDIC[attribute];\n }\n\n if (roles.some((role) => [Role.SOCIAL].includes(role))) {\n return RoleDetail.SOCIAL[attribute];\n }\n\n return null;\n}\n\nexport function formatPhoneNumberToNational(phoneNumber: string): string {\n\n const phoneWithoutSpace = phoneNumber.replace(/ /g, '');\n\n if (phoneWithoutSpace?.startsWith('+33')) {\n return phoneWithoutSpace.replace('+33', '0');\n }\n\n // Fonction à mettre à jour en fonction des cas de notre bdd\n return phoneWithoutSpace;\n}"]}
|
|
@@ -251,7 +251,7 @@ export function getClientQuotation(society, otherSocieties, lastNotice, unpaidDe
|
|
|
251
251
|
return {
|
|
252
252
|
cotation: quotation,
|
|
253
253
|
data: detailQuotation,
|
|
254
|
-
idSociety: society.id,
|
|
254
|
+
idSociety: society.id ?? 0,
|
|
255
255
|
};
|
|
256
256
|
}
|
|
257
257
|
export function compareTwoCotation(cotations) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quotation.js","sourceRoot":"","sources":["../../../ts/utils/quotation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAoBtD,MAAM,UAAU,gBAAgB,CAAC,MAA8B;IAC7D,MAAM,EACJ,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc,GACvF,GAAG,MAAM,CAAC;IACX,IACE,SAAS,KAAK,MAAM;WACjB,QAAQ,KAAK,MAAM;WACnB,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC;WACtB,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EACjG,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,SAAS,GAAG,CAAC,CAAC;IAElB,wBAAwB;IACxB,IAAI,SAAS;QAAE,SAAS,IAAI,CAAC,CAAC;IAE9B,qBAAqB;IACrB,IAAI,QAAQ;QAAE,SAAS,IAAI,CAAC,CAAC;IAE7B,qCAAqC;IACrC,IAAI,KAAK,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,SAAS,IAAI,EAAE,CAAC;IAClB,CAAC;SAAM,CAAC;QACN,SAAS,IAAI,CAAC,CAAC;IACjB,CAAC;IAED,iCAAiC;IACjC,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;QACzD,SAAS,IAAI,CAAC,CAAC;IACjB,CAAC;SACC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;QAC7D,SAAS,IAAI,EAAE,CAAC;IAClB,CAAC;IAEH,2BAA2B;IAC3B,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;QACjE,SAAS,IAAI,EAAE,CAAC;IAClB,CAAC;SAAM,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;QACpD,SAAS,IAAI,CAAC,CAAC;IACjB,CAAC;IAED,iCAAiC;IACjC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;QAClD,MAAM,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;QAC/B,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,KAAK,GAAG,CAAC,IAAI,GAAG,WAAW,CAAC,CAAC;QACnE,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,KAAK,GAAG,CAAC,IAAI,GAAG,WAAW,CAAC,CAAC;QACjE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;YAC7F,SAAS,IAAI,EAAE,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,SAAS,IAAI,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;SAAM,CAAC;QACN,SAAS,IAAI,CAAC,CAAC;IACjB,CAAC;IAED,2BAA2B;IAC3B,gBAAgB;IAChB,IAAI,MAAM,KAAK,EAAE,EAAE,CAAC;QAClB,SAAS,IAAI,EAAE,CAAC;QAEhB,6BAA6B;IAC/B,CAAC;SAAM,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,SAAS,IAAI,CAAC,CAAC;QAEf,+BAA+B;IACjC,CAAC;SAAM,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,SAAS,IAAI,CAAC,CAAC;QAEf,oBAAoB;IACtB,CAAC;SAAM,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACrC,SAAS,IAAI,CAAC,CAAC;IACjB,CAAC;IAED,uDAAuD;IACvD,MAAM,WAAW,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;IACvH,QAAQ,WAAW,EAAE,CAAC;QACpB,KAAK,CAAC;YACJ,SAAS,IAAI,EAAE,CAAC;YAChB,MAAM;QACR,KAAK,CAAC;YACJ,SAAS,IAAI,CAAC,CAAC;YACf,MAAM;QACR,KAAK,CAAC;YACJ,SAAS,IAAI,CAAC,CAAC;YACf,MAAM;QACR,KAAK,CAAC;YACJ,SAAS,IAAI,CAAC,CAAC;YACf,MAAM;QACR,KAAK,CAAC;YACJ,SAAS,IAAI,CAAC,CAAC;YACf,MAAM;QACR;YACE,MAAM;IACV,CAAC;IAED,4DAA4D;IAC5D,IAAI,YAAY;QAAE,SAAS,IAAI,CAAC,CAAC;IAEjC,oCAAoC;IACpC,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;QACvE,SAAS,IAAI,EAAE,CAAC;IAClB,CAAC;SAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;QACxJ,SAAS,IAAI,CAAC,CAAC;IACjB,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,gKAAgK;AAChK,MAAM,UAAU,kBAAkB,CAAC,OAAiB,EAAE,cAA0B,EAAE,UAAiC,EAAE,aAAiB,EAAE,OAAkB,EAAE,iBAAsC,EAAE,cAAmB,EAAE,aAAyB;IAChP,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAC1B,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAC1B,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,MAAM,eAAe,GAAG;QACtB,SAAS,EAAE,CAAC;QACZ,SAAS,EAAE,CAAC;QACZ,kBAAkB,EAAE,CAAC;QACrB,mBAAmB,EAAE,CAAC;QACtB,OAAO,EAAE,CAAC;QACV,kBAAkB,EAAE,CAAC;QACrB,mBAAmB,EAAE,CAAC;QACtB,MAAM,EAAE,CAAC;QACT,UAAU,EAAE,CAAC;QACb,kBAAkB,EAAE,CAAC;QACrB,MAAM,EAAE,CAAC;QACT,WAAW,EAAE,CAAC;QACd,OAAO,EAAE,CAAC;KACX,CAAC;IAEF,uCAAuC;IACvC,MAAM,UAAU,GAAG,aAAa,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,YAAY,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5H,MAAM,WAAW,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IAE3C,0EAA0E;IAC1E,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QACzB,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,qBAAqB,EAAE,UAAU,CAAC,kBAAkB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;YAC5H,iBAAiB,IAAI,EAAE,CAAC;YACxB,eAAe,CAAC,SAAS,IAAI,EAAE,CAAC;QAClC,CAAC;aAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,mBAAmB,EAAE,UAAU,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;YAC7H,iBAAiB,IAAI,EAAE,CAAC;YACxB,eAAe,CAAC,SAAS,IAAI,EAAE,CAAC;QAClC,CAAC;IACH,CAAC;IAED,4FAA4F;IAC5F,IAAI,aAAa,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QACrH,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;YACvB,iBAAiB,IAAI,EAAE,CAAC;YACxB,eAAe,CAAC,SAAS,IAAI,EAAE,CAAC;QAClC,CAAC;aAAM,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YAC5B,iBAAiB,IAAI,CAAC,EAAE,GAAG,CAAC,YAAY,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;YACpD,eAAe,CAAC,SAAS,IAAI,CAAC,EAAE,GAAG,CAAC,YAAY,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED,mDAAmD;IACnD,IAAI,OAAO,CAAC,oBAAoB,EAAE,MAAM,EAAE,CAAC;QACzC,MAAM,gBAAgB,GAAG,OAAO,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,yBAAyB,CAAC,CAAC;QACnH,gBAAgB,CAAC,OAAO,CAAC,GAAG,EAAE;YAC5B,iBAAiB,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC;YAChD,eAAe,CAAC,kBAAkB,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;IACL,CAAC;IAED,6CAA6C;IAC7C,IAAI,cAAc,CAAC,MAAM,EAAE,CAAC;QAC1B,iBAAiB,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,cAAc,CAAC,MAAM,GAAG,WAAW,CAAC,CAAC;QACxE,eAAe,CAAC,mBAAmB,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,cAAc,CAAC,MAAM,GAAG,WAAW,CAAC,CAAC;IAC5F,CAAC;IAED,0BAA0B;IAC1B,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC;QACzB,iBAAiB,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,aAAa,CAAC,MAAM,GAAG,WAAW,CAAC,CAAC;QACxE,eAAe,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,aAAa,CAAC,MAAM,GAAG,WAAW,CAAC,CAAC;IAChF,CAAC;IAED,wBAAwB;IACxB,IAAI,cAAc,CAAC,6BAA6B,EAAE,MAAM,EAAE,CAAC;QACzD,yDAAyD;QACzD,IAAI,eAAe,GAAG,CAAC,CAAC;QACxB,IAAI,qBAAqB,GAAG,GAAG,CAAC;QAChC,cAAc,CAAC,6BAA6B,CAAC,GAAG,CAAC,CAAC,EAAM,EAAE,EAAE;YAC1D,IAAI,EAAE,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;gBAC3B,eAAe,IAAI,CAAC,CAAC;YACvB,CAAC;YACD,OAAO,eAAe,CAAC;QACzB,CAAC,CAAC,CAAC;QACH,IAAI,eAAe,KAAK,CAAC;YAAE,qBAAqB,GAAG,CAAC,eAAe,GAAG,cAAc,CAAC,6BAA6B,EAAE,MAAM,CAAC,GAAG,GAAG,CAAC;QAClI,IAAI,qBAAqB,IAAI,EAAE,EAAE,CAAC;YAChC,iBAAiB,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,WAAW,CAAC,CAAC;YACjD,eAAe,CAAC,kBAAkB,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,WAAW,CAAC,CAAC;QACpE,CAAC;aAAM,CAAC;YACN,iBAAiB,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,WAAW,CAAC,CAAC;YACjD,eAAe,CAAC,kBAAkB,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,WAAW,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED,8BAA8B;IAC9B,IAAI,cAAc,CAAC,4BAA4B,EAAE,MAAM,EAAE,CAAC;QACxD,kBAAkB;QAClB,MAAM,OAAO,GAAG,cAAc,CAAC,4BAA4B,CAAC,MAAM,GAAG,cAAc,CAAC,uBAAuB,CAAC,MAAM,CAAC;QACnH,iBAAiB,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,OAAO,GAAG,WAAW,CAAC,CAAC;QAC3D,eAAe,CAAC,mBAAmB,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,OAAO,GAAG,WAAW,CAAC,CAAC;QAE7E,oBAAoB;QACpB,iBAAiB,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,cAAc,CAAC,uBAAuB,CAAC,MAAM,GAAG,WAAW,CAAC,CAAC;QACjG,eAAe,CAAC,mBAAmB,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,cAAc,CAAC,uBAAuB,CAAC,MAAM,GAAG,WAAW,CAAC,CAAC;IACrH,CAAC;IAED,UAAU;IACV,IAAI,UAAU,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/C,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;YACrC,iBAAiB,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,WAAW,CAAC,CAAC;YACjD,eAAe,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,WAAW,CAAC,CAAC;QACxD,CAAC;aAAM,CAAC;YACN,iBAAiB,IAAI,EAAE,CAAC;YACxB,eAAe,CAAC,MAAM,IAAI,EAAE,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,iBAAiB;IACjB,IAAI,OAAO,EAAE,aAAa,EAAE,CAAC;QAC3B,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,WAAW,EAAE,CAAC;YACxC,iBAAiB,IAAI,EAAE,CAAC;YACxB,eAAe,CAAC,UAAU,IAAI,EAAE,CAAC;QACnC,CAAC;IACH,CAAC;IAED,uGAAuG;IACvG,IAAI,iBAAiB,EAAE,MAAM,EAAE,CAAC;QAC9B,iBAAiB,IAAI,CAAC,GAAG,iBAAiB,CAAC,MAAM,CAAC;QAClD,eAAe,CAAC,kBAAkB,IAAI,CAAC,GAAG,iBAAiB,CAAC,MAAM,CAAC;IACrE,CAAC;IAED,IAAI,OAAO,EAAE,MAAM,EAAE,CAAC;QACpB,iBAAiB,IAAI,EAAE,CAAC;QACxB,eAAe,CAAC,MAAM,IAAI,EAAE,CAAC;IAC/B,CAAC;IAED,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QACzB,iBAAiB,IAAI,EAAE,CAAC;QACxB,eAAe,CAAC,WAAW,IAAI,EAAE,CAAC;IACpC,CAAC;IAED,wBAAwB;IACxB,IAAI,OAAO,CAAC,oBAAoB,EAAE,MAAM,EAAE,CAAC;QACzC,MAAM,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,gBAAgB,KAAK,EAAE,CAAC,CAAC,CAAC,sBAAsB;QAC3I,mBAAmB,CAAC,OAAO,CAAC,GAAG,EAAE;YAC/B,iBAAiB,IAAI,EAAE,CAAC;YACxB,eAAe,CAAC,OAAO,IAAI,EAAE,CAAC;QAChC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,iBAAiB,GAAG,GAAG;QAAE,iBAAiB,GAAG,GAAG,CAAC;IACrD,IAAI,iBAAiB,GAAG,GAAG;QAAE,iBAAiB,GAAG,GAAG,CAAC;IAErD,SAAS,GAAG,iBAAiB,GAAG,iBAAiB,CAAC;IAElD,IAAI,SAAS,GAAG,CAAC;QAAE,SAAS,GAAG,CAAC,CAAC;IAEjC,OAAO;QACL,QAAQ,EAAE,SAAS;QACnB,IAAI,EAAE,eAAe;QACrB,SAAS,EAAE,OAAO,CAAC,EAAY;KAChC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,SAAsB;IACvD,sDAAsD;IACtD,MAAM,MAAM,GAAG,KAAK,CAAC;IACrB,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QACpD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QACpD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["import * as dayjs from 'dayjs';\nimport { ForbidenDomain, BasicDomain } from '../types/Enum/MailDomainType';\nimport { Activity } from '../types/Enum/Activity';\nimport { ComptaType } from '../types/Enum/ComptaType';\nimport { ISociety } from '../types/Interface/models/ISociety';\nimport { ICotation } from '../types/Interface/models/ICotation';\nimport {\n BasePaginate,\n IPayment,\n IRating, IReport, ISocietyProceding, ReadClientQuotation,\n} from '../types';\n\ntype getLeadQuotationParams = {\n firstname: string,\n lastname: string,\n phone: string,\n mail: string,\n annualTurnover: number,\n source: number,\n alreadyExist: boolean,\n activitySector: number,\n};\n\nexport function getLeadQuotation(params: getLeadQuotationParams):number {\n const {\n firstname, lastname, phone, mail, annualTurnover, source, alreadyExist, activitySector,\n } = params;\n if (\n firstname === 'test'\n || lastname === 'test'\n || mail?.includes('test')\n || ['606060606', '707070707', '612345678', '712345678', '687654321', '787654321'].includes(phone)\n ) {\n return 0;\n }\n let quotation = 0;\n\n /* cotation du prénom */\n if (firstname) quotation += 5;\n\n /* cotation du nom */\n if (lastname) quotation += 5;\n\n /* cotation du numéro de téléphone */\n if (phone && ['6', '7'].includes(phone.substr(0, 1))) {\n quotation += 15;\n } else {\n quotation += 5;\n }\n\n /* cotation de l'adresse email */\n if (BasicDomain.find((domain) => mail?.includes(domain))) {\n quotation += 5;\n } else\n if (!ForbidenDomain.find((domain) => mail?.includes(domain))) {\n quotation += 15;\n }\n\n /* cotation du CA annuel */\n if ([0, 150000, 400000, 783000, 783001].includes(annualTurnover)) {\n quotation += 10;\n } else if ([50000, 234000].includes(annualTurnover)) {\n quotation += 5;\n }\n\n /* cotation de la date d'ajout */\n if ([1, 2, 3, 4, 5].includes(new Date().getDay())) {\n const dateTime = new Date();\n const year = dateTime.getFullYear();\n const month = dateTime.getMonth();\n const day = dateTime.getDate();\n const startTime = new Date(`${year}-${month + 1}-${day} 08:45:00`);\n const endTime = new Date(`${year}-${month + 1}-${day} 18:45:00`);\n if ((startTime.getTime() <= dateTime.getTime()) && (endTime.getTime() >= dateTime.getTime())) {\n quotation += 15;\n } else {\n quotation += 5;\n }\n } else {\n quotation += 5;\n }\n\n /* cotation de la source */\n /* Parrainage */\n if (source === 49) {\n quotation += 10;\n\n /* calendly, appel entrant */\n } else if (source === 2) {\n quotation += 8;\n\n /* adWords, Bing, Formulaire */\n } else if (source === 4) {\n quotation += 6;\n\n /* Chat, Whatsapp */\n } else if ([29, 92].includes(source)) {\n quotation += 2;\n }\n\n /* cotation de la qualité (nombre de champs remplis) */\n const fieldNumber = [firstname, lastname, phone, mail, annualTurnover, activitySector].filter((data) => !!data).length;\n switch (fieldNumber) {\n case 6:\n quotation += 10;\n break;\n case 5:\n quotation += 8;\n break;\n case 4:\n quotation += 6;\n break;\n case 3:\n quotation += 4;\n break;\n case 2:\n quotation += 2;\n break;\n default:\n break;\n }\n\n /* cotation de l'existence du lead (déjà existant ou non) */\n if (alreadyExist) quotation += 8;\n\n /* cotation du secteur d'activité */\n if ([Activity.INFORMATIQUE, Activity.CONSEIL].includes(activitySector)) {\n quotation += 10;\n } else if ([Activity.TRANSPORT, Activity.BTP, Activity.RESTAURATION, Activity.COMMERCANT, Activity.MEDICAL, Activity.PROF_LIB].includes(activitySector)) {\n quotation += 5;\n }\n\n return quotation;\n}\n\n/* besoin en entré de la société concerné avec les différents imports (society), ainsi que la liste des autres sociétés ou l'owner est owner (otherSocieties) */\nexport function getClientQuotation(society: ISociety, otherSocieties: ISociety[], lastNotice: BasePaginate<IRating>, unpaidDetails: [], reports: IReport[], societyProcedings: ISocietyProceding[], tabBankAccount: any, firstPaiement: IPayment[]): ReadClientQuotation {\n let quotationPositive = 0;\n let quotationNegative = 0;\n let quotation = 0;\n const detailQuotation = {\n signature: 0,\n seniority: 0,\n additionalBenefits: 0,\n additionalCompanies: 0,\n unpayed: 0,\n updatedAnnotations: 0,\n bankSynchronization: 0,\n rating: 0,\n labRefused: 0,\n ongoingProceedings: 0,\n report: 0,\n termination: 0,\n created: 0,\n };\n\n // calcul de l'ancienneté de la société\n const anciennete = firstPaiement?.length > 0 ? dayjs().diff(dayjs(firstPaiement[0].datePayment, 'YYYY-MM-DD'), 'years') : 0;\n const ponderation = (anciennete * 0.1) + 1;\n\n /* Type de comptabilité du client (Tresorerie (+10) / Engagement (+15)) */\n if (society.idComptaType) {\n if ([ComptaType.CASH_BASED, ComptaType.CASH_BASED_ASSISTANCE, ComptaType.CASH_BASED_SEIZURE].includes(society.idComptaType)) {\n quotationPositive += 10;\n detailQuotation.signature += 10;\n } else if ([ComptaType.ACCRUALS, ComptaType.ACCRUALS_ASSISTANCE, ComptaType.ACCRUALS_SEIZURE].includes(society.idComptaType)) {\n quotationPositive += 15;\n detailQuotation.signature += 15;\n }\n }\n\n /* Ancienneté (1 ans < firstPaiement < 2 ans (+10) / 2 ans < firstPaiement (+20 / année)) */\n if (firstPaiement?.length > 0) {\n const yearAsClient = Number(new Date().getFullYear()) - Number(new Date(firstPaiement[0].datePayment).getFullYear());\n if (yearAsClient === 1) {\n quotationPositive += 10;\n detailQuotation.seniority += 10;\n } else if (yearAsClient > 1) {\n quotationPositive += (20 * (yearAsClient - 1) + 10);\n detailQuotation.seniority += (20 * (yearAsClient - 1) + 10);\n }\n }\n\n /* Prestations Complémentaires (+5 / prestation) */\n if (society.prestationsSocieties?.length) {\n const prestationsCompl = society.prestationsSocieties.filter((prestation) => prestation.idPrestationComplementary);\n prestationsCompl.forEach(() => {\n quotationPositive += Math.ceil(5 * ponderation);\n detailQuotation.additionalBenefits += Math.ceil(5 * ponderation);\n });\n }\n\n /* Sociétés supplémentaires (+8 / société) */\n if (otherSocieties.length) {\n quotationPositive += Math.ceil(8 * otherSocieties.length * ponderation);\n detailQuotation.additionalCompanies += Math.ceil(8 * otherSocieties.length * ponderation);\n }\n\n /* Impayés (-15 / mois) */\n if (unpaidDetails.length) {\n quotationNegative -= Math.ceil(15 * unpaidDetails.length * ponderation);\n detailQuotation.unpayed -= Math.ceil(15 * unpaidDetails.length * ponderation);\n }\n\n /* annotations à jour */\n if (tabBankAccount.societyAccountingTransactions?.length) {\n // on check s'il y a 80% des lignes annotées (dateLocked)\n let countNotAnnoted = 0;\n let percentageAnnotations = 100;\n tabBankAccount.societyAccountingTransactions.map((na:any) => {\n if (na.dateLocked === null) {\n countNotAnnoted += 1;\n }\n return countNotAnnoted;\n });\n if (countNotAnnoted !== 0) percentageAnnotations = (countNotAnnoted / tabBankAccount.societyAccountingTransactions?.length) * 100;\n if (percentageAnnotations >= 80) {\n quotationPositive += Math.ceil(12 * ponderation);\n detailQuotation.updatedAnnotations += Math.ceil(12 * ponderation);\n } else {\n quotationNegative -= Math.ceil(12 * ponderation);\n detailQuotation.updatedAnnotations -= Math.ceil(12 * ponderation);\n }\n }\n\n /* synchronisation bancaire */\n if (tabBankAccount.societyActivatedBankAccounts?.length) {\n // comptes synchro\n const synchro = tabBankAccount.societyActivatedBankAccounts.length - tabBankAccount.desactivatedBankAccount.length;\n quotationPositive += Math.ceil(12 * synchro * ponderation);\n detailQuotation.bankSynchronization += Math.ceil(12 * synchro * ponderation);\n\n // comptes desynchro\n quotationNegative -= Math.ceil(12 * tabBankAccount.desactivatedBankAccount.length * ponderation);\n detailQuotation.bankSynchronization -= Math.ceil(12 * tabBankAccount.desactivatedBankAccount.length * ponderation);\n }\n\n /* avis */\n if (lastNotice && lastNotice.data.length === 1) {\n if (lastNotice.data[0].average === 5) {\n quotationPositive += Math.ceil(10 * ponderation);\n detailQuotation.rating += Math.ceil(10 * ponderation);\n } else {\n quotationNegative -= 10;\n detailQuotation.rating -= 10;\n }\n }\n\n /* LAB refusée */\n if (society?.societyDetail) {\n if (!society.societyDetail?.acceptation) {\n quotationNegative -= 10;\n detailQuotation.labRefused -= 10;\n }\n }\n\n /* Cessation de paiement - redressement judiciaire - procédure en cours / signalements / résiliation */\n if (societyProcedings?.length) {\n quotationNegative -= 5 * societyProcedings.length;\n detailQuotation.ongoingProceedings -= 5 * societyProcedings.length;\n }\n\n if (reports?.length) {\n quotationNegative -= 10;\n detailQuotation.report -= 10;\n }\n\n if (society.isWaitingEnd) {\n quotationNegative -= 50;\n detailQuotation.termination -= 50;\n }\n\n /* Création chez nous */\n if (society.prestationsSocieties?.length) {\n const prestationsCreation = society.prestationsSocieties.filter((prestation) => prestation.idPrestationList === 15); // creation pas d'enum\n prestationsCreation.forEach(() => {\n quotationPositive += 10;\n detailQuotation.created += 10;\n });\n }\n\n if (quotationPositive > 100) quotationPositive = 100;\n if (quotationNegative > 100) quotationNegative = 100;\n\n quotation = quotationPositive + quotationNegative;\n\n if (quotation < 0) quotation = 0;\n\n return {\n cotation: quotation,\n data: detailQuotation,\n idSociety: society.id as number,\n };\n}\n\nexport function compareTwoCotation(cotations: ICotation[]):boolean | null {\n // on recupere les 2 dernieres cotations de la societe\n const higher = false;\n if (cotations[0].cotation === cotations[1].cotation) {\n return null;\n } if (cotations[0].cotation > cotations[1].cotation) {\n return true;\n }\n return higher;\n}"]}
|
|
1
|
+
{"version":3,"file":"quotation.js","sourceRoot":"","sources":["../../../ts/utils/quotation.ts"],"names":[],"mappings":"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","sourcesContent":["import * as dayjs from 'dayjs';\nimport { ForbidenDomain, BasicDomain } from '../types/Enum/MailDomainType';\nimport { Activity } from '../types/Enum/Activity';\nimport { ComptaType } from '../types/Enum/ComptaType';\nimport { ISociety } from '../types/Interface/models/ISociety';\nimport { ICotation } from '../types/Interface/models/ICotation';\nimport {\n BasePaginate,\n IPayment,\n IRating, IReport, ISocietyProceding, ReadClientQuotation,\n} from '../types';\n\ntype getLeadQuotationParams = {\n firstname: string,\n lastname: string,\n phone: string,\n mail: string,\n annualTurnover: number,\n source: number,\n alreadyExist: boolean,\n activitySector: number,\n};\n\nexport function getLeadQuotation(params: getLeadQuotationParams):number {\n const {\n firstname, lastname, phone, mail, annualTurnover, source, alreadyExist, activitySector,\n } = params;\n if (\n firstname === 'test'\n || lastname === 'test'\n || mail?.includes('test')\n || ['606060606', '707070707', '612345678', '712345678', '687654321', '787654321'].includes(phone)\n ) {\n return 0;\n }\n let quotation = 0;\n\n /* cotation du prénom */\n if (firstname) quotation += 5;\n\n /* cotation du nom */\n if (lastname) quotation += 5;\n\n /* cotation du numéro de téléphone */\n if (phone && ['6', '7'].includes(phone.substr(0, 1))) {\n quotation += 15;\n } else {\n quotation += 5;\n }\n\n /* cotation de l'adresse email */\n if (BasicDomain.find((domain) => mail?.includes(domain))) {\n quotation += 5;\n } else\n if (!ForbidenDomain.find((domain) => mail?.includes(domain))) {\n quotation += 15;\n }\n\n /* cotation du CA annuel */\n if ([0, 150000, 400000, 783000, 783001].includes(annualTurnover)) {\n quotation += 10;\n } else if ([50000, 234000].includes(annualTurnover)) {\n quotation += 5;\n }\n\n /* cotation de la date d'ajout */\n if ([1, 2, 3, 4, 5].includes(new Date().getDay())) {\n const dateTime = new Date();\n const year = dateTime.getFullYear();\n const month = dateTime.getMonth();\n const day = dateTime.getDate();\n const startTime = new Date(`${year}-${month + 1}-${day} 08:45:00`);\n const endTime = new Date(`${year}-${month + 1}-${day} 18:45:00`);\n if ((startTime.getTime() <= dateTime.getTime()) && (endTime.getTime() >= dateTime.getTime())) {\n quotation += 15;\n } else {\n quotation += 5;\n }\n } else {\n quotation += 5;\n }\n\n /* cotation de la source */\n /* Parrainage */\n if (source === 49) {\n quotation += 10;\n\n /* calendly, appel entrant */\n } else if (source === 2) {\n quotation += 8;\n\n /* adWords, Bing, Formulaire */\n } else if (source === 4) {\n quotation += 6;\n\n /* Chat, Whatsapp */\n } else if ([29, 92].includes(source)) {\n quotation += 2;\n }\n\n /* cotation de la qualité (nombre de champs remplis) */\n const fieldNumber = [firstname, lastname, phone, mail, annualTurnover, activitySector].filter((data) => !!data).length;\n switch (fieldNumber) {\n case 6:\n quotation += 10;\n break;\n case 5:\n quotation += 8;\n break;\n case 4:\n quotation += 6;\n break;\n case 3:\n quotation += 4;\n break;\n case 2:\n quotation += 2;\n break;\n default:\n break;\n }\n\n /* cotation de l'existence du lead (déjà existant ou non) */\n if (alreadyExist) quotation += 8;\n\n /* cotation du secteur d'activité */\n if ([Activity.INFORMATIQUE, Activity.CONSEIL].includes(activitySector)) {\n quotation += 10;\n } else if ([Activity.TRANSPORT, Activity.BTP, Activity.RESTAURATION, Activity.COMMERCANT, Activity.MEDICAL, Activity.PROF_LIB].includes(activitySector)) {\n quotation += 5;\n }\n\n return quotation;\n}\n\n/* besoin en entré de la société concerné avec les différents imports (society), ainsi que la liste des autres sociétés ou l'owner est owner (otherSocieties) */\nexport function getClientQuotation(society: ISociety, otherSocieties: ISociety[], lastNotice: BasePaginate<IRating>, unpaidDetails: [], reports: IReport[], societyProcedings: ISocietyProceding[], tabBankAccount: any, firstPaiement: IPayment[]): ReadClientQuotation {\n let quotationPositive = 0;\n let quotationNegative = 0;\n let quotation = 0;\n const detailQuotation = {\n signature: 0,\n seniority: 0,\n additionalBenefits: 0,\n additionalCompanies: 0,\n unpayed: 0,\n updatedAnnotations: 0,\n bankSynchronization: 0,\n rating: 0,\n labRefused: 0,\n ongoingProceedings: 0,\n report: 0,\n termination: 0,\n created: 0,\n };\n\n // calcul de l'ancienneté de la société\n const anciennete = firstPaiement?.length > 0 ? dayjs().diff(dayjs(firstPaiement[0].datePayment, 'YYYY-MM-DD'), 'years') : 0;\n const ponderation = (anciennete * 0.1) + 1;\n\n /* Type de comptabilité du client (Tresorerie (+10) / Engagement (+15)) */\n if (society.idComptaType) {\n if ([ComptaType.CASH_BASED, ComptaType.CASH_BASED_ASSISTANCE, ComptaType.CASH_BASED_SEIZURE].includes(society.idComptaType)) {\n quotationPositive += 10;\n detailQuotation.signature += 10;\n } else if ([ComptaType.ACCRUALS, ComptaType.ACCRUALS_ASSISTANCE, ComptaType.ACCRUALS_SEIZURE].includes(society.idComptaType)) {\n quotationPositive += 15;\n detailQuotation.signature += 15;\n }\n }\n\n /* Ancienneté (1 ans < firstPaiement < 2 ans (+10) / 2 ans < firstPaiement (+20 / année)) */\n if (firstPaiement?.length > 0) {\n const yearAsClient = Number(new Date().getFullYear()) - Number(new Date(firstPaiement[0].datePayment).getFullYear());\n if (yearAsClient === 1) {\n quotationPositive += 10;\n detailQuotation.seniority += 10;\n } else if (yearAsClient > 1) {\n quotationPositive += (20 * (yearAsClient - 1) + 10);\n detailQuotation.seniority += (20 * (yearAsClient - 1) + 10);\n }\n }\n\n /* Prestations Complémentaires (+5 / prestation) */\n if (society.prestationsSocieties?.length) {\n const prestationsCompl = society.prestationsSocieties.filter((prestation) => prestation.idPrestationComplementary);\n prestationsCompl.forEach(() => {\n quotationPositive += Math.ceil(5 * ponderation);\n detailQuotation.additionalBenefits += Math.ceil(5 * ponderation);\n });\n }\n\n /* Sociétés supplémentaires (+8 / société) */\n if (otherSocieties.length) {\n quotationPositive += Math.ceil(8 * otherSocieties.length * ponderation);\n detailQuotation.additionalCompanies += Math.ceil(8 * otherSocieties.length * ponderation);\n }\n\n /* Impayés (-15 / mois) */\n if (unpaidDetails.length) {\n quotationNegative -= Math.ceil(15 * unpaidDetails.length * ponderation);\n detailQuotation.unpayed -= Math.ceil(15 * unpaidDetails.length * ponderation);\n }\n\n /* annotations à jour */\n if (tabBankAccount.societyAccountingTransactions?.length) {\n // on check s'il y a 80% des lignes annotées (dateLocked)\n let countNotAnnoted = 0;\n let percentageAnnotations = 100;\n tabBankAccount.societyAccountingTransactions.map((na:any) => {\n if (na.dateLocked === null) {\n countNotAnnoted += 1;\n }\n return countNotAnnoted;\n });\n if (countNotAnnoted !== 0) percentageAnnotations = (countNotAnnoted / tabBankAccount.societyAccountingTransactions?.length) * 100;\n if (percentageAnnotations >= 80) {\n quotationPositive += Math.ceil(12 * ponderation);\n detailQuotation.updatedAnnotations += Math.ceil(12 * ponderation);\n } else {\n quotationNegative -= Math.ceil(12 * ponderation);\n detailQuotation.updatedAnnotations -= Math.ceil(12 * ponderation);\n }\n }\n\n /* synchronisation bancaire */\n if (tabBankAccount.societyActivatedBankAccounts?.length) {\n // comptes synchro\n const synchro = tabBankAccount.societyActivatedBankAccounts.length - tabBankAccount.desactivatedBankAccount.length;\n quotationPositive += Math.ceil(12 * synchro * ponderation);\n detailQuotation.bankSynchronization += Math.ceil(12 * synchro * ponderation);\n\n // comptes desynchro\n quotationNegative -= Math.ceil(12 * tabBankAccount.desactivatedBankAccount.length * ponderation);\n detailQuotation.bankSynchronization -= Math.ceil(12 * tabBankAccount.desactivatedBankAccount.length * ponderation);\n }\n\n /* avis */\n if (lastNotice && lastNotice.data.length === 1) {\n if (lastNotice.data[0].average === 5) {\n quotationPositive += Math.ceil(10 * ponderation);\n detailQuotation.rating += Math.ceil(10 * ponderation);\n } else {\n quotationNegative -= 10;\n detailQuotation.rating -= 10;\n }\n }\n\n /* LAB refusée */\n if (society?.societyDetail) {\n if (!society.societyDetail?.acceptation) {\n quotationNegative -= 10;\n detailQuotation.labRefused -= 10;\n }\n }\n\n /* Cessation de paiement - redressement judiciaire - procédure en cours / signalements / résiliation */\n if (societyProcedings?.length) {\n quotationNegative -= 5 * societyProcedings.length;\n detailQuotation.ongoingProceedings -= 5 * societyProcedings.length;\n }\n\n if (reports?.length) {\n quotationNegative -= 10;\n detailQuotation.report -= 10;\n }\n\n if (society.isWaitingEnd) {\n quotationNegative -= 50;\n detailQuotation.termination -= 50;\n }\n\n /* Création chez nous */\n if (society.prestationsSocieties?.length) {\n const prestationsCreation = society.prestationsSocieties.filter((prestation) => prestation.idPrestationList === 15); // creation pas d'enum\n prestationsCreation.forEach(() => {\n quotationPositive += 10;\n detailQuotation.created += 10;\n });\n }\n\n if (quotationPositive > 100) quotationPositive = 100;\n if (quotationNegative > 100) quotationNegative = 100;\n\n quotation = quotationPositive + quotationNegative;\n\n if (quotation < 0) quotation = 0;\n\n return {\n cotation: quotation,\n data: detailQuotation,\n idSociety: society.id ?? 0,\n };\n}\n\nexport function compareTwoCotation(cotations: ICotation[]):boolean | null {\n // on recupere les 2 dernieres cotations de la societe\n const higher = false;\n if (cotations[0].cotation === cotations[1].cotation) {\n return null;\n } if (cotations[0].cotation > cotations[1].cotation) {\n return true;\n }\n return higher;\n}"]}
|
package/dist/mjs/utils/social.js
CHANGED
|
@@ -6,7 +6,6 @@ const diffHours = (start, end) => {
|
|
|
6
6
|
export function getBusinessDatesCount(startDate, endDate) {
|
|
7
7
|
const day = startDate;
|
|
8
8
|
let businessDays = 0;
|
|
9
|
-
// eslint-disable-next-line no-unmodified-loop-condition
|
|
10
9
|
while (day <= endDate) {
|
|
11
10
|
if (day.getDay() !== 0 && day.getDay() !== 6) {
|
|
12
11
|
if (diffHours(day, endDate) <= 4) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"social.js","sourceRoot":"","sources":["../../../ts/utils/social.ts"],"names":[],"mappings":"AAAA,MAAM,SAAS,GAAG,CAAC,KAAW,EAAE,GAAS,EAAU,EAAE;IACnD,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC;IACpD,IAAI,IAAI,EAAE,GAAG,EAAE,CAAC;IAChB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AACpC,CAAC,CAAC;AAEF,MAAM,UAAU,qBAAqB,CAAC,SAAe,EAAE,OAAa;IAClE,MAAM,GAAG,GAAG,SAAS,CAAC;IACtB,IAAI,YAAY,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"social.js","sourceRoot":"","sources":["../../../ts/utils/social.ts"],"names":[],"mappings":"AAAA,MAAM,SAAS,GAAG,CAAC,KAAW,EAAE,GAAS,EAAU,EAAE;IACnD,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC;IACpD,IAAI,IAAI,EAAE,GAAG,EAAE,CAAC;IAChB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AACpC,CAAC,CAAC;AAEF,MAAM,UAAU,qBAAqB,CAAC,SAAe,EAAE,OAAa;IAClE,MAAM,GAAG,GAAG,SAAS,CAAC;IACtB,IAAI,YAAY,GAAG,CAAC,CAAC;IAErB,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;QACtB,IAAI,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;YAC7C,IAAI,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjC,YAAY,IAAI,GAAG,CAAC;YACtB,CAAC;iBAAM,CAAC;gBACN,YAAY,IAAI,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;QACD,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC","sourcesContent":["const diffHours = (start: Date, end: Date): number => {\n let diff = (start.getTime() - end.getTime()) / 1000;\n diff /= 60 * 60;\n return Math.abs(Math.round(diff));\n};\n\nexport function getBusinessDatesCount(startDate: Date, endDate: Date): number {\n const day = startDate;\n let businessDays = 0;\n \n while (day <= endDate) {\n if (day.getDay() !== 0 && day.getDay() !== 6) {\n if (diffHours(day, endDate) <= 4) {\n businessDays += 0.5;\n } else {\n businessDays += 1;\n }\n }\n day.setDate(day.getDate() + 1);\n }\n return businessDays;\n}"]}
|
|
@@ -101,9 +101,9 @@ export const creaEIMicro = {
|
|
|
101
101
|
export const offers = [justCreation, creaEIMicro, justStatuts, creaSociete];
|
|
102
102
|
export const getStatutsAmount = (idLegalForm, idPrestationList) => {
|
|
103
103
|
const offer = offers.find((e) => e.id === idPrestationList);
|
|
104
|
-
const price = typeof offer
|
|
104
|
+
const price = typeof offer?.price === 'object'
|
|
105
105
|
? offer.price[idLegalForm]
|
|
106
|
-
: offer
|
|
106
|
+
: offer?.price || 0;
|
|
107
107
|
return price +
|
|
108
108
|
legalNoticesCosts[idLegalForm] +
|
|
109
109
|
courtCosts[idLegalForm];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"statutsGeneration.js","sourceRoot":"","sources":["../../../ts/utils/statutsGeneration.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"statutsGeneration.js","sourceRoot":"","sources":["../../../ts/utils/statutsGeneration.ts"],"names":[],"mappings":"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","sourcesContent":["import { LegalFormTypeEnum } from '../types/Enum/LegalForm';\nimport { PrestationType } from '../types/Enum/PrestationType';\n\nexport const legalNoticesCosts: Record<number, number> = {\n [LegalFormTypeEnum.SASU]: 138,\n [LegalFormTypeEnum.SAS]: 193,\n [LegalFormTypeEnum.EURL]: 121,\n [LegalFormTypeEnum.SARL]: 144,\n [LegalFormTypeEnum.AUTO_ENTREPRENEUR]: 0,\n [LegalFormTypeEnum.EI]: 0,\n};\n\nexport const courtCosts: Record<number, number> = {\n [LegalFormTypeEnum.SASU]: 77.23,\n [LegalFormTypeEnum.SAS]: 77.23,\n [LegalFormTypeEnum.EURL]: 77.23,\n [LegalFormTypeEnum.SARL]: 77.23,\n [LegalFormTypeEnum.AUTO_ENTREPRENEUR]: 39,\n [LegalFormTypeEnum.EI]: 39,\n};\n\nexport const features = [\n {\n text: 'Statuts + dossier complet',\n detail: null,\n offers: [PrestationType.STATUTS_OPTION_1, PrestationType.STATUTS_OPTION_2],\n hidden: [PrestationType.STATUTS_FREE, PrestationType.STATUTS_OPTION_AE],\n },\n {\n text: 'Dossier complet',\n detail: null,\n offers: [PrestationType.STATUTS_OPTION_AE],\n hidden: [PrestationType.STATUTS_FREE, PrestationType.STATUTS_OPTION_1, PrestationType.STATUTS_OPTION_2],\n },\n {\n text: 'Statuts',\n detail: null,\n offers: [PrestationType.STATUTS_FREE],\n hidden: [PrestationType.STATUTS_OPTION_1, PrestationType.STATUTS_OPTION_2, PrestationType.STATUTS_OPTION_AE],\n },\n {\n text: 'Assistance mail et téléphonique',\n detail: null,\n offers: [PrestationType.STATUTS_FREE, PrestationType.STATUTS_OPTION_1, PrestationType.STATUTS_OPTION_2, PrestationType.STATUTS_OPTION_AE],\n },\n { text: 'Suivi par nos formalistes', detail: null, offers: [PrestationType.STATUTS_OPTION_2, PrestationType.STATUTS_OPTION_AE] },\n {\n text: 'Immatriculation',\n detail: '(sous réserve du guichet unique)',\n offers: [PrestationType.STATUTS_OPTION_2, PrestationType.STATUTS_OPTION_AE],\n },\n { text: 'Assurance anti-rejet', detail: null, offers: [PrestationType.STATUTS_OPTION_2] },\n { text: 'Vérification du dossier', detail: null, offers: [PrestationType.STATUTS_OPTION_2] },\n];\n\nexport const justCreation = {\n id: PrestationType.STATUTS_OPTION_1,\n tag: null,\n title: 'Just’ Création',\n description: 'Une création en quelques clics',\n price: 0,\n priceInformation: 'HT',\n additionalCosts: '+ Frais de greffe + frais d’annonce légale',\n features: features.filter((f) => f.offers.includes(PrestationType.STATUTS_FREE)),\n legalForms: [LegalFormTypeEnum.SASU, LegalFormTypeEnum.SAS, LegalFormTypeEnum.EURL, LegalFormTypeEnum.SARL],\n};\n \nexport const justStatuts = {\n id: PrestationType.STATUTS_FREE,\n tag: null,\n title: 'Just’ Statuts',\n description: 'Editer vos statuts n’a jamais été aussi simple et rapide.',\n price: 79,\n priceInformation: 'HT',\n additionalCosts: 'Annonce légale et frais de greffe non inclus',\n features: features.filter((f) => f.offers.includes(PrestationType.STATUTS_FREE)),\n legalForms: [LegalFormTypeEnum.SASU, LegalFormTypeEnum.SAS, LegalFormTypeEnum.EURL, LegalFormTypeEnum.SARL],\n};\n \nexport const creaSociete = {\n id: PrestationType.STATUTS_OPTION_2,\n tag: 'Populaire',\n title: 'Full\\'Créa',\n description: 'Création de société de A à Z, réalisée en toute conformité.',\n price: {\n [LegalFormTypeEnum.SASU]: 179,\n [LegalFormTypeEnum.SAS]: 219,\n [LegalFormTypeEnum.EURL]: 179,\n [LegalFormTypeEnum.SARL]: 219,\n } as Record<number, number>,\n priceInformation: 'HT',\n additionalCosts: '+ frais de greffe + frais d’annonce légale',\n features: features.filter((f) => f.offers.includes(PrestationType.STATUTS_OPTION_2)),\n legalForms: [LegalFormTypeEnum.SASU, LegalFormTypeEnum.SAS, LegalFormTypeEnum.EURL, LegalFormTypeEnum.SARL],\n};\n \nexport const creaEIMicro = {\n id: PrestationType.STATUTS_OPTION_AE,\n tag: null,\n title: 'Créa EI et Micro',\n description:\n 'Créer votre entreprise individuelle ou votre micro-entreprise en quelques clics.',\n price: 60,\n priceInformation: 'HT',\n additionalCosts: '+ 39€ HT de frais de greffe',\n features: features.filter((f) => f.offers.includes(PrestationType.STATUTS_OPTION_AE)),\n legalForms: [LegalFormTypeEnum.AUTO_ENTREPRENEUR, LegalFormTypeEnum.EI],\n};\n \nexport const offers = [justCreation, creaEIMicro, justStatuts, creaSociete];\n\nexport const getStatutsAmount = (idLegalForm: LegalFormTypeEnum, idPrestationList: PrestationType): number => {\n const offer = offers.find((e) => e.id === idPrestationList);\n \n const price: number =\n typeof offer?.price === 'object'\n ? offer.price[idLegalForm]\n : offer?.price || 0;\n\n return price +\n legalNoticesCosts[idLegalForm] +\n courtCosts[idLegalForm];\n};"]}
|
|
@@ -99,7 +99,7 @@ describe('Payment', () => {
|
|
|
99
99
|
// logical
|
|
100
100
|
// =====================
|
|
101
101
|
// express
|
|
102
|
-
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)',
|
|
102
|
+
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)', () => {
|
|
103
103
|
const payments = calculatePaymentsAuto({
|
|
104
104
|
idTypeBrand: 1,
|
|
105
105
|
firstExerciceNonExpresssEndDate,
|
|
@@ -117,7 +117,7 @@ describe('Payment', () => {
|
|
|
117
117
|
const firstNonExpressDatePayment = payments.filter(p => dayjs(p.closingDate).diff(firstExerciceNonExpresssEndDate) === 0)[0].datePayment;
|
|
118
118
|
expect(dayjs(firstNonExpressDatePayment).diff(firstExpressDatePayment, 'month')).toStrictEqual(0);
|
|
119
119
|
});
|
|
120
|
-
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)',
|
|
120
|
+
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)', () => {
|
|
121
121
|
const payments = calculatePaymentsAuto({
|
|
122
122
|
idTypeBrand: 1,
|
|
123
123
|
firstExerciceNonExpresssEndDate,
|
|
@@ -136,7 +136,7 @@ describe('Payment', () => {
|
|
|
136
136
|
expect(dayjs(firstNonExpressDatePayment).diff(lastExpressDatePayment, 'month')).toStrictEqual(1);
|
|
137
137
|
});
|
|
138
138
|
// non express
|
|
139
|
-
test('should return a number of payments equal to nb of remaining months in exercice (if not in 3 last months)',
|
|
139
|
+
test('should return a number of payments equal to nb of remaining months in exercice (if not in 3 last months)', () => {
|
|
140
140
|
const mockedDate = dayjs('2024-05-15').toDate();
|
|
141
141
|
MockDate.set(mockedDate);
|
|
142
142
|
const nbMonthDelay = 6;
|
|
@@ -162,7 +162,7 @@ describe('Payment', () => {
|
|
|
162
162
|
expect(listNonExpressPayments.length).toStrictEqual(1 + nbMonthDelay); //On ajoute 1 pour les frais de dossier
|
|
163
163
|
MockDate.reset();
|
|
164
164
|
});
|
|
165
|
-
test('should return a number of payments equal to 3 (if in 3 last month of exercice)',
|
|
165
|
+
test('should return a number of payments equal to 3 (if in 3 last month of exercice)', () => {
|
|
166
166
|
const nbMonthDelay = 1;
|
|
167
167
|
const newFirstExerciceNonExpresssEndDate = dayjs().add(nbMonthDelay, 'month').endOf('month').toDate();
|
|
168
168
|
const payments = calculatePaymentsAuto({
|
|
@@ -184,7 +184,7 @@ describe('Payment', () => {
|
|
|
184
184
|
const listNonExpressPayments = payments.filter(p => dayjs(p.closingDate).diff(newFirstExerciceNonExpresssEndDate) === 0);
|
|
185
185
|
expect(listNonExpressPayments.length).toStrictEqual(1 + 3); //On ajoute 1 pour les frais de dossier
|
|
186
186
|
});
|
|
187
|
-
test('should (yearlyAmountNonExpress - sum of listRegulations) / count of monthly payments be equal to monthly payment amount (if not in 3 last month)',
|
|
187
|
+
test('should (yearlyAmountNonExpress - sum of listRegulations) / count of monthly payments be equal to monthly payment amount (if not in 3 last month)', () => {
|
|
188
188
|
const mockedDate = dayjs('2024-05-15').toDate();
|
|
189
189
|
MockDate.set(mockedDate);
|
|
190
190
|
const nbMonthDelay = 6;
|
|
@@ -211,7 +211,7 @@ describe('Payment', () => {
|
|
|
211
211
|
expect(payments[1].amount).toStrictEqual(amount);
|
|
212
212
|
MockDate.reset();
|
|
213
213
|
});
|
|
214
|
-
test('should (totalAmount - firstPaymentAmount) / 3 be equal to monthly payment amount (if in 3 last month of exercice)',
|
|
214
|
+
test('should (totalAmount - firstPaymentAmount) / 3 be equal to monthly payment amount (if in 3 last month of exercice)', () => {
|
|
215
215
|
const nbMonthDelay = 1;
|
|
216
216
|
const newFirstExerciceNonExpresssEndDate = dayjs().add(nbMonthDelay, 'month').endOf('month').toDate();
|
|
217
217
|
const newListRegulations = [{
|
|
@@ -236,7 +236,7 @@ describe('Payment', () => {
|
|
|
236
236
|
expect(payments[1].amount).toStrictEqual(amount);
|
|
237
237
|
});
|
|
238
238
|
// annual price increase
|
|
239
|
-
test('should apply annual price increase (2,75%) if signed before last 3 months of civil year',
|
|
239
|
+
test('should apply annual price increase (2,75%) if signed before last 3 months of civil year', () => {
|
|
240
240
|
const mockedDate = dayjs('2024-08-15').toDate();
|
|
241
241
|
MockDate.set(mockedDate);
|
|
242
242
|
const newFirstExerciceNonExpresssEndDate = dayjs().add(11, 'month').endOf('month').toDate();
|
|
@@ -261,7 +261,7 @@ describe('Payment', () => {
|
|
|
261
261
|
expect(firstPaymentWithTaxRateForced - listNonExpressPayments.splice(-2)[0].amount).toBeLessThanOrEqual(0.01); //Permet de gérer le pb d'arrondi
|
|
262
262
|
MockDate.reset();
|
|
263
263
|
});
|
|
264
|
-
test('should not apply annual price increase (2,75%) if signed in last 3 months of civil year',
|
|
264
|
+
test('should not apply annual price increase (2,75%) if signed in last 3 months of civil year', () => {
|
|
265
265
|
const mockedDate = dayjs('2024-11-15').toDate();
|
|
266
266
|
MockDate.set(mockedDate);
|
|
267
267
|
const newFirstExerciceNonExpresssEndDate = dayjs().add(11, 'month').endOf('month').toDate();
|
|
@@ -285,7 +285,7 @@ describe('Payment', () => {
|
|
|
285
285
|
expect(listNonExpressPayments[0].amount).toStrictEqual(listNonExpressPayments.splice(-2)[0].amount);
|
|
286
286
|
MockDate.reset();
|
|
287
287
|
});
|
|
288
|
-
test('should apply 14,9€ HT increase for the second exercice created (only offered on first exo) (no rules for 3 last months)',
|
|
288
|
+
test('should apply 14,9€ HT increase for the second exercice created (only offered on first exo) (no rules for 3 last months)', () => {
|
|
289
289
|
const mockedDate = dayjs('2024-06-15').toDate();
|
|
290
290
|
MockDate.set(mockedDate);
|
|
291
291
|
const newFirstExerciceNonExpresssEndDate = dayjs().add(12, 'month').endOf('month').toDate();
|
|
@@ -311,7 +311,7 @@ describe('Payment', () => {
|
|
|
311
311
|
MockDate.reset();
|
|
312
312
|
});
|
|
313
313
|
// misc
|
|
314
|
-
test('should payments been generated sorted by exercices start date',
|
|
314
|
+
test('should payments been generated sorted by exercices start date', () => {
|
|
315
315
|
const listPartialExercicePrestationExpressCloned = [...listPartialExercicePrestationExpress];
|
|
316
316
|
listPartialExercicePrestationExpressCloned[0] = {
|
|
317
317
|
...listPartialExercicePrestationExpress[0],
|
|
@@ -337,7 +337,7 @@ describe('Payment', () => {
|
|
|
337
337
|
expect(payments.length).toBeGreaterThanOrEqual(4);
|
|
338
338
|
expect(dayjs(payments[payments.length - 1].datePayment).diff(dayjs(payments?.[0]?.datePayment), 'month')).toBeGreaterThan(0);
|
|
339
339
|
});
|
|
340
|
-
test('if regulations are bigger than sum exercice prestation amounts, should pass some exercice payments',
|
|
340
|
+
test('if regulations are bigger than sum exercice prestation amounts, should pass some exercice payments', () => {
|
|
341
341
|
const mockedDate = dayjs('2024-03-15').toDate();
|
|
342
342
|
MockDate.set(mockedDate);
|
|
343
343
|
const payments = calculatePaymentsAuto({
|
|
@@ -373,7 +373,7 @@ describe('Payment', () => {
|
|
|
373
373
|
});
|
|
374
374
|
MockDate.reset();
|
|
375
375
|
});
|
|
376
|
-
test('should not consider actual month if signed in last 3 days of month',
|
|
376
|
+
test('should not consider actual month if signed in last 3 days of month', () => {
|
|
377
377
|
const mockedDate = dayjs('2024-03-29').toDate();
|
|
378
378
|
MockDate.set(mockedDate);
|
|
379
379
|
const payments = calculatePaymentsAuto({
|
|
@@ -393,7 +393,7 @@ describe('Payment', () => {
|
|
|
393
393
|
expect(payments?.[1]?.datePayment).toStrictEqual(dayjs().add(2, 'month').startOf('month').toDate());
|
|
394
394
|
MockDate.reset();
|
|
395
395
|
});
|
|
396
|
-
test('last payment returned should be last of a year (12/XX)',
|
|
396
|
+
test('last payment returned should be last of a year (12/XX)', () => {
|
|
397
397
|
const mockedDate = dayjs('2024-03-29').toDate();
|
|
398
398
|
MockDate.set(mockedDate);
|
|
399
399
|
const payments = calculatePaymentsAuto({
|
|
@@ -412,7 +412,7 @@ describe('Payment', () => {
|
|
|
412
412
|
expect(payments.length).toBeGreaterThanOrEqual(4);
|
|
413
413
|
expect(dayjs(payments[payments.length - 1].datePayment).month()).toStrictEqual(11);
|
|
414
414
|
});
|
|
415
|
-
test('first payment and last payment should have at least one year difference (ex. : 23 - 24)',
|
|
415
|
+
test('first payment and last payment should have at least one year difference (ex. : 23 - 24)', () => {
|
|
416
416
|
const payments = calculatePaymentsAuto({
|
|
417
417
|
idTypeBrand: 1,
|
|
418
418
|
firstExerciceNonExpresssEndDate,
|
|
@@ -428,7 +428,7 @@ describe('Payment', () => {
|
|
|
428
428
|
});
|
|
429
429
|
expect(dayjs(payments.slice(-1)?.[0]?.datePayment).diff(dayjs(payments?.[0]?.datePayment), 'year', true)).toBeGreaterThan(1);
|
|
430
430
|
});
|
|
431
|
-
test('real case : idSociety 114440',
|
|
431
|
+
test('real case : idSociety 114440', () => {
|
|
432
432
|
const payments = calculatePaymentsAuto({
|
|
433
433
|
idTypeBrand: 1,
|
|
434
434
|
firstExerciceNonExpresssEndDate: dayjs('2024-12-31').toDate(),
|