//------------------------------------------------ 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