none
Importando um XML e usando colunas para fazer calculos RRS feed

  • Pergunta

  •  

    Preciso de uma ajuda, estou importando xml de Nfe, e estou usando o campo QTDA para fazer um calculo, só que o campo quantidade no xml e composto desta forma, 360.0000 e quando faço a importação desse campo fica desta forma 3600000 porque estou transformando para decimal no código, e também uso esta coluna de QTDA para fazer um calculo por Ex. coluna QTDA / QTDA. EMB.  no caso seria 3600000 / 2 = 1.800.000,00 mas esta errado este resultado o resultado correto deveria ser 180 e o campo QTDA deveria retornar do XML 360 e não 3600000 como esta retornando. Como posso resolver isso?

    Segue o XML

    <prod><cProd>CB60007/0180/6P32</cProd><cEAN/>

    <xProd>CRODAPEARL AF-LQ-(BR) 006416</xProd>

    <NCM>38249929</NCM>

    <CEST>2806300</CEST>

    <CFOP>5101</CFOP>

    <uCom>KG</uCom>

    <qCom>360.0000</qCom>

    <vUnCom>8.5600000000</vUnCom>

    <vProd>3081.60</vProd>

    <cEANTrib/><uTrib>KG</uTrib>

    <qTrib>360.0000</qTrib>

    <vUnTrib>8.5600000000</vUnTrib>

    <indTot>1</indTot>

    <xPed>002459</xPed>

    <nFCI>D89A9C05-4493-4740-937A-5DA6B9E675A8</nFCI></prod>

    segue meu codigo

    private void btn_xml_Click(object sender, EventArgs e)
            {
                DataSet ds = new DataSet();

                ds.ReadXml(@"C:\Xml_Entrada\" + txt_chave.Text + ".xml");

                txt_fornecedor.Text = ds.Tables["emit"].Rows[0]["xNome"].ToString();
                txt_cnpj.Text = ds.Tables["emit"].Rows[0]["CNPJ"].ToString();
                txt_nota.Text = ds.Tables["ide"].Rows[0]["nNF"].ToString();

                string FileName = @"C:\Xml_Entrada\" + txt_chave.Text + ".xml";
                List<ClasseItensXml> ListaItens = new List<ClasseItensXml>();
                XmlDocument doc = new XmlDocument();
                doc.Load(FileName);
                var proditens = doc.GetElementsByTagName("prod");

                foreach (XmlElement nodo in proditens)
                {
                    ListaItens.Add(
                         new ClasseItensXml()
                         {
                             CodigoProduto = nodo.GetElementsByTagName("cProd")[0].InnerText.Trim(),
                             NomeProduto = nodo.GetElementsByTagName("xProd")[0].InnerText.Trim(),
                             QuantidadeComercializada = Convert.ToDecimal(nodo.GetElementsByTagName("qCom")[0].InnerText.Trim())
                         });
                }

                dgw_Xml.DataSource = ListaItens;

                DataGridViewComboBoxColumn TipoEmabalagem = new DataGridViewComboBoxColumn();
                TipoEmabalagem.HeaderText = "TIPO EMBALAGEM";
                TipoEmabalagem.ReadOnly = false;
                //TipoEmabalagem.DisplayIndex = 8;
                TipoEmabalagem.Sorted = true;
                dgw_Xml.Columns.Add(TipoEmabalagem);

                

                var embalagem = new ArrayList();
                embalagem.Add("SACARIA");
                embalagem.Add("BOMBONA");
                embalagem.Add("TAMBOR");
                embalagem.Add("TAMBORETE");
                embalagem.Add("BALDE");
                embalagem.Add("BARRICA DE PAPELAO");
                embalagem.Add("CAIXA");
                embalagem.Add("FRASCO");
                embalagem.Add("PACOTE");

                TipoEmabalagem.Items.AddRange(embalagem.ToArray());

                dgw_Xml.Columns["PesoBruto"].DefaultCellStyle.Format = "N";
                dgw_Xml.Columns["QtdaEmbalagem"].DefaultCellStyle.Format = "N";
                dgw_Xml.Columns["ConferenciaPB"].DefaultCellStyle.Format = "N";
                dgw_Xml.Columns["ConferenciaPL"].DefaultCellStyle.Format = "N";
                //dgw_Xml.Columns["QuantidadeComercializada"].DefaultCellStyle.Format = "N";


                dgw_Xml.Columns["DataFabricacao"].DefaultCellStyle.Format = "d";
                dgw_Xml.Columns["DataValidade"].DefaultCellStyle.Format = "d";

                dgw_Xml.Columns["DataFabricacao"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
                dgw_Xml.Columns["DataValidade"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
                dgw_Xml.Columns["PesoBruto"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
                dgw_Xml.Columns["QtdaEmbalagem"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
                dgw_Xml.Columns["ConferenciaPB"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
                dgw_Xml.Columns["ConferenciaPL"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;

                dgw_Xml.Columns["CodigoProduto"].HeaderText = "COD. PRODUTO";
                dgw_Xml.Columns["NomeProduto"].HeaderText = "DESCRIÇÃO";
                dgw_Xml.Columns["LoteFornecedor"].HeaderText = "LOTE";
                dgw_Xml.Columns["DataFabricacao"].HeaderText = "FABRICAÇÃO";
                dgw_Xml.Columns["DataValidade"].HeaderText = "VALIDADE";
                dgw_Xml.Columns["QuantidadeComercializada"].HeaderText = "QTDA.";
                dgw_Xml.Columns["PesoBruto"].HeaderText = "PESO BRUTO";           
                dgw_Xml.Columns["QtdaEmbalagem"].HeaderText = "QTDA. EMB.";
                dgw_Xml.Columns["ConferenciaPB"].HeaderText = "CONFERENCIA PB";
                dgw_Xml.Columns["ConferenciaPL"].HeaderText = "CONFERENCIA PL";


                dgw_Xml.Columns["CodigoProduto"].DisplayIndex = 0;
                dgw_Xml.Columns["NomeProduto"].DisplayIndex = 1;
                dgw_Xml.Columns["LoteFornecedor"].DisplayIndex = 2;
                dgw_Xml.Columns["DataFabricacao"].DisplayIndex = 3;
                dgw_Xml.Columns["DataValidade"].DisplayIndex = 4;
                dgw_Xml.Columns["QuantidadeComercializada"].DisplayIndex = 5;
                dgw_Xml.Columns["PesoBruto"].DisplayIndex = 6;            
                dgw_Xml.Columns["QtdaEmbalagem"].DisplayIndex = 7;
                dgw_Xml.Columns["ConferenciaPB"].DisplayIndex = 8;
                dgw_Xml.Columns["ConferenciaPL"].DisplayIndex = 9;


               
                dgw_Xml.Columns["CodigoProduto"].ReadOnly = true;
                dgw_Xml.Columns["NomeProduto"].ReadOnly = true;
                dgw_Xml.Columns["LoteFornecedor"].ReadOnly = false;
                dgw_Xml.Columns["DataFabricacao"].ReadOnly = false;
                dgw_Xml.Columns["DataValidade"].ReadOnly = false;
                dgw_Xml.Columns["QuantidadeComercializada"].ReadOnly = true;          
                dgw_Xml.Columns["PesoBruto"].ReadOnly = false;
                dgw_Xml.Columns["QtdaEmbalagem"].ReadOnly = false;
                dgw_Xml.Columns["ConferenciaPB"].ReadOnly = true;
                dgw_Xml.Columns["ConferenciaPL"].ReadOnly = true;

            }
            private void dgw_Xml_CellEndEdit(object sender, DataGridViewCellEventArgs e)
            {
                foreach (DataGridViewRow row in dgw_Xml.Rows)
                {
                    if (e.ColumnIndex == dgw_Xml.Columns["QtdaEmbalagem"].Index)
                    {
                        dgw_Xml.CurrentRow.Cells["ConferenciaPB"].Value = ConferirPB();
                        dgw_Xml.CurrentRow.Cells["ConferenciaPL"].Value = ConferirPL();
                    }
                }
            }
            private decimal ConferirPB()
            {
                decimal pesoBruto = Convert.ToDecimal(dgw_Xml.CurrentRow.Cells["PesoBruto"].Value);
                decimal qtdaEmbalagem = Convert.ToDecimal(dgw_Xml.CurrentRow.Cells["QtdaEmbalagem"].Value);
                return pesoBruto / qtdaEmbalagem;
            }
            private decimal ConferirPL()
            {
                decimal pesoLiquido = Convert.ToDecimal(dgw_Xml.CurrentRow.Cells["QuantidadeComercializada"].Value);
                decimal qtdaEmbalagem = Convert.ToDecimal(dgw_Xml.CurrentRow.Cells["QtdaEmbalagem"].Value);
                return pesoLiquido / qtdaEmbalagem;
            }

    segue a tela do resultado coluna CONFERENCIA PL esta com valor errado.

    <pr/vol


    JUNIOR GUERREIRO T.I



    quinta-feira, 19 de julho de 2018 14:38

Respostas

  • Resolvi o problema, alterando esta parte do meu código.

    solução

    QuantidadeComercializada = Convert.ToDecimal(nodo.GetElementsByTagName("qCom")[0].InnerText.Trim(),System.Globalization.CultureInfo.InvariantCulture)


    JUNIOR GUERREIRO T.I

    • Marcado como Resposta Junior Guerreiro quinta-feira, 19 de julho de 2018 17:09
    quinta-feira, 19 de julho de 2018 17:09