Lotes no XML baixado pelo impnfe.exe
Moderador: Moderadores
- Ariston Santos
- Usuário Nível 1

- Mensagens: 8
- Registrado em: 03 Ago 2018 20:26
- Localização: Macapá-AP
Lotes no XML baixado pelo impnfe.exe
Olá. Eu estou usando o Impnfe.exe para baixar os XMLs e sou muito grato ao Rubens, que o disponibilizou.
Só quero relatar um erro que encontrei: a NF-e 35180573856593000409550030000493221182770442 contém 3 lotes, mas no XML baixado pelo IMPNFE só vem 1.
Poderia corrigir e postar a atualização?
Obrigado.
Ps: Estou postando também em novo POST por se tratar de novo assunto
Só quero relatar um erro que encontrei: a NF-e 35180573856593000409550030000493221182770442 contém 3 lotes, mas no XML baixado pelo IMPNFE só vem 1.
Poderia corrigir e postar a atualização?
Obrigado.
Ps: Estou postando também em novo POST por se tratar de novo assunto

- rubens
- Colaborador

- Mensagens: 1520
- Registrado em: 16 Ago 2003 09:05
- Localização: Nova Xavantina - MT
Lotes no XML baixado pelo impnfe.exe
Boa tarde...
Ariston, na realidade os créditos são do Daniel e do Toledo... eu só fiz uma pequena modificação...
Acho que você tá se referindo a mudanças no layout da nfe 4.00, né... ?
Vamos aguardar o Daniel fazer as alterações e a gente compila de novo...
Rubens
Ariston, na realidade os créditos são do Daniel e do Toledo... eu só fiz uma pequena modificação...
Acho que você tá se referindo a mudanças no layout da nfe 4.00, né... ?
Vamos aguardar o Daniel fazer as alterações e a gente compila de novo...
Rubens
"Eu e minha casa servimos ao Senhor e você
"
- Ariston Santos
- Usuário Nível 1

- Mensagens: 8
- Registrado em: 03 Ago 2018 20:26
- Localização: Macapá-AP
Lotes no XML baixado pelo impnfe.exe
Agradeço por responder.
Se quiser, e puder disponibilizar o código fonte, eu mesmo posso fazer a adequação e postar o código atualizado.
O que acha?
Se quiser, e puder disponibilizar o código fonte, eu mesmo posso fazer a adequação e postar o código atualizado.
O que acha?

- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
Lotes no XML baixado pelo impnfe.exe
Olá Ariston Santos,
A última versão com os códigos fontes disponibilizadas pelo Daniel está aqui: viewtopic.php?p=123929#p123929
A última versão com os códigos fontes disponibilizadas pelo Daniel está aqui: viewtopic.php?p=123929#p123929
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
- Ariston Santos
- Usuário Nível 1

