private PaiementTypeEnum getSelectedARendreValue()
 {
     try
     {
         var selectedId = ((ComboboxBean)ARendreCombobox.SelectedItem).Id;
         PaiementTypeEnum typePaiement = PaiementTypeEnumMethods.fromValue(selectedId);
         return(typePaiement);
     }
     catch (NullReferenceException e)
     {
         return(PaiementTypeEnum.AVOIR);
     }
 }
示例#2
0
        public CalculResultBean getFinalCalculResultBean(ObservableCollection <TableRemise> RemiseCollection,
                                                         ObservableCollection <TableAvoir> AvoirCollection,
                                                         ObservableCollection <TableEchangeDirect> EchangeDirectCollection,
                                                         ObservableCollection <TableProduct> ProductsCollection,

                                                         decimal monnaiePayeeESP,
                                                         decimal monnaiePayeeCB,
                                                         decimal monnaiePayeeCHEQUE,

                                                         decimal aRendreAVOIR,        //Valeur entrée manuellement
                                                         decimal aRendreESP,          //Valeur entrée manuellement

                                                         PaiementTypeEnum aRendreType //Valeur choisie manuellement
                                                         )
        {
            CalculResultBean calculResultBean = getResultBeanWithoutRemises(AvoirCollection, EchangeDirectCollection, ProductsCollection);

            //Si une valeur est entrée manuellement dans la case rendreAvoir...
            if (aRendreAVOIR > 0)
            {
                calculResultBean.ARendreAvoir = aRendreAVOIR;
            }
            //Si une valeur est entrée manuellement dans la case rendreEsp...
            else if (aRendreESP > 0)
            {
                calculResultBean.ARendreESP = aRendreESP;
            }

            //Calcul de la monnaie payée
            calculResultBean.monnaiePayeeESP    = monnaiePayeeESP;
            calculResultBean.monnaiePayeeCB     = monnaiePayeeCB;
            calculResultBean.monnaiePayeeCHEQUE = monnaiePayeeCHEQUE;

            calculResultBean.monnaiePayee = monnaiePayeeESP + monnaiePayeeCB + monnaiePayeeCHEQUE;

            //Calcul de la remise...
            ObservableCollection <TableRemise> CalculatedRemiseCollection = calculateMontantRemiseFromTableRemise(RemiseCollection, ProductsCollection, AvoirCollection, EchangeDirectCollection);

            calculResultBean.totalRemise = getRemisesSumFromCollection(CalculatedRemiseCollection);

            //Calcul total à payer...
            calculResultBean.totalAPayer = calculResultBean.totalProduits;

            //Calcul des réductions
            decimal reductions = (calculResultBean.totalEchangeAndAvoir + calculResultBean.totalRemise + calculResultBean.totalEchangeDirect);

            //Calcul reste à payer...
            calculResultBean.resteAPayer = calculResultBean.totalProduits - reductions;

            if (calculResultBean.resteAPayer <= 0)
            {
                calculResultBean.resteAPayer = 0;
            }
            else
            {
                calculResultBean.resteAPayer = calculResultBean.resteAPayer;
            }

            //Calcul monnaie à rendre...
            calculResultBean.ARendre = calculResultBean.monnaiePayee - calculResultBean.resteAPayer;

            if (calculResultBean.ARendre <= 0)
            {
                calculResultBean.ARendre = 0;
            }
            else
            {
                calculResultBean.ARendre = calculResultBean.ARendre;
            }

            //Calcul des réductions...
            calculResultBean.totalReductions = calculResultBean.totalEchangeDirect + calculResultBean.totalEchangeAndAvoir + calculResultBean.totalRemise;

            //Si on a saisi le montant ARendreAvoir à la main...
            if (calculResultBean.totalReductions - calculResultBean.totalProduits > 0 && calculResultBean.ARendreAvoir > 0)
            {
                calculResultBean.ARendreESP = Math.Round(((calculResultBean.totalReductions - (calculResultBean.totalProduits + calculResultBean.ARendreAvoir)) * Convert.ToDecimal(0.7142857)), 2, MidpointRounding.ToEven);
            }
            //Si on a saisi le montant ARendreESP à la main...
            else if (calculResultBean.totalReductions - calculResultBean.totalProduits > 0 && calculResultBean.ARendreESP > 0)
            {
                calculResultBean.ARendreAvoir = (calculResultBean.totalReductions - calculResultBean.totalProduits) - (calculResultBean.ARendreESP + (calculResultBean.ARendreESP * 40) / 100);
            }
            //Si rien n'a été entré à la main et que AVOIR est choisi, on evalue l'avoir à rendre par défaut.
            else if (aRendreType == PaiementTypeEnum.AVOIR && calculResultBean.totalReductions - calculResultBean.totalProduits > 0)
            {
                calculResultBean.ARendreAvoir = calculResultBean.totalReductions - calculResultBean.totalProduits;
                calculResultBean.ARendreESP   = 0;
            }
            else if (aRendreType == PaiementTypeEnum.ESP && calculResultBean.totalReductions - calculResultBean.totalProduits > 0)
            {
                calculResultBean.ARendreAvoir = 0;
                calculResultBean.ARendreESP   = Math.Round(((calculResultBean.totalReductions - calculResultBean.totalProduits) * Convert.ToDecimal(0.7142857)), 2, MidpointRounding.ToEven);
            }

            //Controle des valeurs qui ne peuvent pas être négatives...
            if (calculResultBean.ARendreAvoir < 0)
            {
                calculResultBean.ARendreAvoir = 0;
            }
            if (calculResultBean.ARendreESP < 0)
            {
                calculResultBean.ARendreESP = 0;
            }

            //Assignation du nombre de produits
            calculResultBean.productCount = ProductsCollection.Count();

            if (calculResultBean.totalReductions - calculResultBean.totalProduits > 0)
            {
                decimal totalAvoirEchangeConverti = Math.Round((calculResultBean.ARendreESP + (calculResultBean.ARendreESP * 40) / 100), 2, MidpointRounding.ToEven);

                calculResultBean.avoirEchangeConverti = totalAvoirEchangeConverti;

                decimal totalAvoirRendu = Math.Round(calculResultBean.ARendreAvoir + (calculResultBean.ARendreESP + (calculResultBean.ARendreESP * 40) / 100), 2, MidpointRounding.ToEven);
                calculResultBean.totalEchangeAndAvoirUtil = calculResultBean.totalEchangeAndAvoir - totalAvoirRendu;
            }
            else
            {
                calculResultBean.totalEchangeAndAvoirUtil = 0;
            }

            //Calul ESP Reellement payé (sans la monnaie donnée par le client)
            calculResultBean.monnaiePayeeReelESP = calculResultBean.monnaiePayeeESP - calculResultBean.ARendreESP;

            if (calculResultBean.monnaiePayeeReelESP < 0)
            {
                calculResultBean.monnaiePayeeReelESP = 0;
            }

            //Si les réductions > produits alors on a surement rendu de l'ESP si avoir converti.
            if (calculResultBean.totalReductions - calculResultBean.totalProduits > 0)
            {
                calculResultBean.ARendreReelESP = calculResultBean.ARendreESP;
            }
            else
            {
                calculResultBean.ARendreReelESP = 0;
            }

            return(calculResultBean);
        }
        public CalculResultBean getFinalCalculResultBean(ObservableCollection<TableRemise> RemiseCollection,
            ObservableCollection<TableAvoir> AvoirCollection,
            ObservableCollection<TableEchangeDirect> EchangeDirectCollection,
            ObservableCollection<TableProduct> ProductsCollection,

            decimal monnaiePayeeESP,
            decimal monnaiePayeeCB,
            decimal monnaiePayeeCHEQUE,

            decimal aRendreAVOIR, //Valeur entrée manuellement
            decimal aRendreESP, //Valeur entrée manuellement

            PaiementTypeEnum aRendreType //Valeur choisie manuellement
            )
        {

            CalculResultBean calculResultBean = getResultBeanWithoutRemises(AvoirCollection, EchangeDirectCollection, ProductsCollection);

            //Si une valeur est entrée manuellement dans la case rendreAvoir...
            if (aRendreAVOIR > 0)
            {
                calculResultBean.ARendreAvoir = aRendreAVOIR;
            }
            //Si une valeur est entrée manuellement dans la case rendreEsp...
            else if (aRendreESP > 0)
            {
                calculResultBean.ARendreESP = aRendreESP;
            }

            //Calcul de la monnaie payée
            calculResultBean.monnaiePayeeESP = monnaiePayeeESP;
            calculResultBean.monnaiePayeeCB = monnaiePayeeCB;
            calculResultBean.monnaiePayeeCHEQUE = monnaiePayeeCHEQUE;

            calculResultBean.monnaiePayee = monnaiePayeeESP + monnaiePayeeCB + monnaiePayeeCHEQUE;

            //Calcul de la remise...
            ObservableCollection<TableRemise> CalculatedRemiseCollection = calculateMontantRemiseFromTableRemise(RemiseCollection, ProductsCollection, AvoirCollection, EchangeDirectCollection);
            calculResultBean.totalRemise = getRemisesSumFromCollection(CalculatedRemiseCollection);

            //Calcul total à payer...
            calculResultBean.totalAPayer = calculResultBean.totalProduits;

            //Calcul des réductions
            decimal reductions = (calculResultBean.totalEchangeAndAvoir + calculResultBean.totalRemise + calculResultBean.totalEchangeDirect);

            //Calcul reste à payer...
            calculResultBean.resteAPayer = calculResultBean.totalProduits - reductions;

            if (calculResultBean.resteAPayer <= 0)
            {
                calculResultBean.resteAPayer = 0;
            }
            else
            {
                calculResultBean.resteAPayer = calculResultBean.resteAPayer;
            }

            //Calcul monnaie à rendre...
            calculResultBean.ARendre = calculResultBean.monnaiePayee - calculResultBean.resteAPayer;

            if (calculResultBean.ARendre <= 0)
            {
                calculResultBean.ARendre = 0;
            }
            else
            {
                calculResultBean.ARendre = calculResultBean.ARendre;
            }

            //Calcul des réductions...
            calculResultBean.totalReductions = calculResultBean.totalEchangeDirect + calculResultBean.totalEchangeAndAvoir + calculResultBean.totalRemise;

            //Si on a saisi le montant ARendreAvoir à la main...
            if (calculResultBean.totalReductions - calculResultBean.totalProduits > 0 && calculResultBean.ARendreAvoir > 0)
            {
                calculResultBean.ARendreESP = Math.Round(((calculResultBean.totalReductions - (calculResultBean.totalProduits + calculResultBean.ARendreAvoir)) * Convert.ToDecimal(0.7142857)), 2, MidpointRounding.ToEven);
            }
            //Si on a saisi le montant ARendreESP à la main...
            else if (calculResultBean.totalReductions - calculResultBean.totalProduits > 0 && calculResultBean.ARendreESP > 0)
            {
                calculResultBean.ARendreAvoir = (calculResultBean.totalReductions - calculResultBean.totalProduits) - (calculResultBean.ARendreESP + (calculResultBean.ARendreESP * 40) / 100);
            }
            //Si rien n'a été entré à la main et que AVOIR est choisi, on evalue l'avoir à rendre par défaut.
            else if (aRendreType == PaiementTypeEnum.AVOIR && calculResultBean.totalReductions - calculResultBean.totalProduits > 0)
            {
                calculResultBean.ARendreAvoir = calculResultBean.totalReductions - calculResultBean.totalProduits;
                calculResultBean.ARendreESP = 0;
            }
            else if (aRendreType == PaiementTypeEnum.ESP && calculResultBean.totalReductions - calculResultBean.totalProduits > 0)
            {
                calculResultBean.ARendreAvoir = 0;
                calculResultBean.ARendreESP = Math.Round(((calculResultBean.totalReductions - calculResultBean.totalProduits) * Convert.ToDecimal(0.7142857)), 2, MidpointRounding.ToEven);
            }

                //Controle des valeurs qui ne peuvent pas être négatives...
                if (calculResultBean.ARendreAvoir < 0)
            {
                calculResultBean.ARendreAvoir = 0;
            }
            if (calculResultBean.ARendreESP < 0)
            {
                calculResultBean.ARendreESP = 0;
            }

            //Assignation du nombre de produits
            calculResultBean.productCount = ProductsCollection.Count();

            if (calculResultBean.totalReductions - calculResultBean.totalProduits > 0)
            {
                decimal totalAvoirEchangeConverti = Math.Round((calculResultBean.ARendreESP + (calculResultBean.ARendreESP * 40) / 100), 2, MidpointRounding.ToEven);

                calculResultBean.avoirEchangeConverti = totalAvoirEchangeConverti;

                decimal totalAvoirRendu = Math.Round(calculResultBean.ARendreAvoir + (calculResultBean.ARendreESP + (calculResultBean.ARendreESP * 40) / 100), 2, MidpointRounding.ToEven);
                calculResultBean.totalEchangeAndAvoirUtil = calculResultBean.totalEchangeAndAvoir - totalAvoirRendu;
            }
            else
            {
                calculResultBean.totalEchangeAndAvoirUtil = 0;
            }

            //Calul ESP Reellement payé (sans la monnaie donnée par le client)
            calculResultBean.monnaiePayeeReelESP = calculResultBean.monnaiePayeeESP - calculResultBean.ARendreESP;

            if (calculResultBean.monnaiePayeeReelESP < 0)
            {
                calculResultBean.monnaiePayeeReelESP = 0;
            }

            //Si les réductions > produits alors on a surement rendu de l'ESP si avoir converti.
            if (calculResultBean.totalReductions - calculResultBean.totalProduits > 0) {
                calculResultBean.ARendreReelESP = calculResultBean.ARendreESP;
            }
            else
            {
                calculResultBean.ARendreReelESP = 0;
            }

            return calculResultBean;
        }