DUPLICANDO ITENS APARTIR DO ICMS60
1º Nessa minha importação do XML quando eu importo uma NFe que contem nos itens apenas[txt-color=#e80000] ICMS00 [/txt-color]
A importação é um Sucesso vem tudo bem detalhado .
2º qnd importo outra NFe que contem nos itens [txt-color=#e80000] ICMS60 [/txt-color] tbm mesma coisa a importação é um Sucesso. ok ate ai.
3º qnd importo outra NFe que contem os dois tipos de ICMS . [txt-color=#e80000] ICMS00 [/txt-color] e [txt-color=#e80000] ICMS60 [/txt-color]
da problema é ai onde Duplica os itens . é duplicado na seguinte força. se vinher nessa ordem.
item 01: icms00
item 02 :icms60 [ô]é aqui onde vai duplicar os demais abaixo.
item 03: icms00
item 04: icms00
----Outro Exemplo
item 01: icms60 [ô]vai duplicar tudo
item 02: icms00
item 03: icms00
-------------------- Esta Duplicando na Mudança entre o ICMS60 para o ICMS00 [txt-color=#e80000] Qnd muda do ICMS00 para o ICMS 60 fica normal fica certo [/txt-color]
é só na mudança do proximo item, do ICMS60 para o ICMS00
[c] Private Sub btn_importar_ClickNFeXML()
Try
Dim Ds As New DataSet
Ds.ReadXml(txtArquivo.Text)
Dim bdsAux As New BindingSource
bdsAux.DataSource = Ds
bdsAux.DataMember = [Ô]infNFe[Ô]
[ô]Aqui eu to buscando o ID da nfe!
bdsAux.Current([Ô]Id[Ô]).ToString()
[ô]E para mudar de tag, mesmo sendo filho ou não da tag pai, faça:
bdsAux.DataMember = [Ô]ide[Ô]
[ô] E para mudar de tag, mesmo sendo filho ou não da tag pai, faça:
bdsAux.DataMember = [Ô]ide[Ô]
txt_Numero_NotaFiscal.Text = bdsAux.Current([Ô]nNF[Ô]).ToString()
txt_Serie.Text = bdsAux.Current([Ô]serie[Ô]).ToString()
txt_Modelo.Text = bdsAux.Current([Ô]mod[Ô]).ToString()
txt_NaturezaOperacao.Text = bdsAux.Current([Ô]natOp[Ô]).ToString()
mkb_DataEmissao.Text = CDate(bdsAux.Current([Ô]dhEmi[Ô]).ToString())
[ô]E para mudar de tag, mesmo sendo filho ou não da tag pai, faça:
[ô]AQUI FICA OS DADOS DO EMITENTE
bdsAux.DataMember = [Ô]emit[Ô]
txt_Cnpj_Emitente.Text = bdsAux.Current([Ô]CNPJ[Ô]).ToString()
txt_RazaoSocial_Emitente.Text = bdsAux.Current([Ô]xNome[Ô]).ToString()
txt_Ins_Estadual_Emitente.Text = bdsAux.Current([Ô]IE[Ô]).ToString()
_CRT_ = bdsAux.Current([Ô]CRT[Ô]).ToString()
If _CRT_ = [Ô]1[Ô] Then
Me.lbl_regime_tributacao.Text = [Ô]1-SIMPLES NACIONAL[Ô]
ElseIf _CRT_ <> [Ô]1[Ô] Then
Me.lbl_regime_tributacao.Text = [Ô]2-EMPRESA NORMAL[Ô]
End If
[ô]AQUI FICA O ENDEREÇO DO EMITENTE
bdsAux.DataMember = [Ô]enderEmit[Ô]
txt_Logradouro_Emitente.Text = bdsAux.Current([Ô]xLgr[Ô]).ToString()
txt_Cidade_Emitente.Text = bdsAux.Current([Ô]xMun[Ô]).ToString()
txt_UF_Emitente.Text = bdsAux.Current([Ô]UF[Ô]).ToString()
txt_Cep_Emitente.Text = bdsAux.Current([Ô]CEP[Ô]).ToString()
Try
TelFornecedor = bdsAux.Current([Ô]fone[Ô]).ToString()
Catch ex As Exception
TelFornecedor = Nothing
End Try
If TelFornecedor <> [Ô][Ô] Then
txt_Telefone_Emitente.Text = TelFornecedor
End If
txt_Bairro_Emitente.Text = bdsAux.Current([Ô]xBairro[Ô]).ToString()
txt_Numero_Emitente.Text = bdsAux.Current([Ô]nro[Ô]).ToString()
txtCodMunicipio.Text = bdsAux.Current([Ô]cMun[Ô]).ToString()
Dim AddGrid As Integer
bdsAux.DataMember = [Ô]det[Ô]
For AddGrid = 0 To bdsAux.Count - 1
dgv_Produtos_NotaFiscal.Rows.Add()
bdsAux.DataMember = [Ô]prod[Ô]
dgv_Produtos_NotaFiscal.Rows.Item(AddGrid).Cells(0).Value = bdsAux.Current([Ô]cProd[Ô]).ToString()
dgv_Produtos_NotaFiscal.Rows.Item(AddGrid).Cells(1).Value = bdsAux.Current([Ô]xProd[Ô]).ToString() [ô]descrição
dgv_Produtos_NotaFiscal.Rows.Item(AddGrid).Cells(2).Value = bdsAux.Current([Ô]NCM[Ô]).ToString()
dgv_Produtos_NotaFiscal.Rows.Item(AddGrid).Cells(4).Value = bdsAux.Current([Ô]CFOP[Ô]).ToString()
_CFOPtribSust = bdsAux.Current([Ô]CFOP[Ô]).ToString()
Try
CEST_ = bdsAux.Current([Ô]CEST[Ô]).ToString()
Catch ex As Exception
CEST_ = Nothing
End Try
If CEST_ <> [Ô][Ô] Then
dgv_Produtos_NotaFiscal.Rows.Item(AddGrid).Cells(5).Value = CEST_
End If
dgv_Produtos_NotaFiscal.Rows.Item(AddGrid).Cells(6).Value = bdsAux.Current([Ô]uCom[Ô]).ToString()
dgv_Produtos_NotaFiscal.Rows.Item(AddGrid).Cells(7).Value = FormatNumber(Convert.ToDouble(bdsAux.Current([Ô]qCom[Ô]).ToString().Replace([Ô].[Ô], [Ô],[Ô])), 2)
dgv_Produtos_NotaFiscal.Rows.Item(AddGrid).Cells(8).Value = FormatNumber(Convert.ToDouble(bdsAux.Current([Ô]vUnCom[Ô]).ToString().Replace([Ô].[Ô], [Ô],[Ô])), 2)
dgv_Produtos_NotaFiscal.Rows.Item(AddGrid).Cells(9).Value = FormatNumber(Convert.ToDouble(bdsAux.Current([Ô]vProd[Ô]).ToString().Replace([Ô].[Ô], [Ô],[Ô])), 2)
dgv_Produtos_NotaFiscal.Rows.Item(AddGrid).Cells(22).Value = bdsAux.Current([Ô]cEAN[Ô]).ToString()
Try
[ô]
vDesc_ = FormatNumber(Convert.ToDouble(bdsAux.Current([Ô]vDesc[Ô]).ToString().Replace([Ô].[Ô], [Ô],[Ô])), 2)
Catch ex As Exception
vDesc_ = Nothing
End Try
If vDesc_ <> [Ô][Ô] Then
dgv_Produtos_NotaFiscal.Rows.Item(AddGrid).Cells(18).Value = vDesc_
Else
dgv_Produtos_NotaFiscal.Rows.Item(AddGrid).Cells(18).Value = [Ô]0,00[Ô]
End If
[ô]------------------------------
Dim CFOP_trib_Substi As String
CFOP_trib_Substi = Mid(_CFOPtribSust, 2, 3) [ô]
[ô] Produto com CST [ô]00, 10, 20, 51, 70 ou 90![Ô]
If CFOP_trib_Substi = [Ô]101[Ô] OrElse CFOP_trib_Substi = [Ô]102[Ô] OrElse CFOP_trib_Substi = [Ô]201[Ô] OrElse CFOP_trib_Substi = [Ô]202[Ô] OrElse CFOP_trib_Substi = [Ô]551[Ô] Then
bdsAux.DataMember = [Ô]ICMS00[Ô]
End If
[ô]--------------------------------
[ô]Produto com CST [ô]30, 40, 41 ou 60![Ô]
If CFOP_trib_Substi = [Ô]401[Ô] OrElse CFOP_trib_Substi = [Ô]402[Ô] OrElse CFOP_trib_Substi = [Ô]403[Ô] OrElse CFOP_trib_Substi = [Ô]404[Ô] OrElse CFOP_trib_Substi = [Ô]405[Ô] OrElse CFOP_trib_Substi = [Ô]411[Ô] OrElse CFOP_trib_Substi = [Ô]412[Ô] Then
bdsAux.DataMember = [Ô]ICMS60[Ô]
End If
[ô]------------------------------ICMS00 ------------------------------------------------------------------
Try
If bdsAux.DataMember = [Ô]ICMS00[Ô] Then
orig00 = bdsAux.Current([Ô]orig[Ô]).ToString()
CST00 = bdsAux.Current([Ô]CST[Ô]).ToString()
vBC00 = FormatNumber(Convert.ToDouble(bdsAux.Current([Ô]vBC[Ô]).ToString().Replace([Ô].[Ô], [Ô],[Ô])), 2) [ô]base calc. icms
pICMS00 = FormatNumber(Convert.ToDouble(bdsAux.Current([Ô]pICMS[Ô]).ToString().Replace([Ô].[Ô], [Ô],[Ô])), 2) [ô]aliq icms
vICMS00 = FormatNumber(Convert.ToDouble(bdsAux.Current([Ô]vICMS[Ô]).ToString().Replace([Ô].[Ô], [Ô],[Ô])), 2) [ô]vlr icms
End If
Catch ex As Exception
orig00 = Nothing : CST00 = Nothing : vBC00 = Nothing : pICMS00 = Nothing : vICMS00 = Nothing
End Try
If orig00 <> [Ô][Ô] AndAlso CST00 <> [Ô][Ô] Then
dgv_Produtos_NotaFiscal.Rows.Item(AddGrid).Cells(27).Value = orig00
dgv_Produtos_NotaFiscal.Rows.Item(AddGrid).Cells(3).Value = CST00
dgv_Produtos_NotaFiscal.Rows.Item(AddGrid).Cells(12).Value = vBC00
dgv_Produtos_NotaFiscal.Rows.Item(AddGrid).Cells(15).Value = pICMS00
dgv_Produtos_NotaFiscal.Rows.Item(AddGrid).Cells(13).Value = vICMS00
dgv_Produtos_NotaFiscal.Rows.Item(AddGrid).Cells(10).Value = [Ô]0,00[Ô] [ô]bs icms st
dgv_Produtos_NotaFiscal.Rows.Item(AddGrid).Cells(11).Value = [Ô]0,00[Ô] [ô]vlr icms st
dgv_Produtos_NotaFiscal.Rows.Item(AddGrid).Cells(17).Value = [Ô]0,00[Ô] [ô]aliq icms st
End If
[ô]------------------------------ICMS00 ------------------------------------------------------------------
[ô][ô]------------------------------
[ô][ô]------------------------------ICMS10 ------------------------------------------------------------------
[ô]Try
[ô] If bdsAux.DataMember = [Ô]ICMS10[Ô] Then
[ô] orig10 = bdsAux.Current([Ô]orig[Ô]).ToString()
[ô] CST10 = bdsAux.Current([Ô]CST[Ô]).ToString()
[ô] vBC10 = FormatNumber(Convert.ToDouble(bdsAux.Current([Ô]vBC[Ô]).ToString().Replace([Ô].[Ô], [Ô],[Ô])), 2) [ô]VLR UNITARIO [ô]Vlr_Unitario.Text
[ô] aliqICMS10 = FormatNumber(Convert.ToDouble(bdsAux.Current([Ô]pICMS[Ô]).ToString().Replace([Ô].[Ô], [Ô],[Ô])), 2) [ô]VLR UNITARIO [ô]Vlr_Unitario.Text
[ô] vICM10 = FormatNumber(Convert.ToDouble(bdsAux.Current([Ô]vICMS[Ô]).ToString().Replace([Ô].[Ô], [Ô],[Ô])), 2) [ô]VLR UNITARIO [ô]Vlr_Unitario.Text
[ô] vBCST10 = FormatNumber(Convert.ToDouble(bdsAux.Current([Ô]vBCST[Ô]).ToString().Replace([Ô].[Ô], [Ô],[Ô])), 2)
[ô] aliqICMSST = FormatNumber(Convert.ToDouble(bdsAux.Current([Ô]pICMSST[Ô]).ToString().Replace([Ô].[Ô], [Ô],[Ô])), 2)
[ô] vICMSST10 = FormatNumber(Convert.ToDouble(bdsAux.Current([Ô]vICMSST[Ô]).ToString().Replace([Ô].[Ô], [Ô],[Ô])), 2)
[ô] End If
[ô]Catch ex As Exception
[ô] vBC10 = Nothing : aliqICMS10 = Nothing : vICM10 = Nothing : CST10 = Nothing : orig1
Repare que la no for dos itens eu passo o CFOP numa variável, é dai onde eu valido o tipo do ICMS, conforme o CFOP. passo ICMS00 ou ICMS60
dgv_Produtos_NotaFiscal.Rows.Item(AddGrid).Cells(4).Value = bdsAux.Current([Ô]CFOP[Ô]).ToString()
_CFOPtribSust = bdsAux.Current([Ô]CFOP[Ô]).ToString()
Dim CFOP_trib_Substi As String
CFOP_trib_Substi = Mid(_CFOPtribSust, 2, 3) [ô]
[ô] Produto com CST [ô]00, 10, 20, 51, 70 ou 90![Ô]
If CFOP_trib_Substi = [Ô]101[Ô] OrElse CFOP_trib_Substi = [Ô]102[Ô] OrElse CFOP_trib_Substi = [Ô]201[Ô] OrElse CFOP_trib_Substi = [Ô]202[Ô] OrElse CFOP_trib_Substi = [Ô]551[Ô] Then
bdsAux.DataMember = [Ô]ICMS00[Ô]
End If
[ô]--------------------------------
[ô]Produto com CST [ô]30, 40, 41 ou 60![Ô]
If CFOP_trib_Substi = [Ô]401[Ô] OrElse CFOP_trib_Substi = [Ô]402[Ô] OrElse CFOP_trib_Substi = [Ô]403[Ô] OrElse CFOP_trib_Substi = [Ô]404[Ô] OrElse CFOP_trib_Substi = [Ô]405[Ô] OrElse CFOP_trib_Substi = [Ô]411[Ô] OrElse CFOP_trib_Substi = [Ô]412[Ô] Then
bdsAux.DataMember = [Ô]ICMS60[Ô]
End If
[ô]------------------------------ICMS00 ------------------------------------------------------------------
Try
If bdsAux.DataMember = [Ô]ICMS00[Ô] Then
orig00 = bdsAux.Current([Ô]orig[Ô]).ToString()
CST00 = bdsAux.Current([Ô]CST[Ô]).ToString()
vBC00 = FormatNumber(Convert.ToDouble(bdsAux.Current([Ô]vBC[Ô]).ToString().Replace([Ô].[Ô], [Ô],[Ô])), 2) [ô]base calc. icms
pICMS00 = FormatNumber(Convert.ToDouble(bdsAux.Current([Ô]pICMS[Ô]).ToString().Replace([Ô].[Ô], [Ô],[Ô])), 2) [ô]aliq icms
vICMS00 = FormatNumber(Convert.ToDouble(bdsAux.Current([Ô]vICMS[Ô]).ToString().Replace([Ô].[Ô], [Ô],[Ô])), 2) [ô]vlr icms
End If
Catch ex As Exception
orig00 = Nothing : CST00 = Nothing : vBC00 = Nothing : pICMS00 = Nothing : vICMS00 = Nothing
End Try
If orig00 <> [Ô][Ô] AndAlso CST00 <> [Ô][Ô] Then
dgv_Produtos_NotaFiscal.Rows.Item(AddGrid).Cells(27).Value = orig00
dgv_Produtos_NotaFiscal.Rows.Item(AddGrid).Cells(3).Value = CST00
dgv_Produtos_NotaFiscal.Rows.Item(AddGrid).Cells(12).Value = vBC00
dgv_Produtos_NotaFiscal.Rows.Item(AddGrid).Cells(15).Value = pICMS00
dgv_Produtos_NotaFiscal.Rows.Item(AddGrid).Cells(13).Value = vICMS00
dgv_Produtos_NotaFiscal.Rows.Item(AddGrid).Cells(10).Value = [Ô]0,00[Ô] [ô]bs icms st
dgv_Produtos_NotaFiscal.Rows.Item(AddGrid).Cells(11).Value = [Ô]0,00[Ô] [ô]vlr icms st
dgv_Produtos_NotaFiscal.Rows.Item(AddGrid).Cells(17).Value = [Ô]0,00[Ô] [ô]aliq icms st
End If
[ô]------------------------------ICMS00 ------------------------------------------------------------------
[ô]------------------------------ICMS60 ------------------------------------------------------------------
Try
If bdsAux.DataMember = [Ô]ICMS60[Ô] Then
orig60 = bdsAux.Current([Ô]orig[Ô]).ToString()
CST60 = bdsAux.Current([Ô]CST[Ô]).ToString()
vBC60 = FormatNumber(Convert.ToDouble(bdsAux.Current([Ô]vBCSTRet[Ô]).ToString().Replace([Ô].[Ô], [Ô],[Ô])), 2) [ô]VLR UNITARIO [ô]Vlr_Unitario.Text
vICM60 = FormatNumber(Convert.ToDouble(bdsAux.Current([Ô]vICMSSTRet[Ô]).ToString().Replace([Ô].[Ô], [Ô],[Ô])), 2) [ô]VLR UNITARIO [ô]Vlr_Unitario.Text
End If
Catch ex As Exception
vBC60 = Nothing : vICM60 = Nothing
End Try
If CST60 <> [Ô][Ô] AndAlso orig60 <> [Ô][Ô] Then
dgv_Produtos_NotaFiscal.Rows.Item(AddGrid).Cells(27).Value = orig60
dgv_Produtos_NotaFiscal.Rows.Item(AddGrid).Cells(3).Value = CST60
dgv_Produtos_NotaFiscal.Rows.Item(AddGrid).Cells(10).Value = vBC60
dgv_Produtos_NotaFiscal.Rows.Item(AddGrid).Cells(11).Value = vICM60
dgv_Produtos_NotaFiscal.Rows.Item(AddGrid).Cells(12).Value = [Ô]0,00[Ô] [ô]bc icms
dgv_Produtos_NotaFiscal.Rows.Item(AddGrid).Cells(13).Value = [Ô]0,00[Ô] [ô]vlr icms
dgv_Produtos_NotaFiscal.Rows.Item(AddGrid).Cells(15).Value = [Ô]0,00[Ô] [ô]aliq icms
dgv_Produtos_NotaFiscal.Rows.Item(AddGrid).Cells(17).Value = [Ô]0,00[Ô] [ô]aliq icms st
End If
If vBC60 = [Ô][Ô] AndAlso vICM60 = [Ô][Ô] Then
dgv_Produtos_NotaFiscal.Rows.Item(AddGrid).Cells(10).Value = [Ô]0,00[Ô]
dgv_Produtos_NotaFiscal.Rows.Item(AddGrid).Cells(11).Value = [Ô]0,00[Ô]
End If
[ô]------------------------------ICMS60 ------------------------------------------------------------------
Senhor...........
Amigo, que caminhão de coisa que você tem aà para uma coisa TÃO SIMPLES quanto ler um XML de NFe... Tenho um vÃdeo no youtube mostrando como fazer a desserialização de um arquivo de nota fiscal de maneira MUITO mais simples e sem ter como dar errado, coisa que com esse seu código as chances são enormes.
Citação::
Meu..........
Senhor...........
Amigo, que caminhão de coisa que você tem aà para uma coisa TÃO SIMPLES quanto ler um XML de NFe... Tenho um vÃdeo no youtube mostrando como fazer a desserialização de um arquivo de nota fiscal de maneira MUITO mais simples e sem ter como dar errado, coisa que com esse seu código as chances são enormes.
Kerplnuk juro pra vc . como tentei e ja assisti seu video, mais no VB.net não tem esse opção do print. para fazer . veja
pq não tem no meu Visual Studio 2012 ?
Mas enfim, deveria ter, esta feature está implementada desde o Visual Studio 2010. Ela pode não ser exibida para alguns tipos de projeto, mas como o seu é desktop, deveria aparecer. Tem certeza que está tentando colar em um arquivo de classe novo?
Citação::
A pergunta é: Porque está usando o Visual Sudio 2012 ainda?
Mas enfim, deveria ter, esta feature está implementada desde o Visual Studio 2010. Ela pode não ser exibida para alguns tipos de projeto, mas como o seu é desktop, deveria aparecer. Tem certeza que está tentando colar em um arquivo de classe novo?
pois é kerplunk, eu tava ate empolgado fazendo pelo seu video dae quando chegou nessa parte q no meu Visutal studio não tem pronto ai me ferrou kkkkkk,
eu criei uma classe nova. mais nao aparece essa opção. :(
sera q é por causa que eu programo em VB.net ? no seu video esta em C# ? acho q não né. tanto faz.
Citação::
Vixi, vc vai pagar seus pecados fazendo isso com dataset, eu fazia isso até pegar um video do KeRPLUNK e aprende a desserializar um xml. Ai sim.
Vishee Nilson é foda mesmo viu esse dataSet é tenso. tem hora q vem os itens q ja tem no dataset. é uma bola de neve .. eu so consigo importar os itens que tem o ICMS00 e ICMS60 os demais nao vem nesse dataset. pq so aceita um de cada. .. ja fiz varios teste colocando todos os ICMS.00, 10, 20, 40, 60, 90 enfim...
esse método é foda viu..
queria muita fazer igual o Kerplunk, mais nao tem a opção no meu Visual Studio. 2012.
Citação:queria muita fazer igual o Kerplunk, mais nao tem a opção no meu Visual Studio. 2012.
Porque sera ? Eu tenho e aparece para min.