- Mensagens: 8
- Registrado em: 03 Ago 2018 20:26
- Localização: Macapá-AP
Lotes no XML baixado pelo impnfe.exe
Olá.
O código fonte realmente está lá. O problema é que trabalhar em código de terceiros é como chegar numa cidade sem conhecer nada. Só vai com ajuda de GPS mesmo (kkk).
Notei que os lotes são tratados nestes trechos:
O página que baixei, para gerar o XML, mostra 3 lotes, que podem ser vistos neste trecho:
Como faço para fazer com que todos os lotes sejam inseridos em aMedicamentos, não apenas 1?
:)Pos
O código fonte realmente está lá. O problema é que trabalhar em código de terceiros é como chegar numa cidade sem conhecer nada. Só vai com ajuda de GPS mesmo (kkk).
Notei que os lotes são tratados nestes trechos:
Código: Selecionar todos
AADD(aMedicamentos, {{"","Lote",'Nro. do Lote', 0},; //1-
{"","qLote",'Quantidade de produtos no lote', 0},; //2-
{"","dFab",'Data de fabricaçã', 0},; //3-
{"","dVal",'Data de validade', 0},; //4-
{"","vPMC",'Preço Máximo Consumido', 0},; //5-
{"","infAdProd",'Descrição', 0}}) //6-
Código: Selecionar todos
//Tags Medicamentos
nIni := At( '<legend>Detalhamento específico dos medicamentos</legend>', cPar_ )
IF nIni > 0
cPar1_ := SubStr( cPar_, nIni )
FOR i := 1 TO Len( aMedicamentos[ p_ ] )
nIni := At( aMedicamentos[ p_, i, 3 ], cPar1_ )
IF nIni > 0
c_span := SubStr( cPar1_, nIni )
nIni := At( '<span>', c_span ) + 6
nTamTag := At( '</span>', c_span ) - nIni
c_tag := AllTrim( SubStr( c_span, nIni, nTamTag ) )
IF aMedicamentos[ p_, i, 4 ] != 0
IF aMedicamentos[ p_, i, 4 ] > 0
c_tag := Left( c_tag, aMedicamentos[ p_, i, 4 ] )
ELSE
c_tag := AllTrim( SubStr( c_tag, Abs( aMedicamentos[ p_, i, 4 ] ) + 1 ) )
c_tag := AllTrim( StrTran( c_tag, "-", "" ) )
ENDIF
ENDIF
IF i != 6
c_tag := StrTran( c_tag, ".", "" )
c_tag := StrTran( c_tag, ",", "." )
ENDIF
IF StrZero( i, 2 ) $ "-03-04"
c_tag := SubStr( c_tag, 7, 4 ) + "-" + SubStr( c_tag, 4, 2 ) + "-" + Left( c_tag, 2 )
ENDIF
aMedicamentos[ p_, i, 1 ] := c_tag
ENDIF
NEXT i
ENDIF
Código: Selecionar todos
lpoemTag:= .F.
For i:= 1 To Len(aMedicamentos[p_])
If i == 1
If ! Empty(aMedicamentos[p_,i,1])
cXML+= '<med><nLote>' + aMedicamentos[p_,i,1] + '</nLote>'
lpoemTag:=.T.
EndIf
Else
If ! Empty(aMedicamentos[p_,i,1])
If i == 6
cDiscAdicional:= '<'+aMedicamentos[p_,i,2]+'>'+ aMedicamentos[p_,i,1] + '</'+aMedicamentos[p_,i,2]+'>'
Else
cXML+='<'+aMedicamentos[p_,i,2]+'>'+ aMedicamentos[p_,i,1] + '</'+aMedicamentos[p_,i,2]+'>'
EndIf
EndIf
EndIf
Next
If lpoemTag
cXML+='</med>'
EndIf
Código: Selecionar todos
<legend>Detalhamento específico dos medicamentos</legend><div><h5 class="toggle">Medicamento 1</h5><table class="toggable box"><tr class="col-3"><td><label>Código de Produto da ANVISA</label><span></span></td><td><label>Nro. do Lote</label><span>18E73B</span></td><td><label>Quantidade de produtos no lote</label><span>11,000</span></td></tr><tr class="col-3"><td><label>Data de fabricação</label><span>12/04/2018</span></td><td><label>Data de validade</label><span>12/04/2020</span></td><td><label>Preço Máximo Consumidor</label><span>0,00</span></td></tr></table></div><div><h5 class="toggle">Medicamento 2</h5><table class="toggable box"><tr class="col-3"><td><label>Código de Produto da ANVISA</label><span></span></td><td><label>Nro. do Lote</label><span>18E37E</span></td><td><label>Quantidade de produtos no lote</label><span>2.171,000</span></td></tr><tr class="col-3"><td><label>Data de fabricação</label><span>17/05/2018</span></td><td><label>Data de validade</label><span>17/05/2020</span></td><td><label>Preço Máximo Consumidor</label><span>0,00</span></td></tr></table></div><div><h5 class="toggle">Medicamento 3</h5><table class="toggable box"><tr class="col-3"><td><label>Código de Produto da ANVISA</label><span></span></td><td><label>Nro. do Lote</label><span>18E38E</span></td><td><label>Quantidade de produtos no lote</label><span>2.168,000</span></td></tr><tr class="col-3"><td><label>Data de fabricação</label><span>17/05/2018</span></td><td><label>Data de validade</label><span>17/05/2020</span></td><td><label>Preço Máximo Consumidor</label><span>0,00</span></td></tr></table></div></fieldset><fieldset><legend class="titulo-aba-interna">Informações adicionais do produto</legend><table class="box"><tr><td><label>Descrição</label><span>CI 0 % - FCI B4F5AD6E-6FA8-4583-87B4-463D99BE53F5|Lt. 18E73B Val. 12.04.2020 Qt. 11,000|Lt. 18E37E Val. 17.05.2020 Qt. 2171,000|Lt. 18E38E Val. 17.05.2020 Qt. 2168,000</span></td></tr></table>
:)Pos

- Ariston Santos
- Usuário Nível 1

