Example #1
0
		private void SetDataSource(ReportDocument Report)
		{
            Int64 iID = 0;
            try
            {
                if (Request.QueryString["task"].ToString().ToLower() == "reportfromposted" && Request.QueryString["retid"].ToString() != null)
                { iID = Convert.ToInt64(Request.QueryString["retid"].ToString()); }
                else 
                { iID = Convert.ToInt64(Common.Decrypt(Request.QueryString["retid"].ToString(), Session.SessionID)); }
                lblReferrer.ToolTip = iID.ToString();
            }
            catch { iID = long.Parse(lblReferrer.ToolTip); }

			ReportDataset rptds = new ReportDataset();

			POReturns clsPOReturns = new POReturns();
            System.Data.DataTable dt = clsPOReturns.ListAsDataTable(DebitMemoID: iID);

            POReturnItems clsPOReturnItems = new POReturnItems(clsPOReturns.Connection, clsPOReturns.Transaction);
            System.Data.DataTable dtitems = clsPOReturnItems.ListAsDataTable(iID);

            clsPOReturns.CommitAndDispose();

			foreach(System.Data.DataRow dr in dt.Rows)
			{
				DataRow drNew = rptds.POReturns.NewRow();
				
				foreach (DataColumn dc in rptds.POReturns.Columns)
					drNew[dc] = dr[dc.ColumnName]; 
				
				rptds.POReturns.Rows.Add(drNew);
			}
            
			foreach(System.Data.DataRow dr in dtitems.Rows)
			{
				DataRow drNew = rptds.POReturnItems.NewRow();
				
				foreach (DataColumn dc in rptds.POReturnItems.Columns)
					drNew[dc] = dr[dc.ColumnName]; 
				
				rptds.POReturnItems.Rows.Add(drNew);
			}

			Report.SetDataSource(rptds); 
			SetParameters(Report);
		}
Example #2
0
		private void LoadItems()
		{
			DataClass clsDataClass = new DataClass();

			POReturnItems clsPOReturnItems = new POReturnItems();
			lstItem.DataSource = clsPOReturnItems.ListAsDataTable(Convert.ToInt64(lblDebitMemoID.Text), SortField: "DebitMemoItemID", SortOrder: SortOption.Ascending).DefaultView;
			lstItem.DataBind();
			clsPOReturnItems.CommitAndDispose();
            lstItemFixCssClass();
		}
