示例#1
0
        private void UpdatePriceProperties()
        {
            if (_crudWidgetPrice.Validated && _crudWidgetQuantity.Validated && _crudWidgetDiscount.Validated && _crudWidgetSelectVatRate.Validated)
            {
                PriceProperties priceProperties = PriceProperties.GetPriceProperties(
                    PricePropertiesSourceMode.FromPriceUser,
                    false, //PriceWithVat : Always use PricesWithoutVat in Invoices
                    _articlePrice,
                    FrameworkUtils.StringToDecimal(_entryBoxValidationQuantity.EntryValidation.Text),
                    FrameworkUtils.StringToDecimal(_entryBoxValidationDiscount.EntryValidation.Text),
                    _discountGlobal,
                    _entryBoxSelectVatRate.Value.Value
                    );
                //priceProperties.SendToLog(article.Designation);

                //Update UI / Display with ExchangeRate
                _entryBoxValidationTotalNet.EntryValidation.Text   = FrameworkUtils.DecimalToString(priceProperties.TotalNet * _currencyDisplay.ExchangeRate);
                _entryBoxValidationTotalFinal.EntryValidation.Text = FrameworkUtils.DecimalToString(priceProperties.TotalFinal * _currencyDisplay.ExchangeRate);
            }
            else
            {
                _entryBoxValidationTotalNet.EntryValidation.Text   = FrameworkUtils.DecimalToString(0.0m);
                _entryBoxValidationTotalFinal.EntryValidation.Text = FrameworkUtils.DecimalToString(0.0m);
            }
        }
示例#2
0
        //Change Price
        void _buttonKeyChangePrice_Clicked(object sender, EventArgs e)
        {
            decimal oldValueQuantity = CurrentOrderDetails.Lines[_listStoreModelSelectedIndex].Properties.Quantity;
            decimal oldValuePrice    = CurrentOrderDetails.Lines[_listStoreModelSelectedIndex].Properties.PriceFinal;

            MoneyPadResult result        = PosMoneyPadDialog.RequestDecimalValue(_sourceWindow, Resx.window_title_dialog_moneypad_product_price, oldValuePrice);
            decimal        newValuePrice = result.Value;

            if (result.Response == ResponseType.Ok && newValuePrice > 0)
            {
                //Create a Fresh Object to Get Input Price and Calc from TotalFinal with Quantity 1, Without Touch Quantity in current Line
                PriceProperties priceProperties = PriceProperties.GetPriceProperties(
                    PricePropertiesSourceMode.FromTotalFinal,
                    CurrentOrderDetails.Lines[_listStoreModelSelectedIndex].Properties.PriceWithVat,
                    newValuePrice,
                    1.0m,
                    CurrentOrderDetails.Lines[_listStoreModelSelectedIndex].Properties.DiscountArticle,
                    CurrentOrderDetails.Lines[_listStoreModelSelectedIndex].Properties.DiscountGlobal,
                    CurrentOrderDetails.Lines[_listStoreModelSelectedIndex].Properties.Vat
                    );

                //Update orderDetails
                CurrentOrderDetails.Update(_listStoreModelSelectedIndex, oldValueQuantity, priceProperties.PriceUser);
                //Update TreeView Model Price
                _listStoreModel.SetValue(_treeIter, (int)TicketListColumns.Price, FrameworkUtils.DecimalToString(newValuePrice));
                //Update Total
                decimal totalLine = CurrentOrderDetails.Lines[_listStoreModelSelectedIndex].Properties.TotalFinal;
                _listStoreModel.SetValue(_treeIter, (int)TicketListColumns.Total, FrameworkUtils.DecimalToString(totalLine));
            }
            UpdateTicketListTotal();
        }
示例#3
0
        public void Insert(Guid pArticleId, String pDesignation, PriceProperties pPriceProperties)
        {
            OrderDetailLine line = new OrderDetailLine(pArticleId, pDesignation, pPriceProperties);

            _lines.Add(line);
            CalculateTotals();
        }
示例#4
0
        public void Insert(Guid pArticleId, decimal pQuantity, TaxSellType pTaxSellType)
        {
            FIN_Article     article         = (FIN_Article)FrameworkUtils.GetXPGuidObject(typeof(FIN_Article), pArticleId);
            PriceProperties priceProperties = FrameworkUtils.GetArticlePrice(article, pTaxSellType);

            priceProperties.Quantity = pQuantity;
            Insert(article.Oid, article.Designation, priceProperties);
        }
