//------------------------------------------------
Function Ler_Html_Itens(cFileDanfe,cCodiForne)
Local Linha := Memoread(cFileDanfe)
Local cCGcEmit := ''
//Close All
Sele Forneced
OrdSetFocus('Forneced')
Go top
Seek cCodiForne
If Found()
cCGcEmit := StrZero(val(Forneced->Cgc),14)
Endif
Sele 153
Use c:\temp\Danfe EXCLUSIVE
Zap
nLinhalidas := 0
Linhatotal := Len(Linha)
cLinhaTxt := Linha
lLancaItemValorLiquido := .f.
IF MsgConf("Informa Total Liquido do Item ?"+chr(10)+;
'(-) VALOR ICMS '+CHR(10)+;
'(-) VALOR IPI ', "2") == .t.
lLancaItemValorLiquido := .t.
Endif
Do While .t.
cLidos := PegaDados_Html_Itens('style="width: 56%;">',Alltrim(cLinhaTxt),.T.,'style="width: 56%;">' )
*MemoEdit(cLidos,01,1,25,80,.T.,"",80)
Linha := cLidos
cDadosItem := cLidos
If Linha=='0'
Exit
Endif
mxProd := Substr(cLidos,1,At('',cLidos)-1)
mcprod := PegaDados_Html_Itens('Código do Produto
',Alltrim(cDadosItem) ,.f.,'')
mCProd := Alltrim(Str(val(mCProd),16))
mqcom := PegaDados_Html_Itens('Quantidade Comercial
' ,Alltrim(cDadosItem) ,.f.,'')
M_NCM := PegaDados_Html_Itens('Código NCM
' ,Alltrim(cDadosItem) ,.f.,'')
*mvprod := PegaDados_Html_Itens('Valor unitário de comercialização
',Alltrim(cDadosItem) ,.f.,'')
mvprod := PegaDados_Html_Itens('
',Alltrim(cDadosItem) ,.f.,'')
mCFOP := PegaDados_Html_Itens('CFOP ' ,Alltrim(cDadosItem) ,.f.,'')
m_vBc := PegaDados_Html_Itens('Base de Cálculo ' ,Alltrim(cDadosItem) ,.f.,'')
mvIcms := PegaDados_Html_Itens('Valor ' ,Alltrim(cDadosItem) ,.f.,'')
m_vBCST := PegaDados_Html_Itens('Valor da BC do ICMS ST ' ,Alltrim(cDadosItem) ,.f.,'')
m_vICMSST := PegaDados_Html_Itens('Valor do ICMS ST ' ,Alltrim(cDadosItem) ,.f.,'')
m_cst := PegaDados_Html_Itens('Tributação do ICMS ',Alltrim(cDadosItem) ,.f.,'')
mPIcms := PegaDados_Html_Itens('Alíquota ' ,Alltrim(cDadosItem) ,.f.,'')
If Alltrim(m_cst)=='0'
m_cst := PegaDados_Html_Itens('Tributação do ICMS ',Alltrim(cDadosItem) ,.f.,'')
Endif
m_cst := Substr(Alltrim(m_cst),1,3)
If Alltrim(m_cst)=='10'
mvIcms := PegaDados_Html_Itens('Valor do ICMS Normal ' ,Alltrim(cDadosItem) ,.f.,'')
m_vBc := PegaDados_Html_Itens('Base de Cálculo do ICMS Normal ' ,Alltrim(cDadosItem) ,.f.,'')
mPIcms := PegaDados_Html_Itens('Alíquota ICMS Normal ' ,Alltrim(cDadosItem) ,.f.,'')
m_vBCST := PegaDados_Html_Itens('Base de Cálculo do ICMS ST ' ,Alltrim(cDadosItem) ,.f.,'')
m_vICMSST := PegaDados_Html_Itens('Valor do ICMS ST ' ,Alltrim(cDadosItem) ,.f.,'')
Endif
mcean := PegaDados_Html_Itens('Código EAN Comercial ' ,Alltrim(cDadosItem) ,.f.,'')
mvDesc := PegaDados_Html_Itens('Valor do Desconto ' ,Alltrim(cDadosItem) ,.f.,'')
mvuncom := PegaDados_Html_Itens('Quantidade Comercial ' ,Alltrim(cDadosItem) ,.f.,'')
m_uCom := PegaDados_Html_Itens('Unidade Comercial ' ,Alltrim(cDadosItem) ,.f.,'')
m_org := PegaDados_Html_Itens('Origem da Mercadoria ' ,Alltrim(cDadosItem) ,.f.,'')
m_org := Substr(Alltrim(m_org),1,1)
M_pRedBCST:= PegaDados_Html_Itens('Percentual Redução de BC do ICMS Normal ' ,Alltrim(cDadosItem) ,.f.,'')
M_pMVAST := PegaDados_Html_Itens('Percentual do MVA do ICMS ST ' ,Alltrim(cDadosItem) ,.f.,'')
m_VIPI := PegaDados_Html_Itens('Valor IPI ' ,Alltrim(cDadosItem) ,.f.,'')
*mVpis := PegaDados_Html_Itens('Valor IPI ' ,Alltrim(cDadosItem) ,.f.,'')
*mVCofins := PegaDados_Html_Itens('Valor IPI ' ,Alltrim(cDadosItem) ,.f.,'')
// Teste Bimbo CST 51
*m_vBc := PegaDados_Html_Itens('Base de Cálculo do ICMS Normal ' ,Alltrim(cDadosItem) ,.f.,'')
*mvIcms := PegaDados_Html_Itens('Valor do ICMS Normal ' ,Alltrim(cDadosItem) ,.f.,'')
*? M_NCM+" "+mqcom+' '+mvprod +' '+mxProd+' '+mCFOP+' '+m_vBCST+' '+m_vICMSST
*? mcprod+' '+m_cst+' '+mPIcms+' '+m_vBc +' '+mvIcms
*? '--------------------------------------------------------'
*iNKEY(0)
Centra(24,'Lendo Item....'+mxProd)
//----
mqcom := Val(mqcom)
mvDesc := Val(LimpaPonto(mvDesc)) /100
mvprod := Val(LimpaPonto(mvprod)) /100
mvuncom := Val(LimpaPonto(mvuncom)) /10000
m_vBCST := Val(LimpaPonto(m_vBCST)) /100
m_vICMSST := Val(LimpaPonto(m_vICMSST))/100
mPIcms := Val(LimpaPonto(mPIcms)) /100
m_vBc := Val(LimpaPonto(m_vBc)) /100
mvIcms := Val(LimpaPonto(mvIcms)) /100
m_VIPI := Val(LimpaPonto(m_VIPI)) /100
M_pMVAST := Val(LimpaPonto(M_pMVAST)) / 100
M_pRedBCST:= Val(LimpaPonto(M_pRedBCST)) / 100
mVCofins := 0
mVpis := 0
M_pRedBC := 0
cChave := ''
ok := .t.
If lLancaItemValorLiquido ==.t.
mvprod := mvprod-m_VIPI-m_vICMSST
Endif
If !Empty(mcprod) .and. ok
Sele Danfe
Append Blank
Repla Danfe->Id With Substr(cChave,4,47)
Repla Danfe->cnpj With cCGcEmit
Repla Danfe->xprod With mxProd
Repla Danfe->cean With mcean
Repla Danfe->cprod With mcprod
Repla Danfe->qcom With mqcom
Repla Danfe->vDesc With mvDesc
Repla Danfe->vprod With mvprod-mvDesc
Repla Danfe->vuncom With mvuncom
Repla Danfe->vIcms With mvIcms
Repla Danfe->pIcms With mPIcms
Repla Danfe->vPis With mVpis
Repla Danfe->vCofins With mVCofins
Repla Danfe->CFOP With mCfop
Repla Danfe->uCom With Upper(m_uCom)
Repla Danfe->Cst With m_org+m_cst
Repla Danfe->vBc With m_vBc
Repla Danfe->vBCST With m_vBCST
Repla Danfe->pMVAST With M_pMVAST
Repla Danfe->pRedBC With M_pRedBC
Repla Danfe->pRedBCST With M_pRedBCST
Repla Danfe->NCM With M_NCM
Repla Danfe->vICMSST With m_vICMSST
repla Danfe->vipi With m_VIPI
Commit
Endif
nSize := Linhatotal-nLinhaLidas
cLinha := Right(cLinhaTxt,nSize)
cLinhaTxt := cLinha
If nLinhaLidas >= Linhatotal
Exit
Endif
Enddo
m_Razao := ''
m_cNF := ''
m_serie := ''
Return Nil
//------------------------------------------------------
Static Function PegaDados_Html_Itens(cProc,cLinha,lItem,cTexto2)
Local InicioDoDado := cProc
Local FinalDoDado := cTexto2
Local nPosIni := At(InicioDoDado,cLinha)
Local cRet := '0'
Local x
If nPosIni==0 //.or. nPosFinal==0
Return cRet
Endif
nInicio := nPosIni+Len(IniciodoDado)
nTrecho := Linhatotal//-nLinhalidas
cTrecho1 := Substr(cLinha,nInicio,nTrecho)
nFinal := At(FinalDoDado,cTrecho1)
If nFinal==0
nFinal := Linhatotal
//Return cRet
Endif
cRet := Substr(cLinha,nInicio,nFinal-1)
If lItem ==.t.
nLinhalidas += nFinal+nInicio-(Len(IniciodoDado))
Endif
Return ( cRet)
//----------------------------------------------------
Static Function LimpaPonto(cPega)
Local x
c:= StrTran(cPega,',','')
x:= StrTran(c,'.','')
Return X
|