Example #3
0
		private void AddItemToInventory(long DebitMemoID)
		{

			POReturnDetails clsPOReturnDetails = Details(DebitMemoID);
			ERPConfig clsERPConfig = new ERPConfig(base.Connection, base.Transaction);
			ERPConfigDetails clsERPConfigDetails = clsERPConfig.Details();

			POReturnItems clsPOReturnItems = new POReturnItems(base.Connection, base.Transaction);
			ProductUnit clsProductUnit = new ProductUnit(base.Connection, base.Transaction);
			Products clsProduct = new Products(base.Connection, base.Transaction);
			ProductVariationsMatrix clsProductVariationsMatrix = new ProductVariationsMatrix(base.Connection, base.Transaction);

			Inventory clsInventory = new Inventory(base.Connection, base.Transaction);

			//MySqlDataReader myReader = clsPOReturnItems.List(DebitMemoID, "DebitMemoItemID", SortOption.Ascending);
            System.Data.DataTable dt = clsPOReturnItems.ListAsDataTable(DebitMemoID);

            foreach (System.Data.DataRow dr in dt.Rows)
			{
                long lngProductID = Convert.ToInt64(dr["ProductID"]); // myReader.GetInt64("ProductID");
                int intProductUnitID = Convert.ToInt16(dr["ProductUnitID"]); // myReader.GetInt16("ProductUnitID");

                decimal decItemQuantity = Convert.ToDecimal(dr["Quantity"]); // myReader.GetDecimal("Quantity");
                decimal decQuantity = clsProductUnit.GetBaseUnitValue(lngProductID, intProductUnitID, decItemQuantity);

                long lngVariationMatrixID = Convert.ToInt64(dr["VariationMatrixID"]); // myReader.GetInt64("VariationMatrixID");
                string strMatrixDescription = dr["MatrixDescription"].ToString(); //  "" + myReader["MatrixDescription"].ToString();
                string strProductCode = dr["ProductCode"].ToString(); // "" + myReader["ProductCode"].ToString();
                string strProductUnitCode = dr["ProductUnitCode"].ToString(); // "" + myReader["ProductUnitCode"].ToString();
                decimal decUnitCost = Convert.ToDecimal(dr["UnitCost"]); // myReader.GetDecimal("UnitCost");
                decimal decItemCost = Convert.ToDecimal(dr["Amount"]); // myReader.GetDecimal("Amount");
                decimal decVAT = Convert.ToDecimal(dr["VAT"]); // myReader.GetDecimal("VAT");

				/*******************************************
				 * Subtract from Inventory
				 * ****************************************/
                // clsProduct.SubtractQuantity(ProductID, Quantity);
                // if (VariationMatrixID != 0) { clsProductVariationsMatrix.SubtractQuantity(VariationMatrixID, Quantity);}
                // July 26, 2011: change the above codes to the following
                clsProduct.SubtractQuantity(clsPOReturnDetails.BranchID, lngProductID, lngVariationMatrixID, decQuantity, Products.getPRODUCT_INVENTORY_MOVEMENT_VALUE(PRODUCT_INVENTORY_MOVEMENT.DEDUCT_PURCHASE_RETURN), DateTime.Now, clsPOReturnDetails.MemoNo, clsPOReturnDetails.PurchaserName);

				/*******************************************
				 * Add to Inventory Analysis
				 * ****************************************/
				InventoryDetails clsInventoryDetails = new InventoryDetails();
				clsInventoryDetails.PostingDateFrom = clsERPConfigDetails.PostingDateFrom;
				clsInventoryDetails.PostingDateTo = clsERPConfigDetails.PostingDateTo;
				clsInventoryDetails.PostingDate = clsPOReturnDetails.PostingDate;
				clsInventoryDetails.ReferenceNo = clsPOReturnDetails.MemoNo;
				clsInventoryDetails.ContactID = clsPOReturnDetails.SupplierID;
				clsInventoryDetails.ContactCode = clsPOReturnDetails.SupplierCode;
                clsInventoryDetails.ProductID = lngProductID;
                clsInventoryDetails.ProductCode = strProductCode;
				clsInventoryDetails.VariationMatrixID = lngVariationMatrixID;
                clsInventoryDetails.MatrixDescription = strMatrixDescription;
				clsInventoryDetails.PReturnQuantity = decQuantity;
                clsInventoryDetails.PReturnCost = decItemCost - decVAT;
                clsInventoryDetails.PReturnVAT = decItemCost;	//Purchase Return with VAT

				clsInventory.Insert(clsInventoryDetails);
			}
		}
Example #4
0
		public void Cancel(long DebitMemoID, DateTime CancelledDate, string Remarks, long CancelledByID)
		{
			try 
			{
				string SQL=	"UPDATE tblPODebitMemo SET " + 
								"CancelledDate			=	@CancelledDate, " +
								"CancelledRemarks		=	@CancelledRemarks, " +
								"CancelledByID			=	@CancelledByID, " +
								"POReturnStatus			=	@POReturnStatus " +
							"WHERE DebitMemoID = @DebitMemoID;";
				  
				MySqlCommand cmd = new MySqlCommand();
				cmd.CommandType = System.Data.CommandType.Text;
				cmd.CommandText = SQL;
				
				MySqlParameter prmCancelledDate = new MySqlParameter("@CancelledDate",MySqlDbType.DateTime);
				prmCancelledDate.Value = CancelledDate.ToString("yyyy-MM-dd HH:mm:ss");
				cmd.Parameters.Add(prmCancelledDate);

				MySqlParameter prmCancelledRemarks = new MySqlParameter("@CancelledRemarks",MySqlDbType.String);
				prmCancelledRemarks.Value = Remarks;
				cmd.Parameters.Add(prmCancelledRemarks);

				MySqlParameter prmCancelledByID = new MySqlParameter("@CancelledByID",MySqlDbType.Int64);						
				prmCancelledByID.Value = CancelledByID;
				cmd.Parameters.Add(prmCancelledByID);

				MySqlParameter prmPOReturnStatus = new MySqlParameter("@POReturnStatus",MySqlDbType.Int16);
				prmPOReturnStatus.Value = POReturnStatus.Cancelled.ToString("d");
				cmd.Parameters.Add(prmPOReturnStatus);

				MySqlParameter prmDebitMemoID = new MySqlParameter("@DebitMemoID",MySqlDbType.Int64);						
				prmDebitMemoID.Value = DebitMemoID;
				cmd.Parameters.Add(prmDebitMemoID);

				base.ExecuteNonQuery(cmd);

				/*******************************************
				 * Update the status of items
				 * ****************************************/
				POReturnItems clsPOReturnItems = new POReturnItems(base.Connection, base.Transaction);
				clsPOReturnItems.Cancel(DebitMemoID);

			}

			catch (Exception ex)
			{
				throw base.ThrowException(ex);
			}	
		}
