Beispiel #1
0
        public ObservableCollection <TableRemise> calculateMontantRemiseFromTableRemise(ObservableCollection <TableRemise> RemiseCollection,
                                                                                        ObservableCollection <TableProduct> ProductsCollection,
                                                                                        ObservableCollection <TableAvoir> AvoirCollection,
                                                                                        ObservableCollection <TableEchangeDirect> EchangeDirectCollection)
        {
            CalculResultBean resultBean = getResultBeanWithoutRemises(AvoirCollection, EchangeDirectCollection, ProductsCollection);

            decimal totalAfterAvoirAndEchangeDirect = resultBean.totalProduits - (resultBean.totalEchangeAndAvoir + resultBean.totalEchangeDirect);

            foreach (var remise in RemiseCollection)
            {
                if (remise.Type == RemiseType.POURCENTAGE.ToString())
                {
                    decimal valeurRemiseDecimal = decimal.Parse(remise.Valeur);

                    decimal calculatedRemiseValue = valeurRemiseDecimal * totalAfterAvoirAndEchangeDirect / 100;

                    totalAfterAvoirAndEchangeDirect -= calculatedRemiseValue;

                    remise.Montant = string.Format("{0:0.00}", totalAfterAvoirAndEchangeDirect);
                }
                else if (remise.Type == RemiseType.VALEUR.ToString())
                {
                    remise.Montant = remise.Valeur;
                }
            }

            return(RemiseCollection);
        }
        private void ARendreCombobox_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            this.aRendreESP   = 0;
            this.aRendreAVOIR = 0;

            string selectedItem = ((ComboboxBean)ARendreCombobox.SelectedItem).Value;

            CalculResultBean calculBean = TransactionManager.getFinalCalculResultBean(RemiseCollection, AvoirCollection, EchangeDirectCollection, ProduitsCollection, this.monnaiePayeeESP, this.monnaiePayeeCB, this.monnaiePayeeCHEQUE, this.aRendreAVOIR, this.aRendreESP, getSelectedARendreValue());

            if (selectedItem == "AVOIR")
            {
                ARendreEspScreen.Text        = "0";
                ARendreAvoirScreen.Text      = calculBean.ARendreAvoir.ToString();
                ARendreAvoirScreen.IsEnabled = false;
                ARendreEspScreen.IsEnabled   = false;
            }
            else if (selectedItem == "ESP")
            {
                ARendreAvoirScreen.Text      = "0";
                ARendreEspScreen.Text        = calculBean.ARendreESP.ToString();
                ARendreAvoirScreen.IsEnabled = false;
                ARendreEspScreen.IsEnabled   = false;
            }
            else if (selectedItem == "LES DEUX")
            {
                ARendreAvoirScreen.IsEnabled = true;
                ARendreEspScreen.IsEnabled   = true;
            }
        }
        private void calculateOnUi(Boolean refreshAPayerScreen, Boolean fromMultipay, Boolean updateProduct, Boolean updateEchangeDirect, Boolean updateAvoir, Boolean updateRemise)
        {
            //We reset all user entries before reculating if...
            if (updateProduct || updateEchangeDirect || updateAvoir || updateRemise)
            {
                resetUserMoneyEntries();
            }

            CalculResultBean calculBean = TransactionManager.getFinalCalculResultBean(RemiseCollection, AvoirCollection, EchangeDirectCollection, ProduitsCollection, this.monnaiePayeeESP, this.monnaiePayeeCB, this.monnaiePayeeCHEQUE, this.aRendreAVOIR, this.aRendreESP, getSelectedARendreValue());

            MontantAvoirScreen.Text  = calculBean.totalAvoir.ToString();
            EchangeDirectScreen.Text = calculBean.totalEchangeDirect.ToString();
            RemiseScreen.Text        = calculBean.totalRemise.ToString();
            ARendreScreen.Text       = calculBean.ARendre.ToString();

            if (calculBean.totalReductions > calculBean.totalProduits)
            {
                TypePaiementScreen.IsEnabled = false;
                ARendreCombobox.IsEnabled    = true;
                ResteAPayerScreen.Text       = "0";
                ARendreScreen.Text           = "0";
                ARendreAvoirScreen.Text      = (calculBean.totalReductions - calculBean.totalProduits).ToString();
            }
            else if (calculBean.totalReductions == calculBean.totalProduits)
            {
                ARendreCombobox.IsEnabled    = false;
                TypePaiementScreen.IsEnabled = false;
                ARendreCombobox.IsEnabled    = false;
                ARendreAvoirScreen.IsEnabled = false;
                ARendreEspScreen.IsEnabled   = false;
                ARendreAvoirScreen.Text      = "0";
                ARendreEspScreen.Text        = "0";
                ResteAPayerScreen.Text       = "0";
                ARendreScreen.Text           = "0";
            }
            else
            {
                if (refreshAPayerScreen)
                {
                    ResteAPayerScreen.Text = calculBean.resteAPayer.ToString();
                }

                ARendreAvoirScreen.Text      = "0";
                ARendreEspScreen.Text        = "0";
                ARendreCombobox.IsEnabled    = false;
                TypePaiementScreen.IsEnabled = true;
                ARendreAvoirScreen.IsEnabled = false;
                ARendreEspScreen.IsEnabled   = false;
            }

            if (fromMultipay)
            {
                ResteAPayerScreen.Text = "0";
            }

            TotalAPayerScreen.Text = "A PAYER : " + calculBean.totalAPayer.ToString() + " €";
        }
        public Transaction registerTransaction(CalculResultBean calculBean, TransactionTypeEnum transactionType)
        {
            using (var context = new bourseContainer())
            {
                decimal giftCouponValue              = calculBean.totalBonCadeau;
                decimal couponValue                  = calculBean.totalAvoir;
                decimal usedCouponExchangeValue      = calculBean.totalEchangeAndAvoirUtil;
                decimal exchangeValue                = calculBean.totalEchange;
                decimal convertedCouponExchangeValue = calculBean.avoirEchangeConverti;
                decimal discountOfferValue           = calculBean.totalRemise;
                decimal payCardValue                 = calculBean.monnaiePayeeCB;
                decimal cashValue            = calculBean.monnaiePayeeESP;
                decimal realCashValue        = calculBean.monnaiePayeeReelESP;
                decimal emittedCouponValue   = calculBean.ARendreAvoir;
                decimal emittedCashValue     = calculBean.ARendreESP;
                decimal realEmittedCashValue = calculBean.ARendreReelESP;
                decimal totalSalesValue      = calculBean.totalProduits;
                decimal totalBuyValue        = calculBean.totalEchange;
                int     productCount         = calculBean.productCount;
                string  store = ""; //TODO

                Transaction transaction = new Transaction
                {
                    giftCouponValue              = giftCouponValue,
                    couponValue                  = couponValue,
                    usedCouponExchangeValue      = usedCouponExchangeValue,
                    exchangeValue                = exchangeValue,
                    convertedCouponExchangeValue = convertedCouponExchangeValue,
                    discountOfferValue           = discountOfferValue,
                    paycardValue                 = payCardValue,
                    cashValue            = cashValue,
                    realCashValue        = realCashValue,
                    emittedCashValue     = emittedCashValue,
                    realEmittedCashValue = realEmittedCashValue,
                    totalSalesValue      = totalSalesValue,
                    totalBuyValue        = totalBuyValue,
                    productCount         = productCount,
                    store           = store,
                    datetime        = DateTime.Now,
                    transactionType = transactionType.ToString()
                };

                context.Entry(transaction).State = EntityState.Added;
                context.SaveChanges();
                context.Entry(transaction).State = EntityState.Detached;

                return(transaction);
            }
        }
        private void ARendreEspScreen_KeyUp(object sender, KeyEventArgs e)
        {
            ARendreEspScreen.Text.Replace(".", ",");

            if (!decimal.TryParse(ARendreEspScreen.Text, out this.aRendreESP))
            {
                return;
            }
            else
            {
                this.aRendreAVOIR = 0;
                CalculResultBean calculBean = TransactionManager.getFinalCalculResultBean(RemiseCollection, AvoirCollection, EchangeDirectCollection, ProduitsCollection, this.monnaiePayeeESP, this.monnaiePayeeCB, this.monnaiePayeeCHEQUE, this.aRendreAVOIR, this.aRendreESP, getSelectedARendreValue());
                ARendreAvoirScreen.Text = calculBean.ARendreAvoir.ToString();
            }
        }
        public void registerEmittedCouponForVente(CalculResultBean calculBean, Transaction transaction, AvoirTypeEnum transactionSpecificity, ProductTypeEnum onlyOn)
        {
            using (var context = new bourseContainer())
            {
                EmittedCoupon emittedCoupon = new EmittedCoupon
                {
                    datetime               = DateTime.Now,
                    value                  = calculBean.ARendreAvoir,
                    Transaction            = transaction,
                    onlyOn                 = onlyOn.ToString(),
                    transactionSpecificity = transactionSpecificity.ToString()
                };

                context.Entry(emittedCoupon).State = EntityState.Added;
                context.SaveChanges();
                context.Entry(emittedCoupon).State = EntityState.Detached;
            }
        }
        private void ValiderTransactionButton_Click(object sender, RoutedEventArgs e)
        {
            CalculResultBean calculBean = TransactionManager.getFinalCalculResultBean(RemiseCollection, AvoirCollection, EchangeDirectCollection, ProduitsCollection, this.monnaiePayeeESP, this.monnaiePayeeCB, this.monnaiePayeeCHEQUE, this.aRendreAVOIR, this.aRendreESP, getSelectedARendreValue());

            Transaction transaction = TransactionRegister.registerTransaction(calculBean, TransactionTypeEnum.VENTE);

            TransactionRegister.registerAvoirs(this.AvoirCollection, transaction);
            TransactionRegister.registerRemises(this.RemiseCollection, transaction);
            TransactionRegister.registerEchangeDirects(this.EchangeDirectCollection, transaction);
            TransactionRegister.registerProduits(this.ProduitsCollection, transaction);

            //Detecting specificities in the emittedCoupon...
            if (calculBean.ARendreAvoir > 0)
            {
                emittedCouponSpecificitiesPopup             = new EmittedCouponSpecificities();
                emittedCouponSpecificitiesPopup.transaction = transaction;
                emittedCouponSpecificitiesPopup.calculBean  = calculBean;
                emittedCouponSpecificitiesPopup.ShowDialog();
            }
        }
        private void TypePaiementScreen_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            string selectedItem = ((ComboboxBean)TypePaiementScreen.SelectedItem).Value;

            if (selectedItem != "PLUSIEURS")
            {
                this.monnaiePayeeCB     = 0;
                this.monnaiePayeeCHEQUE = 0;
                this.monnaiePayeeESP    = 0;
            }

            CalculResultBean calculBean = TransactionManager.getFinalCalculResultBean(RemiseCollection, AvoirCollection, EchangeDirectCollection, ProduitsCollection, this.monnaiePayeeESP, this.monnaiePayeeCB, this.monnaiePayeeCHEQUE, this.aRendreAVOIR, this.aRendreESP, getSelectedARendreValue());

            if (selectedItem == "PLUSIEURS")
            {
                multipayPopup          = new Multipay();
                multipayPopup.Closing += TypePaiementScreen_Closing;
                multipayPopup.LoadData(calculBean);
                multipayPopup.ShowDialog();
            }
            else
            {
                MultipayText.Text = "";
            }

            if (selectedItem == "ESP")
            {
                ResteAPayerScreen.IsEnabled = true;
                calculateOnUi(true, false, false, false, false, false);
            }
            else if (selectedItem == "PLUSIEURS")
            {
                ResteAPayerScreen.IsEnabled = false;
                calculateOnUi(false, true, false, false, false, false);
            }
            else
            {
                ResteAPayerScreen.IsEnabled = false;
                calculateOnUi(true, false, false, false, false, false);
            }
        }
