DUPLICANDO ITENS APARTIR DO ICMS60

JOHNSTEVE 22/09/2016 21:12:03
#467322
Boa noite Galera, hj me deparei com um problema.
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
JOHNSTEVE 22/09/2016 21:15:16
#467323
aqui esta o codigo dos ICMS - icms00 e icms60

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 ------------------------------------------------------------------
KERPLUNK 22/09/2016 21:36:16
#467324
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.
JOHNSTEVE 22/09/2016 21:45:59
#467325
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

JOHNSTEVE 22/09/2016 21:48:08
#467326
no seu video essa opção não tem no meu Visual Studio 2012 .
JOHNSTEVE 22/09/2016 21:50:01
#467327
Kerplnuk essa Paste Special ?
pq não tem no meu Visual Studio 2012 ?
KERPLUNK 22/09/2016 22:04:06
#467328
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?
NILSONTRES 23/09/2016 00:49:50
#467330
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.
JOHNSTEVE 23/09/2016 07:07:07
#467333
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.
JOHNSTEVE 23/09/2016 07:09:49
#467334
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.

NILSONTRES 23/09/2016 07:57:21
#467335
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.
Página 1 de 5 [42 registro(s)]
Tópico encerrado , respostas não são mais permitidas