Beispiel #1
0
        public IActionResult UpdateEMoney([FromBody] EMoney data)
        {
            var hasil = new OutputData()
            {
                IsSucceed = true
            };
            var datas = (from c in db.GetAllData <EMoney>()
                         where c.Id == data.Id
                         select c).ToList();

            if (datas != null && datas.Count() > 0)
            {
                var seldata = datas[0];
                data.Id         = seldata.Id;
                hasil.IsSucceed = db.InsertData <EMoney>(data);
                var seluser = db.GetDataById <UserProfile>(data.OwnerId);
                foreach (var item in seluser.MyWallet)
                {
                    if (item.Id == data.Id)
                    {
                        item.Balance   = data.Balance;
                        item.IsActive  = data.IsActive;
                        item.IsDefault = data.IsDefault;
                    }
                }
                db.InsertData <UserProfile>(seluser);
            }
            else
            {
                hasil.IsSucceed    = false;
                hasil.ErrorMessage = "card is not exists";
            }
            return(Ok(hasil));
        }
Beispiel #2
0
    public DBItem GetDBMoney(EMoney moneyType)
    {
        DBItem db = null;

        DictItem.TryGetValue((int)moneyType, out db);
        return(db);
    }
Beispiel #3
0
 public long GetResCount(EMoney type)
 {
     if (resMap.ContainsKey(type))
     {
         return(resMap[type]);
     }
     return(0);
 }
        /// <summary>
        /// Default constructor for <see cref="DefaultOrderCalculation"/>.
        /// </summary>
        /// <param name="parentOrder">The calculations are based on the <see cref="Order"/> passed with the constructor.</param>
        public DefaultOrderCalculation(Order.Order parentOrder, bool calculate = false)
        {
            _parentOrder = parentOrder;
            ArticleSummary = new EMoney(0, true);
            NetArticleSummary = new EMoney(0, false);
            OrderSummary = new EMoney(0, true);
            NetOrderSummary = new EMoney(0, false);
            OrderRebate = new EMoney(0, true);
            NetShipment = new EMoney(0, false);
            NetOrderRebate = new EMoney(0, false);
            TaxValues = new ObservableCollection<Biller.Core.Models.TaxClassMoneyModel>();
            parentOrder.OrderedArticles.CollectionChanged += new System.Collections.Specialized.NotifyCollectionChangedEventHandler(OnOrderedArticleCollectionChanged);
            parentOrder.OrderRebate.PropertyChanged += article_PropertyChanged;
            parentOrder.PaymentMethode.PropertyChanged += article_PropertyChanged;
            parentOrder.OrderShipment.PropertyChanged += article_PropertyChanged;
            parentOrder.PropertyChanged += parentOrder_PropertyChanged;

            if (calculate)
                CalculateValues();
        }
