예제 #1
0
        private void DiscountComboBox_SelectionChanged(object sender, Syncfusion.XForms.ComboBox.SelectionChangedEventArgs e)
        {
            var discount = vm.SelectedDiscount;

            vm.SelectedSaleLine.DiscountId = discount.Id;

            if (discount.Discount == "Senior Citizen Discount")
            {
                decimal price;
                decimal discountAmount;

                vm.SelectedSaleLine.DiscountRate = discount.DiscountRate;

                if (vm.SelectedSaleLine.TaxRate > 0)
                {
                    price = Math.Round(vm.SelectedSaleLine.Price - Math.Round(vm.SelectedSaleLine.Price / (1 + vm.SelectedSaleLine.TaxRate / 100) * (vm.SelectedSaleLine.TaxRate / 100), 2), 2);
                }
                else
                {
                    price = Math.Round(vm.SelectedSaleLine.Price, 2);
                }

                discountAmount = Math.Round(price * Math.Round(discount.DiscountRate / 100, 2), 2);
                vm.SelectedSaleLine.DiscountAmount = Math.Round(discountAmount, 2);
                vm.SelectedSaleLine.NetPrice       = Math.Round(vm.SelectedSaleLine.Price, 2) - Math.Round(discountAmount, 2);

                vm.SelectedSaleLine.Amount    = vm.ComputeAmount();
                vm.SelectedSaleLine.TaxAmount = vm.ComputeVatAmount();
            }
            else
            {
                if (discount.Discount == "Variable Discount")
                {
                    vm.CanEditDiscount = false;
                }
                else
                {
                    vm.CanEditDiscount = true;
                }

                var discountRate = vm.SelectedSaleLine.DiscountRate > 0 ? vm.SelectedSaleLine.DiscountRate : discount.DiscountRate;

                vm.SelectedSaleLine.DiscountRate = Math.Round(discountRate, 2);

                if (discount.Discount != "Variable Discount")
                {
                    vm.SelectedSaleLine.DiscountAmount = Math.Round(vm.SelectedSaleLine.Price, 2) * Math.Round(discountRate / 100, 2);
                }
                else
                {
                    vm.SelectedSaleLine.DiscountAmount = vm.SelectedSaleLine.DiscountRate > 0 ? vm.SelectedSaleLine.DiscountAmount : Math.Round(vm.SelectedSaleLine.Price, 2) * Math.Round(discountRate / 100, 2);
                }

                vm.SelectedSaleLine.NetPrice = Math.Round(vm.SelectedSaleLine.Price, 2) - Math.Round(vm.SelectedSaleLine.DiscountAmount, 2);

                vm.SelectedSaleLine.Amount    = vm.ComputeAmount();
                vm.SelectedSaleLine.TaxAmount = vm.ComputeVatAmount();
            }

            vm.ExecuteRefreshSelectedSaleLine();
        }