示例#5
0
        //Update TreeView TotalFinal, used when we change Customer Discount, this way we update Total Final for all Articles in TreeView
        public void UpdateTotalFinal()
        {
            bool debug = false;

            try
            {
                if (_treeViewArticles.DataSource.Rows.Count > 0)
                {
                    FIN_Article article;
                    //Get Discount from Select Customer
                    decimal discountGlobal = FrameworkUtils.StringToDecimal(_pagePad2.EntryBoxCustomerDiscount.EntryValidation.Text);
                    decimal exchangeRate   = _pagePad1.EntryBoxSelectConfigurationCurrency.Value.ExchangeRate;

                    //Update DataTable Rows
                    foreach (DataRow item in _treeViewArticles.DataSource.Rows)
                    {
                        article = (FIN_Article)FrameworkUtils.GetXPGuidObject(typeof(FIN_Article), new Guid(item.ItemArray[item.Table.Columns["Oid"].Ordinal].ToString()));

                        //Calc PriceProperties
                        PriceProperties priceProperties = PriceProperties.GetPriceProperties(
                            PricePropertiesSourceMode.FromPriceNet,
                            false,                                                                                                       //PriceWithVat
                            Convert.ToDecimal(item.ItemArray[item.Table.Columns["Price"].Ordinal]),                                      //Price
                            Convert.ToDecimal(item.ItemArray[item.Table.Columns["Quantity"].Ordinal]),                                   //Quantity
                            Convert.ToDecimal(item.ItemArray[item.Table.Columns["Discount"].Ordinal]),                                   //Discount
                            discountGlobal,
                            (item.ItemArray[item.Table.Columns["ConfigurationVatRate.Value"].Ordinal] as FIN_ConfigurationVatRate).Value //VatValue
                            );

                        //Finnally Update DataSourceRow Value with calculated PriceProperties
                        if (debug)
                        {
                            _log.Debug(string.Format("#1:TotalFinal DataSourceRow: [{0}], discountGlobal: [{1}]", FrameworkUtils.DecimalToString(Convert.ToDecimal(_treeViewArticles.DataSourceRow["TotalFinal"])), FrameworkUtils.DecimalToString(discountGlobal)));
                        }
                        //Update Display Values with ExchangeRate Multiplier
                        item["PriceDisplay"] = priceProperties.PriceNet * exchangeRate;
                        item["TotalNet"]     = (priceProperties.TotalNet * exchangeRate);
                        item["TotalFinal"]   = priceProperties.TotalFinal * exchangeRate;
                        item["PriceFinal"]   = priceProperties.PriceFinal * exchangeRate;
                        if (debug)
                        {
                            _log.Debug(string.Format("#2:TotalFinal DataSourceRow: [{0}], discountGlobal: [{1}]", FrameworkUtils.DecimalToString(Convert.ToDecimal(_treeViewArticles.DataSourceRow["TotalFinal"])), FrameworkUtils.DecimalToString(discountGlobal)));
                        }
                    }
                    //Call Refresh, Recreate TreeView from Model
                    _treeViewArticles.Refresh();
                }
            }
            catch (Exception ex)
            {
                _log.Error(ex.Message, ex);
            }
        }
示例#6
0
        void _entryBoxSelectArticle_ClosePopup(object sender, EventArgs e)
        {
            //Prepare Objects


            fin_article article = _entryBoxSelectArticle.Value;
            fin_configurationpricetype configurationPriceTypeDefault = (fin_configurationpricetype)GlobalFramework.SessionXpo.GetObjectByKey(typeof(fin_configurationpricetype), SettingsApp.XpoOidConfigurationPriceTypeDefault);


            _entryBoxSelectArticleCode.Entry.Text = article.Code;
            _entryBoxSelectArticle.Entry.Text     = article.Designation;
            //Get PriceType from Customer.PriceType or from default if a New Customer or a Customer without PriceType Defined in BackOffice, always revert to Price1
            PriceType priceType = (_customer != null)
                ? (PriceType)_customer.PriceType.EnumValue
                : (PriceType)configurationPriceTypeDefault.EnumValue
            ;

            //Common changes for MediaNova | Non-MediaNova Articles | Here Prices are always in Retail Mode
            PriceProperties priceProperties = FrameworkUtils.GetArticlePrice(article, priceType, TaxSellType.Normal);

            //Price
            _articlePrice = priceProperties.PriceNet;
            //Display Price
            _entryBoxValidationPrice.EntryValidation.Text        = FrameworkUtils.DecimalToString(_articlePrice);
            _entryBoxValidationPriceDisplay.EntryValidation.Text = FrameworkUtils.DecimalToString(_articlePrice * _currencyDisplay.ExchangeRate);
            _entryBoxValidationQuantity.EntryValidation.Text     = (article.DefaultQuantity > 0) ? FrameworkUtils.DecimalToString(article.DefaultQuantity) : FrameworkUtils.DecimalToString(1.0m);
            _entryBoxValidationDiscount.EntryValidation.Text     = FrameworkUtils.DecimalToString(article.Discount);

            //VatRate
            _entryBoxSelectVatRate.Value      = article.VatDirectSelling;
            _entryBoxSelectVatRate.Entry.Text = article.VatDirectSelling.Designation;

            //Default Vat Exception Reason
            if (article.VatExemptionReason != null)
            {
                _entryBoxSelectVatExemptionReason.Value      = article.VatExemptionReason;
                _entryBoxSelectVatExemptionReason.Entry.Text = article.VatExemptionReason.Designation;
            }

            //Toggle ToggleVatExemptionReasonEditMode Validation
            ToggleVatExemptionReasonEditMode();
            //Update Price Properties
            UpdatePriceProperties();
        }
