@silexpert/core 1.1.161 → 1.1.162
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/resources/CommercialOffer.d.ts +47 -0
- package/dist/cjs/api/resources/CommercialOffer.d.ts.map +1 -0
- package/dist/cjs/api/resources/CommercialOffer.js +64 -0
- package/dist/cjs/api/resources/CommercialOffer.js.map +1 -0
- package/dist/cjs/api/resources/prestation.d.ts +14 -1
- package/dist/cjs/api/resources/prestation.d.ts.map +1 -1
- package/dist/cjs/api/resources/prestation.js +17 -0
- package/dist/cjs/api/resources/prestation.js.map +1 -1
- package/dist/cjs/api/resources.d.ts +2 -0
- package/dist/cjs/api/resources.d.ts.map +1 -1
- package/dist/cjs/api/resources.js +2 -0
- package/dist/cjs/api/resources.js.map +1 -1
- package/dist/cjs/types/Enum/ClosingType.d.ts +7 -0
- package/dist/cjs/types/Enum/ClosingType.d.ts.map +1 -0
- package/dist/cjs/types/Enum/ClosingType.js +19 -0
- package/dist/cjs/types/Enum/ClosingType.js.map +1 -0
- package/dist/cjs/types/Enum/CommercialOfferType.d.ts +97 -0
- package/dist/cjs/types/Enum/CommercialOfferType.d.ts.map +1 -0
- package/dist/cjs/types/Enum/CommercialOfferType.js +71 -0
- package/dist/cjs/types/Enum/CommercialOfferType.js.map +1 -0
- package/dist/cjs/types/Enum/PrestationOption.d.ts +8 -0
- package/dist/cjs/types/Enum/PrestationOption.d.ts.map +1 -1
- package/dist/cjs/types/Enum/PrestationOption.js.map +1 -1
- package/dist/cjs/types/Enum/PrestationType.d.ts.map +1 -1
- package/dist/cjs/types/Enum/PrestationType.js +175 -0
- package/dist/cjs/types/Enum/PrestationType.js.map +1 -1
- package/dist/cjs/types/Enum/PriceGridClementine.d.ts +101 -0
- package/dist/cjs/types/Enum/PriceGridClementine.d.ts.map +1 -0
- package/dist/cjs/types/Enum/PriceGridClementine.js +338 -0
- package/dist/cjs/types/Enum/PriceGridClementine.js.map +1 -0
- package/dist/cjs/types/Enum/PriceGridLegalstart.d.ts +34 -0
- package/dist/cjs/types/Enum/PriceGridLegalstart.d.ts.map +1 -0
- package/dist/cjs/types/Enum/PriceGridLegalstart.js +103 -0
- package/dist/cjs/types/Enum/PriceGridLegalstart.js.map +1 -0
- package/dist/cjs/types/Enum/PriceGridPourcentage.d.ts +52 -0
- package/dist/cjs/types/Enum/PriceGridPourcentage.d.ts.map +1 -0
- package/dist/cjs/types/Enum/PriceGridPourcentage.js +1125 -0
- package/dist/cjs/types/Enum/PriceGridPourcentage.js.map +1 -0
- package/dist/cjs/types/Interface/api/commercial/QueryGetStats.d.ts +1 -0
- package/dist/cjs/types/Interface/api/commercial/QueryGetStats.d.ts.map +1 -1
- package/dist/cjs/types/Interface/api/commercial/QueryGetStats.js +6 -0
- package/dist/cjs/types/Interface/api/commercial/QueryGetStats.js.map +1 -1
- package/dist/cjs/types/Interface/api/commercial/QueryPaginatedSocietyWithStatsCa.d.ts +1 -0
- package/dist/cjs/types/Interface/api/commercial/QueryPaginatedSocietyWithStatsCa.d.ts.map +1 -1
- package/dist/cjs/types/Interface/api/commercial/QueryPaginatedSocietyWithStatsCa.js +6 -0
- package/dist/cjs/types/Interface/api/commercial/QueryPaginatedSocietyWithStatsCa.js.map +1 -1
- package/dist/cjs/types/Interface/api/commercialOffer/Query.d.ts +13 -0
- package/dist/cjs/types/Interface/api/commercialOffer/Query.d.ts.map +1 -0
- package/dist/cjs/types/Interface/api/commercialOffer/Query.js +69 -0
- package/dist/cjs/types/Interface/api/commercialOffer/Query.js.map +1 -0
- package/dist/cjs/types/Interface/api/prestation/Query.d.ts +19 -0
- package/dist/cjs/types/Interface/api/prestation/Query.d.ts.map +1 -0
- package/dist/cjs/types/Interface/api/prestation/Query.js +77 -0
- package/dist/cjs/types/Interface/api/prestation/Query.js.map +1 -0
- package/dist/cjs/types/Interface/api/prestations/QueryUpdate.d.ts +1 -0
- package/dist/cjs/types/Interface/api/prestations/QueryUpdate.d.ts.map +1 -1
- package/dist/cjs/types/Interface/api/prestations/QueryUpdate.js +6 -0
- package/dist/cjs/types/Interface/api/prestations/QueryUpdate.js.map +1 -1
- package/dist/cjs/types/Interface/models/ICommercialOffer.d.ts +16 -0
- package/dist/cjs/types/Interface/models/ICommercialOffer.d.ts.map +1 -0
- package/dist/cjs/types/Interface/models/ICommercialOffer.js +3 -0
- package/dist/cjs/types/Interface/models/ICommercialOffer.js.map +1 -0
- package/dist/cjs/types/Interface/models/IExercicePrestation.d.ts +2 -1
- package/dist/cjs/types/Interface/models/IExercicePrestation.d.ts.map +1 -1
- package/dist/cjs/types/Interface/models/IExercicePrestation.js.map +1 -1
- package/dist/cjs/types/Interface/models/IExercicePrestationOffer.d.ts +10 -0
- package/dist/cjs/types/Interface/models/IExercicePrestationOffer.d.ts.map +1 -0
- package/dist/cjs/types/Interface/models/IExercicePrestationOffer.js +3 -0
- package/dist/cjs/types/Interface/models/IExercicePrestationOffer.js.map +1 -0
- package/dist/cjs/types/Interface/models/IPrestationList.d.ts +1 -0
- package/dist/cjs/types/Interface/models/IPrestationList.d.ts.map +1 -1
- package/dist/cjs/types/Interface/models/IPrestationList.js.map +1 -1
- package/dist/cjs/types/index.d.ts +9 -0
- package/dist/cjs/types/index.d.ts.map +1 -1
- package/dist/cjs/types/index.js +9 -0
- package/dist/cjs/types/index.js.map +1 -1
- package/dist/cjs/utils/commercialOffer.d.ts +6 -0
- package/dist/cjs/utils/commercialOffer.d.ts.map +1 -0
- package/dist/cjs/utils/commercialOffer.js +39 -0
- package/dist/cjs/utils/commercialOffer.js.map +1 -0
- package/dist/cjs/utils/index.d.ts +1 -0
- package/dist/cjs/utils/index.d.ts.map +1 -1
- package/dist/cjs/utils/index.js +1 -0
- package/dist/cjs/utils/index.js.map +1 -1
- package/dist/cjs/utils/prestation.d.ts +9 -2
- package/dist/cjs/utils/prestation.d.ts.map +1 -1
- package/dist/cjs/utils/prestation.js +155 -1
- package/dist/cjs/utils/prestation.js.map +1 -1
- package/dist/mjs/api/resources/CommercialOffer.d.ts +47 -0
- package/dist/mjs/api/resources/CommercialOffer.d.ts.map +1 -0
- package/dist/mjs/api/resources/CommercialOffer.js +60 -0
- package/dist/mjs/api/resources/CommercialOffer.js.map +1 -0
- package/dist/mjs/api/resources/prestation.d.ts +14 -1
- package/dist/mjs/api/resources/prestation.d.ts.map +1 -1
- package/dist/mjs/api/resources/prestation.js +17 -0
- package/dist/mjs/api/resources/prestation.js.map +1 -1
- package/dist/mjs/api/resources.d.ts +2 -0
- package/dist/mjs/api/resources.d.ts.map +1 -1
- package/dist/mjs/api/resources.js +2 -0
- package/dist/mjs/api/resources.js.map +1 -1
- package/dist/mjs/types/Enum/ClosingType.d.ts +7 -0
- package/dist/mjs/types/Enum/ClosingType.d.ts.map +1 -0
- package/dist/mjs/types/Enum/ClosingType.js +16 -0
- package/dist/mjs/types/Enum/ClosingType.js.map +1 -0
- package/dist/mjs/types/Enum/CommercialOfferType.d.ts +97 -0
- package/dist/mjs/types/Enum/CommercialOfferType.d.ts.map +1 -0
- package/dist/mjs/types/Enum/CommercialOfferType.js +68 -0
- package/dist/mjs/types/Enum/CommercialOfferType.js.map +1 -0
- package/dist/mjs/types/Enum/PrestationOption.d.ts +8 -0
- package/dist/mjs/types/Enum/PrestationOption.d.ts.map +1 -1
- package/dist/mjs/types/Enum/PrestationOption.js.map +1 -1
- package/dist/mjs/types/Enum/PrestationType.d.ts.map +1 -1
- package/dist/mjs/types/Enum/PrestationType.js +175 -0
- package/dist/mjs/types/Enum/PrestationType.js.map +1 -1
- package/dist/mjs/types/Enum/PriceGridClementine.d.ts +101 -0
- package/dist/mjs/types/Enum/PriceGridClementine.d.ts.map +1 -0
- package/dist/mjs/types/Enum/PriceGridClementine.js +335 -0
- package/dist/mjs/types/Enum/PriceGridClementine.js.map +1 -0
- package/dist/mjs/types/Enum/PriceGridLegalstart.d.ts +34 -0
- package/dist/mjs/types/Enum/PriceGridLegalstart.d.ts.map +1 -0
- package/dist/mjs/types/Enum/PriceGridLegalstart.js +100 -0
- package/dist/mjs/types/Enum/PriceGridLegalstart.js.map +1 -0
- package/dist/mjs/types/Enum/PriceGridPourcentage.d.ts +52 -0
- package/dist/mjs/types/Enum/PriceGridPourcentage.d.ts.map +1 -0
- package/dist/mjs/types/Enum/PriceGridPourcentage.js +1122 -0
- package/dist/mjs/types/Enum/PriceGridPourcentage.js.map +1 -0
- package/dist/mjs/types/Interface/api/commercial/QueryGetStats.d.ts +1 -0
- package/dist/mjs/types/Interface/api/commercial/QueryGetStats.d.ts.map +1 -1
- package/dist/mjs/types/Interface/api/commercial/QueryGetStats.js +7 -0
- package/dist/mjs/types/Interface/api/commercial/QueryGetStats.js.map +1 -1
- package/dist/mjs/types/Interface/api/commercial/QueryPaginatedSocietyWithStatsCa.d.ts +1 -0
- package/dist/mjs/types/Interface/api/commercial/QueryPaginatedSocietyWithStatsCa.d.ts.map +1 -1
- package/dist/mjs/types/Interface/api/commercial/QueryPaginatedSocietyWithStatsCa.js +7 -0
- package/dist/mjs/types/Interface/api/commercial/QueryPaginatedSocietyWithStatsCa.js.map +1 -1
- package/dist/mjs/types/Interface/api/commercialOffer/Query.d.ts +13 -0
- package/dist/mjs/types/Interface/api/commercialOffer/Query.d.ts.map +1 -0
- package/dist/mjs/types/Interface/api/commercialOffer/Query.js +72 -0
- package/dist/mjs/types/Interface/api/commercialOffer/Query.js.map +1 -0
- package/dist/mjs/types/Interface/api/prestation/Query.d.ts +19 -0
- package/dist/mjs/types/Interface/api/prestation/Query.d.ts.map +1 -0
- package/dist/mjs/types/Interface/api/prestation/Query.js +82 -0
- package/dist/mjs/types/Interface/api/prestation/Query.js.map +1 -0
- package/dist/mjs/types/Interface/api/prestations/QueryUpdate.d.ts +1 -0
- package/dist/mjs/types/Interface/api/prestations/QueryUpdate.d.ts.map +1 -1
- package/dist/mjs/types/Interface/api/prestations/QueryUpdate.js +7 -0
- package/dist/mjs/types/Interface/api/prestations/QueryUpdate.js.map +1 -1
- package/dist/mjs/types/Interface/models/ICommercialOffer.d.ts +16 -0
- package/dist/mjs/types/Interface/models/ICommercialOffer.d.ts.map +1 -0
- package/dist/mjs/types/Interface/models/ICommercialOffer.js +2 -0
- package/dist/mjs/types/Interface/models/ICommercialOffer.js.map +1 -0
- package/dist/mjs/types/Interface/models/IExercicePrestation.d.ts +2 -1
- package/dist/mjs/types/Interface/models/IExercicePrestation.d.ts.map +1 -1
- package/dist/mjs/types/Interface/models/IExercicePrestation.js.map +1 -1
- package/dist/mjs/types/Interface/models/IExercicePrestationOffer.d.ts +10 -0
- package/dist/mjs/types/Interface/models/IExercicePrestationOffer.d.ts.map +1 -0
- package/dist/mjs/types/Interface/models/IExercicePrestationOffer.js +2 -0
- package/dist/mjs/types/Interface/models/IExercicePrestationOffer.js.map +1 -0
- package/dist/mjs/types/Interface/models/IPrestationList.d.ts +1 -0
- package/dist/mjs/types/Interface/models/IPrestationList.d.ts.map +1 -1
- package/dist/mjs/types/Interface/models/IPrestationList.js.map +1 -1
- package/dist/mjs/types/index.d.ts +9 -0
- package/dist/mjs/types/index.d.ts.map +1 -1
- package/dist/mjs/types/index.js +9 -0
- package/dist/mjs/types/index.js.map +1 -1
- package/dist/mjs/utils/commercialOffer.d.ts +6 -0
- package/dist/mjs/utils/commercialOffer.d.ts.map +1 -0
- package/dist/mjs/utils/commercialOffer.js +33 -0
- package/dist/mjs/utils/commercialOffer.js.map +1 -0
- package/dist/mjs/utils/index.d.ts +1 -0
- package/dist/mjs/utils/index.d.ts.map +1 -1
- package/dist/mjs/utils/index.js +1 -0
- package/dist/mjs/utils/index.js.map +1 -1
- package/dist/mjs/utils/prestation.d.ts +9 -2
- package/dist/mjs/utils/prestation.d.ts.map +1 -1
- package/dist/mjs/utils/prestation.js +150 -1
- package/dist/mjs/utils/prestation.js.map +1 -1
- package/package.json +1 -1
- package/ts/api/resources/CommercialOffer.ts +67 -0
- package/ts/api/resources/prestation.ts +21 -1
- package/ts/api/resources.ts +2 -0
- package/ts/types/Enum/ClosingType.ts +17 -0
- package/ts/types/Enum/CommercialOfferType.ts +84 -0
- package/ts/types/Enum/PrestationOption.ts +9 -0
- package/ts/types/Enum/PrestationType.ts +175 -0
- package/ts/types/Enum/PriceGridClementine.ts +335 -0
- package/ts/types/Enum/PriceGridLegalstart.ts +100 -0
- package/ts/types/Enum/PriceGridPourcentage.ts +1122 -0
- package/ts/types/Interface/api/commercial/QueryGetStats.ts +5 -0
- package/ts/types/Interface/api/commercial/QueryPaginatedSocietyWithStatsCa.ts +5 -0
- package/ts/types/Interface/api/commercialOffer/Query.ts +46 -0
- package/ts/types/Interface/api/prestation/Query.ts +56 -0
- package/ts/types/Interface/api/prestations/QueryUpdate.ts +5 -0
- package/ts/types/Interface/models/ICommercialOffer.ts +18 -0
- package/ts/types/Interface/models/IExercicePrestation.ts +2 -1
- package/ts/types/Interface/models/IExercicePrestationOffer.ts +13 -0
- package/ts/types/Interface/models/IPrestationList.ts +1 -0
- package/ts/types/index.ts +9 -0
- package/ts/utils/commercialOffer.ts +37 -0
- package/ts/utils/index.ts +1 -0
- package/ts/utils/prestation.ts +193 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prestation.d.ts","sourceRoot":"","sources":["../../../ts/utils/prestation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"prestation.d.ts","sourceRoot":"","sources":["../../../ts/utils/prestation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AACxD,OAAO,EAAoB,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAChF,OAAO,EAAE,oBAAoB,EAAoB,MAAM,gCAAgC,CAAC;AAsDxF,QAAA,MAAM,yBAAyB,qBAAsB,MAAM,KAAG,OAOC,CAAC;AAEhE,QAAA,MAAM,wBAAwB,gBAAgB,OAAO,aAAY,OAAO,oBAAoB,MAAM,KAAG,OAA4F,CAAC;AAElM,QAAA,MAAM,oBAAoB,qBAAsB,MAAM,KAAG,OAA8E,CAAC;AAExI,QAAA,MAAM,kBAAkB,WAAW,OAAO,aAAY,OAAO,KAAG,OAA+B,CAAC;AAEhG,QAAA,MAAM,WAAW,qBAAsB,MAAM,EAAE,KAAE,OAAmK,CAAC;AAErN,QAAA,MAAM,YAAY,qBAAsB,MAAM,EAAE,KAAE,OAA+H,CAAC;AAElL,QAAA,MAAM,aAAa,qBAAsB,MAAM,EAAE,KAAE,OAA+G,CAAC;AAEnK,QAAA,MAAM,UAAU,qBAAsB,MAAM,EAAE,KAAE,OAAqE,CAAC;AAEtH,QAAA,MAAM,SAAS,qBAAsB,MAAM,KAAE,OAI5C,CAAC;AAEF,QAAA,MAAM,4BAA4B,qBAAsB,cAAc,eAAe,WAAW,EAAE,KAAG,MAmBpG,CAAC;AAqEF,QAAA,MAAM,wBAAwB,qBAAsB,MAAM,kBAAkB,eAAe,WAAW,MAAM,YAAY,MAAM,YAAY,MAAM,eAAe,MAAM,mBAAmB,MAAM,oBAAoB,MAAM,eAAe,MAAM,eAAe,MAAM,oBAAoB,OAAO,eAAe,MAAM,EAAE,mBAAmB,MAAM,eAAe,MAAM,cAAc,MAAM,aAAY,OAAO;qBAA8B,MAAM;iBAAe,MAAM;CA8Cjc,CAAC;AAEF,QAAA,MAAM,oBAAoB,qBAAsB,MAAM,KAAG,oBAAoB,EAG5E,CAAC;AAEF,QAAA,MAAM,mBAAmB,gBAAiB,MAAM,oBAAoB,MAAM,YAAY,MAAM,oBAAoB,OAAO,KAAG,OAgBzH,CAAC;AAEF,OAAO,EACL,yBAAyB,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,4BAA4B,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,mBAAmB,GAClQ,CAAC"}
|
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
import { PrestationDetail, PrestationType } from '../types/Enum/PrestationType';
|
|
2
|
+
import { PrestationOption } from '../types/Enum/PrestationOption';
|
|
3
|
+
import { PriceGridClementine } from '../types/Enum/PriceGridClementine';
|
|
4
|
+
import { PriceGridPourcentage } from '../types/Enum/PriceGridPourcentage';
|
|
5
|
+
import { PriceGridLegalstart } from '../types/Enum/PriceGridLegalstart';
|
|
6
|
+
import { ClosingType } from '../types/Enum/ClosingType';
|
|
7
|
+
import { getBrandNameByNodeEnv } from './brands';
|
|
8
|
+
import * as dayjs from 'dayjs';
|
|
2
9
|
const isOtherAccountingMissions = (idPrestationList) => [
|
|
3
10
|
PrestationType.PREVISIONNEL,
|
|
4
11
|
PrestationType.BILAN_INTERMEDIAIRE,
|
|
@@ -36,5 +43,147 @@ const calculateScoringOfPrestation = (idPrestationType, prestations) => {
|
|
|
36
43
|
return Math.floor(numberPoint * 0.3);
|
|
37
44
|
return numberPoint;
|
|
38
45
|
};
|
|
39
|
-
|
|
46
|
+
const getPriceGrid = (idTypeBrand, idPrestationList) => {
|
|
47
|
+
let currentBrandPriceGrid;
|
|
48
|
+
let currentPriceGrid;
|
|
49
|
+
const currentEnvName = getBrandNameByNodeEnv(process.env.NODE_ENV);
|
|
50
|
+
const listEnvEnum = {
|
|
51
|
+
PriceGridClementine, PriceGridPourcentage, PriceGridLegalstart,
|
|
52
|
+
};
|
|
53
|
+
// @ts-ignore
|
|
54
|
+
const currentPriceGridFile = listEnvEnum[`PriceGrid${currentEnvName}`];
|
|
55
|
+
if (currentPriceGridFile)
|
|
56
|
+
currentBrandPriceGrid = currentPriceGridFile.find((priceGrid) => priceGrid.idTypeBrand === idTypeBrand);
|
|
57
|
+
if (currentBrandPriceGrid)
|
|
58
|
+
currentPriceGrid = currentBrandPriceGrid?.price.find((price) => price.idPrestationList.includes(idPrestationList));
|
|
59
|
+
return currentPriceGrid;
|
|
60
|
+
};
|
|
61
|
+
const calculatePrestationPriceWithPriceGrid = (idPrestationList, endDate, NbrMonth, turnover, rentsNumber, employeesNumber, associatesNumber, idTypeBrand, idVatRegime, pastBalanceSheet, isYearly, totalMonth) => {
|
|
62
|
+
let totalPrestation = 0;
|
|
63
|
+
let reduceMonth = 0;
|
|
64
|
+
/* Récupération de la grille tarifaire */
|
|
65
|
+
const currentPriceGrid = getPriceGrid(idTypeBrand, idPrestationList);
|
|
66
|
+
if (currentPriceGrid) {
|
|
67
|
+
let monthlyPrice;
|
|
68
|
+
let yearlyPrice;
|
|
69
|
+
let vatRegimePrice;
|
|
70
|
+
/* Gestion du régime de TVA */
|
|
71
|
+
if (currentPriceGrid.vatRegimeMonthly && !isYearly)
|
|
72
|
+
vatRegimePrice = currentPriceGrid.vatRegimeMonthly?.find(regime => regime.type === idVatRegime)?.price;
|
|
73
|
+
else if (currentPriceGrid.vatRegimeYearly && isYearly)
|
|
74
|
+
vatRegimePrice = currentPriceGrid.vatRegimeYearly?.find(regime => regime.type === idVatRegime)?.price;
|
|
75
|
+
/* Gestion des montants */
|
|
76
|
+
if (currentPriceGrid.turnoverMonthly && !isYearly)
|
|
77
|
+
monthlyPrice = currentPriceGrid.turnoverMonthly?.find(turn => turnover < turn.turnoverValue)?.price;
|
|
78
|
+
else if (currentPriceGrid.properties)
|
|
79
|
+
monthlyPrice = currentPriceGrid.properties?.find(property => property.amount === rentsNumber)?.price;
|
|
80
|
+
else if (currentPriceGrid.employee)
|
|
81
|
+
monthlyPrice = currentPriceGrid.employee?.find(emp => emp.amountMinimum <= employeesNumber && emp.amountMaximum >= employeesNumber)?.price;
|
|
82
|
+
else if (currentPriceGrid.turnoverYearly && isYearly)
|
|
83
|
+
yearlyPrice = currentPriceGrid.turnoverYearly?.find(turn => turnover < turn.turnoverValue)?.price;
|
|
84
|
+
else if (!pastBalanceSheet && currentPriceGrid.turnoverCreatedYear)
|
|
85
|
+
yearlyPrice = currentPriceGrid.turnoverCreatedYear?.find(turn => turnover < turn.turnoverValue)?.price;
|
|
86
|
+
else if (pastBalanceSheet && currentPriceGrid.turnoverPastYear)
|
|
87
|
+
yearlyPrice = currentPriceGrid.turnoverPastYear?.find(turn => turnover < turn.turnoverValue)?.price;
|
|
88
|
+
else if (currentPriceGrid.partner)
|
|
89
|
+
yearlyPrice = currentPriceGrid.partner?.find(part => part.amountMinimum <= associatesNumber && part.amountMaximum >= associatesNumber)?.price;
|
|
90
|
+
const finalMonthlyPrice = (monthlyPrice ? monthlyPrice : 0) + (vatRegimePrice ? vatRegimePrice : 0);
|
|
91
|
+
/* Gestion des mois */
|
|
92
|
+
let cloturedPast = false;
|
|
93
|
+
if (dayjs(endDate, 'YYYY-MM-DD').subtract(15, 'day').isBefore(dayjs()))
|
|
94
|
+
cloturedPast = true;
|
|
95
|
+
const minimumMonth = currentPriceGrid.minimumMonthlyPayment?.find(monthlyPayment => monthlyPayment.id === (cloturedPast ? ClosingType.OUTDATED : ClosingType.IN_PROGRESS))?.month;
|
|
96
|
+
const maximumMonth = currentPriceGrid.maximumMonthlyPayment?.find(monthlyPayment => monthlyPayment.id === (cloturedPast ? ClosingType.OUTDATED : ClosingType.IN_PROGRESS))?.month;
|
|
97
|
+
let monthNbr = NbrMonth;
|
|
98
|
+
if (totalMonth > 0)
|
|
99
|
+
monthNbr = monthNbr - totalMonth;
|
|
100
|
+
if (minimumMonth && monthNbr < minimumMonth)
|
|
101
|
+
monthNbr = minimumMonth;
|
|
102
|
+
if (maximumMonth && monthNbr > maximumMonth)
|
|
103
|
+
monthNbr = maximumMonth;
|
|
104
|
+
reduceMonth = (monthNbr === NbrMonth - totalMonth ? totalMonth : 0);
|
|
105
|
+
/* Prix Final */
|
|
106
|
+
totalPrestation = (yearlyPrice ? yearlyPrice : finalMonthlyPrice * monthNbr);
|
|
107
|
+
}
|
|
108
|
+
return { totalPrestation, reduceMonth };
|
|
109
|
+
};
|
|
110
|
+
const calculatePrestationPriceWithPrestationList = (prestationList) => {
|
|
111
|
+
let totalPrestation = 0;
|
|
112
|
+
totalPrestation = prestationList.price || 0;
|
|
113
|
+
return totalPrestation;
|
|
114
|
+
};
|
|
115
|
+
const calculatePrestationPrice = (idPrestationList, prestationList, endDate, NbrMonth, turnover, rentsNumber, employeesNumber, associatesNumber, idTypeBrand, idVatRegime, pastBalanceSheet, optionsList, totalPercentage, totalAmount, totalMonth, isYearly = false) => {
|
|
116
|
+
let totalPrestation = 0;
|
|
117
|
+
let reduceMonth = 0;
|
|
118
|
+
let totalWithReduce = { totalPrestation: 0, reduceMonth: 0 };
|
|
119
|
+
/* Gestion du prix en fonction de la prestation */
|
|
120
|
+
if ([
|
|
121
|
+
PrestationType.COMPTA_PRO,
|
|
122
|
+
PrestationType.COMPTA_PRO_EXPRESS,
|
|
123
|
+
PrestationType.COMPTA_ENTREPRISE,
|
|
124
|
+
PrestationType.COMPTA_ENTREPRISE_EXPRESS,
|
|
125
|
+
PrestationType.COMPTA_SCI,
|
|
126
|
+
PrestationType.COMPTA_SCI_EXPRESS,
|
|
127
|
+
PrestationType.BILAN_PREVISIONNEL,
|
|
128
|
+
PrestationType.COMPTA_PREMIUM,
|
|
129
|
+
PrestationType.COMPTA_POURCENTAGE_PREMIUM,
|
|
130
|
+
PrestationType.COMPTA_POURCENTAGE_PREMIUM_EXPRESS,
|
|
131
|
+
PrestationType.COMPTA_POURCENTAGE,
|
|
132
|
+
PrestationType.COMPTA_POURCENTAGE_EXPRESS,
|
|
133
|
+
PrestationType.SOCIAL,
|
|
134
|
+
PrestationType.GESTION_JURIDIQUE,
|
|
135
|
+
PrestationType.COMPTA_PRO_COMPTASTART,
|
|
136
|
+
PrestationType.COMPTA_PRO_COMPTASTART_EXPRESS,
|
|
137
|
+
].includes(idPrestationList)) {
|
|
138
|
+
totalWithReduce = calculatePrestationPriceWithPriceGrid(idPrestationList, endDate, NbrMonth, turnover, rentsNumber, employeesNumber, associatesNumber, idTypeBrand, idVatRegime, pastBalanceSheet, isYearly, totalMonth);
|
|
139
|
+
totalPrestation = totalWithReduce.totalPrestation;
|
|
140
|
+
reduceMonth = totalWithReduce.reduceMonth;
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
totalPrestation = calculatePrestationPriceWithPrestationList(prestationList);
|
|
144
|
+
}
|
|
145
|
+
if (totalPercentage > 0)
|
|
146
|
+
totalPrestation = totalPrestation - (totalPrestation * (totalPercentage / 100));
|
|
147
|
+
if (totalAmount > 0)
|
|
148
|
+
totalPrestation = totalPrestation - totalAmount;
|
|
149
|
+
if (prestationList.minimumPrice && totalPrestation < prestationList.minimumPrice)
|
|
150
|
+
totalPrestation = prestationList.minimumPrice;
|
|
151
|
+
/* Gestion des options */
|
|
152
|
+
let OptionTotalPrice = 0;
|
|
153
|
+
if (optionsList.length) {
|
|
154
|
+
optionsList.forEach((optionId) => {
|
|
155
|
+
const optionPrice = Object.values(PrestationOption).find((option) => option.id === optionId)?.price;
|
|
156
|
+
if (optionPrice)
|
|
157
|
+
OptionTotalPrice += optionPrice;
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
totalPrestation += (OptionTotalPrice ? OptionTotalPrice : 0);
|
|
161
|
+
return { totalPrestation, reduceMonth };
|
|
162
|
+
};
|
|
163
|
+
const getPrestationOptions = (idPrestationList) => {
|
|
164
|
+
const PrestationOptionList = Object.values(PrestationOption).filter(option => option.brand.includes(getBrandNameByNodeEnv(process.env.NODE_ENV)));
|
|
165
|
+
return PrestationOptionList.filter(option => option.prestationList.includes(idPrestationList));
|
|
166
|
+
};
|
|
167
|
+
const isAbleToUpdatePrice = (idTypeBrand, idPrestationList, turnover, pastBalanceSheet) => {
|
|
168
|
+
/* Récupération de la grille tarifaire */
|
|
169
|
+
const currentPriceGrid = getPriceGrid(idTypeBrand, idPrestationList);
|
|
170
|
+
if (currentPriceGrid) {
|
|
171
|
+
// @ts-ignore
|
|
172
|
+
if ([PrestationType.COMPTA_PREMIUM, PrestationType.COMPTA_POURCENTAGE_PREMIUM, PrestationType.COMPTA_POURCENTAGE_PREMIUM_EXPRESS].includes(idPrestationList) && currentPriceGrid.turnoverMonthly[currentPriceGrid.turnoverMonthly.length - 2].turnoverValue < turnover)
|
|
173
|
+
return true;
|
|
174
|
+
// @ts-ignore
|
|
175
|
+
else if ([PrestationType.COMPTA_POURCENTAGE, PrestationType.COMPTA_POURCENTAGE_EXPRESS].includes(idPrestationList) && currentPriceGrid.turnoverMonthly[currentPriceGrid.turnoverMonthly.length - 1].turnoverValue < turnover)
|
|
176
|
+
return true;
|
|
177
|
+
// @ts-ignore
|
|
178
|
+
else if ([PrestationType.BILAN_PREVISIONNEL].includes(idPrestationList) && !pastBalanceSheet && currentPriceGrid.turnoverCreatedYear[currentPriceGrid.turnoverCreatedYear.length - 1].turnoverValue < turnover)
|
|
179
|
+
return true;
|
|
180
|
+
// @ts-ignore
|
|
181
|
+
else if ([PrestationType.BILAN_PREVISIONNEL].includes(idPrestationList) && pastBalanceSheet && currentPriceGrid.turnoverPastYear[currentPriceGrid.turnoverPastYear.length - 1].turnoverValue < turnover)
|
|
182
|
+
return true;
|
|
183
|
+
else
|
|
184
|
+
return false;
|
|
185
|
+
}
|
|
186
|
+
return false;
|
|
187
|
+
};
|
|
188
|
+
export { isOtherAccountingMissions, isOtherJuridicalMissions, isAdditionalPresta, isOtherSocialMission, isOnlyPrevi, isOnlySocial, isOnlyJuridic, isCreation, isExpress, calculateScoringOfPrestation, calculatePrestationPrice, getPrestationOptions, isAbleToUpdatePrice, };
|
|
40
189
|
//# sourceMappingURL=prestation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prestation.js","sourceRoot":"","sources":["../../../ts/utils/prestation.ts"],"names":[],"mappings":"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","sourcesContent":["import { IPrestation } from '../types';\nimport { PrestationDetail, PrestationType } from '../types/Enum/PrestationType';\n\nconst isOtherAccountingMissions = (idPrestationList: number): boolean => [\n PrestationType.PREVISIONNEL,\n PrestationType.BILAN_INTERMEDIAIRE,\n PrestationType.AVANCE_OU_ABANDON_COMPTE_COURANT_ASSOCIE,\n PrestationType.AUTRE_MISSION_COMPTABLE,\n PrestationType.TVS,\n PrestationType.ETUDE_FISCALE,\n PrestationType.BILAN_PREVISIONNEL].includes(idPrestationList);\n\nconst isOtherJuridicalMissions = (isJuridique:boolean, isCatalog:boolean, idPrestationList: number): boolean => idPrestationList !== PrestationType.GESTION_JURIDIQUE && isCatalog && isJuridique;\n\nconst isOtherSocialMission = (idPrestationList: number): boolean => idPrestationList === PrestationType.AUTRE_MISSION_SOCIALE_HORS_PAIE;\n\nconst isAdditionalPresta = (hidden:boolean, isCatalog:boolean): boolean => !hidden && isCatalog;\n\nconst isOnlyPrevi = (idPrestationList: number[]):boolean => !idPrestationList.filter((idPL:number) => ![PrestationType.PREVISIONNEL, PrestationType.BILAN_PREVISIONNEL, PrestationType.PV_AG].includes(idPL)).length;\n\nconst isOnlySocial = (idPrestationList: number[]):boolean => !idPrestationList.filter((idPL:number) => ![PrestationType.FRUCTUPAIE, PrestationType.SOCIAL].includes(idPL)).length;\n\nconst isOnlyJuridic = (idPrestationList: number[]):boolean => !idPrestationList.filter((idPL:number) => ![PrestationType.GESTION_JURIDIQUE].includes(idPL)).length;\n\nconst isCreation = (idPrestationList: number[]):boolean => idPrestationList.includes(PrestationType.CREATION_SOCIETE);\n\nconst isExpress = (idPrestationList: number):boolean => {\n const prestationDetailValues = Object.values(PrestationDetail) as any;\n const prestaList = prestationDetailValues.find((pr:any) => pr.id === idPrestationList);\n return !!prestaList.isBack;\n};\n\nconst calculateScoringOfPrestation = (idPrestationType: PrestationType, prestations: IPrestation[]): number => {\n const prestationsSignedPaid = prestations.filter((prestation) => prestation.paid && prestation.signed && prestation.terminationList === null);\n\n // Get the list of prestations that are half price\n const prestationHalfPriceList = Object.values(PrestationDetail).filter((p) => p.isComptable && !p.isCatalog);\n const prestationHalfPriceIds = prestationHalfPriceList.map((t) => t.id);\n\n // Get the number of points for the new prestation\n const prestaDetails = Object.values(PrestationDetail).find((prestaDetail) => prestaDetail.id === idPrestationType);\n const numberPoint = prestaDetails?.point || 0;\n\n // Get list of prestations that are already done and check if one of them is in the list of prestations that are half price\n const prestationsExistIds = prestationsSignedPaid.map((prestation) => prestation.idPrestationList);\n const prestationHalfPriceAlreadyDoneIds = prestationsExistIds.filter((id) => prestationHalfPriceIds.includes(id));\n\n // If one of the prestations already done is in the list of prestations that are half price and if the idPrestationType is in prestationHalfPriceIds, return 50% of points\n if (prestationHalfPriceAlreadyDoneIds.length && prestationHalfPriceIds.includes(idPrestationType)) return Math.floor(numberPoint * 0.3);\n\n return numberPoint;\n};\n\nexport {\n isOtherAccountingMissions, isOtherJuridicalMissions, isAdditionalPresta, isOtherSocialMission, isOnlyPrevi, isOnlySocial, isOnlyJuridic, isCreation, isExpress, calculateScoringOfPrestation,\n};"]}
|
|
1
|
+
{"version":3,"file":"prestation.js","sourceRoot":"","sources":["../../../ts/utils/prestation.ts"],"names":[],"mappings":"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","sourcesContent":["import { IPrestation, IPrestationList } from '../types';\nimport { PrestationDetail, PrestationType } from '../types/Enum/PrestationType';\nimport { PrestationOptionType, PrestationOption } from '../types/Enum/PrestationOption';\nimport { PriceGridClementine } from '../types/Enum/PriceGridClementine';\nimport { PriceGridPourcentage } from '../types/Enum/PriceGridPourcentage';\nimport { PriceGridLegalstart } from '../types/Enum/PriceGridLegalstart';\nimport { ClosingType } from '../types/Enum/ClosingType';\nimport { getBrandNameByNodeEnv } from './brands';\nimport * as dayjs from 'dayjs';\n\ntype priceGridBrand = {\n idTypeBrand: number,\n price: priceGrid[]\n};\n\ntype priceGrid = {\n idPrestationList: number[],\n minimumMonthlyPayment?: monthlyPayment[],\n maximumMonthlyPayment?: monthlyPayment[],\n turnoverCreatedYear?: turnover[],\n turnoverPastYear?: turnover[],\n turnoverMonthly?: turnover[],\n turnoverYearly?: turnover[],\n employee?: employee[],\n partner?: employee[],\n properties?: propertie[],\n vatRegimeMonthly?: vatRegime[],\n vatRegimeYearly?: vatRegime[],\n};\n\ntype monthlyPayment = {\n id: number,\n month: number,\n};\n\ntype turnover = {\n turnoverValue: number,\n price: number,\n};\n\ntype employee = {\n amountMinimum: number,\n amountMaximum: number,\n price: number,\n};\n\ntype propertie = {\n amount: number,\n price: number,\n};\n\ntype vatRegime = {\n type: number,\n price: number,\n};\n\nconst isOtherAccountingMissions = (idPrestationList: number): boolean => [\n PrestationType.PREVISIONNEL,\n PrestationType.BILAN_INTERMEDIAIRE,\n PrestationType.AVANCE_OU_ABANDON_COMPTE_COURANT_ASSOCIE,\n PrestationType.AUTRE_MISSION_COMPTABLE,\n PrestationType.TVS,\n PrestationType.ETUDE_FISCALE,\n PrestationType.BILAN_PREVISIONNEL].includes(idPrestationList);\n\nconst isOtherJuridicalMissions = (isJuridique:boolean, isCatalog:boolean, idPrestationList: number): boolean => idPrestationList !== PrestationType.GESTION_JURIDIQUE && isCatalog && isJuridique;\n\nconst isOtherSocialMission = (idPrestationList: number): boolean => idPrestationList === PrestationType.AUTRE_MISSION_SOCIALE_HORS_PAIE;\n\nconst isAdditionalPresta = (hidden:boolean, isCatalog:boolean): boolean => !hidden && isCatalog;\n\nconst isOnlyPrevi = (idPrestationList: number[]):boolean => !idPrestationList.filter((idPL:number) => ![PrestationType.PREVISIONNEL, PrestationType.BILAN_PREVISIONNEL, PrestationType.PV_AG].includes(idPL)).length;\n\nconst isOnlySocial = (idPrestationList: number[]):boolean => !idPrestationList.filter((idPL:number) => ![PrestationType.FRUCTUPAIE, PrestationType.SOCIAL].includes(idPL)).length;\n\nconst isOnlyJuridic = (idPrestationList: number[]):boolean => !idPrestationList.filter((idPL:number) => ![PrestationType.GESTION_JURIDIQUE].includes(idPL)).length;\n\nconst isCreation = (idPrestationList: number[]):boolean => idPrestationList.includes(PrestationType.CREATION_SOCIETE);\n\nconst isExpress = (idPrestationList: number):boolean => {\n const prestationDetailValues = Object.values(PrestationDetail) as any;\n const prestaList = prestationDetailValues.find((pr:any) => pr.id === idPrestationList);\n return !!prestaList.isBack;\n};\n\nconst calculateScoringOfPrestation = (idPrestationType: PrestationType, prestations: IPrestation[]): number => {\n const prestationsSignedPaid = prestations.filter((prestation) => prestation.paid && prestation.signed && prestation.terminationList === null);\n\n // Get the list of prestations that are half price\n const prestationHalfPriceList = Object.values(PrestationDetail).filter((p) => p.isComptable && !p.isCatalog);\n const prestationHalfPriceIds = prestationHalfPriceList.map((t) => t.id);\n\n // Get the number of points for the new prestation\n const prestaDetails = Object.values(PrestationDetail).find((prestaDetail) => prestaDetail.id === idPrestationType);\n const numberPoint = prestaDetails?.point || 0;\n\n // Get list of prestations that are already done and check if one of them is in the list of prestations that are half price\n const prestationsExistIds = prestationsSignedPaid.map((prestation) => prestation.idPrestationList);\n const prestationHalfPriceAlreadyDoneIds = prestationsExistIds.filter((id) => prestationHalfPriceIds.includes(id));\n\n // If one of the prestations already done is in the list of prestations that are half price and if the idPrestationType is in prestationHalfPriceIds, return 50% of points\n if (prestationHalfPriceAlreadyDoneIds.length && prestationHalfPriceIds.includes(idPrestationType)) return Math.floor(numberPoint * 0.3);\n\n return numberPoint;\n};\n\nconst getPriceGrid = (idTypeBrand: number, idPrestationList: number): priceGrid | undefined => {\n let currentBrandPriceGrid: priceGridBrand | undefined;\n let currentPriceGrid: priceGrid | undefined;\n\n const currentEnvName = getBrandNameByNodeEnv(process.env.NODE_ENV);\n const listEnvEnum = {\n PriceGridClementine, PriceGridPourcentage, PriceGridLegalstart,\n };\n // @ts-ignore\n const currentPriceGridFile: priceGridBrand[] = listEnvEnum[`PriceGrid${currentEnvName}`];\n if (currentPriceGridFile) currentBrandPriceGrid = currentPriceGridFile.find((priceGrid: priceGridBrand) => priceGrid.idTypeBrand === idTypeBrand);\n if (currentBrandPriceGrid) currentPriceGrid = currentBrandPriceGrid?.price.find((price: priceGrid) => price.idPrestationList.includes(idPrestationList));\n return currentPriceGrid;\n};\n\nconst calculatePrestationPriceWithPriceGrid = (idPrestationList: number, endDate: string, NbrMonth: number, turnover: number, rentsNumber: number, employeesNumber: number, associatesNumber: number, idTypeBrand: number, idVatRegime: number, pastBalanceSheet: boolean, isYearly: boolean, totalMonth: number): { totalPrestation: number, reduceMonth: number } => {\n let totalPrestation: number = 0;\n let reduceMonth: number = 0;\n\n /* Récupération de la grille tarifaire */\n const currentPriceGrid: priceGrid | undefined = getPriceGrid(idTypeBrand, idPrestationList);\n \n if (currentPriceGrid) {\n let monthlyPrice: number | undefined;\n let yearlyPrice: number | undefined;\n let vatRegimePrice: number | undefined;\n\n /* Gestion du régime de TVA */\n if (currentPriceGrid.vatRegimeMonthly && !isYearly) vatRegimePrice = currentPriceGrid.vatRegimeMonthly?.find(regime => regime.type === idVatRegime)?.price;\n else if (currentPriceGrid.vatRegimeYearly && isYearly) vatRegimePrice = currentPriceGrid.vatRegimeYearly?.find(regime => regime.type === idVatRegime)?.price;\n\n /* Gestion des montants */\n if (currentPriceGrid.turnoverMonthly && !isYearly) monthlyPrice = currentPriceGrid.turnoverMonthly?.find(turn => turnover < turn.turnoverValue)?.price;\n else if (currentPriceGrid.properties) monthlyPrice = currentPriceGrid.properties?.find(property => property.amount === rentsNumber)?.price;\n else if (currentPriceGrid.employee) monthlyPrice = currentPriceGrid.employee?.find(emp => emp.amountMinimum <= employeesNumber && emp.amountMaximum >= employeesNumber)?.price;\n else if (currentPriceGrid.turnoverYearly && isYearly) yearlyPrice = currentPriceGrid.turnoverYearly?.find(turn => turnover < turn.turnoverValue)?.price;\n else if (!pastBalanceSheet && currentPriceGrid.turnoverCreatedYear) yearlyPrice = currentPriceGrid.turnoverCreatedYear?.find(turn => turnover < turn.turnoverValue)?.price;\n else if (pastBalanceSheet && currentPriceGrid.turnoverPastYear) yearlyPrice = currentPriceGrid.turnoverPastYear?.find(turn => turnover < turn.turnoverValue)?.price;\n else if (currentPriceGrid.partner) yearlyPrice = currentPriceGrid.partner?.find(part => part.amountMinimum <= associatesNumber && part.amountMaximum >= associatesNumber)?.price;\n const finalMonthlyPrice: number | undefined = (monthlyPrice ? monthlyPrice : 0) + (vatRegimePrice ? vatRegimePrice : 0);\n\n /* Gestion des mois */\n let cloturedPast: boolean = false;\n if (dayjs(endDate, 'YYYY-MM-DD').subtract(15, 'day').isBefore(dayjs())) cloturedPast = true;\n const minimumMonth: number | undefined = currentPriceGrid.minimumMonthlyPayment?.find(monthlyPayment => monthlyPayment.id === (cloturedPast ? ClosingType.OUTDATED : ClosingType.IN_PROGRESS))?.month;\n const maximumMonth: number | undefined = currentPriceGrid.maximumMonthlyPayment?.find(monthlyPayment => monthlyPayment.id === (cloturedPast ? ClosingType.OUTDATED : ClosingType.IN_PROGRESS))?.month;\n let monthNbr: number = NbrMonth;\n if (totalMonth > 0) monthNbr = monthNbr - totalMonth;\n if (minimumMonth && monthNbr < minimumMonth) monthNbr = minimumMonth;\n if (maximumMonth && monthNbr > maximumMonth) monthNbr = maximumMonth;\n\n reduceMonth = (monthNbr === NbrMonth - totalMonth ? totalMonth : 0);\n \n /* Prix Final */\n totalPrestation = (yearlyPrice ? yearlyPrice : finalMonthlyPrice * monthNbr);\n }\n return { totalPrestation, reduceMonth };\n};\n\nconst calculatePrestationPriceWithPrestationList = (prestationList: IPrestationList): number => {\n let totalPrestation: number = 0;\n\n totalPrestation = prestationList.price || 0;\n\n return totalPrestation;\n};\n\nconst calculatePrestationPrice = (idPrestationList: number, prestationList: IPrestationList, endDate: string, NbrMonth: number, turnover: number, rentsNumber: number, employeesNumber: number, associatesNumber: number, idTypeBrand: number, idVatRegime: number, pastBalanceSheet: boolean, optionsList: number[], totalPercentage: number, totalAmount: number, totalMonth: number, isYearly: boolean = false): { totalPrestation: number, reduceMonth: number } => {\n let totalPrestation: number = 0;\n let reduceMonth: number = 0;\n let totalWithReduce: { totalPrestation: number, reduceMonth: number } = { totalPrestation: 0, reduceMonth: 0 };\n\n /* Gestion du prix en fonction de la prestation */\n if (\n [\n PrestationType.COMPTA_PRO,\n PrestationType.COMPTA_PRO_EXPRESS,\n PrestationType.COMPTA_ENTREPRISE,\n PrestationType.COMPTA_ENTREPRISE_EXPRESS,\n PrestationType.COMPTA_SCI,\n PrestationType.COMPTA_SCI_EXPRESS,\n PrestationType.BILAN_PREVISIONNEL,\n PrestationType.COMPTA_PREMIUM,\n PrestationType.COMPTA_POURCENTAGE_PREMIUM,\n PrestationType.COMPTA_POURCENTAGE_PREMIUM_EXPRESS,\n PrestationType.COMPTA_POURCENTAGE,\n PrestationType.COMPTA_POURCENTAGE_EXPRESS,\n PrestationType.SOCIAL,\n PrestationType.GESTION_JURIDIQUE,\n PrestationType.COMPTA_PRO_COMPTASTART,\n PrestationType.COMPTA_PRO_COMPTASTART_EXPRESS,\n ].includes(idPrestationList)\n ) {\n totalWithReduce = calculatePrestationPriceWithPriceGrid(idPrestationList, endDate, NbrMonth, turnover, rentsNumber, employeesNumber, associatesNumber, idTypeBrand, idVatRegime, pastBalanceSheet, isYearly, totalMonth);\n totalPrestation = totalWithReduce.totalPrestation;\n reduceMonth = totalWithReduce.reduceMonth;\n } else {\n totalPrestation = calculatePrestationPriceWithPrestationList(prestationList);\n }\n if (totalPercentage > 0) totalPrestation = totalPrestation - (totalPrestation * (totalPercentage / 100));\n if (totalAmount > 0) totalPrestation = totalPrestation - totalAmount;\n if (prestationList.minimumPrice && totalPrestation < prestationList.minimumPrice) totalPrestation = prestationList.minimumPrice;\n /* Gestion des options */\n let OptionTotalPrice: number = 0;\n if (optionsList.length) {\n optionsList.forEach((optionId) => {\n const optionPrice: number | undefined = Object.values(PrestationOption).find((option) => option.id === optionId)?.price;\n if (optionPrice) OptionTotalPrice += optionPrice;\n });\n }\n totalPrestation += (OptionTotalPrice ? OptionTotalPrice : 0);\n\n return { totalPrestation, reduceMonth };\n};\n\nconst getPrestationOptions = (idPrestationList: number): PrestationOptionType[] => {\n const PrestationOptionList: PrestationOptionType[] = Object.values(PrestationOption).filter(option => option.brand.includes(getBrandNameByNodeEnv(process.env.NODE_ENV)));\n return PrestationOptionList.filter(option => option.prestationList.includes(idPrestationList));\n};\n\nconst isAbleToUpdatePrice = (idTypeBrand: number, idPrestationList: number, turnover: number, pastBalanceSheet: boolean): boolean => {\n /* Récupération de la grille tarifaire */\n const currentPriceGrid: priceGrid | undefined = getPriceGrid(idTypeBrand, idPrestationList);\n if (currentPriceGrid) {\n // @ts-ignore\n if ([PrestationType.COMPTA_PREMIUM, PrestationType.COMPTA_POURCENTAGE_PREMIUM, PrestationType.COMPTA_POURCENTAGE_PREMIUM_EXPRESS].includes(idPrestationList) && currentPriceGrid.turnoverMonthly[currentPriceGrid.turnoverMonthly.length - 2].turnoverValue < turnover) return true;\n // @ts-ignore\n else if ([PrestationType.COMPTA_POURCENTAGE, PrestationType.COMPTA_POURCENTAGE_EXPRESS].includes(idPrestationList) && currentPriceGrid.turnoverMonthly[currentPriceGrid.turnoverMonthly.length - 1].turnoverValue < turnover) return true;\n // @ts-ignore\n else if ([PrestationType.BILAN_PREVISIONNEL].includes(idPrestationList) && !pastBalanceSheet && currentPriceGrid.turnoverCreatedYear[currentPriceGrid.turnoverCreatedYear.length - 1].turnoverValue < turnover) return true;\n // @ts-ignore\n else if ([PrestationType.BILAN_PREVISIONNEL].includes(idPrestationList) && pastBalanceSheet && currentPriceGrid.turnoverPastYear[currentPriceGrid.turnoverPastYear.length - 1].turnoverValue < turnover) return true;\n else return false;\n }\n return false;\n\n};\n\nexport {\n isOtherAccountingMissions, isOtherJuridicalMissions, isAdditionalPresta, isOtherSocialMission, isOnlyPrevi, isOnlySocial, isOnlyJuridic, isCreation, isExpress, calculateScoringOfPrestation, calculatePrestationPrice, getPrestationOptions, isAbleToUpdatePrice,\n};"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@silexpert/core",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.162",
|
|
4
4
|
"description": "Silex Core perform HTTP Request and object binding. Silex core helps developers to retrieve and return formatted object",
|
|
5
5
|
"homepage": "https://gitlab.compta-clementine.fr/dev/silex-api",
|
|
6
6
|
"main": "dist/cjs/index.js",
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { BasePaginate, ICommercialOffer, QueryAllCommercialOffer, QueryPaginateCommercialOffer } from '../../types';
|
|
2
|
+
import { Resource } from '../Resource';
|
|
3
|
+
|
|
4
|
+
export class CommercialOffer extends Resource {
|
|
5
|
+
/**
|
|
6
|
+
* Create un enregistrement dans la table CommercialOffer
|
|
7
|
+
* @param { ICommercialOffer } payload
|
|
8
|
+
* @returns { ICommercialOffer }
|
|
9
|
+
*/
|
|
10
|
+
public create(payload: ICommercialOffer): Promise<ICommercialOffer> {
|
|
11
|
+
return this.axios.$post('/commercial-offers', payload);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Get tous les enregistrements dans la table CommercialOffer
|
|
16
|
+
* @param { QueryAllCommercialOffer } params
|
|
17
|
+
* @returns { ICommercialOffer[] }
|
|
18
|
+
*/
|
|
19
|
+
public getAll(params: QueryAllCommercialOffer): Promise<ICommercialOffer[]> {
|
|
20
|
+
return this.axios.$get('/commercial-offers/all', { params });
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Get tous les enregistrements utilisable dans la table CommercialOffer
|
|
25
|
+
* @returns { ICommercialOffer[] }
|
|
26
|
+
*/
|
|
27
|
+
public getAllUsable(): Promise<ICommercialOffer[]> {
|
|
28
|
+
return this.axios.$get('/commercial-offers/all-usable');
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Get les enregistrements dans la table CommercialOffer sous format paginé
|
|
33
|
+
* @param { QueryPaginateCommercialOffer } params
|
|
34
|
+
* @returns { BasePaginate<ICommercialOffer> }
|
|
35
|
+
*/
|
|
36
|
+
public getPaginate(params: QueryPaginateCommercialOffer): Promise<BasePaginate<ICommercialOffer>> {
|
|
37
|
+
return this.axios.$get('/commercial-offers/paginate', { params });
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Update un enregistrement dans la table CommercialOffer
|
|
42
|
+
* @param { number } id
|
|
43
|
+
* @param { Partial<ICommercialOffer> } payload
|
|
44
|
+
* @returns { ICommercialOffer }
|
|
45
|
+
*/
|
|
46
|
+
public update(id: number, payload: Partial<ICommercialOffer>): Promise<ICommercialOffer> {
|
|
47
|
+
return this.axios.$put(`/commercial-offers/${id}`, payload);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Delete un enregistrement dans la table CommercialOffer
|
|
52
|
+
* @param { number } id
|
|
53
|
+
* @returns { boolean }
|
|
54
|
+
*/
|
|
55
|
+
public delete(id: number): Promise<boolean> {
|
|
56
|
+
return this.axios.$delete(`/commercial-offers/${id}`);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Get un enregistrement dans la table CommercialOffer
|
|
61
|
+
* @param { number } id
|
|
62
|
+
* @returns { ICommercialOffer }
|
|
63
|
+
*/
|
|
64
|
+
public get(id: number): Promise<ICommercialOffer> {
|
|
65
|
+
return this.axios.$get(`/commercial-offers/${id}`);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
@@ -2,10 +2,30 @@ import { CancelToken } from 'axios';
|
|
|
2
2
|
import { Resource } from '../Resource';
|
|
3
3
|
import {
|
|
4
4
|
BasePaginate,
|
|
5
|
-
IPrestation, ISociety, PrestationType, QueryGetPaginatedSocietiesFromPrestation, QueryPrestation,
|
|
5
|
+
IPrestation, ISociety, PrestationType, QueryCreatePrestation, QueryGetPaginatedSocietiesFromPrestation, QueryPrestation, QueryUpdatePrestation,
|
|
6
6
|
} from '../../types';
|
|
7
7
|
|
|
8
8
|
export class Prestation extends Resource {
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Crée une prestationavec tous les éléments lié à celle-ci.
|
|
12
|
+
* @param { QueryCreatePrestation } params
|
|
13
|
+
* @returns { IPrestation }
|
|
14
|
+
*/
|
|
15
|
+
public create(params: QueryCreatePrestation): Promise<IPrestation> {
|
|
16
|
+
return this.axios.$post('/prestation', params);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Crée une prestationavec tous les éléments lié à celle-ci.
|
|
21
|
+
* @param { number } id
|
|
22
|
+
* @param { QueryUpdatePrestation } params
|
|
23
|
+
* @returns { IPrestation }
|
|
24
|
+
*/
|
|
25
|
+
public update(idPrestation: number, params: QueryUpdatePrestation): Promise<IPrestation> {
|
|
26
|
+
return this.axios.$put(`/prestation/${idPrestation}`, params);
|
|
27
|
+
}
|
|
28
|
+
|
|
9
29
|
/**
|
|
10
30
|
* retourne toutes les prestations juridique d'une société
|
|
11
31
|
* @param { number } id
|
package/ts/api/resources.ts
CHANGED
|
@@ -137,6 +137,7 @@ import { SalesContract } from './resources/SalesContract';
|
|
|
137
137
|
import { LeadsToPartners } from './resources/LeadsToPartners';
|
|
138
138
|
import { ChangeLog } from './resources/ChangeLog';
|
|
139
139
|
import { ConstitutionHistory } from './resources/ConstitutionHistory';
|
|
140
|
+
import { CommercialOffer } from './resources/CommercialOffer';
|
|
140
141
|
|
|
141
142
|
export const resources = {
|
|
142
143
|
simulation: Simulation,
|
|
@@ -278,4 +279,5 @@ export const resources = {
|
|
|
278
279
|
changeLog: ChangeLog,
|
|
279
280
|
constitutionHistory: ConstitutionHistory,
|
|
280
281
|
das: Das,
|
|
282
|
+
commercialOffer: CommercialOffer,
|
|
281
283
|
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { List } from '../Interface/enum/Util';
|
|
2
|
+
|
|
3
|
+
export enum ClosingType {
|
|
4
|
+
IN_PROGRESS = 1,
|
|
5
|
+
OUTDATED = 2,
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export const ClosingTypeList: List = [
|
|
9
|
+
{
|
|
10
|
+
id: ClosingType.IN_PROGRESS,
|
|
11
|
+
label: 'Clôture en cours',
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
id: ClosingType.OUTDATED,
|
|
15
|
+
label: 'Clôture dépassée',
|
|
16
|
+
},
|
|
17
|
+
];
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { PrestationType } from './PrestationType';
|
|
2
|
+
|
|
3
|
+
type commercialOfferTypeAmount = {
|
|
4
|
+
id: number;
|
|
5
|
+
label: string;
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
export type CommercialOfferTypeType = {
|
|
9
|
+
id: number;
|
|
10
|
+
label: string;
|
|
11
|
+
amountType: commercialOfferTypeAmount;
|
|
12
|
+
idPrestationList: number[];
|
|
13
|
+
isComptable: boolean | null;
|
|
14
|
+
isCatalog: boolean | null;
|
|
15
|
+
isBack: boolean | null;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
export const CommercialOfferAmountType = {
|
|
19
|
+
PERCENTAGE: {
|
|
20
|
+
id: 1,
|
|
21
|
+
label: '%',
|
|
22
|
+
},
|
|
23
|
+
MONTH: {
|
|
24
|
+
id: 2,
|
|
25
|
+
label: 'Mois',
|
|
26
|
+
},
|
|
27
|
+
MONEY: {
|
|
28
|
+
id: 3,
|
|
29
|
+
label: '€',
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
export const CommercialOfferTypeDetail = {
|
|
34
|
+
RECOVERY_MONTH : {
|
|
35
|
+
id: 1,
|
|
36
|
+
label: '% de reprise sur les mois',
|
|
37
|
+
text: '%value% % offert, valable jusqu\'au %dateEnd%.',
|
|
38
|
+
amountType: CommercialOfferAmountType.PERCENTAGE,
|
|
39
|
+
idPrestationList: [],
|
|
40
|
+
isComptable: true,
|
|
41
|
+
isCatalog: false,
|
|
42
|
+
isBack: false,
|
|
43
|
+
},
|
|
44
|
+
MONTH_OFFERED : {
|
|
45
|
+
id: 2,
|
|
46
|
+
label: 'Nb de mois offert',
|
|
47
|
+
text: '%value% mois offert, valable jusqu\'au %dateEnd%.',
|
|
48
|
+
amountType: CommercialOfferAmountType.MONTH,
|
|
49
|
+
idPrestationList: [],
|
|
50
|
+
isComptable: true,
|
|
51
|
+
isCatalog: false,
|
|
52
|
+
isBack: true,
|
|
53
|
+
},
|
|
54
|
+
AMOUNT_OFFERED : {
|
|
55
|
+
id: 3,
|
|
56
|
+
label: 'Montant offert',
|
|
57
|
+
text: '%value% euros offert, valable jusqu\'au %dateEnd%.',
|
|
58
|
+
amountType: CommercialOfferAmountType.MONEY,
|
|
59
|
+
idPrestationList: [],
|
|
60
|
+
isComptable: true,
|
|
61
|
+
isCatalog: false,
|
|
62
|
+
isBack: false,
|
|
63
|
+
},
|
|
64
|
+
SPONSORSHIP : {
|
|
65
|
+
id: 4,
|
|
66
|
+
label: 'Parrainage',
|
|
67
|
+
text: '%value% euros de parrainage, valable jusqu\'au %dateEnd%.',
|
|
68
|
+
amountType: CommercialOfferAmountType.MONEY,
|
|
69
|
+
idPrestationList: [],
|
|
70
|
+
isComptable: true,
|
|
71
|
+
isCatalog: false,
|
|
72
|
+
isBack: null,
|
|
73
|
+
},
|
|
74
|
+
COMPANY_SETUP: {
|
|
75
|
+
id: 5,
|
|
76
|
+
label: '% de la création d\'entreprise',
|
|
77
|
+
text: 'Création offerte, valable jusqu\'au %dateEnd%.',
|
|
78
|
+
amountType: CommercialOfferAmountType.PERCENTAGE,
|
|
79
|
+
idPrestationList: [PrestationType.CREATION_SOCIETE],
|
|
80
|
+
isComptable: null,
|
|
81
|
+
isCatalog: null,
|
|
82
|
+
isBack: null,
|
|
83
|
+
},
|
|
84
|
+
};
|
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
import { PrestationType } from './PrestationType';
|
|
2
2
|
|
|
3
|
+
export type PrestationOptionType = {
|
|
4
|
+
id: number;
|
|
5
|
+
name: string;
|
|
6
|
+
description: string | null;
|
|
7
|
+
price: number;
|
|
8
|
+
brand: string[];
|
|
9
|
+
prestationList: PrestationType[];
|
|
10
|
+
};
|
|
11
|
+
|
|
3
12
|
export const PrestationOption = {
|
|
4
13
|
BUSINESS_PLAN_OPTION_1: {
|
|
5
14
|
id: 1,
|