- Mensagens: 8
- Registrado em: 03 Ago 2018 20:26
- Localização: Macapá-AP
Lotes no XML baixado pelo impnfe.exe (Resolvido)
Olá, senhores.
Consegui fazendo um pequeno ajuste técnico (kkk) em dois trechos do código, mas preciso da revisão dos universitários.
Segue:
Consegui fazendo um pequeno ajuste técnico (kkk) em dois trechos do código, mas preciso da revisão dos universitários.
Segue:
Código: Selecionar todos
nIni := At( '<legend>Detalhamento específico dos medicamentos</legend>', cPar_ )
IF nIni > 0
cPar1_ := SubStr( cPar_, nIni )
FOR i := 1 TO Len( aMedicamentos[ p_ ] )
nIni := At( aMedicamentos[ p_, i, 3 ], cPar1_ )
IF nIni > 0
c_span := SubStr( cPar1_, nIni )
nIni := At( '<span>', c_span ) + 6
nTamTag := At( '</span>', c_span ) - nIni
c_tag := AllTrim( SubStr( c_span, nIni, nTamTag ) )
IF aMedicamentos[ p_, i, 4 ] != 0
IF aMedicamentos[ p_, i, 4 ] > 0
c_tag := Left( c_tag, aMedicamentos[ p_, i, 4 ] )
ELSE
c_tag := AllTrim( SubStr( c_tag, Abs( aMedicamentos[ p_, i, 4 ] ) + 1 ) )
c_tag := AllTrim( StrTran( c_tag, "-", "" ) )
ENDIF
ENDIF
IF i != 6
c_tag := StrTran( c_tag, ".", "" )
c_tag := StrTran( c_tag, ",", "." )
ENDIF
IF StrZero( i, 2 ) $ "-03-04"
c_tag := SubStr( c_tag, 7, 4 ) + "-" + SubStr( c_tag, 4, 2 ) + "-" + Left( c_tag, 2 )
ENDIF
*aMedicamentos[ p_, i, 1 ] := c_tag
aMedicamentos[ p_, i, 1 ] := cPar1_ // Gambiarra por Ariston Santos (kkk)
ENDIF
NEXT i
ENDIF
Código: Selecionar todos
**** Início - Modificações por Ariston Santos ****
* Lotes
IF Len(aMedicamentos[p_]) > 0
cPar1_ := aMedicamentos[p_, 1, 1]
If ! Empty(cPar1_)
nMed := 1
WHILE .T.
cMed1 := "Medicamento "+ALLTRIM(STR(nMed))
cMed2 := "Medicamento "+ALLTRIM(STR(nMed+1))
nPos1 := At(cMed1, cPar1_)
nPos2 := At(cMed2, cPar1_) - LEN(cMed2)
if nPos2 > 0
cTex1 := SubStr(cPar1_, nPos1, nPos2)
else
cTex1 := SubStr(cPar1_, nPos1)
endif
If !(cMed1 $ cTex1) .or. nPos2 = 0
Exit
Endif
FOR i := 1 TO Len( aMedicamentos[ p_ ] )
nIni := At( aMedicamentos[ p_, i, 3 ], cPar1_ )
IF nIni > 0
c_span := SubStr( cPar1_, nIni )
nIni := At( '<span>', c_span ) + 6
nTamTag := At( '</span>', c_span ) - nIni
c_tag := AllTrim( SubStr( c_span, nIni, nTamTag ) )
IF aMedicamentos[ p_, i, 4 ] != 0
IF aMedicamentos[ p_, i, 4 ] > 0
c_tag := Left( c_tag, aMedicamentos[ p_, i, 4 ] )
ELSE
c_tag := AllTrim( SubStr( c_tag, Abs( aMedicamentos[ p_, i, 4 ] ) + 1 ) )
c_tag := AllTrim( StrTran( c_tag, "-", "" ) )
ENDIF
ENDIF
IF i != 6
c_tag := StrTran( c_tag, ".", "" )
c_tag := StrTran( c_tag, ",", "." )
ENDIF
IF StrZero( i, 2 ) $ "-03-04"
c_tag := SubStr( c_tag, 7, 4 ) + "-" + SubStr( c_tag, 4, 2 ) + "-" + Left( c_tag, 2 )
ENDIF
aMedicamentos[ p_, i, 1 ] := c_tag
ENDIF
NEXT i
lpoemTag:= .F.
For i:= 1 To Len(aMedicamentos[p_])
If i == 1
If ! Empty(aMedicamentos[p_,i,1])
cXML+= '<med><nLote>' + aMedicamentos[p_,i,1] + '</nLote>'
lpoemTag:=.T.
EndIf
Else
If ! Empty(aMedicamentos[p_,i,1])
If i == 6
cDiscAdicional:= '<'+aMedicamentos[p_,i,2]+'>'+ aMedicamentos[p_,i,1] + '</'+aMedicamentos[p_,i,2]+'>'
Else
cXML+='<'+aMedicamentos[p_,i,2]+'>'+ aMedicamentos[p_,i,1] + '</'+aMedicamentos[p_,i,2]+'>'
EndIf
EndIf
EndIf
Next
If lpoemTag
cXML+='</med>'
EndIf
cPar1_ := SubStr(cPar1_, nPos2)
aMedicamentos[ p_, 1, 1 ] := cPar1_
nMed ++
MsgInfo(cTex1)
END
EndIf
ENDIF
**** Final - Modificações por Ariston Santos ****