示例#7
0
 //public OrderDetailLine(Guid pArticleOid, String pDesignation, decimal pQnt, decimal pPrice, decimal pDiscount, decimal pVat, bool pHasPrice, bool pPriceWithVAT)
 public OrderDetailLine(Guid pArticleOid, String pDesignation, PriceProperties pPriceProperties)
 {
     _articleOid  = pArticleOid;
     _designation = pDesignation;
     _properties  = pPriceProperties;
 }
示例#8
0
        //Change Price
        void _buttonKeyChangePrice_Clicked(object sender, EventArgs e)
        {
            try
            {
                //Get Index of article with correct final price
                _listStoreModelSelectedIndex = _currentOrderDetails.Lines.FindIndex(item => item.ArticleOid == (Guid)_listStoreModel.GetValue(_treeIter,
                                                                                                                                              (int)TicketListColumns.ArticleId) && Math.Round(Convert.ToDecimal(item.Properties.PriceFinal), SettingsApp.DecimalRoundTo) == Convert.ToDecimal(_listStoreModel.GetValue(_treeIter, (int)TicketListColumns.Price)));

                decimal oldValueQuantity = CurrentOrderDetails.Lines[_listStoreModelSelectedIndex].Properties.Quantity;
                decimal oldValuePrice    = CurrentOrderDetails.Lines[_listStoreModelSelectedIndex].Properties.PriceFinal;

                MoneyPadResult result        = PosMoneyPadDialog.RequestDecimalValue(_sourceWindow, resources.CustomResources.GetCustomResources(GlobalFramework.Settings["customCultureResourceDefinition"], "window_title_dialog_moneypad_product_price"), oldValuePrice);
                decimal        newValuePrice = result.Value;

                if (result.Response == ResponseType.Ok && newValuePrice > 0)
                {
                    //Create a Fresh Object to Get Input Price and Calc from TotalFinal with Quantity 1, Without Touch Quantity in current Line
                    PriceProperties priceProperties = PriceProperties.GetPriceProperties(
                        PricePropertiesSourceMode.FromTotalFinal,
                        CurrentOrderDetails.Lines[_listStoreModelSelectedIndex].Properties.PriceWithVat,
                        newValuePrice,
                        1.0m,
                        CurrentOrderDetails.Lines[_listStoreModelSelectedIndex].Properties.DiscountArticle,
                        CurrentOrderDetails.Lines[_listStoreModelSelectedIndex].Properties.DiscountGlobal,
                        CurrentOrderDetails.Lines[_listStoreModelSelectedIndex].Properties.Vat
                        );
                    int countDuplicatedArticles = 0;
                    int i = 0;
                    foreach (var line in _currentOrderDetails.Lines)
                    {
                        if (_listStoreModelSelectedIndex == i)
                        {
                            countDuplicatedArticles++;
                        }
                        if (line.ArticleOid == CurrentOrderDetails.Lines[_listStoreModelSelectedIndex].ArticleOid && line.Properties.PriceUser == priceProperties.PriceUser)
                        {
                            countDuplicatedArticles++;
                        }
                        i++;
                    }

                    if (countDuplicatedArticles > 1)
                    {
                        int oldIndex = _listStoreModelSelectedIndex;
                        _listStoreModelSelectedIndex = _currentOrderDetails.Lines.FindIndex(item => item.ArticleOid == (Guid)_listStoreModel.GetValue(_treeIter, (int)TicketListColumns.ArticleId) &&
                                                                                            item.Properties.PriceFinal == priceProperties.PriceFinal);
                        oldValueQuantity += CurrentOrderDetails.Lines[_listStoreModelSelectedIndex].Properties.Quantity;
                        CurrentOrderDetails.Delete(oldIndex);
                        _listStoreModel.Remove(ref _treeIter);
                    }

                    //Update orderDetails
                    CurrentOrderDetails.Update(_listStoreModelSelectedIndex, oldValueQuantity, priceProperties.PriceUser);
                    //Update TreeView Model Price
                    _listStoreModel.SetValue(_treeIter, (int)TicketListColumns.Price, FrameworkUtils.DecimalToString(newValuePrice));
                    //Update Total
                    decimal totalLine = CurrentOrderDetails.Lines[_listStoreModelSelectedIndex].Properties.TotalFinal;
                    _listStoreModel.SetValue(_treeIter, (int)TicketListColumns.Total, FrameworkUtils.DecimalToString(totalLine));
                }
                UpdateTicketListTotal();
                UpdateModel();
                UpdateTicketListButtons();
            }
            catch (Exception ex)
            {
                _log.Error(ex.Message, ex);
            }
        }