Voici la valeur da la cotisation SS de votre bouteille titrant à , :
Viendra ici la valeur des taxes
Explication
Depuis le 1er Janvier 2024, les nouveaux
tarifs de la cotisation sécurité sociale sur les alcools
s'appliquent chez les Vignerons, Grossistes, Importateurs.
Dans le milieu professionnel des boissons, il est le premier pas de
connaître le coût d'un produit. En France pour les Alcools,
il y a une Cotisation Sécurité Sociale en amont d'autres taxes,
la TVA par exemple. Il convient tout d'abord d'ajouter
cette cotisation sécurité sociale dans le prix HT de Base
avant d'appliquer le tau de TVA, ici 20% pour le prix de revient TTC.
En effet le prix final à payer avec toutes les taxes incluses
est basé sur le schéma suivant :
\[[Prix\ TTC] = [Prix\ HT\ de\ Base] + [Cotisation\ Sécurité\ Sociale] + [TVA] €\]
Les boissons alcoolisées fortes ont une taxe de plus qui est la [Cotisation Sécurité Sociale]
par rapport à d'autres biens de consommation.
Nous démontrerons dans cet article comment calculer ces termes-là d'une façon numérique.
Voici le l'ordonnance du Sénat Français :
Article 16 (art. 317, 402 bis, 403, 438 et 520 A du code général des impôts, art. L. 245-8 et L. 245-9 du code de la sécurité sociale) - Hausse de la fiscalité sur les alcools,
cf. Projet de loi de financement de la sécurité sociale pour 2012 du Sénat.
La loi de financement de la sécurité sociale pour 2009 a créé une cotisation sécurité sociale sur les boissons alcooliques, applicable aux boissons d'une teneur en alcool supérieure à 25 % en volume.
Le paragraphe II du présent article en modifie à la fois l'assiette et le tarif :
- le 1° élargit le champ de la cotisation en la rendant applicable aux boissons titrant plus de 18 % d'alcool en volume ;
- le 2° modifie le tarif applicable : au lieu d'un montant par unité de volume, en l'occurrence le décilitre, il fixe deux tarifs liés au degré d'alcool pur des boissons concernées, à savoir 599.31 euros par hectolitre pour les boissons les plus alcoolisées et 20.26 euros par hectolitre pour les autres ; par ailleurs, il précise que le montant de la cotisation ne peut excéder 40 % du droit d'accise applicable à la boisson concernée ; enfin, il indique que le relèvement annuel de ces tarifs ne peut excéder 1,75 %.
Détail par la Douane Française pour 2024
Sous réserve des dispositions législatives pouvant être adoptées
en loi de finances, les droits sur les alcools et
les boissons alcooliques sont relevés chaque année
dans une proportion égale au taux de croissance de l‘indice INSEE
des prix à la consommation (hors tabacs) constaté l‘avant-dernière
année. -
gouv.fr
Les autorités douanières ont publié un tableau très précis dans un document PDF : www.douane.gouv.frTarifs Officiels,
notre algorithme numérique est établi selon ce tableau.
1 Alcools titrant plus de 18% vol., Rhums DOM-TOM compris
2 Produits intermédiaires titrant plus de 18% vol. - Taux plein
3 Produits intermédiaires titrant plus de 18% vol. - Taux réduit à 40 %
4 Bières titrant plus de 18% vol.
5 Cotisation sur les rhums et alcools à base d'alcool du cru
Tab. I : Cotisation sur les boissons alcooliques ayant un titre alcoométrique volumique acquis supérieur à 18% vol. l = lTaxesFactorRef.
Source : Circulaire du 22 décembre 2014 - Tarifs des droits sur les alcools, les boissons alcooliques et les boissons non alcooliques applicables au 1er janvier 2015.
Les taux des droits des alcools, boissons alcooliques et non alcooliques indiqués dans les tableaux ci-dessous sont inchangés en 2017 par rapport à 2016.
Fait marquant selon
douane.gouv.fr.
Algorithme Mathématique de la Cotisation Sécurité Sociale
-
Pour les alcools forts en général, tels que les Spiritueux, les Liqueurs
le Cognac, les Whiskies,
la méthode consiste à calculer le volume de l'éthanol CH3CH2OH pur en litre, c'est à dire,
le volume de contenance multiplié par le pourcentage d'éthanol,
ensuite le résultat est multiplié par le tau légal, ie 5.9931/lapLitre d'Alcool Pur CH3CH2OH éthanol.
\[Taxe = V \times {P \over 100} \times 5.9931 €\]
où V : volume total du breuvage en l, une bouteille française de liqueur est de 0,7l,
P : pourcentage volumique d'alcool, 40 pour le Cognac.
Selon ce barème de taxe de sécurité sociale pour l'alcool,
notre belle bouteille de Cognac à 40%, 70cl nous coûte \(0,7 \times {40 \over 100} \times 5.9931\) = 1.68,
ou une bouteille de Whisky à 40%, 70cl coûte 1.68
en cotisation sécurité sociale, en dehors du prix de revient initial HT,
que tout bon citoyen consommateur va acquitter chez votre commerçant
avant de pouvoir déguster tranquillement chez soi,
et ceci dans le but de réparer le dégât éventuel de l'alcool.
-
Pour les alcools doux avec un pourcentage volumique supérieur à 18% d'alcool,
les vins doux naturels, le Porto, le Floc de Gascogne,
la taxe s'applique sur le volume brut, non sur l'alcool pur, avec un tau de taxe modéré, ie 0.506/l.
\[Taxe = V \times 0.506 €\]
où V : volume total de la boisson en l.
Ainsi une bouteille de Porto Don Pablo à 19%, 750ml nous coûte \(0,75 \times 0.506\) = 0.38,
or une bouteille du Floc de Gascogne à 18%, 75cl ne nous coûte rien = 0.00.
-
Pour les bières fortes d'un pourcentage volumique supérieur à 18% d'alcool,
la taxe s'applique de nouveau de fait sur le volume d'alcool pur, ie 50.6/degré/hlHectoLitre = 100l.
\[Taxe = {V \over 100} \times P \times 50.6 €\]
où V : volume total de la boisson en l,
P : pourcentage volumique d'alcool, 18 par exemple.
- Pour chaque unité de vente, ici la bouteille, la taxe SS est arrondie en 1 centime près, c'est-à-dire,
à 2 chiffres après le point-virgule, par exeample 0,82€, non
0.820246.
Implémentation de l'Algorithme Numérique de la Cotisation Sécurité Sociale
Pour implémenter numériquement ces formules,
nous proposons une UDF (User Defined Function) en Transact-SQL, applicable
en Microsoft SQL Server. Et aussi en VBA, utilisable dans Microsoft Access 2007 ou ultérieure,
et aussi une fonction en PHP.
La fonction utilisateur (UDF) Transact-SQL dbo.bizGetPriceAlcoholTaxCss(),
requiert 3 arguments suivants :
- @lTaxesFactorRef : type de référence des taxes de la cotisation sociale, sans dimension,
- 0 : Produits non soumis à la cotisation sécurité sociale,
- 1 : Régime Normal pour Liqueurs, Spiritueux, par exemple, liqueur de bananes 21% volumique,
Whisky 40%, Cognac 40%.
- 2 : Régime Allégé pour Vins doux naturels, Porto, Pineau ou encore le Floc de Gascogne.
- @dVolume : volume brut de l'alcool en l, ie litre. Pour une bouteille de Cognac
de 70cl, @dVolume = 0,7l.
- @dFract : fraction volumique du breuvage, sans dimension. Pour un Cognac de 40% volumique,
@dFract = 0,4.
/****************** fnc001 bizGetPriceAlcoholTaxCss ********************
* functions: *
* (01) get alcohol social security tax price *
***********************************************************************
* method description:
* This function gets alcohol social security tax price.
*
* When Alcohol Laws change each year, please change
* tblConfig.ValAssLimit,
* dbo.bizGetPriceAlcoholTaxCss().
*
* This function us useful for local modification
* between PriceCost0 and PriceCost to avoid SQL Server call.
*
* It *s important when modifying sfrmInputProducts.PriceCost0,
* and then open immediately sfrmInputOrdersDetail without
* updating tblProducts.PriceCost on SQL Server.
* As TaxSS on sfrmInputOrdersDetail is deduced from the expression:
*
* ctlOrderCode.Column(mlngcCIRsrcOrderCodePriceCost)
* - ctlOrderCode.Column(mlngcCIRsrcOrderCodePriceCost0)
*
* Round(Value, 2) is used by wholesaler algorithm per sale unit.
*
* created 30-MAR-2012
* modified 26-DEC-2024
* uses:
* Round()
* inputs:
* lTaxesFactorRef: tax reference
* dVolume: volume in l
* dFract: volumic fraction
* outputs:
* bizGetPriceAlcoholTaxCss: returned function value
* locals:
* dUnitPrice: unit price
* notes:
*
**********************************************************************/
CREATE FUNCTION dbo.bizGetPriceAlcoholTaxCss(@lTaxesFactorRef FLOAT,
@dVolume FLOAT, @dFract FLOAT)
RETURNS FLOAT
AS BEGIN
/*
* global variables:
*/
/*
* local variables:
*/
Declare @dUnitPrice FLOAT
/*
* function body:
*/
/*
* Not Taxed:
*/
If (@lTaxesFactorRef = 0)
RETURN 0
/*
* get per litre Taxes according to lTaxesFactorRef:
*/
SELECT @dUnitPrice =
CASE
/*
* 1. Full rate: Spirits, Liquors: > 18% Vol.:
* 599.31€/hlap:
*/
WHEN @lTaxesFactorRef = 1 Then 5.9931 * @dFract
/*
* 2. Mild Alcohol: Porto, Vins Doux Naturels, Pineau, le Floc:
* 50.6€/hl Raw Alcohol:
*/
WHEN @lTaxesFactorRef = 2 Then 0.506
/*
* 3. VDN et VDL TO AOP:
* 20.26€/hl Raw Alcohol:
*/
WHEN @lTaxesFactorRef = 3 Then 0.2026
/*
* 4. Beers > 18% = 2 since 2021:
* 50.6€/hl Raw Alcohol:
*/
WHEN @lTaxesFactorRef = 4 Then 0.506
/*
* 5. Rums consumed on DOM: > 18% Vol.:
* 482€/hlap:
*/
WHEN @lTaxesFactorRef = 5 Then 4.82 * @dFract
/*
* Other Alcohol: 0 Taxes:
*/
Else 0
END
/*
* set function value:
*/
/*
RETURN @dVolume*@dUnitPrice
*/
RETURN ROUND(@dVolume*@dUnitPrice, 2)
/*
* exit the function:
*/
END
GO
Pour illustrer l'utilisation de cette fonction utilisateur dans le serveur SQL,
pour une bouteille de Cognac de 70cl 40°, selon Tab I,
@lTaxesFactorRef = 1, @dVolume = 0.7, @dFract = 0.4,
vous pouvez l'appeler ainsi :
SELECT dbo.bizGetPriceAlcoholTaxCss(1, 0.7, 0.4);
GO
Ce qui donne 1.68.
- La fonction utilisateur en Visual Basic Application (VBA) bizGetPriceAlcoholTaxCss() a la même allure, avec une syntaxe différente :
'================== fnc001 bizGetPriceAlcoholTaxCss ====================
' functions: =
' (01) get alcohol social security tax price =
'=======================================================================
' method description:
' This function gets alcohol social security tax price.
'
' When Alcohol Laws change each year, please change
' tblConfig.ValAssLimit,
' dbo.bizGetPriceAlcoholTaxCss().
'
' This function us useful for local modification
' between PriceCost0 and PriceCost to avoid SQL Server call.
'
' It's important when modifying sfrmInputProducts.PriceCost0,
' and then open immediately sfrmInputOrdersDetail without
' updating tblProducts.PriceCost on SQL Server.
' As TaxSS on sfrmInputOrdersDetail is deduced from the expression:
'
' ctlOrderCode.Column(mlngcCIRsrcOrderCodePriceCost)
' - ctlOrderCode.Column(mlngcCIRsrcOrderCodePriceCost0)
'
' Round(Value, 2) is used by wholesaler algorithm per sale unit.
'
' created 30-MAR-2012
' modified 26-DEC-2024
' uses:
' Round()
' inputs:
' lTaxesFactorRef: tax reference
' dVolume: volume in l
' dFract: volumic fraction
' outputs:
' bizGetPriceAlcoholTaxCss: returned function value
' locals:
' dUnitPrice: unit price
' notes:
'
'=======================================================================
Function bizGetPriceAlcoholTaxCss(ByVal lTaxesFactorRef, _
ByVal dVolume, ByVal dFract)
'
' global variables:
'
'
' local variables:
'
Dim dUnitPrice
'
' function body:
'
'
' Not Taxed:
'
If (lTaxesFactorRef = 0) Then
bizGetPriceAlcoholTaxCss = 0
Exit Function
End If
'
' get per litre Taxes according to lTaxesFactorRef:
'
Select Case lTaxesFactorRef
'
' 1. Full rate: Spirits, Liquors: > 18% Vol.:
' 599.31€/hlap:
'
Case 1
dUnitPrice = 5.9931 * dFract
'
' 2. Mild Alcohol: Porto, Vins Doux Naturels, Pineau, le Floc:
' 50.6€/hl Raw Alcohol:
'
Case 2
dUnitPrice = 0.506
'
' 3. VDN et VDL TO AOP:
' 20.26€/hl Raw Alcohol:
'
Case 3
dUnitPrice = 0.2026
'
' 4. Beers > 18% = 2 since 2021:
' 50.6€/hl Raw Alcohol:
'
Case 4
dUnitPrice = 0.506
'
' 5. Rums consumed on DOM: > 18% Vol.:
' 482€/hlap:
'
Case 5
dUnitPrice = 4.82 * dFract
'
' Other Alcohol: 0 Taxes:
'
Case Else
dUnitPrice = 0
End Select
'
' set function value:
'
' bizGetPriceAlcoholTaxCss = dVolume*dUnitPrice
'
bizGetPriceAlcoholTaxCss = Round(dVolume*dUnitPrice, 2)
'
' exit the function:
'
End Function
Synopsis VBA : pour une bouteille de Cognac de 70cl 40°, selon Tab I,
lTaxesFactorRef = 1, dVolume = 0.7, dFract = 0.4,
vous pouvez l'appeler ainsi:
Dim x
x = bizGetPriceAlcoholTaxCss(1, 0.7, 0.4)
Ce qui donne 1.68.
- Et voici la version PHP de bizGetPriceAlcoholTaxCss() :
//================== fnc001 bizGetPriceAlcoholTaxCss ===================
// functions: =
// (01) get alcohol social security tax price =
//======================================================================
// method description:
// This function gets alcohol social security tax price.
//
// When Alcohol Laws change each year, please change
// tblConfig.ValAssLimit,
// dbo.bizGetPriceAlcoholTaxCss().
//
// This function us useful for local modification
// between PriceCost0 and PriceCost to avoid SQL Server call.
//
// It//s important when modifying sfrmInputProducts.PriceCost0,
// and then open immediately sfrmInputOrdersDetail without
// updating tblProducts.PriceCost on SQL Server.
// As TaxSS on sfrmInputOrdersDetail is deduced from the expression:
//
// ctlOrderCode.Column(mlngcCIRsrcOrderCodePriceCost)
// - ctlOrderCode.Column(mlngcCIRsrcOrderCodePriceCost0)
//
// Round(Value, 2) is used by wholesaler algorithm per sale unit.
//
// created 30-MAR-2012
// modified 26-DEC-2024
// uses:
// Round()
// inputs:
// lTaxesFactorRef: tax reference
// dVolume: volume in l
// dFract: volumic fraction
// outputs:
// bizGetPriceAlcoholTaxCss: returned function value
// locals:
// dUnitPrice: unit price
// notes:
//
//======================================================================
function bizGetPriceAlcoholTaxCss($lTaxesFactorRef, $dVolume, $dFract)
{
//
// global variables:
//
//
// local variables:
//
//
// function body:
//
//
// Not Taxed:
//
if ($lTaxesFactorRef == 0)
{
return 0;
}
//
// get per litre Taxes according to lTaxesFactorRef:
//
switch($lTaxesFactorRef)
{
//
// 1. Full rate: Spirits, Liquors: > 18% Vol.:
// 599.31€/hlap:
//
case 1:
$dUnitPrice = 5.9931 * $dFract;
break;
//
// 2. Mild Alcohol: Porto, Vins Doux Naturels, Pineau, le Floc:
// 50.6€/hl Raw Alcohol:
//
case 2:
$dUnitPrice = 0.506;
break;
//
// 3. VDN et VDL TO AOP:
// 20.26€/hl Raw Alcohol:
//
case 3:
$dUnitPrice = 0.2026;
break;
//
// 4. Beers > 18% = 2 since 2021:
// 50.6€/hl Raw Alcohol:
//
case 4:
$dUnitPrice = 0.506;
break;
//
// 5. Rums consumed on DOM: > 18% Vol.:
// 482€/hlap:
//
case 5:
$dUnitPrice = 4.82 * $dFract;
break;
//
// Other Alcohol: 0 Taxes:
//
default:
$dUnitPrice = 0;
}
//
// set function value:
//
//return $dVolume*$dUnitPrice;
//
return Round($dVolume*$dUnitPrice, 2);
//
// exit the function:
//
}
Synopsis php : pour une bouteille de Cognac de 70cl 40°, selon Tab I,
$lTaxesFactorRef = 1, $dVolume = 0.7, $dFract = 0.4,
vous pouvez l'appeler ainsi :
$x = bizGetPriceAlcoholTaxCss(1, 0.7, 0.4);
Ce qui donne 1.68.
- En Python, bizGetPriceAlcoholTaxCss() :
#================== fnc001 bizGetPriceAlcoholTaxCss ====================
# functions: =
# (01) get alcohol social security tax price =
#=======================================================================
# method description:
# This function gets alcohol social security tax price.
#
# When Alcohol Laws change each year, please change
# tblConfig.ValAssLimit,
# dbo.bizGetPriceAlcoholTaxCss().
#
# This function us useful for local modification
# between PriceCost0 and PriceCost to avoid SQL Server call.
#
# It#s important when modifying sfrmInputProducts.PriceCost0,
# and then open immediately sfrmInputOrdersDetail without
# updating tblProducts.PriceCost on SQL Server.
# As TaxSS on sfrmInputOrdersDetail is deduced from the expression:
#
# ctlOrderCode.Column(mlngcCIRsrcOrderCodePriceCost)
# - ctlOrderCode.Column(mlngcCIRsrcOrderCodePriceCost0)
#
# Round(Value, 2) is used by wholesaler algorithm per sale unit.
#
# created 30-MAR-2012
# modified 26-DEC-2024
# uses:
# Round()
# inputs:
# lTaxesFactorRef: tax reference
# dVolume: volume in l
# dFract: volumic fraction
# outputs:
# bizGetPriceAlcoholTaxCss: returned function value
# locals:
# dUnitPrice: unit price
# notes:
#
#=======================================================================
def bizGetPriceAlcoholTaxCss(lTaxesFactorRef, dVolume, dFract):
#
# global variables:
#
#
# local variables:
#
# double dUnitPrice;
#
# function body:
#
#
# Not Taxed:
#
if (lTaxesFactorRef == 0):
return 0
#
# get per litre Taxes according to lTaxesFactorRef:
#
#
# 1. Full rate: Spirits, Liquors: > 18% Vol.:
# 599.31€/hlap:
#
elif(lTaxesFactorRef == 1):
dUnitPrice = 5.9931 * dFract
#
# 2. Mild Alcohol: Porto, Vins Doux Naturels, Pineau, le Floc:
# 50.6€/hl Raw Alcohol:
#
elif(lTaxesFactorRef == 2):
dUnitPrice = 0.506
#
# 3. VDN et VDL TO AOP:
# 20.26€/hl Raw Alcohol:
#
elif(lTaxesFactorRef == 3):
dUnitPrice = 0.2026
#
# 4. Beers > 18% = 2 since 2021:
# 50.6€/hl Raw Alcohol:
#
elif(lTaxesFactorRef == 4):
dUnitPrice = 0.506;
#
# 5. Rums consumed on DOM: > 18% Vol.:
# 482€/hlap:
#
elif(lTaxesFactorRef == 5):
dUnitPrice = 4.82 * dFract
#
# Other Alcohol: 0 Taxes:
#
else:
dUnitPrice = 0
#
# set function value:
#
#return dVolume*dUnitPrice
#
#
return round(100*dVolume*dUnitPrice)/100
#
# exit the function:
#
if __name__ == "__main__":
lTaxesFactorRef = 1
dVolume = 0.7
dFract = 0.4
x = bizGetPriceAlcoholTaxCss(lTaxesFactorRef, dVolume, dFract)
print(x)
Synopsis Python : pour une bouteille de Cognac de 70cl 40°, selon Tab I,
lTaxesFactorRef = 1, dVolume = 0.7, dFract = 0.4,
vous pouvez l'appeler ainsi :
x = bizGetPriceAlcoholTaxCss(1, 0.7, 0.4)
Ce qui donne 1.68.
- Il est aussi utile d'avoir la version en JavaScript bizGetPriceAlcoholTaxCss() :
//================== fnc001 bizGetPriceAlcoholTaxCss ===================
// functions: =
// (01) get alcohol social security tax price =
//======================================================================
// method description:
// This function gets alcohol social security tax price.
//
// When Alcohol Laws change each year, please change
// tblConfig.ValAssLimit,
// dbo.bizGetPriceAlcoholTaxCss().
//
// This function us useful for local modification
// between PriceCost0 and PriceCost to avoid SQL Server call.
//
// It//s important when modifying sfrmInputProducts.PriceCost0,
// and then open immediately sfrmInputOrdersDetail without
// updating tblProducts.PriceCost on SQL Server.
// As TaxSS on sfrmInputOrdersDetail is deduced from the expression:
//
// ctlOrderCode.Column(mlngcCIRsrcOrderCodePriceCost)
// - ctlOrderCode.Column(mlngcCIRsrcOrderCodePriceCost0)
//
// Round(Value, 2) is used by wholesaler algorithm per sale unit.
//
// created 30-MAR-2012
// modified 26-DEC-2024
// uses:
// Round()
// inputs:
// lTaxesFactorRef: tax reference
// dVolume: volume in l
// dFract: volumic fraction
// outputs:
// bizGetPriceAlcoholTaxCss: returned function value
// locals:
// dUnitPrice: unit price
// notes:
//
//======================================================================
function bizGetPriceAlcoholTaxCss(lTaxesFactorRef, dVolume, dFract)
{
//
// global variables:
//
//
// local variables:
//
var dUnitPrice;
//
// function body:
//
//
// Not Taxed:
//
if (lTaxesFactorRef == 0)
{
return 0;
}
//
// get per litre Taxes according to lTaxesFactorRef:
//
switch(lTaxesFactorRef)
{
//
// 1. Full rate: Spirits, Liquors: > 18% Vol.:
// 599.31€/hlap:
//
case 1:
dUnitPrice = 5.9931 * dFract;
break;
//
// 2. Mild Alcohol: Porto, Vins Doux Naturels, Pineau, le Floc:
// 50.6€/hl Raw Alcohol:
//
case 2:
dUnitPrice = 0.506;
break;
//
// 3. VDN et VDL TO AOP:
// 20.26€/hl Raw Alcohol:
//
case 3:
dUnitPrice = 0.2026;
break;
//
// 4. Beers > 18% = 2 since 2021:
// 50.6€/hl Raw Alcohol:
//
case 4:
dUnitPrice = 0.506;
break;
//
// 5. Rums consumed on DOM: > 18% Vol.:
// 482€/hlap:
//
case 5:
dUnitPrice = 4.82 * dFract;
break;
//
// Other Alcohol: 0 Taxes:
//
default:
dUnitPrice = 0;
}
//
// set function value:
//
//return dVolume*dUnitPrice;
//
return Math.round(100*dVolume*dUnitPrice)/100;
//
// exit the function:
//
}
Synopsis js : pour une bouteille de Cognac de 70cl 40°, selon Tab I,
lTaxesFactorRef = 1, dVolume = 0.7, dFract = 0.4,
vous pouvez l'appeler ainsi :
var x;
x = bizGetPriceAlcoholTaxCss(1, 0.7, 0.4);
Ce qui aboutit à 1.68.
- Enfin, vous êtes sans doute un informaticien ultime, la version en C++ est le nec plus ultra, il faut le compiler, par exemple, avec le compilateur GNU C++, c.-a.-d., g++ bizGetPriceAlcoholTaxCss() :
//================== fnc001 bizGetPriceAlcoholTaxCss ===================
// functions: =
// (01) get alcohol social security tax price =
//======================================================================
// method description:
// This function gets alcohol social security tax price.
//
// When Alcohol Laws change each year, please change
// tblConfig.ValAssLimit,
// dbo.bizGetPriceAlcoholTaxCss().
//
// This function us useful for local modification
// between PriceCost0 and PriceCost to avoid SQL Server call.
//
// It//s important when modifying sfrmInputProducts.PriceCost0,
// and then open immediately sfrmInputOrdersDetail without
// updating tblProducts.PriceCost on SQL Server.
// As TaxSS on sfrmInputOrdersDetail is deduced from the expression:
//
// ctlOrderCode.Column(mlngcCIRsrcOrderCodePriceCost)
// - ctlOrderCode.Column(mlngcCIRsrcOrderCodePriceCost0)
//
// Round(Value, 2) is used by wholesaler algorithm per sale unit.
//
// created 30-MAR-2012
// modified 26-DEC-2024
// uses:
// Round()
// inputs:
// lTaxesFactorRef: tax reference
// dVolume: volume in l
// dFract: volumic fraction
// outputs:
// bizGetPriceAlcoholTaxCss: returned function value
// locals:
// dUnitPrice: unit price
// notes:
//
//======================================================================
double bizGetPriceAlcoholTaxCss(int lTaxesFactorRef,
double dVolume, double dFract)
{
//
// global variables:
//
//
// local variables:
//
double dUnitPrice;
//
// function body:
//
//
// Not Taxed:
//
if (lTaxesFactorRef == 0)
{
return 0;
}
//
// get per litre Taxes according to lTaxesFactorRef:
//
switch(lTaxesFactorRef)
{
//
// 1. Full rate: Spirits, Liquors: > 18% Vol.:
// 599.31€/hlap:
//
case 1:
dUnitPrice = 5.9931 * dFract;
break;
//
// 2. Mild Alcohol: Porto, Vins Doux Naturels, Pineau, le Floc:
// 50.6€/hl Raw Alcohol:
//
case 2:
dUnitPrice = 0.506;
break;
//
// 3. VDN et VDL TO AOP:
// 20.26€/hl Raw Alcohol:
//
case 3:
dUnitPrice = 0.2026;
break;
//
// 4. Beers > 18% = 2 since 2021:
// 50.6€/hl Raw Alcohol:
//
case 4:
dUnitPrice = 0.506;
break;
//
// 5. Rums consumed on DOM: > 18% Vol.:
// 482€/hlap:
//
case 5:
dUnitPrice = 4.82 * dFract;
break;
//
// Other Alcohol: 0 Taxes:
//
default:
dUnitPrice = 0;
}
//
// set function value:
//
//return dVolume*dUnitPrice;
//
return round(100*dVolume*dUnitPrice)/100;
//
// exit the function:
//
}
Synopsis C++ : pour une bouteille de Cognac de 70cl 40°, selon Tab I,
lTaxesFactorRef = 1, dVolume = 0.7, dFract = 0.4,
vous pouvez l'appeler ainsi :
double x;
x = bizGetPriceAlcoholTaxCss(1, 0.7, 0.4);
Et finalement, pour connaître le prix de revient TTC d'une bouteille d'alcool,
nous appliquons la formule suivante :
PrixTTC = (PrixHT + TaxCss) * (1 + 20%) €
où PrixHT : prix HT de Base avant la taxe de sécurité sociale en €,
TaxCss : montant de la taxe de cotisation sécurité sociale sur l'alcool,
obtenu précédemment.
Vous pouvez également visualiser par les liens suivants :
Alors il reste le dernier pas : tout télécharger dans une archive zip incluant les sources en langages cités ci-dessus : taxcss.zip.
Termes utilisés
如果您需要更多的信息,请来电与我们联系。
文章链接产品 | 文章产品链接 | 我肯切地等待您的反馈...
您的朋友 王博士
货币 |
钟表 |
翻译 |
词典 |
书写 |
字码转换