Example #5
0
		public void Post(long DebitMemoID, string SupplierDocNo, DateTime PostingDate)
		{
			try 
			{
				string SQL=	"UPDATE tblPODebitMemo SET " + 
								"SupplierDocNo		=	@SupplierDocNo, " +
								"PostingDate		=	@PostingDate, " +
								"POReturnStatus		=	@POReturnStatus, " +
								"DebitMemoStatus	=	@DebitMemoStatus " +
							"WHERE DebitMemoID = @DebitMemoID;";
				  
				MySqlCommand cmd = new MySqlCommand();
				cmd.CommandType = System.Data.CommandType.Text;
				cmd.CommandText = SQL;
				
				MySqlParameter prmSupplierDocNo = new MySqlParameter("@SupplierDocNo",MySqlDbType.String);
				prmSupplierDocNo.Value = SupplierDocNo;
				cmd.Parameters.Add(prmSupplierDocNo);

				MySqlParameter prmPostingDate = new MySqlParameter("@PostingDate",MySqlDbType.DateTime);
				prmPostingDate.Value = PostingDate.ToString("yyyy-MM-dd HH:mm:ss");
				cmd.Parameters.Add(prmPostingDate);

				MySqlParameter prmPOReturnStatus = new MySqlParameter("@POReturnStatus",MySqlDbType.Int16);
				prmPOReturnStatus.Value = POReturnStatus.Posted.ToString("d");
				cmd.Parameters.Add(prmPOReturnStatus);

				MySqlParameter prmDebitMemoStatus = new MySqlParameter("@DebitMemoStatus",MySqlDbType.Int16);
				prmDebitMemoStatus.Value = DebitMemoStatus.Posted.ToString("d");
				cmd.Parameters.Add(prmDebitMemoStatus);

				MySqlParameter prmDebitMemoID = new MySqlParameter("@DebitMemoID",MySqlDbType.Int64);						
				prmDebitMemoID.Value = DebitMemoID;
				cmd.Parameters.Add(prmDebitMemoID);

				base.ExecuteNonQuery(cmd);

				/*******************************************
				 * Update the status of items
				 * ****************************************/
				POReturnItems clsPOReturnItems = new POReturnItems(base.Connection, base.Transaction);
				clsPOReturnItems.Post(DebitMemoID);

				/*******************************************
				 * Update Vendor Account
				 * ****************************************/
				AddItemToInventory(DebitMemoID);
			}

			catch (Exception ex)
			{
				throw base.ThrowException(ex);
			}	
		}