Beispiel #9
0
        public CalculResultBean getResultBeanWithoutRemises(ObservableCollection <TableAvoir> AvoirCollection,
                                                            ObservableCollection <TableEchangeDirect> EchangeDirectCollection,
                                                            ObservableCollection <TableProduct> ProductsCollection)
        {
            decimal avoirsSum        = getAvoirSumFromCollection(AvoirCollection);
            decimal echangeSum       = getEchangeSumFromCollection(AvoirCollection);
            decimal bonCadeauSum     = getBonCadeauSumFromCollection(AvoirCollection);
            decimal echangeDirectSum = getEchangeDirectSumFromCollection(EchangeDirectCollection);
            decimal productsSum      = getProductsSumFromCollection(ProductsCollection);

            CalculResultBean result = new CalculResultBean
            {
                totalProduits        = productsSum,
                totalAvoir           = avoirsSum,
                totalEchangeDirect   = echangeDirectSum,
                totalEchange         = echangeSum,
                totalEchangeAndAvoir = echangeSum + avoirsSum,
                totalBonCadeau       = bonCadeauSum
            };

            return(result);
        }
 public void LoadData(CalculResultBean _calculBean)
 {
     this.calulBean        = _calculBean;
     ValeurAAtteindre.Text = VALEUR_A_ATTEINDRE_PREFIX + _calculBean.resteAPayer;
 }
Beispiel #11
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);
        }