Regarding Alter Voucher Using C#

Discussion in 'Tally Developer' started by ROHIT JAISWAR, Dec 12, 2023.

    
  1. ROHIT JAISWAR

    ROHIT JAISWAR Active Member


    Respected to All Members
    I have already Developed. Code for Inserting the Data in Tally Using C# but No Idea about How To Alter the Particular Voucher Using Master ID

    Kindly Please Help

    For Insertion I have Attached Sample Code
    Code:
    using System;
    using System.Configuration;
    using System.Data;
    using System.Data.Odbc;
    using System.Data.SqlClient;
    using System.IO;
    using System.Net;
    using System.Net.Mail;
    using System.Text;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Xml;
    
    namespace ABSOLUTE_SO_INTEGRATION
    {
        public partial class SO_CREATION : System.Web.UI.Page
        {
       
            decimal qty = 1;  
            static string tally = ConfigurationManager.AppSettings["tally"];
            private static OdbcConnection TallyCollectionConnection = new OdbcConnection(tally);
            SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["cn"].ToString());
            decimal grandtotal = 0;
           // decimal totalvalue = 0;
            VCHDateHandler ho = new VCHDateHandler();
            Post c = new Post();
            string user;
            string voucherNum = "";
            protected void Page_Load(object sender, EventArgs e)
            {
                PreviousOrderNum();
                try
                {
                   user = Session["id"].ToString();
                }
    
                catch (Exception)
                {
                    Response.Redirect("Login.aspx");
                }
                if (!this.IsPostBack)
                {
                  //  this.ClientScript.RegisterStartupScript(this.GetType(), "SweetAlert", "swal('Oops!', 'Something went wrong on the page!', 'error');", true);
    
                    txtQuantity.Text = qty.ToString();
                    txtVchDate.Text = System.DateTime.Now.ToString("yyyy-MM-dd");
                    txtDueOn.Text= System.DateTime.Now.ToString("yyyy-MM-dd");
    
                    DataTable dtitmdata = new DataTable();
    
                    dtitmdata.Columns.AddRange(new DataColumn[8] { new DataColumn("Sr"), new DataColumn("Name Of Item"), new DataColumn("Description"), new DataColumn("Due On"), new DataColumn("Quantity"), new DataColumn("Rate"), new DataColumn("Per"), new DataColumn("Amount") });
                    ViewState["item"] = dtitmdata;
                    this.BindGrid();
    
                }
                if (ddlPartyName.Items.Count == 0)
                {
                    ddlPartyName.AppendDataBoundItems = true;
                    ddlPartyName.Items.Add("---Select---");
                    DataTable ledger = Ledger();
                    foreach (DataRow r in ledger.Rows)
                    {
                        ddlPartyName.Items.Add(r["$Name"].ToString());
                    }
    
                    DataTable Salesledger = SalesLed();
                    foreach (DataRow r in Salesledger.Rows)
                    {
                        ddlSalesLeder.Items.Add(r["$Name"].ToString());
                    }
    
                    ddlStockName.AppendDataBoundItems = true;
                    ddlStockName.Items.Add("---Select---");
                    DataTable item = Item();
                    foreach (DataRow r in item.Rows)
                    {
                        ddlStockName.Items.Add(r["$Name"].ToString());
                    }
    
                    DataTable cmp = Company();
                    foreach (DataRow r in cmp.Rows)
                    {
                        lblCurrentCompany.Text = r["$Name"].ToString();
                    }
    
                    DataTable cmpstate = CompanyState();
                    foreach (DataRow r in cmpstate.Rows)
                    {
                        lblCMPState.Text = r["$StateName"].ToString();
                    }
                }
            }
    
    
            public void PreviousOrderNum()
            {
                String myquery1 = "Select max(ORDERNO) From SO";
                SqlCommand cmd1 = new SqlCommand();
                cmd1.CommandText = myquery1;
                cmd1.Connection = con;
                SqlDataAdapter da1 = new SqlDataAdapter();
                da1.SelectCommand = cmd1;
                DataSet ds1 = new DataSet();
                da1.Fill(ds1);
                string s = txtOrderNo.Text = ds1.Tables[0].Rows[0][0].ToString();
            }
            public static DataTable CompanyState()
            {
               
                TallyCollectionConnection.Open();
                OdbcCommand TallyCommand = new OdbcCommand("SELECT $StateName FROM Company ", TallyCollectionConnection);
                OdbcDataAdapter TallyDataAdapter = new OdbcDataAdapter(TallyCommand);
                DataTable TallyDataSet = new DataTable();
                TallyDataAdapter.Fill(TallyDataSet);
                TallyCollectionConnection.Close();
                return TallyDataSet;
            }
    
            public static DataTable LedgerState(string LedgerStateFilt)
            {
    
                TallyCollectionConnection.Open();
                //   string sql = $"Select $LedStateName from CollSalPurchLed where $Name=" + "\"" + LedgerStateFilt + "\"";
                string sql = $"Select $LedStateName from CollSalPurchLed where $Name=" + "\"" + LedgerStateFilt + "\"";
                OdbcCommand TallyCommand = new OdbcCommand(sql, TallyCollectionConnection);
                OdbcDataAdapter TallyDataAdapter = new OdbcDataAdapter(TallyCommand);
                DataTable TallyDataSet = new DataTable();
                TallyDataAdapter.Fill(TallyDataSet);
                TallyCollectionConnection.Close();
                return TallyDataSet;
            }
    
            //Party Address Filter
    
            public static DataTable LedgerAddress(string LedgerAddressFilt)
            {
    
                TallyCollectionConnection.Open();
                //   string sql = $"Select $LedStateName from CollSalPurchLed where $Name=" + "\"" + LedgerStateFilt + "\"";
                string sql = $"Select $_Address1 from CollSalPurchLed where $Name=" + "\"" + LedgerAddressFilt + "\"";
                OdbcCommand TallyCommand = new OdbcCommand(sql, TallyCollectionConnection);
                OdbcDataAdapter TallyDataAdapter = new OdbcDataAdapter(TallyCommand);
                DataTable TallyDataSet = new DataTable();
                TallyDataAdapter.Fill(TallyDataSet);
                TallyCollectionConnection.Close();
                return TallyDataSet;
            }
    
            public static DataTable LedgerAddress2(string LedgerAddressFilt2)
            {
    
                TallyCollectionConnection.Open();
                //   string sql = $"Select $LedStateName from CollSalPurchLed where $Name=" + "\"" + LedgerStateFilt + "\"";
                string sql = $"Select $_Address2 from CollSalPurchLed where $Name=" + "\"" + LedgerAddressFilt2 + "\"";
                OdbcCommand TallyCommand = new OdbcCommand(sql, TallyCollectionConnection);
                OdbcDataAdapter TallyDataAdapter = new OdbcDataAdapter(TallyCommand);
                DataTable TallyDataSet = new DataTable();
                TallyDataAdapter.Fill(TallyDataSet);
                TallyCollectionConnection.Close();
                return TallyDataSet;
            }
    
            public static DataTable LedgerAddress3(string LedgerAddressFilt3)
            {
    
                TallyCollectionConnection.Open();
                //   string sql = $"Select $LedStateName from CollSalPurchLed where $Name=" + "\"" + LedgerStateFilt + "\"";
                string sql = $"Select $_Address3 from CollSalPurchLed where $Name=" + "\"" + LedgerAddressFilt3 + "\"";
                OdbcCommand TallyCommand = new OdbcCommand(sql, TallyCollectionConnection);
                OdbcDataAdapter TallyDataAdapter = new OdbcDataAdapter(TallyCommand);
                DataTable TallyDataSet = new DataTable();
                TallyDataAdapter.Fill(TallyDataSet);
                TallyCollectionConnection.Close();
                return TallyDataSet;
            }
    
            public static DataTable LedgerAddress4(string LedgerAddressFilt4)
            {
    
                TallyCollectionConnection.Open();
                //   string sql = $"Select $LedStateName from CollSalPurchLed where $Name=" + "\"" + LedgerStateFilt + "\"";
                string sql = $"Select $_Address4 from CollSalPurchLed where $Name=" + "\"" + LedgerAddressFilt4 + "\"";
                OdbcCommand TallyCommand = new OdbcCommand(sql, TallyCollectionConnection);
                OdbcDataAdapter TallyDataAdapter = new OdbcDataAdapter(TallyCommand);
                DataTable TallyDataSet = new DataTable();
                TallyDataAdapter.Fill(TallyDataSet);
                TallyCollectionConnection.Close();
                return TallyDataSet;
            }
    
            //PARTY COUNTRY FILTER
            public static DataTable LedgerCountry(string LedgerCountryFilt)
            {
    
                TallyCollectionConnection.Open();
                //   string sql = $"Select $LedStateName from CollSalPurchLed where $Name=" + "\"" + LedgerStateFilt + "\"";
                string sql = $"Select $CountryName from CollSalPurchLed where $Name=" + "\"" + LedgerCountryFilt + "\"";
                OdbcCommand TallyCommand = new OdbcCommand(sql, TallyCollectionConnection);
                OdbcDataAdapter TallyDataAdapter = new OdbcDataAdapter(TallyCommand);
                DataTable TallyDataSet = new DataTable();
                TallyDataAdapter.Fill(TallyDataSet);
                TallyCollectionConnection.Close();
                return TallyDataSet;
            }
    
            // PARTY GSTIN FILTER
            public static DataTable LedgerGSTIN(string LedgerGSTINFilt)
            {
    
                TallyCollectionConnection.Open();
                //   string sql = $"Select $LedStateName from CollSalPurchLed where $Name=" + "\"" + LedgerStateFilt + "\"";
                string sql = $"Select $PartyGSTIN from CollSalPurchLed where $Name=" + "\"" + LedgerGSTINFilt + "\"";
                OdbcCommand TallyCommand = new OdbcCommand(sql, TallyCollectionConnection);
                OdbcDataAdapter TallyDataAdapter = new OdbcDataAdapter(TallyCommand);
                DataTable TallyDataSet = new DataTable();
                TallyDataAdapter.Fill(TallyDataSet);
                TallyCollectionConnection.Close();
                return TallyDataSet;
            }
    
            public static DataTable LedgerEmail(string LedgerEmailFilt)
            {
    
                TallyCollectionConnection.Open();
                //   string sql = $"Select $LedStateName from CollSalPurchLed where $Name=" + "\"" + LedgerStateFilt + "\"";
                string sql = $"Select $EMail from CollSalPurchLed where $Name=" + "\"" + LedgerEmailFilt + "\"";
                OdbcCommand TallyCommand = new OdbcCommand(sql, TallyCollectionConnection);
                OdbcDataAdapter TallyDataAdapter = new OdbcDataAdapter(TallyCommand);
                DataTable TallyDataSet = new DataTable();
                TallyDataAdapter.Fill(TallyDataSet);
                TallyCollectionConnection.Close();
                return TallyDataSet;
            }
    
            // For Party A/C Name
            public static DataTable Ledger()
            {
                TallyCollectionConnection.Open();
                OdbcCommand TallyCommand = new OdbcCommand("SELECT $Name FROM CollSalPurchLed", TallyCollectionConnection);
                OdbcDataAdapter TallyDataAdapter = new OdbcDataAdapter(TallyCommand);
                DataTable TallyDataSet = new DataTable();
                TallyDataAdapter.Fill(TallyDataSet);
                TallyCollectionConnection.Close();
                return TallyDataSet;
            }
            // For Sales Ledger
            public static DataTable SalesLed()
            {
                TallyCollectionConnection.Open();
                OdbcCommand TallyCommand = new OdbcCommand("SELECT $Name FROM CollSalesLed", TallyCollectionConnection);
                OdbcDataAdapter TallyDataAdapter = new OdbcDataAdapter(TallyCommand);
                DataTable TallyDataSet = new DataTable();
                TallyDataAdapter.Fill(TallyDataSet);
                TallyCollectionConnection.Close();
                return TallyDataSet;
            }
           // For Stockitem Name
            public static DataTable Item()
            {
                TallyCollectionConnection.Open();
                OdbcCommand TallyCommand = new OdbcCommand("SELECT $Name FROM StockItem", TallyCollectionConnection);
                OdbcDataAdapter TallyDataAdapter = new OdbcDataAdapter(TallyCommand);
                DataTable TallyDataSet = new DataTable();
                TallyDataAdapter.Fill(TallyDataSet);
                TallyCollectionConnection.Close();
                return TallyDataSet;
            }
    
            // Unit Filter
            public static DataTable StockUnit(string Unitfilt)
            {
                TallyCollectionConnection.Open();
                string sql = "select $BaseUnits from StockItem where $Name=" + "\"" + Unitfilt + "\"";
                OdbcCommand TallyCommand = new OdbcCommand(sql, TallyCollectionConnection);
                OdbcDataAdapter TallyDataAdapter = new OdbcDataAdapter(TallyCommand);
                DataTable TallyDataSet = new DataTable();
                TallyDataAdapter.Fill(TallyDataSet);
                TallyCollectionConnection.Close();
                return TallyDataSet;
            }
    
            public void AmtSum()
            {
    
                decimal val1 = Convert.ToDecimal(txtRate.Text);
                decimal val2 = Convert.ToDecimal(txtQuantity.Text);
                decimal val3 = val1 * val2;
                txtAmount.Text = Convert.ToDecimal(val3).ToString();
            }
    
            protected void ddlStockName_SelectedIndexChanged(object sender, EventArgs e)
            {
                DataTable Unitfilt = StockUnit(ddlStockName.SelectedItem.Text);
                foreach (DataRow r in Unitfilt.Rows)
                {
    
                    txtPer.Text = r["$BaseUnits"].ToString();
                }
            }
    
            protected void btnAddItem_Click(object sender, EventArgs e)
            {
          
                int rowsr = GVItem.Rows.Count + 1;
                DataTable dtitmdata = (DataTable)ViewState["item"];
    
                string sr = rowsr.ToString();
                string item = ddlStockName.Text;
                string desc = txtStockDescription.Text;
                string due = txtDueOn.Text;
                string itemqty = txtQuantity.Text;
                string itemrate = txtRate.Text;
                string unit = txtPer.Text;
                string itemgross = (Convert.ToDecimal(itemrate) * Convert.ToDecimal(itemqty)).ToString("F");
                string[] row1 = { sr, item,desc,due, itemqty, itemrate,unit, itemgross };
    
                dtitmdata.Rows.Add(row1);
                ViewState["item"] = dtitmdata;
                this.BindGrid();
    
                GVItem.DataSource = dtitmdata;
                GVItem.DataBind();
                calculateSum();
             //   InvCal();
                txtRate.Text = string.Empty;
                txtAmount.Text = string.Empty;
                txtQuantity.Text = qty.ToString();
                txtPer.Text = string.Empty;
                txtStockDescription.Text = string.Empty;
                lblGrossAmt.Visible = true;
                GrossAmt.Visible = true;
                txtTotalAmountWithGST.Visible = true;
                lblTotalAmtWithGST.Visible = true;
                if (lblCMPState.Text == lblPartyState.Text)
                {
                    lblCGST.Visible = true;
                    lblSGST.Visible = true;
                    txtCGST.Visible = true;
                    txtSGST.Visible = true;
                    txtIGST.Visible = false;
                    lblIGST.Visible = false;
    
                }
                else
                {
                    lblIGST.Visible = true;
                    txtIGST.Visible = true;
                    txtSGST.Visible = false;
                    txtCGST.Visible = false;
                    lblCGST.Visible = false;
                    lblSGST.Visible = false;
              
                }
                decimal total = 0;
                // decimal qtytotal = 0;
                double sgst = 0, cgst = 0, igst = 0, taxRate = 10;
                foreach (GridViewRow row in GVItem.Rows)
                {
    
                    {
                        // item ka index Konsa he
                        taxRate = getgstrate(row.Cells[1].Text);
                        // qtytotal += Convert.ToDecimal(row.Cells[5].Value.ToString());
                        total += Convert.ToDecimal(row.Cells[7].Text);
                        double temp = Math.Round(Convert.ToDouble(row.Cells[7].Text), 2);
                        temp = Math.Round(temp * taxRate / 100, 1);
    
                        if (lblCMPState.Text.ToString() == lblPartyState.Text.ToString())
                        //  cmpany state && partystate ==
                        {
                            cgst += temp / 2;
                            sgst += temp / 2;
                        }
                        else
                            igst += temp;
                        GrossAmt.Text = total.ToString();
                        //  txtTotalQty.Text = qtytotal.ToString();
                    }
                }
    
                txtCGST.Text = String.Format("{00:00}", cgst);
                txtSGST.Text = String.Format("{00:00}", sgst);
                txtIGST.Text = String.Format("{00:00}", igst);
                GSTValue();
    
            }
    
            public void GSTValue()  // For Calculating GST Value
            {
                decimal cgst = string.IsNullOrEmpty(txtCGST.Text) ? 0 : Convert.ToDecimal(string.Format("{0:G29}", decimal.Parse(txtCGST.Text)));
                decimal sgst = string.IsNullOrEmpty(txtSGST.Text) ? 0 : Convert.ToDecimal(string.Format("{0:G29}", decimal.Parse(txtSGST.Text)));
                decimal igst = string.IsNullOrEmpty(txtIGST.Text) ? 0 : Convert.ToDecimal(string.Format("{0:G29}", decimal.Parse(txtIGST.Text)));
                decimal subtotal = string.IsNullOrEmpty(GrossAmt.Text) ? 0 : Convert.ToDecimal(string.Format("{0:G29}", decimal.Parse(GrossAmt.Text)));
                txtTotalAmountWithGST.Text = (cgst + sgst + igst + subtotal).ToString("N2");
            }
            public static DataTable Company()
            {
                TallyCollectionConnection.Open();
                OdbcCommand TallyCommand = new OdbcCommand("SELECT $Name FROM Company", TallyCollectionConnection);
                OdbcDataAdapter TallyDataAdapter = new OdbcDataAdapter(TallyCommand);
                DataTable TallyDataSet = new DataTable();
                TallyDataAdapter.Fill(TallyDataSet);
                TallyCollectionConnection.Close();
                return TallyDataSet;
            }
    
            private double getgstrate(string stk)
            {
                double val = 0;
                try
                {
                    string vchxml = Resource1.GSTRATE.Replace("~CMP~", lblCurrentCompany.Text.ToString()).Replace("~STK~", stk);
                    string res = c.SendReqst(vchxml);
                    XmlDocument xml = new XmlDocument();
                    xml.LoadXml(res);
                    XmlElement rootnode = xml.DocumentElement;
                    XmlNodeList xmlist = rootnode.SelectNodes("//ENVELOPE//VATDETAIL//VATLEDGERS");
                    XmlNamespaceManager nsmanager = new XmlNamespaceManager(xml.NameTable);
                    nsmanager.AddNamespace("UDF", "TallyUDF");
                    xml.PreserveWhitespace = false;
                    foreach (XmlNode tallyMsg in xmlist)
                    {
                        string taxname = tallyMsg.SelectSingleNode("./LEDGER").InnerText.ToString();
                        double.TryParse(tallyMsg.SelectSingleNode("./TAX").InnerText.ToString(), out val);
                        if (taxname.ToUpper().Contains("INTEGRATED"))
                            break;
                    }
                    xml = null;
                }
                catch (Exception ex)
                {
    
                    val = 10;
                }
                return val;
            }
    
            protected void BindGrid()
            {
                GVItem.DataSource = (DataTable)ViewState["item"];
                GVItem.DataBind();
                GVItem.Columns[1].ItemStyle.Width = 270;
               // GVItem.Columns[1].HeaderText = "Sr";
            }
    
            private void calculateSum()
            {
    
                foreach (GridViewRow row in GVItem.Rows)
                {
    
                    grandtotal = grandtotal + Convert.ToDecimal(row.Cells[7].Text); //Where Cells is the column. Just changed the index of cells
                }
                GVItem.FooterRow.Cells[1].Text = "Total(W/O GST)";
                GVItem.FooterRow.Cells[7].Text = grandtotal.ToString();
              
            }
    
            protected void GVItem_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
            {
                GVItem.EditIndex = -1;
                BindGrid();
            }
    
            protected void GVItem_RowDeleting(object sender, GridViewDeleteEventArgs e)
            {
                int index = Convert.ToInt32(e.RowIndex);
                DataTable dt = ViewState["item"] as DataTable;
                dt.Rows[index].Delete();
                Console.WriteLine("onclick", "alert('Successfully Deleted " + "item" + "');", true);
                ViewState["item"] = dt;
                BindGrid();
                lblGrossAmt.Visible = false;
                GrossAmt.Visible = false;
                txtTotalAmountWithGST.Text = "";
                lblTotalAmtWithGST.Visible = false;
                txtTotalAmountWithGST.Visible = false;
              
                lblIGST.Visible = false;
                txtIGST.Text = "";
                txtIGST.Visible = false;
                txtSGST.Text = "";
                txtSGST.Visible = false;
                txtCGST.Text = "";
                txtCGST.Visible = false;     
                lblCGST.Visible = false;
                lblSGST.Visible = false;
    
            }
    
            protected void GVItem_RowEditing(object sender, GridViewEditEventArgs e)
            {
                GVItem.EditIndex = e.NewEditIndex;
                this.BindGrid();
            }
    
            protected void GVItem_RowUpdating(object sender, GridViewUpdateEventArgs e)
            {
                int sr = Convert.ToInt32(GVItem.DataKeys[e.RowIndex].Value.ToString());
                GridViewRow row = (GridViewRow)GVItem.Rows[e.RowIndex];
                string ITEM = (row.Cells[1].Controls[0] as System.Web.UI.WebControls.TextBox).Text;
                string DESC= (row.Cells[2].Controls[0] as System.Web.UI.WebControls.TextBox).Text;
                string DUE= (row.Cells[3].Controls[0] as System.Web.UI.WebControls.TextBox).Text;
                string QTY = (row.Cells[4].Controls[0] as System.Web.UI.WebControls.TextBox).Text;    
                string RATE = (row.Cells[5].Controls[0] as System.Web.UI.WebControls.TextBox).Text;
                string UNIT = (row.Cells[6].Controls[0] as System.Web.UI.WebControls.TextBox).Text;
                decimal amount = Convert.ToDecimal(QTY.ToString()) * Convert.ToDecimal(RATE.ToString());
    
                DataTable dt = ViewState["item"] as DataTable;
                dt.Rows[row.RowIndex]["Name Of Item"] = ITEM;
                dt.Rows[row.RowIndex]["Description"] = DESC;
                dt.Rows[row.RowIndex]["Due On"] = DUE;
                dt.Rows[row.RowIndex]["Quantity"] = QTY;
                dt.Rows[row.RowIndex]["Rate"] = RATE;
                dt.Rows[row.RowIndex]["Per"] = UNIT;
                dt.Rows[row.RowIndex]["Amount"] = amount;
                ViewState["item"] = dt;
                GVItem.EditIndex = -1;
                this.BindGrid();
    
                calculateSum();
                decimal total = 0;
                double sgst = 0, cgst = 0, igst = 0, taxRate = 10;
                foreach (GridViewRow row1 in GVItem.Rows)
                {
                    {
                        // item ka index Konsa he
                        taxRate = getgstrate(row1.Cells[1].Text);
                        // qtytotal += Convert.ToDecimal(row.Cells[5].Value.ToString());
                        total += Convert.ToDecimal(row1.Cells[7].Text);
                        double temp = Math.Round(Convert.ToDouble(row1.Cells[7].Text), 2);
                        temp = Math.Round(temp * taxRate / 100, 1);
    
                        if (lblCMPState.Text.ToString() == lblPartyState.Text.ToString())
                        //  cmpany state && partystate ==
                        {
                            cgst += temp / 2;
                            sgst += temp / 2;
                        }
                        else
                            igst += temp;
                        GrossAmt.Text = total.ToString();
                        //  txtTotalQty.Text = qtytotal.ToString();
                    }
                }
                txtCGST.Text = String.Format("{00:00}", cgst);
                txtSGST.Text = String.Format("{00:00}", sgst);
                txtIGST.Text = String.Format("{00:00}", igst);
                GSTValue();
            }
    
            protected void ddlPartyName_SelectedIndexChanged(object sender, EventArgs e)
            {
                lblPartyState.Text = string.Empty;
                DataTable LedgerStateFilt = LedgerState(ddlPartyName.SelectedItem.Text);
                foreach (DataRow r in LedgerStateFilt.Rows)
                {
                  //  lblPartyState.Visible = true;
                    lblPartyState.Text = (r["$LedStateName"].ToString());
                }
    
                lblPartyAddress1.Text = string.Empty;
    
                DataTable LedgerAddressFilt = LedgerAddress(ddlPartyName.SelectedItem.Text);
                foreach (DataRow r in LedgerAddressFilt.Rows)
                {
                   // lblPartyAddress1.Visible = true;
                    lblPartyAddress1.Text = (r["$_Address1"].ToString());
                }
    
                lblPartyAddress2.Text = string.Empty;
                DataTable LedgerAddressFilt2 = LedgerAddress2(ddlPartyName.SelectedItem.Text);
                foreach (DataRow r in LedgerAddressFilt2.Rows)
                {
                   // lblPartyAddress2.Visible = true;
                    lblPartyAddress2.Text = (r["$_Address2"].ToString());
                }
    
                lblPartyAddress3.Text = string.Empty;
                DataTable LedgerAddressFilt3 = LedgerAddress3(ddlPartyName.SelectedItem.Text);
                foreach (DataRow r in LedgerAddressFilt3.Rows)
                {
                   // lblPartyAddress3.Visible = true;
                    lblPartyAddress3.Text = (r["$_Address3"].ToString());
                }
    
                lblPartyAddress4.Text = string.Empty;
                DataTable LedgerAddressFilt4 = LedgerAddress4(ddlPartyName.SelectedItem.Text);
                foreach (DataRow r in LedgerAddressFilt4.Rows)
                {
                  //  lblPartyAddress4.Visible = true;
                    lblPartyAddress4.Text = (r["$_Address4"].ToString());
                }
    
                lblCountry.Text = string.Empty;
                DataTable LedgerCountryFilt = LedgerCountry(ddlPartyName.SelectedItem.Text);
                foreach (DataRow r in LedgerCountryFilt.Rows)
                {
                   // lblCountry.Visible = true;
                    lblCountry.Text = (r["$CountryName"].ToString());
                }
    
                lblGSTIN.Text = string.Empty;
                DataTable LedgerGSTINFilt = LedgerGSTIN(ddlPartyName.SelectedItem.Text);
                foreach (DataRow r in LedgerGSTINFilt.Rows)
                {
                    //lblGSTIN.Visible = true;
                    lblGSTIN.Text = (r["$PartyGSTIN"].ToString());
                }
    
                lblUserEmail.Text = string.Empty;
                DataTable LedgerEmailFilt = LedgerEmail(ddlPartyName.SelectedItem.Text);
                foreach (DataRow r in LedgerEmailFilt.Rows)
                {
                    //lblGSTIN.Visible = true;
                    lblUserEmail.Text = (r["$EMail"].ToString());
                }
            }
    
    
            public void getOrderNo()
            {
                String myquery = "Select ORDERNO From SO";
                SqlCommand cmd = new SqlCommand();
                cmd.CommandText = myquery;
                cmd.Connection = con;
                SqlDataAdapter da = new SqlDataAdapter();
                da.SelectCommand = cmd;
                DataSet ds = new DataSet();
                da.Fill(ds);
                con.Close();
                if (ds.Tables[0].Rows.Count == 0)
                {
                    // txtOrderNo.Text = "PO/20-21-20192020";
                    lblRunningOrderNumb.Text = "ABS/SO-21-22/0001";
                }
                else
                {
                    String myquery1 = "Select max(ORDERNO) From SO";
                    SqlCommand cmd1 = new SqlCommand();
                    cmd1.CommandText = myquery1;
                    cmd1.Connection = con;
                    SqlDataAdapter da1 = new SqlDataAdapter();
                    da1.SelectCommand = cmd1;
                    DataSet ds1 = new DataSet();
                    da1.Fill(ds1);
                    string s = lblRunningOrderNumb.Text = ds1.Tables[0].Rows[0][0].ToString();
                    int len = s.Length;
                    string splitno = s.Substring(13, len - 13);
                    int num = Convert.ToInt32(splitno);
                    num++;
                    lblRunningOrderNumb.Text = s.Substring(0, 13) + num.ToString("0000");
                   
                }
            }
    
            public void SendEmail()
            {
                if (!string.IsNullOrEmpty(lblUserEmail.Text))
                {
    
                    var HostAdd = ConfigurationManager.AppSettings["Host"].ToString();
                    var FromEmailid = ConfigurationManager.AppSettings["FromMail"].ToString();
                    var Pass = ConfigurationManager.AppSettings["Password"].ToString();
                    var port = ConfigurationManager.AppSettings["Port"].ToString();
                    var cc = ConfigurationManager.AppSettings["CC"].ToString();
                    var bcc = ConfigurationManager.AppSettings["BCC"].ToString();
                    MailMessage mailMessage = new MailMessage();
                    mailMessage.To.Add(lblUserEmail.Text);
    
                    mailMessage.From = new MailAddress(FromEmailid, "ABSOLUTE NETWORKS PVT. LTD.");
                    mailMessage.Subject = ddlPartyName.SelectedItem.ToString() + " - ORDER NO - " + lblRunningOrderNumb.Text.ToString();
                    mailMessage.Body = CreateBody();
                    mailMessage.IsBodyHtml = true;
                    string[] Multi = lblUserEmail.Text.Split(',');
                    foreach (string MultiEmailID in Multi)
                    {
                        mailMessage.To.Add(new MailAddress(MultiEmailID));
                    }
                    string[] CCId = cc.Split(',');
                    foreach (string CCEmail in CCId)
                    {
                        if (!string.IsNullOrWhiteSpace(cc))
                        {
                            mailMessage.CC.Add(new MailAddress(CCEmail));
                        }
                    }
    
                    string[] bccid = cc.Split(',');
                    foreach (string bccEmailId in bccid)
                    {
                        if (!string.IsNullOrWhiteSpace(bcc))
                        {
                            mailMessage.CC.Add(new MailAddress(bccEmailId));
                        }
                    }
    
              
                    SmtpClient smtp = new SmtpClient();
                    smtp.Host = HostAdd;
                    smtp.EnableSsl = true;
                    smtp.UseDefaultCredentials = false;
                    smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
                    smtp.Credentials = new NetworkCredential(FromEmailid, Pass);
                    smtp.Port = Convert.ToInt32(port);
                    smtp.Send(mailMessage);  
                }
            }
    
            private string CreateBody()
            {
                string body = string.Empty;
                using (StreamReader reader = new StreamReader(Server.MapPath("Order.htm")))
                {
    
                    body = reader.ReadToEnd();
    
                }
                using (StringWriter sw = new StringWriter())
                {
                    GVItem.Columns[8].Visible = false;
                    HtmlTextWriter hw = new HtmlTextWriter(sw);
                    GVItem.RenderControl(hw);
                    body = body.Replace("{ReqNo}", lblRunningOrderNumb.Text);
                    body = body.Replace("{ReqDate}", txtVchDate.Text);
                    body = body.Replace("{Createdby}", user);
                    body = body.Replace("{griddata}", sw.ToString());
                    return body;
                }
            }
            protected void btnSave_Click(object sender, EventArgs e)
            {
                try
                {
                    getOrderNo();
                    StringBuilder builder = new StringBuilder();
                    builder.Append($@"<ENVELOPE>
    <HEADER>
      <TALLYREQUEST>Import Data</TALLYREQUEST>
    </HEADER>
    <BODY>
      <IMPORTDATA>
       <REQUESTDESC>
        <REPORTNAME>Vouchers</REPORTNAME>
        <STATICVARIABLES>
         <SVCURRENTCOMPANY>{lblCurrentCompany.Text}</SVCURRENTCOMPANY>
        </STATICVARIABLES>
       </REQUESTDESC>
       <REQUESTDATA>
        <TALLYMESSAGE>
         <VOUCHER>
          <ADDRESS.LIST>
           <ADDRESS>{lblPartyAddress1.Text}</ADDRESS>
           <ADDRESS>{lblPartyAddress2.Text}</ADDRESS>
           <ADDRESS>{lblPartyAddress3.Text}</ADDRESS>
            <ADDRESS>{lblPartyAddress4.Text}</ADDRESS>
          </ADDRESS.LIST>
          <BASICBUYERADDRESS.LIST>
           <BASICBUYERADDRESS>{lblPartyAddress1.Text}</BASICBUYERADDRESS>
           <BASICBUYERADDRESS>{lblPartyAddress2.Text}</BASICBUYERADDRESS>
           <BASICBUYERADDRESS>{lblPartyAddress3.Text}</BASICBUYERADDRESS>
            <BASICBUYERADDRESS>{lblPartyAddress4.Text}</BASICBUYERADDRESS>
          </BASICBUYERADDRESS.LIST>
          <BASICORDERTERMS.LIST>
           <BASICORDERTERMS>{txtTermsofDelivery.Text}</BASICORDERTERMS>
          </BASICORDERTERMS.LIST>
          <OLDAUDITENTRYIDS.LIST>
           <OLDAUDITENTRYIDS>-1</OLDAUDITENTRYIDS>
          </OLDAUDITENTRYIDS.LIST>
          <DATE>{ho.Cdate(txtVchDate.Text.ToString())}</DATE>
          <GSTREGISTRATIONTYPE>Regular</GSTREGISTRATIONTYPE>
          <VATDEALERTYPE>Regular</VATDEALERTYPE>
          <STATENAME>{lblPartyState.Text}</STATENAME>
          <NARRATION>{txtNarraion.Text}</NARRATION>
          <COUNTRYOFRESIDENCE>{lblCountry.Text}</COUNTRYOFRESIDENCE>
          <PARTYGSTIN>{lblGSTIN.Text}</PARTYGSTIN>
          <PLACEOFSUPPLY>{lblPartyState.Text}</PLACEOFSUPPLY>
          <PARTYNAME>{ddlPartyName.SelectedItem.ToString()}</PARTYNAME>
          <PARTYLEDGERNAME>{ddlPartyName.SelectedItem.ToString()}</PARTYLEDGERNAME>
          <VOUCHERTYPENAME>Sales Order</VOUCHERTYPENAME>
          <REFERENCE>{lblRunningOrderNumb.Text}</REFERENCE>
          <BASICBASEPARTYNAME>{ddlPartyName.SelectedItem.ToString()}</BASICBASEPARTYNAME>
          <CSTFORMISSUETYPE/>
          <CSTFORMRECVTYPE/>
          <FBTPAYMENTTYPE>Default</FBTPAYMENTTYPE>
          <PERSISTEDVIEW>Invoice Voucher View</PERSISTEDVIEW>
          <CONSIGNEEGSTIN>{lblGSTIN.Text}</CONSIGNEEGSTIN>
          <BASICBUYERNAME>{ddlPartyName.SelectedItem.ToString()}</BASICBUYERNAME>
          <BASICORDERREF>{txtOtherRef.Text}</BASICORDERREF>
          <BASICDUEDATEOFPYMT>{txtModeTermsofPayment.Text}</BASICDUEDATEOFPYMT>
          <PARTYMAILINGNAME>{ddlPartyName.SelectedItem.ToString()}</PARTYMAILINGNAME>
          <PARTYPINCODE></PARTYPINCODE>
          <CONSIGNEEMAILINGNAME>{ddlPartyName.SelectedItem.ToString()}</CONSIGNEEMAILINGNAME>
          <CONSIGNEECOUNTRYNAME>{lblCountry.Text}</CONSIGNEECOUNTRYNAME>
          <VCHGSTCLASS/>
          <BUYERPINNUMBER></BUYERPINNUMBER>
          <CONSIGNEEPINNUMBER></CONSIGNEEPINNUMBER>
          <CONSIGNEESTATENAME>{lblPartyState.Text}</CONSIGNEESTATENAME>
          <CONSIGNEEPINCODE></CONSIGNEEPINCODE>
          <DIFFACTUALQTY>No</DIFFACTUALQTY>
          <ISMSTFROMSYNC>No</ISMSTFROMSYNC>
          <ASORIGINAL>No</ASORIGINAL>
          <AUDITED>No</AUDITED>
          <FORJOBCOSTING>No</FORJOBCOSTING>
          <ISOPTIONAL>No</ISOPTIONAL>
          <EFFECTIVEDATE>{ho.Cdate(txtVchDate.Text.ToString())}</EFFECTIVEDATE>
          <USEFOREXCISE>No</USEFOREXCISE>
          <ISFORJOBWORKIN>No</ISFORJOBWORKIN>
          <ALLOWCONSUMPTION>No</ALLOWCONSUMPTION>
          <USEFORINTEREST>No</USEFORINTEREST>
          <USEFORGAINLOSS>No</USEFORGAINLOSS>
          <USEFORGODOWNTRANSFER>No</USEFORGODOWNTRANSFER>
          <USEFORCOMPOUND>No</USEFORCOMPOUND>
          <USEFORSERVICETAX>No</USEFORSERVICETAX>
          <ISDELETED>No</ISDELETED>
          <ISONHOLD>No</ISONHOLD>
          <ISBOENOTAPPLICABLE>No</ISBOENOTAPPLICABLE>
          <ISEXCISEVOUCHER>No</ISEXCISEVOUCHER>
          <EXCISETAXOVERRIDE>No</EXCISETAXOVERRIDE>
          <USEFORTAXUNITTRANSFER>No</USEFORTAXUNITTRANSFER>
          <IGNOREPOSVALIDATION>No</IGNOREPOSVALIDATION>
          <EXCISEOPENING>No</EXCISEOPENING>
          <USEFORFINALPRODUCTION>No</USEFORFINALPRODUCTION>
          <ISTDSOVERRIDDEN>No</ISTDSOVERRIDDEN>
          <ISTCSOVERRIDDEN>No</ISTCSOVERRIDDEN>
          <ISTDSTCSCASHVCH>No</ISTDSTCSCASHVCH>
          <INCLUDEADVPYMTVCH>No</INCLUDEADVPYMTVCH>
          <ISSUBWORKSCONTRACT>No</ISSUBWORKSCONTRACT>
          <ISVATOVERRIDDEN>No</ISVATOVERRIDDEN>
          <IGNOREORIGVCHDATE>No</IGNOREORIGVCHDATE>
          <ISVATPAIDATCUSTOMS>No</ISVATPAIDATCUSTOMS>
          <ISDECLAREDTOCUSTOMS>No</ISDECLAREDTOCUSTOMS>
          <ISSERVICETAXOVERRIDDEN>No</ISSERVICETAXOVERRIDDEN>
          <ISISDVOUCHER>No</ISISDVOUCHER>
          <ISEXCISEOVERRIDDEN>No</ISEXCISEOVERRIDDEN>
          <ISEXCISESUPPLYVCH>No</ISEXCISESUPPLYVCH>
          <ISGSTOVERRIDDEN>No</ISGSTOVERRIDDEN>
          <GSTNOTEXPORTED>No</GSTNOTEXPORTED>
          <IGNOREGSTINVALIDATION>No</IGNOREGSTINVALIDATION>
          <ISGSTREFUND>No</ISGSTREFUND>
          <ISGSTSECSEVENAPPLICABLE>No</ISGSTSECSEVENAPPLICABLE>
          <ISVATPRINCIPALACCOUNT>No</ISVATPRINCIPALACCOUNT>
          <IGNOREEINVVALIDATION>No</IGNOREEINVVALIDATION>
          <IRNJSONEXPORTED>No</IRNJSONEXPORTED>
          <IRNCANCELLED>No</IRNCANCELLED>
          <ISSHIPPINGWITHINSTATE>No</ISSHIPPINGWITHINSTATE>
          <ISOVERSEASTOURISTTRANS>No</ISOVERSEASTOURISTTRANS>
          <ISDESIGNATEDZONEPARTY>No</ISDESIGNATEDZONEPARTY>
          <ISCANCELLED>No</ISCANCELLED>
          <HASCASHFLOW>No</HASCASHFLOW>
          <ISPOSTDATED>No</ISPOSTDATED>
          <USETRACKINGNUMBER>No</USETRACKINGNUMBER>
          <ISINVOICE>No</ISINVOICE>
          <MFGJOURNAL>No</MFGJOURNAL>
          <HASDISCOUNTS>No</HASDISCOUNTS>
          <ASPAYSLIP>No</ASPAYSLIP>
          <ISCOSTCENTRE>No</ISCOSTCENTRE>
          <ISSTXNONREALIZEDVCH>No</ISSTXNONREALIZEDVCH>
          <ISEXCISEMANUFACTURERON>No</ISEXCISEMANUFACTURERON>
          <ISBLANKCHEQUE>No</ISBLANKCHEQUE>
          <ISVOID>No</ISVOID>
          <ORDERLINESTATUS>No</ORDERLINESTATUS>
          <VATISAGNSTCANCSALES>No</VATISAGNSTCANCSALES>
          <VATISPURCEXEMPTED>No</VATISPURCEXEMPTED>
          <ISVATRESTAXINVOICE>No</ISVATRESTAXINVOICE>
          <VATISASSESABLECALCVCH>No</VATISASSESABLECALCVCH>
          <ISVATDUTYPAID>Yes</ISVATDUTYPAID>
          <ISDELIVERYSAMEASCONSIGNEE>No</ISDELIVERYSAMEASCONSIGNEE>
          <ISDISPATCHSAMEASCONSIGNOR>No</ISDISPATCHSAMEASCONSIGNOR>
          <ISDELETEDVCHRETAINED>No</ISDELETEDVCHRETAINED>
          <CHANGEVCHMODE>No</CHANGEVCHMODE>
          <RESETIRNQRCODE>No</RESETIRNQRCODE>");
                    foreach (GridViewRow row in GVItem.Rows)
                    {
                        if (row.Cells[1].Text != null)
                        {
                            builder.Append($@" <ALLINVENTORYENTRIES.LIST>
           <STOCKITEMNAME>{row.Cells[1].Text.ToString().Trim()}</STOCKITEMNAME>
           <ISDEEMEDPOSITIVE>No</ISDEEMEDPOSITIVE>
           <ISLASTDEEMEDPOSITIVE>No</ISLASTDEEMEDPOSITIVE>
           <ISAUTONEGATE>No</ISAUTONEGATE>
           <ISCUSTOMSCLEARANCE>No</ISCUSTOMSCLEARANCE>
           <ISTRACKCOMPONENT>No</ISTRACKCOMPONENT>
           <ISTRACKPRODUCTION>No</ISTRACKPRODUCTION>
           <ISPRIMARYITEM>No</ISPRIMARYITEM>
           <ISSCRAP>No</ISSCRAP>");
                            if (!string.IsNullOrEmpty(row.Cells[2].Text) && row.Cells[2].Text.ToString() != "&nbsp;")
                            {
                                builder.Append($@"
                <BASICUSERDESCRIPTION.LIST>
                        <BASICUSERDESCRIPTION>{(row.Cells[2].Text.ToString()).Trim()}</BASICUSERDESCRIPTION>
                       </BASICUSERDESCRIPTION.LIST>");
                            }
                            builder.Append($@"<RATE>{Convert.ToDecimal(row.Cells[5].Text)}</RATE>
           <AMOUNT>{Convert.ToDecimal(row.Cells[7].Text)}</AMOUNT>
           <ACTUALQTY>{Convert.ToDecimal(row.Cells[4].Text)}</ACTUALQTY>
           <BILLEDQTY>{Convert.ToDecimal(row.Cells[4].Text)}</BILLEDQTY>
           <BATCHALLOCATIONS.LIST>
            <GODOWNNAME>Main Location</GODOWNNAME>
            <BATCHNAME>Primary Batch</BATCHNAME>
            <INDENTNO/>
    <ORDERNO>{lblRunningOrderNumb.Text.Trim()}</ORDERNO>
            <TRACKINGNUMBER/>
            <DYNAMICCSTISCLEARED>No</DYNAMICCSTISCLEARED>
            <AMOUNT>{Convert.ToDecimal(row.Cells[7].Text)}</AMOUNT>
            <ACTUALQTY>{Convert.ToDecimal(row.Cells[4].Text)}</ACTUALQTY>
            <BILLEDQTY>{Convert.ToDecimal(row.Cells[4].Text)}</BILLEDQTY>
            <ORDERDUEDATE>{ho.Cdate(row.Cells[3].Text.ToString().Trim())}</ORDERDUEDATE>");
                            builder.Append($@"</BATCHALLOCATIONS.LIST>
           <ACCOUNTINGALLOCATIONS.LIST>
            <LEDGERNAME>{ddlSalesLeder.SelectedItem.ToString()}</LEDGERNAME>
            <GSTCLASS/>
            <ISDEEMEDPOSITIVE>No</ISDEEMEDPOSITIVE>
            <LEDGERFROMITEM>No</LEDGERFROMITEM>
            <REMOVEZEROENTRIES>No</REMOVEZEROENTRIES>
            <ISPARTYLEDGER>No</ISPARTYLEDGER>
            <ISLASTDEEMEDPOSITIVE>No</ISLASTDEEMEDPOSITIVE>
            <ISCAPVATTAXALTERED>No</ISCAPVATTAXALTERED>
            <ISCAPVATNOTCLAIMED>No</ISCAPVATNOTCLAIMED>
            <AMOUNT>{Convert.ToDecimal(row.Cells[7].Text)}</AMOUNT>
           </ACCOUNTINGALLOCATIONS.LIST> 
          </ALLINVENTORYENTRIES.LIST>");
                        }
                    }
    
                    builder.Append($@"<LEDGERENTRIES.LIST>
           <LEDGERNAME>{ddlPartyName.SelectedItem.ToString()}</LEDGERNAME>
           <GSTCLASS/>
           <ISDEEMEDPOSITIVE>Yes</ISDEEMEDPOSITIVE>
           <LEDGERFROMITEM>No</LEDGERFROMITEM>
           <ISPARTYLEDGER>No</ISPARTYLEDGER>
           <ISLASTDEEMEDPOSITIVE>Yes</ISLASTDEEMEDPOSITIVE>
           <ISCAPVATNOTCLAIMED>No</ISCAPVATNOTCLAIMED>
           <AMOUNT>-{txtTotalAmountWithGST.Text}</AMOUNT>
           <BILLALLOCATIONS.LIST>
            <NAME>{lblRunningOrderNumb.Text.Trim()}</NAME>
            <BILLTYPE>New Ref</BILLTYPE>
            <TDSDEDUCTEEISSPECIALRATE>No</TDSDEDUCTEEISSPECIALRATE>
            <AMOUNT>-{txtTotalAmountWithGST.Text}</AMOUNT>    
           </BILLALLOCATIONS.LIST>
          </LEDGERENTRIES.LIST>");
    
                    if (lblCMPState.Text == lblPartyState.Text)
                    {
                        builder.Append($@"<LEDGERENTRIES.LIST>
           <ROUNDTYPE/>
           <LEDGERNAME>CGST</LEDGERNAME>
           <VOUCHERFBTCATEGORY/>
           <GSTCLASS/>
           <ISDEEMEDPOSITIVE>No</ISDEEMEDPOSITIVE>
           <LEDGERFROMITEM>No</LEDGERFROMITEM>
           <ISPARTYLEDGER>No</ISPARTYLEDGER>
           <ISLASTDEEMEDPOSITIVE>No</ISLASTDEEMEDPOSITIVE>
           <ISCAPVATNOTCLAIMED>No</ISCAPVATNOTCLAIMED>
           <AMOUNT>{Convert.ToDecimal(txtCGST.Text)}</AMOUNT>
           <VATEXPAMOUNT>{Convert.ToDecimal(txtCGST.Text)}</VATEXPAMOUNT>
           <GSTDUTYAMOUNT>{Convert.ToDecimal(txtCGST.Text)}</GSTDUTYAMOUNT>
          </LEDGERENTRIES.LIST>
    <LEDGERENTRIES.LIST>
           <ROUNDTYPE/>
           <LEDGERNAME>SGST</LEDGERNAME>
           <VOUCHERFBTCATEGORY/>
           <GSTCLASS/>
           <ISDEEMEDPOSITIVE>No</ISDEEMEDPOSITIVE>
           <LEDGERFROMITEM>No</LEDGERFROMITEM>
           <ISPARTYLEDGER>No</ISPARTYLEDGER>
           <ISLASTDEEMEDPOSITIVE>No</ISLASTDEEMEDPOSITIVE>
           <ISCAPVATNOTCLAIMED>No</ISCAPVATNOTCLAIMED>
           <AMOUNT>{Convert.ToDecimal(txtSGST.Text)}</AMOUNT>
           <VATEXPAMOUNT>{Convert.ToDecimal(txtSGST.Text)}</VATEXPAMOUNT>
           <GSTDUTYAMOUNT>{Convert.ToDecimal(txtSGST.Text)}</GSTDUTYAMOUNT>
          </LEDGERENTRIES.LIST>");
                    }
                    else
    
                    {
                        builder.Append($@"<LEDGERENTRIES.LIST>
           <ROUNDTYPE/>
           <LEDGERNAME>IGST</LEDGERNAME>
           <VOUCHERFBTCATEGORY/>
           <GSTCLASS/>
           <ISDEEMEDPOSITIVE>No</ISDEEMEDPOSITIVE>
           <LEDGERFROMITEM>No</LEDGERFROMITEM>
           <ISPARTYLEDGER>No</ISPARTYLEDGER>
           <ISLASTDEEMEDPOSITIVE>No</ISLASTDEEMEDPOSITIVE>
           <ISCAPVATNOTCLAIMED>No</ISCAPVATNOTCLAIMED>
           <AMOUNT>{Convert.ToDecimal(txtIGST.Text)}</AMOUNT>
           <VATEXPAMOUNT>{Convert.ToDecimal(txtIGST.Text)}</VATEXPAMOUNT>
           <GSTDUTYAMOUNT>{Convert.ToDecimal(txtIGST.Text)}</GSTDUTYAMOUNT>
          </LEDGERENTRIES.LIST>");
                    }
    
                    builder.Append($@"
                        </VOUCHER>
                        </TALLYMESSAGE>
                        </REQUESTDATA>
                     </IMPORTDATA>
                    </BODY>
                    </ENVELOPE>");
                    string innerString = builder.ToString();
    
                    // TextWriter textWriter = new StreamWriter("XML\\Post.xml");
    
                    string myTempFile = Path.Combine(Path.GetTempPath(), "Post.xml");
                    using (StreamWriter sw = new StreamWriter(myTempFile))
                    {
                        sw.WriteLine("Something Went Wrong..");
                    }
    
                    //var xmlDIR = Server.MapPath("~");
                    //xmlDIR = xmlDIR + "XML\\Post.xml";
    
                    //  var path = @"E:\ABSOLUTE SALES ORDER\XML\Post.xml";//@"D:\ABS_XML\Post.xml";
                    // File.WriteAllText(path, innerString);
                    File.WriteAllText(myTempFile, innerString);
                    String res = c.SendReqst(innerString);
                  
                    XmlDocument xml = new XmlDocument();
                    xml.LoadXml(res);
                    string lastvchid = xml.SelectSingleNode("//RESPONSE//LASTVCHID").InnerText;
                    string created = xml.SelectSingleNode("//RESPONSE//CREATED").InnerText;
                    if (Convert.ToInt32(lastvchid) > 0)
                    {
                        string vchxml = Resource1.LASTVCHNO.Replace("~CMP~", lblCurrentCompany.Text.ToString()).Replace("~MSTID~", lastvchid);
                        res = c.SendReqst(vchxml);
                        xml = new XmlDocument();
                        xml.LoadXml(res);
                        voucherNum = xml.SelectSingleNode("//ENVELOPE//VATDETAIL//VATLEDGERS//LEDGER").InnerText;
                       
                        ItemDetails(lastvchid, voucherNum, innerString);
                        SendEmail();
                    }
             
        }
                catch (Exception ae)
                {
                    throw ae;
               
                }
                finally
                {
                    //ScriptManager.RegisterStartupScript(this, GetType(), "Popup", "successalert();", true);
                    // ShowNotification("Order Created Successfully!", WarningType.Success);
                    Response.Redirect("SO_CREATION.aspx");
                }
            }
    
    
            public override void VerifyRenderingInServerForm(System.Web.UI.Control control)
            {
    
            }
    
    
            private void ItemDetails(string mstid, string voucherNum, string xmlsave)
            {
                getOrderNo();
                try
                {
                    if (con.State == ConnectionState.Closed)
                        con.Open();
                    string sid = "";
                    //25
                    SqlCommand com = new SqlCommand("Insert into SO(VOUCHERNUMBER,ORDERNO,ORDERDATE,PARTYNAME,PARTY_ADD1,PARTY_ADD2,PARTY_ADD3,PARTY_ADD4,MODE_TERMS_OF_PAYMENT,OTHER_REF,TERMS_OF_DEL,PARTY_STATE,PARTY_COUNTRY,PARTY_GSTIN,REFERENCE,SALESLEDGER,CGST,SGST,IGST,SUBTOTAL,AMOUNT,NARRATION,DCDATE,CREATEDBY,CREATEDON,XMLData) Values(@VOUCHERNUMBER,@ORDERNO,@ORDERDATE,@PARTYNAME,@PARTY_ADD1,@PARTY_ADD2,@PARTY_ADD3,@PARTY_ADD4,@MODE_TERMS_OF_PAYMENT,@OTHER_REF,@TERMS_OF_DEL,@PARTY_STATE,@PARTY_COUNTRY,@PARTY_GSTIN,@REFERENCE,@SALESLEDGER,@CGST,@SGST,@IGST,@SUBTOTAL,@AMOUNT,@NARRATION,@DCDATE,@CREATEDBY,@CREATEDON,@XMLData)", con);
                    com.Parameters.AddWithValue("@VOUCHERNUMBER", voucherNum);
                    com.Parameters.AddWithValue("@ORDERNO", lblRunningOrderNumb.Text.ToString());
                    com.Parameters.AddWithValue("@ORDERDATE", ho.Cdate(txtVchDate.Text.ToString()));
                    com.Parameters.AddWithValue("@PARTYNAME", ddlPartyName.SelectedItem.ToString());
                    com.Parameters.AddWithValue("@PARTY_ADD1", lblPartyAddress1.Text.ToString());
                    com.Parameters.AddWithValue("@PARTY_ADD2", lblPartyAddress2.Text.ToString());
                    com.Parameters.AddWithValue("@PARTY_ADD3", lblPartyAddress3.Text.ToString());
                    com.Parameters.AddWithValue("@PARTY_ADD4", lblPartyAddress4.Text.ToString());
                    com.Parameters.AddWithValue("@MODE_TERMS_OF_PAYMENT", txtModeTermsofPayment.Text.ToString());
                    com.Parameters.AddWithValue("@OTHER_REF", txtOtherRef.Text.ToString());
                    com.Parameters.AddWithValue("@TERMS_OF_DEL", txtTermsofDelivery.Text.ToString());
                    com.Parameters.AddWithValue("@PARTY_STATE", lblPartyState.Text.ToString());
                    com.Parameters.AddWithValue("@PARTY_COUNTRY", lblCountry.Text.ToString());
                    com.Parameters.AddWithValue("@PARTY_GSTIN", lblGSTIN.Text.ToString());
                    com.Parameters.AddWithValue("@REFERENCE", lblRunningOrderNumb.Text.ToString());
                    double val = 0;
                    double.TryParse(txtCGST.Text, out val);
                    com.Parameters.AddWithValue("@CGST", val);
    
                    double.TryParse(txtSGST.Text, out val);
                    com.Parameters.AddWithValue("@SGST", val);
    
                    double.TryParse(txtIGST.Text, out val);
                    com.Parameters.AddWithValue("@IGST", val);
    
    
                    //com.Parameters.AddWithValue("@CGST",Convert.ToDecimal(txtCGST.Text));
                    //com.Parameters.AddWithValue("@SGST", Convert.ToDecimal(txtSGST.Text));
                    //com.Parameters.AddWithValue("@IGST", Convert.ToDecimal(txtIGST.Text));
                    com.Parameters.AddWithValue("@SALESLEDGER", ddlSalesLeder.SelectedItem.ToString());
    
                    double.TryParse(GVItem.FooterRow.Cells[7].Text.ToString(), out val);
                    com.Parameters.AddWithValue("@SUBTOTAL",val);
                    // com.Parameters.AddWithValue("@SUBTOTAL", GVItem.FooterRow.Cells[7].Text.ToString());
    
                    double.TryParse(txtTotalAmountWithGST.Text.ToString(), out val);
                    com.Parameters.AddWithValue("@AMOUNT", val);
    
                  //  com.Parameters.AddWithValue("@AMOUNT", );
                    com.Parameters.AddWithValue("@NARRATION", txtNarraion.Text.ToString());
                    com.Parameters.AddWithValue("@DCDATE", DateTime.Now.ToString("yyyyMMdd"));
                    com.Parameters.AddWithValue("@CREATEDBY", user.ToString());
                    com.Parameters.AddWithValue("@CREATEDON", DateTime.Now);
                    com.Parameters.AddWithValue("@XMLData", xmlsave);
                    int rowsAffected = com.ExecuteNonQuery();
    
                    SqlCommand cmd = con.CreateCommand();
                    cmd.CommandType = CommandType.Text;
                    cmd.CommandText = "SELECT TOP 1 * FROM SO ORDER BY SOID DESC";
                    cmd.ExecuteNonQuery();
                    DataTable dt = new DataTable();
                    SqlDataAdapter da = new SqlDataAdapter(cmd);
                    da.Fill(dt);
                    foreach (DataRow dr in dt.Rows)
                    {
                        sid = dr["SOID"].ToString();
    
                    }
    
                    foreach (GridViewRow g1 in GVItem.Rows)
                    {
                        SqlCommand com2 = new SqlCommand("INSERT INTO SOITEM(SOID,STOCKITEM,DESCRIPTION,DUEON,QTY,RATE,PER,AMOUNT) values ('" + sid.ToString() + "','" + g1.Cells[1].Text + "','" + g1.Cells[2].Text.Replace("&nbsp;", string.Empty) + "','" + ho.Cdate(g1.Cells[3].Text) + "','" + g1.Cells[4].Text.Replace("&nbsp;", string.Empty) + "','" + g1.Cells[5].Text.Replace("&nbsp;", string.Empty) + "','" + g1.Cells[6].Text.Replace("&nbsp;", string.Empty) + "','" + g1.Cells[7].Text + "')", con);
                        com2.ExecuteNonQuery();
                    }
    
                }
                catch (Exception ex)
                {
                    throw ex;
    
                }
                finally
                {
                    con.Close();
                }
            }
    
            protected void BTNNewLed_Click(object sender, EventArgs e)
            {
                Response.Redirect("LEDGER_CREATION.aspx");
            }
        }
    }
     


  2. Sai Vineeth

    Sai Vineeth Active Member

    ROHIT JAISWAR likes this.


Share This Page