Example #6
0
        private void UpdateAccounts(long DebitMemoID)
        {
            try
            {
                POReturnDetails clsPOReturnDetails = Details(DebitMemoID);
                ChartOfAccounts clsChartOfAccount = new ChartOfAccounts(base.Connection, base.Transaction);

                // update ChartOfAccountIDAPTracking as credit
                clsChartOfAccount.UpdateCredit(clsPOReturnDetails.ChartOfAccountIDAPTracking, clsPOReturnDetails.SubTotal);

                // update Deposit & APContra
                clsChartOfAccount.UpdateDebit(clsPOReturnDetails.ChartOfAccountIDAPContra, clsPOReturnDetails.Discount);

                // update Freight & APTracking
                clsChartOfAccount.UpdateDebit(clsPOReturnDetails.ChartOfAccountIDAPTracking, clsPOReturnDetails.Freight);
                clsChartOfAccount.UpdateCredit(clsPOReturnDetails.ChartOfAccountIDAPFreight, clsPOReturnDetails.Freight);

                // update Deposit & APTracking
                clsChartOfAccount.UpdateDebit(clsPOReturnDetails.ChartOfAccountIDAPTracking, clsPOReturnDetails.Deposit);
                clsChartOfAccount.UpdateCredit(clsPOReturnDetails.ChartOfAccountIDAPVDeposit, clsPOReturnDetails.Deposit);

                POReturnItems clsPOReturnItems = new POReturnItems(base.Connection, base.Transaction);
                System.Data.DataTable dt = clsPOReturnItems.ListAsDataTable(DebitMemoID);

                foreach (System.Data.DataRow dr in dt.Rows)
                {
                    int iChartOfAccountIDPurchase = Int16.Parse(dr["ChartOfAccountIDPurchase"].ToString());
                    int iChartOfAccountIDTaxPurchase = Int16.Parse(dr["ChartOfAccountIDTaxPurchase"].ToString());

                    decimal decVAT = decimal.Parse(dr["VAT"].ToString());
                    decimal decVATABLEAmount = decimal.Parse(dr["Amount"].ToString()) - decVAT;

                    // update purchase as debit
                    clsChartOfAccount.UpdateCredit(iChartOfAccountIDPurchase, decVATABLEAmount);
                    // update tax as debit
                    clsChartOfAccount.UpdateCredit(iChartOfAccountIDTaxPurchase, decVAT);

                }

            }

            catch (Exception ex)
            {
                throw base.ThrowException(ex);
            }
        }
Example #7
0
        private void UpdateItemReceiveStatus(long DebitMemoItemID, DebitMemoItemReceivedStatus clsDebitMemoItemReceivedStatus, decimal ReceivedQuantity)
        {

            POReturnItems clsPOReturnItems = new POReturnItems();
            clsPOReturnItems.UpdateReceiveStatus(DebitMemoItemID, clsDebitMemoItemReceivedStatus, ReceivedQuantity);
            clsPOReturnItems.CommitAndDispose();

        }
