Exemplo n.º 1
0
        /// <summary>
        /// Calcule les taxes TPS et TVQ ainsi que le montant total incluant les taxes.
        /// </summary>
        /// <param name="montant">Montant initial</param>
        /// <param name="TPS">Decimal équivalent à la TPS. Pour une taxe de 5% ce paramètre doit être à 0.05</param>
        /// <param name="TVQ">Decimal équivalent à la TVQ. Pour une taxe de 8.5% ce paramètre doit être à 0.085</param>
        /// <param name="round">Permet de spécifier si on doit arrondir le nombre à 2 décimal après la virgule.
        /// True pour arrondir. False pour conserver tous les décimals</param>
        /// <param name="calculDate">DateTime équivalent à la date du calcul. Si à null ou non défini, la date du jour est utilisée</param>
        /// <returns>Objet MontantTaxes</returns>
        public static MontantTaxes CalculateTaxes(Decimal montant, Decimal TPS, Decimal TVQ, Boolean round, DateTime?calculDate = null)
        {
            if (calculDate == null)
            {
                calculDate = DateTime.Now;
            }

            MontantTaxes montantAvecTaxes = new MontantTaxes();

            montantAvecTaxes.MontantInitial = montant;
            montantAvecTaxes.TPS            = montantAvecTaxes.MontantInitial * TPS;

            if (calculDate >= NOUVELLE_DATE)
            {
                montantAvecTaxes.TVQ = montantAvecTaxes.MontantInitial * TVQ;
            }
            else
            {
                montantAvecTaxes.TVQ = (montantAvecTaxes.MontantInitial + montantAvecTaxes.TPS) * TVQ;
            }

            montantAvecTaxes.MontantTotal = montantAvecTaxes.MontantInitial + montantAvecTaxes.TPS + montantAvecTaxes.TVQ;

            if (round)
            {
                montantAvecTaxes.TPS          = Math.Round(montantAvecTaxes.TPS, 2, MidpointRounding.AwayFromZero);
                montantAvecTaxes.TVQ          = Math.Round(montantAvecTaxes.TVQ, 2, MidpointRounding.AwayFromZero);
                montantAvecTaxes.MontantTotal = Math.Round(montantAvecTaxes.MontantTotal, 2, MidpointRounding.AwayFromZero);
            }

            return(montantAvecTaxes);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Calcule les taxes TPS et TVQ ainsi que le montant total incluant les taxes.
        /// </summary>
        /// <param name="montant">Montant initial</param>
        /// <param name="TPS">Decimal équivalent à la TPS. Pour une taxe de 5% ce paramètre doit être à 0.05</param>
        /// <param name="TVQ">Decimal équivalent à la TVQ. Pour une taxe de 8.5% ce paramètre doit être à 0.085</param>
        /// <param name="round">Permet de spécifier si on doit arrondir le nombre à 2 décimal après la virgule.
        /// True pour arrondir. False pour conserver tous les décimals</param>
        /// <param name="calculDate">DateTime équivalent à la date du calcul. Si à null ou non défini, la date du jour est utilisée</param>
        /// <returns>Objet MontantTaxes</returns>
        public static MontantTaxes CalculateTaxes(Decimal montant, Decimal TPS, Decimal TVQ, Boolean round, DateTime? calculDate = null)
        {
            if (calculDate == null)
                calculDate = DateTime.Now;

            MontantTaxes montantAvecTaxes = new MontantTaxes();

            montantAvecTaxes.MontantInitial = montant;
            montantAvecTaxes.TPS = montantAvecTaxes.MontantInitial * TPS;

            if (calculDate >= NOUVELLE_DATE)
                montantAvecTaxes.TVQ = montantAvecTaxes.MontantInitial * TVQ;
            else
                montantAvecTaxes.TVQ = (montantAvecTaxes.MontantInitial + montantAvecTaxes.TPS) * TVQ;

            montantAvecTaxes.MontantTotal = montantAvecTaxes.MontantInitial + montantAvecTaxes.TPS + montantAvecTaxes.TVQ;

            if (round)
            {
                montantAvecTaxes.TPS = Math.Round(montantAvecTaxes.TPS, 2, MidpointRounding.AwayFromZero);
                montantAvecTaxes.TVQ = Math.Round(montantAvecTaxes.TVQ, 2, MidpointRounding.AwayFromZero);
                montantAvecTaxes.MontantTotal = Math.Round(montantAvecTaxes.MontantTotal, 2, MidpointRounding.AwayFromZero);
            }

            return montantAvecTaxes;
        }