Ejemplo n.º 1
0
        public TaxCalculationModel GetCalculatedTax(TaxType eTaxType, decimal Qty, decimal Price, decimal BasicAmt, decimal Taxslab, decimal totalAmount)
        {
            TaxCalculationModel objIncTax = new TaxCalculationModel();

            switch (eTaxType)
            {
            case TaxType.VATExl:

                break;

            case TaxType.VATIncl:
                objIncTax = VATInclusive(Qty, Price, BasicAmt, Taxslab, totalAmount);
                break;

            case TaxType.CSTExl:

                break;

            case TaxType.CSTIncl:

                break;
            }


            return(objIncTax);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Stores the tax calculation results in the database
        /// </summary>
        /// <param name="model">TaxCalculationModel</param>
        /// <returns>Boolean result</returns>
        public async Task <bool> SaveAsync(TaxCalculationModel model)
        {
            try
            {
                if (string.IsNullOrEmpty(_connectionString))
                {
                    throw new ArgumentNullException($"The {nameof(TaxCalculationRepository)} was unable to retrieve the database connection string from config.");
                }

                using (var context = new DataContext(_connectionString))
                {
                    context.TaxCalculations.Add(model);
                    var result = await context.SaveChangesAsync();

                    return(result > 0);
                }
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "Error while trying to store tax calculation.");

                // rethrow to preserve stack details
                throw;
            }
        }
Ejemplo n.º 3
0
        private TaxCalculationModel VATInclusive(decimal Qty, decimal Price, decimal BasicAmt, decimal Taxslab, decimal totalAmount)
        {
            //1. Qty, Taxslab, (price or basic amount or total amount)

            TaxCalculationModel objIncTax = new TaxCalculationModel();

            if (Qty == 0 && Price == 0 && BasicAmt == 0 && totalAmount == 0)
            {
                return(objIncTax);
            }

            //1. Only Qty and Total Amount is given

            if (totalAmount > 0)
            {
                Price = Price == 0? (totalAmount / Qty) - (totalAmount / Qty) * (Taxslab / (100 + Taxslab)):Price;
            }

            //2. Only Qty and Price is given

            //3. Only Qty and Basic Amount is given
            if (BasicAmt > 0)
            {
                Price = Price == 0 ? BasicAmt / Qty : Price;
            }

            //4. Only Qty, Price and Basic Amount is given

            objIncTax.NetAmount   = (Qty * Price);
            objIncTax.TaxAmount   = (objIncTax.NetAmount * Taxslab) / (100 + Taxslab);
            objIncTax.BasicAmount = objIncTax.NetAmount - objIncTax.TaxAmount;
            objIncTax.TotalAmount = objIncTax.BasicAmount + objIncTax.TaxAmount;

            objIncTax.Price = Price;


            //if (Price == 0)
            //{
            //    Price = BasicAmt / Qty;
            //    objIncTax.NetAmount = (Qty * Price);
            //    objIncTax.TaxAmount = (objIncTax.NetAmount * Taxslab) / (100 + Taxslab);
            //    objIncTax.BasicAmount = objIncTax.NetAmount - objIncTax.TaxAmount;
            //    objIncTax.TotalAmount = objIncTax.BasicAmount + objIncTax.TaxAmount;
            //    objIncTax.Price = Price;

            //}
            //else
            //{
            //    objIncTax.NetAmount = (Qty * Price);
            //    objIncTax.TaxAmount = (objIncTax.NetAmount * Taxslab) / (100 + Taxslab);
            //    objIncTax.BasicAmount = objIncTax.NetAmount - objIncTax.TaxAmount;
            //    objIncTax.TotalAmount = objIncTax.BasicAmount + objIncTax.TaxAmount;
            //    objIncTax.Price = Price;
            //}

            return(objIncTax);
        }
Ejemplo n.º 4
0
        public TaxCalculationModel CSTExeclusive(decimal Qty, decimal Price, decimal BasicAmt, decimal Taxslab)
        {
            TaxCalculationModel objExeTax = new TaxCalculationModel();

            objExeTax.NetAmount   = (Qty * Price);
            objExeTax.TaxAmount   = (objExeTax.NetAmount * Taxslab) / (100);
            objExeTax.BasicAmount = objExeTax.NetAmount;
            objExeTax.TotalAmount = objExeTax.BasicAmount + objExeTax.TaxAmount;
            return(objExeTax);
        }