Example #8
0
        private void LoadItem(string stID)
        {
            POReturnItems clsPOReturnItems = new POReturnItems();
            POReturnItemDetails clsPOReturnItemsDetails = clsPOReturnItems.Details(Convert.ToInt64(stID));
            clsPOReturnItems.CommitAndDispose();

            cboProductCode.Items.Clear();
            cboVariation.Items.Clear();
            cboProductUnit.Items.Clear();

            txtProductCode.Text = clsPOReturnItemsDetails.BarCode;
            cmdProductCode_Click(null, null);

            cboProductCode.SelectedIndex = cboProductCode.Items.IndexOf(new ListItem(clsPOReturnItemsDetails.ProductCode, clsPOReturnItemsDetails.ProductID.ToString()));

            if (clsPOReturnItemsDetails.VariationMatrixID == 0)
            { cboVariation.Items.Add(new ListItem("No Variation", "0")); cboVariation.SelectedIndex = 0; }
            else
            { cboVariation.SelectedIndex = cboVariation.Items.IndexOf(new ListItem(clsPOReturnItemsDetails.MatrixDescription, clsPOReturnItemsDetails.VariationMatrixID.ToString())); }

            if (clsPOReturnItemsDetails.ProductUnitID == 0)
            { cboProductUnit.Items.Add(new ListItem("No Unit", "0")); cboProductUnit.SelectedIndex = 0; }
            else
            {
                cboProductUnit.SelectedIndex = cboProductUnit.Items.IndexOf(new ListItem(clsPOReturnItemsDetails.ProductUnitCode, clsPOReturnItemsDetails.ProductUnitID.ToString()));
            }

            txtQuantity.Text = clsPOReturnItemsDetails.Quantity.ToString("###0.##0");
            txtPrice.Text = clsPOReturnItemsDetails.UnitCost.ToString("###0.##0");
            txtDiscount.Text = clsPOReturnItemsDetails.DiscountApplied.ToString("###0.##0");

            if (clsPOReturnItemsDetails.DiscountType == DiscountTypes.Percentage)
                chkInPercent.Checked = true;
            else
            {
                chkInPercent.Checked = false;
            }
            txtAmount.Text = clsPOReturnItemsDetails.Amount.ToString("###0.##0");
            txtRemarks.Text = clsPOReturnItemsDetails.Remarks;
            lblPODebitMemoItemID.Text = stID;
            chkIsTaxable.Checked = clsPOReturnItemsDetails.IsVatable;

            ////Added Jan 1, 2010 4:20PM : For selling information
            //txtSellingQuantity.Text = "1";
            //try
            //{ txtMargin.Text = decimal.Parse(Convert.ToString(((clsPOReturnItemsDetails.SellingPrice - clsPOReturnItemsDetails.UnitCost) / clsPOReturnItemsDetails.UnitCost) * 100)).ToString("###0.##0"); }
            //catch { txtMargin.Text = "0.00"; }
            //txtSellingPrice.Text = clsPOReturnItemsDetails.SellingPrice.ToString("###0.##0");
            //txtVAT.Text = clsPOReturnItemsDetails.SellingVAT.ToString("###0.##0");
            //txtEVAT.Text = clsPOReturnItemsDetails.SellingEVAT.ToString("###0.##0");
            //txtLocalTax.Text = clsPOReturnItemsDetails.SellingLocalTax.ToString("###0.##0");

            ////Added April 28, 2010 4:20PM : For selling information
            //txtOldSellingPrice.Text = clsPOReturnItemsDetails.OldSellingPrice.ToString("###0.##0");

            //// Aug 9, 2011 : Lemu
            //// For Required Inventory Days
            //txtRID.Text = clsPOReturnItemsDetails.RID.ToString();

            txtProductCode.Focus();
            ShowCommandButtons(true);
        }
Example #9
0
		private void UpdateItem()
		{
			if (isChkListSingle() == true)
			{
				string stID = GetFirstID();
				if (stID!=null)
				{
					POReturnItems clsPOReturnItems = new POReturnItems();
                    POReturnItemDetails clsPOReturnItemDetails = clsPOReturnItems.Details(Convert.ToInt64(stID));
					clsPOReturnItems.CommitAndDispose();

					cboProductCode.Items.Clear();
					cboVariation.Items.Clear();
					cboProductUnit.Items.Clear();

                    cboProductCode.Items.Add(new ListItem(clsPOReturnItemDetails.ProductCode, clsPOReturnItemDetails.ProductID.ToString()));
                    cboProductCode.SelectedIndex = 0;
                    if (clsPOReturnItemDetails.VariationMatrixID == 0)
                    { cboVariation.Items.Add(new ListItem("No Variation", "0")); }
                    else
                    { cboVariation.Items.Add(new ListItem(clsPOReturnItemDetails.MatrixDescription, clsPOReturnItemDetails.VariationMatrixID.ToString())); }
                    cboVariation.SelectedIndex = 0;
                    cboProductUnit.Items.Add(new ListItem(clsPOReturnItemDetails.ProductUnitCode, clsPOReturnItemDetails.ProductUnitID.ToString()));
                    cboProductUnit.SelectedIndex = 0;
                    txtQuantity.Text = clsPOReturnItemDetails.Quantity.ToString("###0.#0");
                    txtPrice.Text = clsPOReturnItemDetails.UnitCost.ToString("###0.#0");
                    txtDiscount.Text = clsPOReturnItemDetails.Discount.ToString("###0.#0");
                    if (clsPOReturnItemDetails.DiscountType == DiscountTypes.Percentage)
                        chkInPercent.Checked = true;
                    else
                    {
                        chkInPercent.Checked = false;
                    }
                    txtAmount.Text = clsPOReturnItemDetails.Amount.ToString("###0.#0");
                    txtRemarks.Text = clsPOReturnItemDetails.Remarks;
                    lblPODebitMemoItemID.Text = stID;
                    chkIsTaxable.Checked = clsPOReturnItemDetails.IsVatable;
				}
			}
			else
			{
				string stScript = "<Script>";
				stScript += "window.alert('Cannot update more than one record. Please select at least one record to update.')";
				stScript += "</Script>";
				Response.Write(stScript);	
			}
		}