Beispiel #5
0
        public IActionResult AddEMoney([FromBody] EMoney data)
        {
            var hasil = new OutputData()
            {
                IsSucceed = true
            };

            //verifikasi emoney
            //...
            data.Id         = db.GetSequence <EMoney>();
            hasil.IsSucceed = db.InsertData <EMoney>(data);
            var seluser = db.GetDataById <UserProfile>(data.OwnerId);

            if (seluser.MyWallet == null)
            {
                seluser.MyWallet = new List <EMoney>();
            }
            seluser.MyWallet.Add(data);
            db.InsertData <UserProfile>(seluser);
            return(Ok(hasil));
        }
        public virtual void CalculateValues()
        {
            TaxValues.Clear();
            ArticleSummary.Amount = 0;
            OrderedWeight = 0;
            // iterate through each article and add its value
            foreach (var article in _parentOrder.OrderedArticles)
            {
                ArticleSummary.Amount += article.RoundedGrossOrderValue.Amount;
                OrderedWeight += article.ArticleWeight * article.OrderedAmount;
                // taxclass listing
                if (TaxValues.Any(x => x.TaxClass.Name == article.TaxClass.Name))
                    TaxValues.Single(x => x.TaxClass.Name == article.TaxClass.Name).Value += article.ExactVAT;
                else
                    TaxValues.Add(new Biller.Core.Models.TaxClassMoneyModel() { Value = new Money(article.ExactVAT), TaxClass = article.TaxClass });
            }

            //NetArticleSummary
            NetArticleSummary.Amount = ArticleSummary.Amount;
            foreach (var item in TaxValues)
                NetArticleSummary.Amount -= item.Value.Amount;

            OrderSummary.Amount = ArticleSummary.Amount;
            NetOrderSummary.Amount = NetArticleSummary.Amount;
            
            // Discount
            if (_parentOrder.OrderRebate.Amount > 0)
            {
                var temp = OrderSummary.Amount;
                OrderSummary.Amount = OrderSummary.Amount * (1 - _parentOrder.OrderRebate.Amount);
                NetOrderRebate.Amount = NetOrderSummary.Amount - NetOrderSummary.Amount * (1 - _parentOrder.OrderRebate.Amount);
                NetOrderSummary.Amount = NetOrderSummary.Amount * (1 - _parentOrder.OrderRebate.Amount);
                OrderRebate = new EMoney(temp - OrderSummary.Amount);
                foreach (var item in TaxValues)               
                    item.Value = item.Value * (1 - _parentOrder.OrderRebate.Amount);
            }
            else
                OrderRebate = new EMoney(0);

            // Shipping
            if (!String.IsNullOrEmpty(_parentOrder.OrderShipment.Name))
            {
                // Germany: Supplementary needs to have the tax, that is used most on the invoice
                // Austria: Shipping has reduced taxes
                // CH: 
                OrderSummary.Amount += _parentOrder.OrderShipment.DefaultPrice.Amount;
                dynamic keyValueStore = Biller.UI.ViewModel.MainWindowViewModel.GetCurrentMainWindowViewModel().SettingsTabViewModel.KeyValueStore;
                var UseGermanSupplementaryTaxRegulation = keyValueStore.UseGermanSupplementaryTaxRegulation;
                if (UseGermanSupplementaryTaxRegulation == null)
                    UseGermanSupplementaryTaxRegulation = false;
                if (UseGermanSupplementaryTaxRegulation)
                {
                    var wholetax = 0.0;
                    var wholeShipmentTax = 0.0;
                    foreach (var item in TaxValues)
                        wholetax += item.Value.Amount;

                    List<Biller.Core.Models.TaxClassMoneyModel> temporaryTaxes = new List<Biller.Core.Models.TaxClassMoneyModel>();
                    var highestTaxClass = TaxValues.FirstOrDefault();
                    foreach (var taxitem in TaxValues)
                        if (taxitem.Value > highestTaxClass.Value)
                            highestTaxClass = taxitem;

                    var shipment = new OrderedArticle(new Article());
                    shipment.TaxClass = highestTaxClass.TaxClass;
                    shipment.OrderedAmount = 1;
                    shipment.OrderPrice.Price1 = _parentOrder.OrderShipment.DefaultPrice;

                    var TaxSupplementaryWorkSeparate = keyValueStore.TaxSupplementaryWorkSeperate;
                    if (TaxSupplementaryWorkSeparate == null)
                        TaxSupplementaryWorkSeparate = false;

                    if (TaxSupplementaryWorkSeparate)
                        temporaryTaxes.Add(new Biller.Core.Models.TaxClassMoneyModel() { Value = new Money(shipment.ExactVAT), TaxClass = highestTaxClass.TaxClass, TaxClassAddition = " auf Nebenleistungen" });
                    else
                        TaxValues.Where(x=>x.TaxClass.Equals(highestTaxClass.TaxClass)).First().Value += (shipment.ExactVAT);
                    wholeShipmentTax +=  shipment.ExactVAT;

                    NetShipment.Amount = _parentOrder.OrderShipment.DefaultPrice.Amount - wholeShipmentTax;
                    NetOrderSummary.Amount += NetShipment.Amount;

                    foreach (Biller.Core.Models.TaxClassMoneyModel temporaryTax in temporaryTaxes)
                        TaxValues.Add(temporaryTax);
                }
                else
                {
                    var shipment = new OrderedArticle(new Article());
                    try
                    {
                        shipment.TaxClass = (TaxClass)keyValueStore.ShipmentTaxClass;
                        shipment.OrderedAmount = 1;
                        shipment.OrderPrice.Price1 = _parentOrder.OrderShipment.DefaultPrice;
                    }
                    catch
                    {
                        Biller.UI.ViewModel.MainWindowViewModel.GetCurrentMainWindowViewModel().NotificationManager.ShowNotification("Fehler bei Berechnung des Betrages", "Es wurde keine Steuerklasse für Nebenleistungen angegeben. Überprüfen Sie die Einstellungen.");
                        return;
                    }
                    TaxValues.Add(new Biller.Core.Models.TaxClassMoneyModel() { Value = new Money(shipment.ExactVAT), TaxClass = shipment.TaxClass, TaxClassAddition = " auf Nebenleistungen" });
                    NetShipment.Amount = _parentOrder.OrderShipment.DefaultPrice.Amount - shipment.ExactVAT;
                    NetOrderSummary.Amount += NetShipment.Amount;
                }
            }

            // Skonto
            if (_parentOrder.PaymentMethode.Discount.Amount > 0)
                CashBack = new EMoney(_parentOrder.PaymentMethode.Discount.Amount * ArticleSummary.Amount);
            else
                CashBack = new EMoney(0);
            
            RaiseUpdateManually("ArticleSummary");
            RaiseUpdateManually("TaxValues");
            RaiseUpdateManually("OrderRebate");
            RaiseUpdateManually("CashBack");
            RaiseUpdateManually("NetArticleSummary");
            RaiseUpdateManually("NetOrderSummary");
            RaiseUpdateManually("OrderSummary");
            RaiseUpdateManually("NetShipment");
            RaiseUpdateManually("NetOrderRebate");
        }
        public override void CalculateValues()
        {
            TaxValues.Clear();
            ArticleSummary.Amount = 0;
            // iterate through each article and add its value
            foreach (var article in _parentOrder.OrderedArticles)
            {
                ArticleSummary.Amount += article.RoundedGrossOrderValue.Amount;

                // taxclass listing
                //if (TaxValues.Any(x => x.TaxClass.Name == article.TaxClass.Name))
                //    TaxValues.Single(x => x.TaxClass.Name == article.TaxClass.Name).Value += article.ExactVAT;
                //else
                //    TaxValues.Add(new Biller.Core.Models.TaxClassMoneyModel() { Value = new Money(article.ExactVAT), TaxClass = article.TaxClass });
            }

            //NetArticleSummary
            //NetArticleSummary.Amount = ArticleSummary.Amount;
            //foreach (var item in TaxValues)
            //    NetArticleSummary.Amount -= item.Value.Amount;

            OrderSummary.Amount = ArticleSummary.Amount;
            //NetOrderSummary.Amount = NetArticleSummary.Amount;

            // Discount
            if (_parentOrder.OrderRebate.Amount > 0)
            {
                var temp = OrderSummary.Amount;
                OrderSummary.Amount = OrderSummary.Amount * (1 - _parentOrder.OrderRebate.Amount);
                //NetOrderRebate.Amount = NetOrderSummary.Amount - NetOrderSummary.Amount * (1 - _parentOrder.OrderRebate.Amount);
                //NetOrderSummary.Amount = NetOrderSummary.Amount * (1 - _parentOrder.OrderRebate.Amount);
                OrderRebate = new EMoney(temp - OrderSummary.Amount);
                //foreach (var item in TaxValues)
                //    item.Value = item.Value * (1 - _parentOrder.OrderRebate.Amount);
            }
            else
                OrderRebate = new EMoney(0);

            // Shipping
            if (!String.IsNullOrEmpty(_parentOrder.OrderShipment.Name))
            {
                // Just for Germany
                // We need to split the taxes with the ratio it is before
                // Austria: Shipping has reduced taxes
                // CH: 
                OrderSummary.Amount += _parentOrder.OrderShipment.DefaultPrice.Amount;
                //dynamic keyValueStore = Biller.UI.ViewModel.MainWindowViewModel.GetCurrentMainWindowViewModel().SettingsTabViewModel.KeyValueStore;
                //var UseGermanSupplementaryTaxRegulation = keyValueStore.UseGermanSupplementaryTaxRegulation;
                //if (UseGermanSupplementaryTaxRegulation == null)
                //    UseGermanSupplementaryTaxRegulation = false;
                //if (UseGermanSupplementaryTaxRegulation)
                //{
                //    var wholetax = 0.0;
                //    var wholeShipmentTax = 0.0;
                //    foreach (var item in TaxValues)
                //        wholetax += item.Value.Amount;

                //    List<Biller.Core.Models.TaxClassMoneyModel> temporaryTaxes = new List<Biller.Core.Models.TaxClassMoneyModel>();
                //    foreach (var taxitem in TaxValues)
                //    {
                //        var ratio = 1 / (wholetax / taxitem.Value.Amount);
                //        var shipment = new OrderedArticle(new Article());
                //        shipment.TaxClass = taxitem.TaxClass;
                //        shipment.OrderedAmount = 1;
                //        shipment.OrderPrice.Price1 = _parentOrder.OrderShipment.DefaultPrice;

                //        var TaxSupplementaryWorkSeparate = keyValueStore.TaxSupplementaryWorkSeperate;
                //        if (TaxSupplementaryWorkSeparate == null)
                //            TaxSupplementaryWorkSeparate = false;

                //        if (TaxSupplementaryWorkSeparate)
                //            temporaryTaxes.Add(new Biller.Core.Models.TaxClassMoneyModel() { Value = new Money(ratio * shipment.ExactVAT), TaxClass = taxitem.TaxClass, TaxClassAddition = " auf Nebenleistungen" });
                //        else
                //            taxitem.Value += (ratio * shipment.ExactVAT);
                //        wholeShipmentTax += ratio * shipment.ExactVAT;
                //    }
                //    NetShipment.Amount = _parentOrder.OrderShipment.DefaultPrice.Amount - wholeShipmentTax;
                //    NetOrderSummary.Amount += NetShipment.Amount;

                //    foreach (Biller.Core.Models.TaxClassMoneyModel temporaryTax in temporaryTaxes)
                //        TaxValues.Add(temporaryTax);
                //}
                //else
                //{
                    //var shipment = new OrderedArticle(new Article());
                    //try
                    //{
                    //    //shipment.TaxClass = (TaxClass)keyValueStore.ShipmentTaxClass;
                    //    shipment.OrderedAmount = 1;
                    //    shipment.OrderPrice.Price1 = _parentOrder.OrderShipment.DefaultPrice;
                    //}
                    //catch
                    //{
                    //    Biller.UI.ViewModel.MainWindowViewModel.GetCurrentMainWindowViewModel().NotificationManager.ShowNotification("Fehler bei Berechnung des Betrages", "Es wurde keine Steuerklasse für Nebenleistungen angegeben. Überprüfen Sie die Einstellungen.");
                    //    return;
                    //}
                    //TaxValues.Add(new Biller.Core.Models.TaxClassMoneyModel() { Value = new Money(shipment.ExactVAT), TaxClass = shipment.TaxClass, TaxClassAddition = " auf Nebenleistungen" });
                    NetShipment.Amount = _parentOrder.OrderShipment.DefaultPrice.Amount;
                    //OrderSummary.Amount += NetShipment.Amount;
                //}
            }

            // Skonto
            if (_parentOrder.PaymentMethode.Discount.Amount > 0)
                CashBack = new EMoney(_parentOrder.PaymentMethode.Discount.Amount * ArticleSummary.Amount);
            else
                CashBack = new EMoney(0);

            RaiseUpdateManually("ArticleSummary");
            RaiseUpdateManually("TaxValues");
            RaiseUpdateManually("OrderRebate");
            RaiseUpdateManually("CashBack");
            RaiseUpdateManually("NetArticleSummary");
            RaiseUpdateManually("NetOrderSummary");
            RaiseUpdateManually("OrderSummary");
            RaiseUpdateManually("NetShipment");
            RaiseUpdateManually("NetOrderRebate");
        }