Ejemplo n.º 5
0
        public TaxCalculationModel LGSTInclusive(decimal Qty, decimal Price, decimal BasicAmt, decimal Taxslab)
        {
            TaxCalculationModel objIncTax = new TaxCalculationModel();

            objIncTax.NetAmount   = (Qty * Price);
            objIncTax.TaxAmount   = (objIncTax.NetAmount * Taxslab) / (100 + Taxslab);
            objIncTax.CGSTAmount  = objIncTax.TaxAmount / 2;
            objIncTax.SGSTAmount  = objIncTax.TaxAmount / 2;
            objIncTax.BasicAmount = objIncTax.NetAmount - objIncTax.TaxAmount;
            objIncTax.TotalAmount = objIncTax.BasicAmount + objIncTax.TaxAmount;
            return(objIncTax);
        }
Ejemplo n.º 6
0
        private TaxCalculationModel CSTInclusive(decimal Qty, decimal Price, decimal BasicAmt, decimal Taxslab)
        {
            TaxCalculationModel objIncTax = new TaxCalculationModel();

            if (Price == 0)
            {
                Price = BasicAmt / Qty;
                objIncTax.NetAmount   = (Qty * Price);
                objIncTax.TaxAmount   = (objIncTax.NetAmount * Taxslab) / (100 + Taxslab);
                objIncTax.BasicAmount = objIncTax.NetAmount - objIncTax.TaxAmount;
                objIncTax.TotalAmount = objIncTax.BasicAmount + objIncTax.TaxAmount;
            }
            else
            {
                objIncTax.NetAmount   = (Qty * Price);
                objIncTax.TaxAmount   = (objIncTax.NetAmount * Taxslab) / (100 + Taxslab);
                objIncTax.BasicAmount = objIncTax.NetAmount - objIncTax.TaxAmount;
                objIncTax.TotalAmount = objIncTax.BasicAmount + objIncTax.TaxAmount;
            }

            return(objIncTax);
        }
Ejemplo n.º 7
0
        private void dvgItemDetails_FocusedColumnChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedColumnChangedEventArgs e)
        {
            if (e.FocusedColumn.FieldName == "Item")
            {
                dvgItemDetails.ShowEditor();
                ((LookUpEdit)dvgItemDetails.ActiveEditor).ShowPopup();
            }
            if (e.FocusedColumn.FieldName == "Unit" || e.FocusedColumn.FieldName == "Per" || e.FocusedColumn.FieldName == "Particulars")
            {
                dvgItemDetails.ShowEditor();
                ((LookUpEdit)dvgItemDetails.ActiveEditor).ShowPopup();
            }

            //tbxSaleType.SelectedItem.ToString() == "VAT Incl";


            GridView view = sender as GridView;

            if (view.GetFocusedRowCellValue("Qty") == null)
            {
                return;
            }

            decimal Qty      = Convert.ToDecimal(view.GetFocusedRowCellValue(view.Columns["Qty"]).ToString() == string.Empty ? "0.00" : view.GetFocusedRowCellValue(view.Columns["Qty"]).ToString());
            decimal Price    = Convert.ToDecimal(view.GetFocusedRowCellValue(view.Columns["Price"]).ToString() == string.Empty ? "0.00" : view.GetFocusedRowCellValue(view.Columns["Price"]).ToString());
            decimal BasicAmt = Convert.ToDecimal(view.GetFocusedRowCellValue(view.Columns["BasicAmt"]).ToString() == string.Empty ? "0.00" : view.GetFocusedRowCellValue(view.Columns["BasicAmt"]).ToString());
            decimal TotalAmt = Convert.ToDecimal(view.GetFocusedRowCellValue(view.Columns["Amount"]).ToString() == string.Empty ? "0.00" : view.GetFocusedRowCellValue(view.Columns["Amount"]).ToString());
            decimal TaxSlab  = 5;

            TaxCalculationModel objTax = objSTCal.GetCalculatedTax(TaxType.VATIncl, Qty, Price, BasicAmt, TaxSlab, TotalAmt);

            //Bind to Grid view based on the model values
            view.SetFocusedRowCellValue(view.Columns["Amount"], Math.Round(objTax.TotalAmount, 2));
            view.SetFocusedRowCellValue(view.Columns["BasicAmt"], Math.Round(objTax.BasicAmount, 2));
            view.SetFocusedRowCellValue(view.Columns["TaxAmount"], Math.Round(objTax.TaxAmount, 2));
            view.SetFocusedRowCellValue(view.Columns["Price"], Math.Round(objTax.Price, 2));
        }