Example #10
0
		private bool DeleteItems()
		{
			bool boRetValue = false;
			string stIDs = "";

			foreach(DataListItem item in lstItem.Items)
			{
				HtmlInputCheckBox chkList = (HtmlInputCheckBox) item.FindControl("chkList");
				if (chkList!=null)
				{
					if (chkList.Checked == true)
					{
						stIDs += chkList.Value + ",";		
						boRetValue = true;
					}
				}
			}
			if (boRetValue)
			{
				POReturnItems clsPOReturnItems = new POReturnItems();
				clsPOReturnItems.Delete( stIDs.Substring(0,stIDs.Length-1));

				POReturns clsPOReturns = new POReturns(clsPOReturnItems.Connection, clsPOReturnItems.Transaction);
				clsPOReturns.SynchronizeAmount(Convert.ToInt64(lblDebitMemoID.Text));

				POReturnDetails clsPOReturnDetails = clsPOReturns.Details(Convert.ToInt64(lblDebitMemoID.Text));
				clsPOReturnItems.CommitAndDispose();

                UpdateFooter(clsPOReturnDetails);
			}

			return boRetValue;
		}
Example #11
0
		private void SaveRecord()
		{
			POReturnItemDetails clsDetails = new POReturnItemDetails();

			Products clsProducts = new Products();
            ProductDetails clsProductDetails = clsProducts.Details1(Constants.BRANCH_ID_MAIN, Convert.ToInt64(cboProductCode.SelectedItem.Value));
			
			Terminal clsTerminal = new Terminal(clsProducts.Connection, clsProducts.Transaction);
            TerminalDetails clsTerminalDetails = clsTerminal.Details(Int32.Parse(Session["BranchID"].ToString()), Session["TerminalNo"].ToString());
			clsProducts.CommitAndDispose();

			clsDetails.DebitMemoID = Convert.ToInt64(lblDebitMemoID.Text);
			clsDetails.ProductID = Convert.ToInt64(cboProductCode.SelectedItem.Value);
			clsDetails.ProductCode = clsProductDetails.ProductCode;
			clsDetails.BarCode = clsProductDetails.BarCode;
			clsDetails.Description = clsProductDetails.ProductDesc;
			clsDetails.ProductUnitID = Convert.ToInt32(cboProductUnit.SelectedItem.Value);
			clsDetails.ProductUnitCode = cboProductUnit.SelectedItem.Text;
            clsDetails.Quantity = Convert.ToDecimal(txtQuantity.Text);
            clsDetails.UnitCost = Convert.ToDecimal(txtPrice.Text);
            clsDetails.Discount = getItemTotalDiscount();
            clsDetails.DiscountApplied = Convert.ToDecimal(txtDiscount.Text);
            if (clsDetails.DiscountApplied == 0)
            {
                if (chkInPercent.Checked == true)
                    clsDetails.DiscountType = DiscountTypes.Percentage;
                else
                    clsDetails.DiscountType = DiscountTypes.FixedValue;
            }
            else
            {
                clsDetails.DiscountType = DiscountTypes.NotApplicable;
            }

            clsDetails.IsVatable = chkIsTaxable.Checked;
            clsDetails.Amount = ComputeItemAmount();

            if (clsDetails.IsVatable)
            {
                clsDetails.VatableAmount = clsDetails.Amount;
                clsDetails.EVatableAmount = clsDetails.Amount;
                clsDetails.LocalTax = clsDetails.Amount;

                if (clsTerminalDetails.IsVATInclusive == false)
                {
                    if (clsDetails.VatableAmount < clsDetails.Discount) clsDetails.VatableAmount = 0;
                    if (clsDetails.EVatableAmount < clsDetails.Discount) clsDetails.EVatableAmount = 0;
                    if (clsDetails.LocalTax < clsDetails.Discount) clsDetails.LocalTax = 0;
                }
                else
                {
                    if (clsDetails.VatableAmount >= clsDetails.Discount) clsDetails.VatableAmount = (clsDetails.VatableAmount) / (1 + (clsTerminalDetails.VAT / 100)); else clsDetails.VatableAmount = 0;
                    if (clsDetails.EVatableAmount >= clsDetails.Discount) clsDetails.EVatableAmount = (clsDetails.EVatableAmount) / (1 + (clsTerminalDetails.VAT / 100)); else clsDetails.EVatableAmount = 0;
                    if (clsDetails.LocalTax >= clsDetails.Discount) clsDetails.LocalTax = (clsDetails.LocalTax) / (1 + (clsTerminalDetails.LocalTax / 100)); else clsDetails.LocalTax = 0;
                }

                clsDetails.VAT = clsDetails.VatableAmount * (clsTerminalDetails.VAT / 100);
                clsDetails.EVAT = clsDetails.EVatableAmount * (clsTerminalDetails.EVAT / 100);
                clsDetails.LocalTax = clsDetails.LocalTax * (clsTerminalDetails.LocalTax / 100);
            }
            else
            {
                clsDetails.VAT = 0;
                clsDetails.VatableAmount = 0;
                clsDetails.EVAT = 0;
                clsDetails.EVatableAmount = 0;
                clsDetails.LocalTax = 0;
            }

            clsDetails.isVATInclusive = clsTerminalDetails.IsVATInclusive;
            clsDetails.VariationMatrixID = Convert.ToInt64(cboVariation.SelectedItem.Value);
            if (clsDetails.VariationMatrixID != 0)
                clsDetails.MatrixDescription = cboVariation.SelectedItem.Text;
            clsDetails.ProductGroup = clsProductDetails.ProductGroupCode;
            clsDetails.ProductSubGroup = clsProductDetails.ProductSubGroupCode;
            clsDetails.Remarks = txtRemarks.Text;

			POReturnItems clsPOReturnItems = new POReturnItems();
            if (lblPODebitMemoItemID.Text != "0")
			{
                clsDetails.DebitMemoItemID = Convert.ToInt64(lblPODebitMemoItemID.Text);
				clsPOReturnItems.Update(clsDetails);
			}
			else
				clsPOReturnItems.Insert(clsDetails);

            POReturnDetails clsPOReturnDetails = new POReturnDetails();
            clsPOReturnDetails.DebitMemoID = clsDetails.DebitMemoID;
            clsPOReturnDetails.DiscountApplied = Convert.ToDecimal(txtPODebitMemoDiscountApplied.Text);
            clsPOReturnDetails.DiscountType = (DiscountTypes)Enum.Parse(typeof(DiscountTypes), cboPODebitMemoDiscountType.SelectedItem.Value);

            clsPOReturnDetails.Discount2Applied = Convert.ToDecimal(txtPODebitMemoDiscount2Applied.Text);
            clsPOReturnDetails.Discount2Type = (DiscountTypes)Enum.Parse(typeof(DiscountTypes), cboPODebitMemoDiscount2Type.SelectedItem.Value);

            clsPOReturnDetails.Discount3Applied = Convert.ToDecimal(txtPODebitMemoDiscount3Applied.Text);
            clsPOReturnDetails.Discount3Type = (DiscountTypes)Enum.Parse(typeof(DiscountTypes), cboPODebitMemoDiscount3Type.SelectedItem.Value);

            POReturns clsPOReturns = new POReturns(clsPOReturnItems.Connection, clsPOReturnItems.Transaction);
            clsPOReturns.UpdateDiscount(clsDetails.DebitMemoID, clsPOReturnDetails.DiscountApplied, clsPOReturnDetails.DiscountType, clsPOReturnDetails.Discount2Applied, clsPOReturnDetails.Discount2Type, clsPOReturnDetails.Discount3Applied, clsPOReturnDetails.Discount3Type);

			clsPOReturnDetails = clsPOReturns.Details(clsDetails.DebitMemoID);
			clsPOReturnItems.CommitAndDispose();

            UpdateFooter(clsPOReturnDetails);
		}