Jump to content
Fivewin Brasil

mkyx

Membros
  • Posts

    892
  • Joined

  • Last visited

  • Days Won

    15

Everything posted by mkyx

  1. Pessoal, pegar os dados da receita federal não é tão útil quanto do site do Sintegra, pois no site do Sintegra, vc pega mais informações como inscrição estadual e o tipo da empresa, se é simples nacional ou não Alguém conseguiu desenvolver para busca os dados da empresa pelo Sintegra?
  2. Sr. toya Blz, o seu módulo de baixa o xml da nfe. Não seria possível vc postar o código fonte ou comercializar?
  3. será que é possível deixar esse modulo sem a necessidade de digitação do captcha??? Por quem vai ficar reiniciando o modem, por errar na escolha do captcha?? ninguém, pois os modem geralmente ficam inacessíveis aos usuários que absurdo é esse novo captcha que fica na baixa dos xml da receita.
  4. e como fazer isso via software? pois imagine um escritório de contabilidade que precisa baixar nfe dos clientes? e não tem os certificados desses clientes, pois certificado digital não é toda empresa obrigado a ter um.
  5. Pessoal, Agora aparece a captcha novo, mas não sai, fica solicitando, ruas, via, carros, fachada de loja, etc, não sai disso. O que será de errado?
  6. acho que consegui corrigi obrigado a todos.
  7. Bom dia, já fiz isso, abre a janela mas não aparece o captcha.
  8. meu navegador já é a ultima versão do explorer. e não aparece o aparece o captcha, só a janela da receita federal, sem essa opção.
  9. Para o Matheus faria e o kapiaba, o modulo acima não exibe o captcha e dá erros Na tela que se abre da receita, não exibe o captcha e uma mensagem de verificando conteúdo de página não sai da tela, travando o programa. O que fazer para corrigir?
  10. bom dia, pessoal, onde encontro a função HB_HASH, pois compilar usando o xHarbour Compiler, notificou hb_hash não encontrada. ou qual outra função no xharbour que posso substituir que faça a mesma coisa? Obrigado a todos. Att. Pompeo Guaratinguetá, SP
  11. Se alguém conseguir fazer funcionar, poste aqui as correções para que todos possam se beneficiarem.
  12. Eis abaixo, a rotina que não precisa do captcha para baixar o nfe da receita, peguei aqui no forum: * PRIVATE cUrl := "http://www.nfe.fazenda.gov.br/portal/consultaResumoCompletaAntiga.aspx?tipoConsulta=completa&tipoConteudo=XbSeqxE8pl8=" * PRIVATE cUrl1:= "http://www.nfe.fazenda.gov.br/portal/consultaCompleta.aspx?tipoConteudo=XbSeqxE8pl8=" * PRIVATE cUrl2:= "http://www.nfe.fazenda.gov.br/portal/consultaResumoCompletaAntiga.aspx?tipoConsulta=completa&tipoConteudo=XbSeqxE8pl8%3d" ******* https://www.nfe.fazenda.gov.br/portal/consultaResumoCompletaAntiga.aspx?tipoConsulta=completa&tipoConteudo=XbSeqxE8pl8%3d #include "fivewin.ch" #include "image.ch" #include "directry.ch" #include "fileio.ch" #include "tip.ch" #define URL_CONSULTA "https://www.nfe.fazenda.gov.br/portal/consultaRecaptcha.aspx?tipoConsulta=completa&tipoConteudo=XbSeqxE8pl8=" #define URL_CONSULTA_COMPLETA "https://www.nfe.fazenda.gov.br/portal/consultaRecaptcha.aspx?tipoConsulta=completa&tipoConteudo=XbSeqxE8pl8=" *#define URL_CONSULTA "https://www.nfe.fazenda.gov.br/portal/consultaResumoCompletaAntiga.aspx?tipoConsulta=completa&tipoConteudo=XbSeqxE8pl8=" *#define URL_CONSULTA_COMPLETA "https://www.nfe.fazenda.gov.br/portal/consultaResumoCompletaAntiga.aspx?tipoConsulta=completa&tipoConteudo=XbSeqxE8pl8=" // ---------------------------------------- // // Download XML // /******************************************************************************/ function DownloadNFe( cChave, cPasta ) public s_cVersao := "", s_cTpAmb := "", s_cVerAplic := "", s_cDhRecbto := "", s_cnProt := "", s_cDigVal := "" public s_cinfCpl := "", s_cInfAdFisco := "", s_cDiscAdicional := "", s_cxMotivo := "", s_ccStat := "" public s_aIde := {}, s_aEmit := {}, s_aDest := {}, s_aDet := {}, s_aICMS := {}, s_aIPI := {} public s_aTransp := {}, s_aCobr := {}, s_aMedicamentos := {}, s_aTotais := {}, s_aPIS := {}, s_aCOFINS := {} public s_cViewState, s_cViewStateGenerator, s_cHiddenToken, s_cEventValidation, s_cStringCookie, s_cHiddenSom,oDialog, oIcone, oFonte, hInput //** := HB_Hash() cCaptcha := Space( 6 ) lSemParametros := .f. if len(alltrim(cpasta))=0 cpasta:=CurDrive() + ":\" + GetCurDir() cpasta:=cpasta+"\xmls" IF !LISDIR(cpasta) LMKDIR(cpasta) ENDIF endif MsgRun( 'Aguarde! Realizando Download do XML...',, {|| BaixarXML(cChave, cCaptcha, hInput, nil, lSemParametros, cPasta)}) return /***********************************************************************************/ static function BaixarXML( cChave, cCaptcha, hInput, oDialog, lSemParametros, cPasta ) /* */ Local p, oInternet, cParm, cRetorno := '', cHtml := '', c_span := '' Local nIni, cPart, cParte, nFim, cFile, nTamTag, nTotPro // Conteudo elementos da Matriz = {VALOR_TAG,TAG,TAG_PAI,Elemento_Final_TAG_PAI,LABEL_HTML,TAM_LABEL} // TAM_LABEL se ZERO pega tudo, se MAIOR que ZERO pega o tamanho no início e se MENOR que ZERO exclui o tamanho no início e pega o restante AADD(s_aIde,{{"","cUF","ide",21,"Chave de Acesso",2},; //1- tratamento especial {"","cNF","",0,"Número",0},; //2- tratamento especial {"","natOp","",0,"Natureza da Operação",0},; //3- {"","indPag","",0,"Forma de Pagamento",1},; //4- {"","mod","",0,"Modelo",0},; //5- {"","serie","",0,"Série",0},; //6- {"","nNF","",0,"Número",0},; //7- {"","dhEmi","",0,"Data de Emissão",0},; //8- tratamento especial {"","dhSaiEnt","",0,"Entrada",0},; //9- tratamento especial {"","tpNF","",0,"Tipo da Operação",1},; //10- {"","idDest","",0,"Destino da operação",1},; //11- {"","cMunFG","",0,"Município da Ocorrência do Fato Gerador do ICMS",0},; //12- {"","tpImp","",0,"Formato de Impressão DANFE",1},; //13- tratamento especial {"","tpEmis","",0,"Tipo de Emissão",1},; //14- {"","cDV","",0,"Chave de Acesso",0},; //15- tratamento especial {"","tpAmb","",0,"Ambiente de autorização:",0},; //16- tratamento especial {"","finNFe","",0,"Finalidade",1},; //17- {"","indFinal","",0,"Consumidor final",1},; //18- {"","indPres","",0,"Presença do Comprador",1},; //19- {"","procEmi","",0,"Processo",1},; //20- {"","verProc","",0,"Versão do Processo",0}}) //21- AADD(s_aEmit,{{"","CNPJ","emit",20,"CNPJ",0},; //1- tratamento especial {"","CPF","",0,"CPF",0},; //2- {"","xNome","",0,"Nome / Razão Social",0},; //3- {"","xFant","",0,"Nome Fantasia",0},; //4- {"","xLgr","enderEmit",15,"Endereço",0},; //5- tratamento especial {"","nro","",0,"Endereço",0},; //6- tratamento especial {"","xCpl","",0,"Endereço",0},; //7- tratamento especial {"","xBairro","",0,"Bairro / Distrito",0},; //8- {"","cMun","",0,"Município",7},; //9- {"","xMun","",0,"Município",-10},; //10- {"","UF","",0,"UF",0},; //11- {"","CEP","",0,"CEP",0},; //12- tratamento especial {"","cPais","",0,"País",4},; //13- {"","xPais","",0,"País",-7},; //14- {"","fone","",0,"Telefone",0},; //15- tratamento especial {"","IE","",0,"Inscrição Estadual",0},; //16- {"","IEST","",0,"Inscrição Estadual do Substituto Tributário",0},; //17- {"","IM","",0,"Inscrição Municipal",0},; //18- {"","CNAE","",0,"CNAE Fiscal",0},; //19- {"","CRT","",0,"Código de Regime Tributário",1}}) //20- AADD(s_aDest,{{"","CNPJ","dest",20,"CNPJ",0},; //1- {"","CPF","",0,"CPF",0},; //2- {"","idEstrangeiro","",0,"",0},; //3- {"","xNome","",0,"Nome / Razão Social",0},; //4- {"","xLgr","enderDest",15,"Endereço",0},; //5- tratamento especial {"","nro","",0,"Endereço",0},; //6- tratamento especial {"","xCpl","",0,"Endereço",0},; //7- tratamento especial {"","xBairro","",0,"Bairro / Distrito",0},; //8- {"","cMun","",0,"Município",7},; //9- {"","xMun","",0,"Município",-10},; //10- {"","UF","",0,"UF",0},; //11- {"","CEP","",0,"CEP",0},; //12- tratamento especial {"","cPais","",0,"País",4},; //13- {"","xPais","",0,"País",-7},; //14- {"","fone","",0,"Telefone",0},; //15- tratamento especial {"","indIEDest","",0,"Indicador IE",2},; //16- tratamento especial {"","IE","",0,"Inscrição Estadual",0},; //17- {"","ISUF","",0,"Inscrição SUFRAMA",0},; //18- {"","IM","",0,"IM",0},; //19- {"","email","",0,"E-mail",0}}) //20- //Conteudo elementos da Matriz = {VALOR_TAG,TAG,LABEL_HTML} AADD(s_aTotais,{{"0.00","vBC","Base de Cálculo ICMS"},; //1- {"0.00","vICMS","Valor do ICMS"},; //2- {"0.00","vICMSDeson","Valor do ICMS Desonerado"},; //3- {"0.00","vFCPUFDest","Valor Total ICMS FCP"},; //4- {"0.00","vBCST","Base de Cálculo ICMS ST"},; //5- {"0.00","vST","Valor ICMS Substituição"},; //6- {"0.00","vProd","Valor Total dos Produtos"},; //7- {"0.00","vFrete","Valor do Frete"},; //8- {"0.00","vSeg","Valor do Seguro"},; //9- {"0.00","vDesc","Valor Total dos Descontos"},; //10- {"0.00","vII","Valor Total do II"},; //11- {"0.00","vIPI","Valor Total do IPI"},; //12- {"0.00","vPIS","Valor do PIS"},; //13- {"0.00","vCOFINS","Valor da COFINS"},; //14- {"0.00","vOutro","Outras Despesas Acessórias"},; //15- {"0.00","vNF","Valor Total da NFe"}}) //16- //Conteudo elementos da Matriz = {VALOR_TAG,TAG,TAG_PAI,Elemento_Final_TAG_PAI,LABEL_HTML,TAM_LABEL} AADD(s_aTransp,{{"","modFrete","transp",17,"Modalidade do Frete",1},; //1- {"","CNPJ","transporta",8,"CNPJ",0},; //2- {"","CPF","",0,"CPF",0},; //3- {"","xNome","",0,"Razão Social / Nome",0},; //4- {"","IE","",0,"Inscrição Estadual",0},; //5- {"","xEnder","",0,"Endereço Completo",0},; //6- {"","xMun","",0,"Município",0},; //7- {"","UF","",0,"UF",0},; //8- {"",'placa','veicTransp',11,'Placa',0},; //9- {"","UF","",0,"UF",0},; //10- {"","RNTC","",0,"RNTC",0},; //11- {"","qVol","vol",17,"Quantidade",0},; //12- {"","esp","",0,"Espécie",0},; //13- {"","marca","",0,"Marca dos Volumes",0},; //14- {"","nVol","",0,"Volume",0},; //15- {"","pesoL","",0,"Peso Líquido",0},; //16- {"","pesoB","",0,"Peso Bruto",0}}) //17- //Conteudo elementos da Matriz = {VALOR_TAG,TAG} AADD(s_aCobr,{{"","nDup"},; //1- {"","dVenc"},; //2- {"","vDup"},; //3- {"","nDup"},; //4- {"","dVenc"},; //5- {"","vDup"},; //6- {"","nDup"},; //7- {"","dVenc"},; //8- {"","vDup"},; //9- {"","nDup"},; //10- {"","dVenc"},; //11- {"","vDup"},; //12- {"","nDup"},; //13- {"","dVenc"},; //14- {"","vDup"},; //15- {"","nDup"},; //16- {"","dVenc"},; //17- {"","vDup"},; //18- {"","nDup"},; //19- {"","dVenc"},; //20- {"","vDup"},; //21- {"","nDup"},; //22- {"","dVenc"},; //23- {"","vDup"},; //24- {"","nDup"},; //25- {"","dVenc"},; //26- {"","vDup"},; //27- {"","nDup"},; //28- {"","dVenc"},; //29- {"","vDup"}}) //30- // fazer o acesso nTentativas := 0 REPEAT && http://msdn.microsoft.com/en-us/library/aa752084(v=vs.85).aspx oIE:=TOleAuto():New( "InternetExplorer.Application" ) * oIE:ToolBar := .T. oIE:StatusBar := .T. oIE:MenuBar := .F. oIE:Visible := .F. * oIE:Navigate2( "https://www.nfe.fazenda.gov.br/portal/consultaRecaptcha.aspx?tipoConsulta=completa&tipoConteudo=XbSeqxE8pl8=" ) while oIE:Busy SysWait(.2) end * oActdo:=oIE:Document() oActdo:All:Item("ctl00$ContentPlaceHolder1$txtChaveAcessoCompleta",0):Value:=cChave SysWait() * oActdo:All:Item("ctl00$ContentPlaceHolder1$btnConsultar"):Click() SysWait() * GetWndDefault():Minimize() while oIE:Busy SysWait() end * cHtml:=oIE:Document():All(0):OuterHTML while oIE:Busy SysWait() end TRY oIE:Quit() catch end Release oIE ? cHtml * cHtml:=strtran(cHtml,'&') cHtml:=strtran(cHtml,'nbsp;') * nTentativas ++ UNTIL At('Realizar consulta com captcha sonoro', cHtml) == 0 .or. nTentativas > 4 if At('Realizar consulta com captcha sonoro', cHtml) > 0 .or. nTentativas > 4 MsgAlert("Atenção tente novamente!","Atenção") return .f. endif * If !Empty(cHtml) nIni := At('<html', cHtml) cParte:= SubStr(cHtml, nIni) nIni := At('<div class="divLarguraMaxima" id="ctl00_ContentPlaceHolder1_divBotoesConsulta"', cParte) cParte:= SubStr(cParte, 1, nIni - 1) nFim := At('</form>', cParte) cFile := SubStr(cParte, nFim) // memowrit('site.txt',cfile) nIni := RAt('fixo-prod-serv-numero',cFile) c_span := SubStr(cFile, nIni) nIni := AT('<span>',c_span)+6 nTamTag:= AT('</span>',c_span)-nIni nTotPro:= Val(AllTrim(SubStr(c_span,nIni,nTamTag))) * //Conteudo elementos da Matriz = {VALOR_TAG,TAG,LABEL_HTML,TAM_LABEL} For p := 1 to nTotPro AADD(s_aDet,{{"","cProd","Código do Produto",0},; //1- {"","cEAN","Código EAN Comercial",0},; //2- {"","xProd","fixo-prod-serv-descricao",0},; //3- {"","NCM","Código NCM",0},; //4- {"","NVE","",0},; //5- {"","CEST","Código CEST",0},; //6- {"","EXTIPI","Código EX da TIPI",0},; //7- {"","CFOP","CFOP",0},; //8- {"","uCom","Unidade Comercial",0},; //9- {"","qCom","Quantidade Comercial",0},; //10- {"","vUnCom","Valor unitário de comercialização",0},; //11- {"","vProd","fixo-prod-serv-vb",0},; //12- {"","cEANTrib","Código EAN Tributável",0},; //13- {"","uTrib","Unidade Tributável",0},; //14- {"","qTrib","Quantidade Tributável",0},; //15- {"","vUnTrib","Valor unitário de tributação",0},; //16- {"","vFrete","Valor Total do Frete",0},; //17- {"","vSeg","Valor do Seguro",0},; //18- {"","vDesc","Valor do Desconto",0},; //19- {"","vOutro","Outras Despesas Acessórias",0},; //20- {"","indTot","Indicador de Composição do Valor Total da NF-e",1},; //21- {"","nItemPed","Item do pedido de compra",0}}) //22- AADD(s_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- AADD(s_aICMS,{{"","orig","Origem da Mercadoria",1},; //1- ICMS Normal e ST {"","CST","Tributação do ICMS",2},; //2- {"","CSOSN","Código de Situação da Operação",3},; //3- {"","modBC","Modalidade Definição da BC do ICMS",1},; //4- {"","pRedBC","Percentual Redução de BC do ICMS",0},; //5- {"","vBC","Base de Cálculo",0},; //6- {"","pICMS","Alíquota",0},; //7- {"","vICMS","Valor",0},; //8- {"","vICMSDeson","",0},; //9- {"","motDesICMS","",0},; //10- {"","modBCST","Modalidade de determinação da BC do ICMS ST",1},; //11- {"","pMVAST","Percentual Margem Valor Adicionado do ICMS ST",0},; //12- {"","pRedBCST","Percentual da Redução de BC do ICMS ST",0},; //13- {"","vBCST","Valor da BC do ICMS ST",0},; //14- {"","pICMSST","Alíquota do imposto do ICMS ST",0},; //15- {"","vICMSST","Valor do ICMS ST",0},; //16- {"","vBCSTRet","Valor da BC do ICMS ST retido",0},; //17- {"","vICMSSTRet","Valor do ICMS ST retido",0},; //18- {"","vICMSOp","",0},; //19- {"","pDif","",0},; //20- {"","vICMSDif","",0},; //21- {"","pCredSN","Alíquota aplicável de cálculo do crédito",0},; //22- {"","vCredICMSSN","Valor crédito do ICMS",0}}) //23- AADD(s_aIPI,{{"","cEnq","Código de Enquadramento", 3},; {"","CST","CST", 2},; //1- {"","vBC","Base de Cálculo", 0},; //2- {"","pIPI","Alíquota", 0},; //3- {"","vIPI","Valor IPI", 0},; //4- {"","qBCProd","", 0},; //5- {"","vAliqProd","", 0}}) //6- AADD(s_aPIS,{{"","CST","CST",2},; //1- {"","vBC","Base de Cálculo",0},; //2- {"","pPIS","Alíquota",0},; //3- {"","vPIS","Valor",0},; //4- {"","qBCProd","",0},; //5- {"","vAliqProd","",0}}) //6- AADD(s_aCOFINS,{{"","CST","CST",2},; //1- {"","vBC","Base de Cálculo",0},; //2-vBC {"","pCOFINS","Alíquota",0},; //3- {"","vCOFINS","Valor",0},; //4- {"","qBCProd","",0},; //5- {"","vAliqProd","",0}}) //6- Next nIni := At('<div class="GeralXslt"',cFile) cParte := SubStr(cFile, nIni) nIni := At('<div class="GeralXslt" id="Emitente"',cParte) cParte := SubStr(cParte, 1, nIni - 1) //ide //? "ide", !Empty(cParte) GeraTag("ide", cParte, cFile, cChave) nIni := At('<div class="GeralXslt" id="Emitente"',cFile) cParte := SubStr(cFile, nIni) nIni := At('</div>',cParte) cParte := SubStr(cParte, 1, nIni - 1) //emit //? "emit", !Empty(cParte) GeraTag("emit", cParte, cFile, cChave) *nIni := At('<div id="DestRem"',cFile) nIni := At('<div class="GeralXslt" id="DestRem"',cFile) cParte := SubStr(cFile, nIni) nIni := At('</div>',cParte) cParte := SubStr(cParte, 1, nIni - 1) //dest *? "dest", !Empty(cParte) GeraTag("dest",cParte, cFile, cChave) *nIni := At('<td class="fixo-prod-serv-numero"><span>', cFile) nIni := At('<tr><td class="fixo-prod-serv-numero"><span>', cFile) cParte := SubStr(cFile, nIni) *nIni := At('</body></html>', cParte) nIni := At('<div class="nft" id="aba_nft_10">', cParte) cParte := SubStr(cParte, 1, nIni - 1) //det //? "det", !Empty(cParte) GeraTag("det", cParte, cFile, cChave) nIni := At('<legend class="titulo-aba">Totais</legend>',cFile) cParte := SubStr(cFile, nIni+42) *nIni := At('<div id="aba_nft_5"',cParte) nIni := At('<div class="nft" id="aba_nft_5"',cParte) cParte := SubStr(cParte, 1, nIni - 1) //totais //? "totais", !Empty(cParte) GeraTag("totais", cParte, cFile, cChave) nIni := At('Dados do Transporte</legend>',cFile) cParte := SubStr(cFile, nIni+29) nIni := At('<div class="GeralXslt" id="Cobranca"',cParte) cParte := SubStr(cParte, 1, nIni - 1) //transp //? "transp", !Empty(cParte) GeraTag("transp", cParte, cFile, cChave) nIni := At('<legend>Duplicatas</legend><table',cFile) if nIni > 0 cParte := SubStr(cFile, nIni) nIni := At('</table>',cParte) cParte := SubStr(cParte, 1, nIni - 1) //cobr *? "cobr", !Empty(cParte) GeraTag("cobr", cParte, cFile, cChave) endif GravaXML(cChave, hInput, oDialog, lSemParametros, cPasta) Else MsgInfo('Erro ao ler retorno da Consulta!', 'Atenção!') Return .f. EndIf Return .t. /***********************************************************/ static Function DigitoChave(cCodigoChave) /* */ Local cIndice := '4329876543298765432987654329876543298765432' Local nDigito, nContador, nSoma := 0 For nContador := 1 to 43 nSoma += (Val(SubStr(cCodigoChave, nContador, 1)) * Val(SubStr(cIndice, nContador, 1))) Next nDigito := (nSoma % 11) If nDigito == 0 .Or. nDigito == 1 nDigito := 0 Else nDigito := (11 - nDigito) EndIf If SubStr(cCodigoChave, 44, 1) != LTrim(Str(nDigito, 1)) MsgStop('A chave informada é inválida!', 'Atenção!') Return .f. EndIf Return .t. /********************************************************************/ static Function Troca_Acento( cTexto ) /* */ cTexto := StrTran( cTexto, "&#243;", "ó" ) cTexto := StrTran( cTexto, "&#225;", "á" ) cTexto := StrTran( cTexto, "&#233;", "é" ) Return cTexto /*******************************************************************/ static Function GeraTag( _tag, cParte, cFile, cChave ) /* */ Local i, cPar_, c_Tag, nTamTag, nIni, c_span, cPar1_, nFim if _tag=="ide" cPar_:= StrTran(cFile,Chr(13)+Chr(10),"") cPar_:= StrTran(cPar_,Chr(160),"") nIni := At('<legend>Informações Complementares de Interesse do Contribuinte</legend>', cPar_) if nIni>0 c_span := SubStr(cPar_, nIni+70) nIni := AT('<div style="word-wrap: break-word">',c_span) c_span := SubStr(c_span, nIni+35) nIni := AT('</div></span>',c_span) s_cinfCpl := alltrim(SubStr(c_span,1,nIni-1)) endif cPar_ := StrTran(cParte,Chr(13)+Chr(10),"") cPar_ := StrTran(cPar_,Chr(160),"") nIni := AT('Situação Atual:',cPar_) c_span := SubStr(cPar_, nIni+15) nIni := AT('(Ambiente de autorização:',c_span) s_cxMotivo := Alltrim(SubStr(c_span,1,nIni-1)) if "AUTORIZADA" $ s_cxMotivo s_ccStat := "100" s_cxMotivo := "Autorizado o uso da NF-e" endif if "CANCELADA" $ s_cxMotivo s_ccStat := "101" s_cxMotivo := "Cancelamento de NF-e homologado" endif nIni := AT('Data Inclusão AN</label></td></tr><tr><td><span>',cPar_) c_span := SubStr(cPar_, nIni+50) nIni := AT('<span>',c_span)+6 nTamTag := AT('<input',c_span)-nIni s_cnProt := alltrim(SubStr(c_span,nIni,nTamTag)) c_span := SubStr(c_span, nIni+nTamTag) nIni := AT('<span>',c_span)+6 c_span := SubStr(c_span,nIni) nTamTag := AT('</span>',c_span)-1 //nIni s_cDhRecbto := alltrim(SubStr(c_span,1,nTamTag)) s_cDhRecbto := SubStr(s_cDhRecbto,7,4)+"-"+SubStr(s_cDhRecbto,4,2)+"-"+left(s_cDhRecbto,2)+"T"+Right(s_cDhRecbto,14) nIni := AT('<i>Digest</i> Value da NF-e',cPar_) c_span := SubStr(cPar_, nIni+20) nIni := AT('<span>',c_span)+6 nTamTag := AT('</span>',c_span)-nIni s_cDigVal := alltrim(SubStr(c_span,nIni,nTamTag)) nIni := AT('Versão XML',cParte) c_span := SubStr(cParte, nIni) nIni := AT('<span>',c_span)+6 nTamTag := AT('</span>',c_span)-nIni s_cVersao := alltrim(SubStr(c_span,nIni,nTamTag)) For i := 1 to Len(s_aIde[1]) cPar_:= cParte if i == 12 cPar_:= cFile endif if i == 13 cPar_:= cFile endif nIni := AT(s_aIde[1,i,5],cPar_) c_span := SubStr(cPar_, nIni) if i != 16 nIni := AT('<span>', c_span) + 6 nTamTag := AT('</span>', c_span) - nIni c_tag := alltrim(SubStr(c_span, nIni, nTamTag)) else nIni := AT('</legend>', c_span) c_tag := alltrim(SubStr(c_span, 1, nIni - 1)) if AT('produção', c_tag) > 0 c_tag := "1" else c_tag := "2" endif s_cTpAmb := c_tag endif if i == 2 c_tag := SubStr(cChave, 36, 8) //c_tag:= StrZero(Val(c_tag), 9) endif if i == 8 .or. i == 9 if !Empt(c_tag) c_tag := SubStr(c_tag,7,4)+"-"+SubStr(c_tag,4,2)+"-"+left(c_tag,2)+"T"+SubStr(c_tag,12) endif endif if i == 15 c_tag := right(c_tag,1) endif if s_aIde[1,i,6]!=0 if s_aIde[1,i,6]>0 c_tag := left(c_tag,s_aIde[1,i,6]) else c_tag := SubStr(c_tag,Abs(s_aIde[1,i,6])+1) endif endif s_aIde[1,i,1] := c_tag Next endif if _tag == "emit" For i := 1 to Len(s_aEmit[1]) cPar_ := StrTran(cParte,Chr(13)+Chr(10),"") cPar_ := StrTran(cPar_,Chr(160),"") nIni := AT(s_aEmit[1,i,5],cPar_) if nIni > 0 c_span := SubStr(cPar_, nIni) nIni := AT('<span>',c_span)+6 nTamTag := AT('</span>',c_span)-nIni c_tag := Alltrim(SubStr(c_span,nIni,nTamTag)) if i >= 1 .and. i <= 2 c_tag := StrTran(c_tag,".","") c_tag := StrTran(c_tag,"/","") c_tag := StrTran(c_tag,"-","") endif if i >= 5 .and. i <= 7 nIni := AT(",",c_tag) if i == 5 c_tag := Left(c_tag,nIni-1) elseif i == 6 c_tag := AllTrim(SubStr(c_tag, nIni + 1)) nIni := AT(" ", c_tag) if nIni > 0 c_tag := Left(c_tag, nIni - 1) endif else c_tag := AllTrim(SubStr(c_tag, nIni + 1)) nIni := AT(" ", c_tag) if nIni > 0 c_tag := alltrim(SubStr(c_tag, nIni + 1)) else c_tag := "" endif endif endif if i == 12 c_tag := StrTran(c_tag,"-","") endif if i==15 c_tag := StrTran(c_tag,"(","") c_tag := StrTran(c_tag,")","") c_tag := StrTran(c_tag,"-","") endif if s_aEmit[1, i, 6] != 0 if s_aEmit[1, i, 6] > 0 c_tag := left(c_tag,s_aEmit[1, i, 6]) else c_tag := alltrim(SubStr(c_tag, Abs(s_aEmit[1, i, 6]) + 1)) c_tag := alltrim(StrTran(c_tag, "-", "")) endif endif s_aEmit[1, i, 1] := c_tag endif Next endif if _tag == "dest" For i := 1 to Len(s_aDest[1]) cPar_ := StrTran(cParte, Chr(13) + Chr(10), "") cPar_ := StrTran(cPar_, Chr(160), "") nIni := AT(s_aDest[1, i, 5], cPar_) if nIni > 0 c_span := SubStr(cPar_, nIni) nIni := AT('<span>',c_span)+6 nTamTag := AT('</span>',c_span)-nIni c_tag := AllTrim(SubStr(c_span, nIni, nTamTag)) if i >= 1 .and. i <= 2 c_tag := StrTran(c_tag, ".", "") c_tag := StrTran(c_tag, "/", "") c_tag := StrTran(c_tag, "-", "") endif If i >= 5 .and. i <= 7 nIni := AT(",", c_tag) if i == 5 c_tag := Left(c_tag,nIni-1) elseif i == 6 c_tag := AllTrim(SubStr(c_tag, nIni + 1)) nIni := AT(" ", c_tag) if nIni > 0 c_tag := Left(c_tag, nIni - 1) endif else c_tag := AllTrim(SubStr(c_tag, nIni + 1)) nIni := AT(" ", c_tag) if nIni > 0 c_tag := alltrim(SubStr(c_tag, nIni + 1)) else c_tag := "" endif endif EndIf if i == 12 c_tag := StrTran(c_tag, "-", "") endif if i == 15 c_tag := StrTran(c_tag, "(", "") c_tag := StrTran(c_tag, ")", "") c_tag := StrTran(c_tag, "-", "") endif if i==16 c_tag := alltrim(Str(Val(c_tag))) endif if s_aDest[1, i, 6] != 0 if s_aDest[1, i, 6] > 0 c_tag := left(c_tag, s_aDest[1, i, 6]) else c_tag := alltrim(SubStr(c_tag, Abs(s_aDest[1,i,6]) + 1)) c_tag := alltrim(StrTran(c_tag, "-", "")) endif endif s_aDest[1, i, 1] := c_tag endif Next endif if _tag == "det" cPar_ := StrTran(cParte, Chr(13) + Chr(10), "") cPar_ := StrTran(cPar_, Chr(160), "") For p := 1 to Len(s_aDet) For i := 1 to Len(s_aDet[p]) nIni := At(s_aDet[p, i, 3], cPar_) if nIni > 0 c_span := SubStr(cPar_, nIni) nIni := At('<span>',c_span)+6 nTamTag := At('</span>',c_span)-nIni c_tag := AllTrim(SubStr(c_span,nIni,nTamTag)) if s_aDet[p, i, 4] != 0 if s_aDet[p, i, 4] > 0 c_tag := left(c_tag, s_aDet[p, i, 4]) else c_tag := alltrim(SubStr(c_tag, Abs(s_aDet[p, i, 4]) + 1)) c_tag := alltrim(StrTran(c_tag, "-", "")) endif endif If i != 3 c_tag := StrTran(c_tag, ".", "") c_tag := StrTran(c_tag, ",", ".") endIf s_aDet[p, i, 1] := c_tag endif Next For i := 1 To Len(s_aICMS[p]) nIni := At(s_aICMS[p, i, 3], cPar_) if nIni > 0 c_span := SubStr(cPar_, nIni) nIni := At('<span>', c_span) + 6 nTamTag := At('</span>', c_span) - nIni c_tag := AllTrim(SubStr(c_span, nIni, nTamTag)) If s_aICMS[p, i, 4] != 0 if s_aICMS[p, i, 4] > 0 c_tag := Left(c_tag, s_aICMS[p, i, 4]) else c_tag := AllTrim(SubStr(c_tag, Abs(s_aICMS[p, i, 4]) + 1)) c_tag := AllTrim(StrTran(c_tag, "-", "")) endif endif c_tag := StrTran(c_tag, ".", "") c_tag := StrTran(c_tag, ",", ".") s_aICMS[p, i, 1] := c_tag endif Next nIni := AT('<legend>Imposto Sobre Produtos Industrializados</legend>', cPar_) if nIni > 0 cPar_ := SubStr(cPar_, nIni) For i := 1 To Len(s_aIPI[p]) nIni := AT(s_aIPI[p, i, 3], cPar_) if nIni > 0 c_span := SubStr(cPar_, nIni) nIni := AT('<span>', c_span) + 6 nTamTag := AT('</span>', c_span) - nIni c_tag := AllTrim(SubStr(c_span, nIni, nTamTag)) if s_aIPI[p, i, 4] != 0 if s_aIPI[p, i, 4] > 0 c_tag := Left(c_tag, s_aIPI[p, i, 4]) else c_tag := Alltrim(SubStr(c_tag, Abs(s_aIPI[p, i, 4]) + 1)) c_tag := Alltrim(StrTran(c_tag, "-", "")) endif endif c_tag := StrTran(c_tag, ".", "") c_tag := StrTran(c_tag, ",", ".") s_aIPI[p, i, 1] := c_tag endif Next endif nIni := At('<legend class="toggle">PIS</legend>', cPar_) if nIni > 0 cPar_ := SubStr(cPar_, nIni) For i := 1 to Len(s_aPIS[p]) IF P == Len(s_aPIS) nFim := LEN(cPar_) ELSE nFim := At('<td class="fixo-prod-serv-numero"><span>', cPar_) ENDIF cPar1_:= SubStr(cPar_, 1, nFim) nIni := AT(s_aPIS[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 s_aPIS[p,i,4] != 0 if s_aPIS[p,i,4] > 0 c_tag := Left(c_tag,s_aPIS[p,i,4]) else c_tag := AllTrim(SubStr(c_tag, Abs(s_aPIS[p, i, 4]) + 1)) c_tag := AllTrim(StrTran(c_tag, "-", "")) endif endif c_tag := StrTran(c_tag, ".", "") c_tag := StrTran(c_tag, ",", ".") s_aPIS[p, i, 1] := c_tag endif Next endif * nIni := AT('<legend class="toggle">COFINS</legend>', cPar_) if nIni > 0 cPar_ := SubStr(cPar_, nIni) For i := 1 to Len(s_aCOFINS[p]) IF P == Len(s_aCOFINS) nFim := LEN(cPar_) ELSE nFim := At('<td class="fixo-prod-serv-numero">', cPar_) ENDIF cPar1_:= SubStr(cPar_, 1, nFim) nIni := AT(s_aCOFINS[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 s_aCOFINS[p, i, 4] != 0 if s_aCOFINS[p, i, 4] > 0 c_tag := left(c_tag, s_aCOFINS[p, i, 4]) else c_tag := alltrim(SubStr(c_tag, Abs(s_aCOFINS[p, i, 4]) + 1)) c_tag := alltrim(StrTran(c_tag, "-", "")) endif endif c_tag := StrTran(c_tag, ".", "") c_tag := StrTran(c_tag, ",", ".") s_aCOFINS[p, i, 1] := c_tag endif Next endif nIni := At('<legend>Detalhamento específico dos medicamentos</legend>', cPar_) if nIni > 0 cPar_ := SubStr(cPar_, nIni) For i := 1 to Len(s_aMedicamentos[p]) nIni := AT(s_aMedicamentos[p, i, 3], cPar_) if nIni > 0 c_span := SubStr(cPar_, nIni) nIni := At('<span>', c_span) + 6 nTamTag := At('</span>', c_span) - nIni c_tag := AllTrim(SubStr(c_span, nIni, nTamTag)) if s_aMedicamentos[p,i,4] != 0 if s_aMedicamentos[p,i,4] > 0 c_tag := Left(c_tag,s_aMedicamentos[p,i,4]) else c_tag := AllTrim(SubStr(c_tag, Abs(s_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 s_aMedicamentos[p, i, 1] := c_tag endif Next endif nIni := At('<td class="fixo-prod-serv-numero"><span>', cPar_) cPar_ := SubStr(cPar_, nIni) Next endif if _tag=="totais" For i := 1 to Len(s_aTotais[1]) cPar_ := StrTran(cParte,Chr(13)+Chr(10),"") cPar_ := StrTran(cPar_,Chr(160),"") nIni := AT(s_aTotais[1,i,3],cPar_) if nIni > 0 c_span := SubStr(cPar_, nIni) nIni := AT('<span>',c_span)+6 nTamTag := AT('</span>',c_span)-nIni c_tag := alltrim(SubStr(c_span,nIni,nTamTag)) c_tag := StrTran(c_tag,".","") c_tag := StrTran(c_tag,",",".") s_aTotais[1,i,1] := c_tag endif Next endif if _tag=="transp" For i := 1 to Len(s_aTransp[1]) cPar_ := StrTran(cParte,Chr(13)+Chr(10),"") cPar_ := StrTran(cPar_,Chr(160),"") nIni := AT(s_aTransp[1,i,5],cPar_) if nIni > 0 c_span := SubStr(cPar_, nIni) nIni := AT('<span>',c_span)+6 nTamTag := AT('</span>',c_span)-nIni c_tag := alltrim(SubStr(c_span,nIni,nTamTag)) if i >= 2 .and. i <= 3 c_tag := StrTran(c_tag,".","") c_tag := StrTran(c_tag,"/","") c_tag := StrTran(c_tag,"-","") endif if s_aTransp[1,i,6] != 0 if s_aTransp[1,i,6]>0 c_tag := left(c_tag,s_aTransp[1,i,6]) else c_tag := alltrim(SubStr(c_tag,Abs(s_aTransp[1,i,6])+1)) c_tag := alltrim(StrTran(c_tag,"-","")) endif endif s_aTransp[1,i,1] := c_tag endif Next endif if _tag == "cobr" cPar_ := StrTran(cParte,Chr(13)+Chr(10),"") cPar_ := StrTran(cPar_,Chr(160),"") For i := 1 to Len(s_aCobr[1]) nIni := AT('<span>',cPar_) if nIni > 0 cPar_ := SubStr(cPar_, nIni+6) nTamTag := AT('</span>',cPar_)-1 c_tag := alltrim(SubStr(cPar_,1,nTamTag)) c_tag := StrTran(c_tag,".","") c_tag := StrTran(c_tag,",",".") if StrZero(i,2) $ "-02-05-08-11-14-17-20-23-26-29" c_tag := SubStr(c_tag,7,4)+"-"+SubStr(c_tag,4,2)+"-"+left(c_tag,2) endif s_aCobr[1,i,1] := c_tag else Exit endif Next endif return Nil /**************************************************************************************************/ static function GravaXML(cChave, hInput, oDialog, lSemParametros, cPasta) /* */ Local i, p, lTemTag, cTagPai, nFimTagPai, nIni, cTag, nArqHandle, cArqXml, cTag_ Local cXML :='<?xml version="1.0" encoding="UTF-8"?><nfeProc versao="'+s_cVersao+'" xmlns="http://www.portalfiscal.inf.br/nfe"><NFe xmlns="http://www.portalfiscal.inf.br/nfe"><infNFe versao="'+s_cVersao+'" Id="NFe'+cChave+'">' cTagPai := "" nFimTagPai := 0 For i := 1 to Len(s_aIde[1]) if !Empt(s_aIde[1,i,3]) nFimTagPai := s_aIde[1,i,4] cTagPai += "|"+StrZero(nFimTagPai,2)+s_aIde[1,i,3] cXML += '<'+s_aIde[1,i,3]+'>' endif if !Empty(s_aIde[1,i,1]) cXML += '<'+s_aIde[1,i,2]+'>'+s_aIde[1,i,1]+'</'+s_aIde[1,i,2]+'>' endif if i == nFimTagPai nIni := RAT("|",cTagPai) cTag := Substr(cTagPai,nIni+1) cXML += '</'+SubStr(cTag,3)+'>' cTagPai := SubStr(cTagPai,1,nIni-1) if nIni > 1 nIni := RAT("|",cTagPai) nFimTagPai := Val(Substr(cTagPai,nIni+1,2)) else nFimTagPai := 0 endif endif Next For i := 1 to Len(s_aEmit[1]) if !Empty(s_aEmit[1,i,3]) nFimTagPai := s_aEmit[1,i,4] cTagPai += "|"+StrZero(nFimTagPai,2)+s_aEmit[1,i,3] cXML += '<'+s_aEmit[1,i,3]+'>' endif if !Empty(s_aEmit[1,i,1]) cXML += '<'+s_aEmit[1,i,2]+'>'+s_aEmit[1,i,1]+'</'+s_aEmit[1,i,2]+'>' endif if i == nFimTagPai nIni := RAT("|",cTagPai) cTag := Substr(cTagPai,nIni+1) cXML += '</'+SubStr(cTag,3)+'>' cTagPai := SubStr(cTagPai,1,nIni-1) if nIni > 1 nIni := RAT("|",cTagPai) nFimTagPai := Val(Substr(cTagPai,nIni+1,2)) else nFimTagPai := 0 endif endif Next For i := 1 to Len(s_aDest[1]) if !Empt(s_aDest[1,i,3]) nFimTagPai := s_aDest[1,i,4] cTagPai += "|"+StrZero(nFimTagPai,2)+s_aDest[1,i,3] cXML += '<'+s_aDest[1,i,3]+'>' endif if !Empt(s_aDest[1,i,1]) cXML += '<'+s_aDest[1,i,2]+'>'+s_aDest[1,i,1]+'</'+s_aDest[1,i,2]+'>' endif if i == nFimTagPai nIni := RAT("|",cTagPai) cTag := Substr(cTagPai,nIni+1) cXML += '</'+SubStr(cTag,3)+'>' cTagPai := SubStr(cTagPai,1,nIni-1) if nIni > 1 nIni := RAT("|",cTagPai) nFimTagPai := Val(Substr(cTagPai,nIni+1,2)) else nFimTagPai := 0 endif endif Next For p := 1 to Len(s_aDet) cXML += '<det nItem="'+alltrim(Str(p))+'"><prod>' For i := 1 to Len(s_aDet[p]) if !Empt(s_aDet[p,i,1]) cXML += '<'+s_aDet[p,i,2]+'>'+s_aDet[p,i,1]+'</'+s_aDet[p,i,2]+'>' endif Next lTemTag := .F. For i := 1 to Len(s_aMedicamentos[p]) if i == 1 if !Empty(s_aMedicamentos[p,i,1]) cXML += '<med><nLote>' + s_aMedicamentos[p,i,1] + '</nLote>' lTemTag := .t. endif Else if !Empty(s_aMedicamentos[p,i,1]) If i == 6 s_cDiscAdicional := '<'+s_aMedicamentos[p,i,2]+'>'+ s_aMedicamentos[p,i,1] + '</'+s_aMedicamentos[p,i,2]+'>' Else cXML += '<'+s_aMedicamentos[p,i,2]+'>'+ s_aMedicamentos[p,i,1] + '</'+s_aMedicamentos[p,i,2]+'>' Endif endif EndIf Next if lTemTag cXML += '</med>' endif cXML += '</prod><imposto><ICMS>' cTag_ := 'ICMS' For i := 1 to Len(s_aICMS[p]) if i == 1 if !Empty(s_aICMS[p, 2, 1]) cTag_ += s_aICMS[p, 2, 1] else cTag_ += 'SN' + s_aICMS[p, 3, 1] endif cXML += '<' + cTag_ + '>' endif if !Empty(s_aICMS[p, i, 1]) If s_aICMS[p, 2, 1] == '00' If StrZero(i, 2) $ "-01-02-04-06-07-08" cXML += '<' + s_aICMS[p, i, 2] + '>' + s_aICMS[p, i, 1] + '</' + s_aICMS[p, i, 2] + '>' EndIf ElseIf s_aICMS[p, 2, 1] == '10' If StrZero(i, 2) $ "-01-02-04-06-07-08-11-12-13-14-15-16" cXml += '<' + s_aICMS[p, i, 2] + '>' + s_aICMS[p, i, 1] + '</' + s_aICMS[p, i, 2] + '>' EndIf ElseIf s_aICMS[p, 2, 1] == '20' If StrZero(i, 2) $ "-01-02-04-05-06-07-08-09-10" cXml += '<' + s_aICMS[p, i, 2] + '>' + s_aICMS[p, i, 1] + '</' + s_aICMS[p, i, 2] + '>' EndIf ElseIf s_aICMS[p, 2, 1] == '30' If StrZero(i, 2) $ "-01-02-11-12-13-14-15-16-09-10" cXml += '<' + s_aICMS[p, i, 2] + '>' + s_aICMS[p, i, 1] + '</' + s_aICMS[p, i, 2] + '>' EndIf ElseIf s_aICMS[p, 2, 1] == '40' .or. s_aICMS[p, 2, 1] == '41' .Or. s_aICMS[p, 2, 1] == '50' If StrZero(i, 2) $ "-01-02-09-10" cXml += '<' + s_aICMS[p, i, 2] + '>' + s_aICMS[p, i, 1] + '</' + s_aICMS[p, i, 2] + '>' EndIf ElseIf s_aICMS[p, 2, 1] == '51' If StrZero(i, 2) $ "-01-02-04-05-06-07-08-19-20-21" cXml += '<' + s_aICMS[p, i, 2] + '>' + s_aICMS[p, i, 1] + '</' + s_aICMS[p, i, 2] + '>' EndIf ElseIf s_aICMS[p, 2, 1] == '60' If StrZero(i, 2) $ "-01-02-17-18" cXml += '<' + s_aICMS[p, i, 2] + '>' + s_aICMS[p, i, 1] + '</' + s_aICMS[p, i, 2] + '>' EndIf ElseIf s_aICMS[p, 2, 1] == '70' If StrZero(i, 2) $ "-01-02-04-05-06-07-08-09-10-11-12-13-14-15-16" cXml += '<' + s_aICMS[p, i, 2] + '>' + s_aICMS[p, i, 1] + '</' + s_aICMS[p, i, 2] + '>' EndIf ElseIf s_aICMS[p, 2, 1] == '90' If StrZero(i, 2) $ "-01-02-04-05-06-07-08-11-12-13-14-15-16" cXml += '<' + s_aICMS[p, i, 2] + '>' + s_aICMS[p, i, 1] + '</' + s_aICMS[p, i, 2] + '>' EndIf Else cXml += '<' + s_aICMS[p, i, 2] + '>' + s_aICMS[p, i, 1] + '</' + s_aICMS[p, i, 2] + '>' EndIf endif Next cXML += '</'+cTag_+'></ICMS>' lTemTag := .F. For i := 1 to Len(s_aIPI[p]) if i == 1 if !Empty(s_aIPI[p,i,1]) cXML += '<IPI><cEnq>' + s_aIPI[p,i,1] + '</cEnq><IPITrib>' lTemTag := .T. endif Else if !Empty(s_aIPI[p,i,1]) cXML += '<'+s_aIPI[p,i,2]+'>'+ s_aIPI[p,i,1] + '</'+s_aIPI[p,i,2]+'>' endif EndIf Next if lTemTag cXML += '</IPITrib></IPI>' endif lTemTag := .F. For i:= 1 to Len(s_aPIS[p]) if i == 1 if !Empty(s_aPIS[p, i, 1]) If Val(s_aPIS[p, 1, 1]) >= 1 .And. Val(s_aPIS[p, 1, 1]) <= 2 cXML += '<PIS><PISAliq>' ElseIf Val(s_aPIS[p, 1, 1]) == 3 cXML += '<PIS><PISQte>' ElseIf Val(s_aPIS[p, 1, 1]) >= 4 .And. Val(s_aPIS[p, 1, 1]) <= 9 cXML += '<PIS><PISNT>' ElseIf Val(s_aPIS[p, 1, 1]) >= 49 .And. Val(s_aPIS[p, 1, 1]) <= 99 cXML += '<PIS><PISOutr>' EndIf lTemTag := .T. endif endif if !Empty(s_aPIS[p, i, 1]) cXML += '<' + s_aPIS[p,i,2] + '>' + s_aPIS[p,i,1] + '</' + s_aPIS[p,i,2] + '>' endif Next if lTemTag If Val(s_aPIS[p, 1, 1]) >= 1 .And. Val(s_aPIS[p, 1, 1]) <= 2 cXML += '</PISAliq></PIS>' ElseIf Val(s_aPIS[p, 1, 1]) == 3 cXML += '</PISQte></PIS>' ElseIf Val(s_aPIS[p, 1, 1]) >= 4 .And. Val(s_aPIS[p, 1, 1]) <= 9 cXML += '</PISNT></PIS>' ElseIf Val(s_aPIS[p, 1, 1]) >= 49 .And. Val(s_aPIS[p, 1, 1]) <= 99 cXML+= '</PISOutr></PIS>' EndIf endif lTemTag := .F. For i := 1 to Len(s_aCOFINS[p]) if i == 1 if !Empty(s_aCOFINS[p,i,1]) If Val(s_aPIS[p, 1, 1]) >= 1 .And. Val(s_aPIS[p, 1, 1]) <= 2 cXML += '<COFINS><COFINSAliq>' ElseIf Val(s_aPIS[p, 1, 1]) == 3 cXML += '<COFINS><COFINSQte>' ElseIf Val(s_aPIS[p, 1, 1]) >= 4 .And. Val(s_aPIS[p, 1, 1]) <= 9 cXML += '<COFINS><COFINSNT>' ElseIf Val(s_aPIS[p, 1, 1]) >= 49 .And. Val(s_aPIS[p, 1, 1]) <= 99 cXML += '<COFINS><COFINSOutr>' EndIf lTemTag := .T. endif endif if !Empty(s_aCOFINS[p,i,1]) cXML += '<' + s_aCOFINS[p, i, 2] + '>' + s_aCOFINS[p, i, 1] + '</' + s_aCOFINS[p, i, 2] + '>' endif Next if lTemTag If Val(s_aPIS[p, 1, 1]) >= 1 .And. Val(s_aPIS[p, 1, 1]) <= 2 cXML += '</COFINSAliq></COFINS>' ElseIf Val(s_aPIS[p, 1, 1]) == 3 cXML += '</COFINSQte></COFINS>' ElseIf Val(s_aPIS[p, 1, 1]) >= 4 .And. Val(s_aPIS[p, 1, 1]) <= 9 cXML += '</COFINSNT></COFINS>' ElseIf Val(s_aPIS[p, 1, 1]) >= 49 .And. Val(s_aPIS[p, 1, 1]) <= 99 cXML+= '</COFINSOutr></COFINS>' EndIf endif cXML += '</imposto>' If !Empty(s_cDiscAdicional) cXml += s_cDiscAdicional EndIf cXML += '</det>' Next cXML += '<total><ICMSTot>' For i := 1 to Len(s_aTotais[1]) if !Empty(s_aTotais[1,i,1]) cXML+='<'+s_aTotais[1,i,2]+'>'+s_aTotais[1,i,1]+'</'+s_aTotais[1,i,2]+'>' endif Next cXML += '</ICMSTot></total>' For i := 1 to Len(s_aTransp[1]) if !Empty(s_aTransp[1,i,3]) nFimTagPai := s_aTransp[1,i,4] cTagPai += "|"+StrZero(nFimTagPai,2)+s_aTransp[1,i,3] cXML += '<'+s_aTransp[1,i,3]+'>' endif if !Empty(s_aTransp[1,i,1]) cXML += '<'+s_aTransp[1,i,2]+'>'+s_aTransp[1,i,1]+'</'+s_aTransp[1,i,2]+'>' endif if i == nFimTagPai nIni := RAT("|",cTagPai) cTag := Substr(cTagPai,nIni+1) cXML += '</'+SubStr(cTag,3)+'>' cTagPai := SubStr(cTagPai,1,nIni-1) if nIni > 1 nIni := RAT("|",cTagPai) nFimTagPai := Val(Substr(cTagPai,nIni+1,2)) else nFimTagPai := 0 endif if SubStr(cTag,3) == "vol" cXML += '</transp>' endif endif Next if !Empty(s_aCobr[1,1,1]) cXML += '<cobr>' For i := 1 to Len(s_aCobr[1]) if !Empty(s_aCobr[1,i,1]) if StrZero(i,2) $ "-01-04-07-10-13-16-19-22-25-28" if i > 2 cXML += '</dup>' endif cXML += '<dup>' endif cXML += '<'+s_aCobr[1,i,2]+'>'+s_aCobr[1,i,1]+'</'+s_aCobr[1,i,2]+'>' endif Next cXML += '</dup></cobr>' endif if !Empty(s_cinfCpl) .or. !Empty(s_cInfAdFisco) // cXML += '<infAdic>' // if !Empty(s_cInfAdFisco) // cXML += '<infAdFisco>'+s_cInfAdFisco+'</infAdFisco>' // endif // if !Empty(s_cinfCpl) // cXML += '<infCpl>'+s_cinfCpl+'</infCpl>' // endif // cXML += '</infAdic>' endif cXML += '</infNFe>' cXML += '<Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />' cXML += '<Reference URI="#NFe'+cChave+'">' cXML += '<Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /><Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" /></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />' cXML += '<DigestValue>'+s_cDigVal+'</DigestValue></Reference></SignedInfo><SignatureValue></SignatureValue><KeyInfo></KeyInfo></Signature></NFe>' cXML += '<protNFe versao="'+s_cVersao+'"><infProt>' cXML += '<tpAmb>'+s_cTpAmb+'</tpAmb><verAplic>'+s_cVerAplic+'</verAplic><chNFe>'+cChave+'</chNFe><dhRecbto>'+s_cDhRecbto+'</dhRecbto>' cXML += '<nProt>'+s_cnProt+'</nProt><digVal>'+s_cDigVal+'</digVal><cStat>'+s_ccStat+'</cStat><xMotivo>'+s_cxMotivo+'</xMotivo>' cXML += '</infProt></protNFe></nfeProc>' cArqXml := cPasta + '\' + cChave + '.xml' nArqHandle := FCreate(cArqXml, 0 ) FWrite(nArqHandle,cXML) FClose(nArqHandle) *MsgInfo( 'Download realizado com sucesso! Arquivo gerado:' + CRLF + cArqXml, 'NF-e ') return nil // --------- Download XML NFe --------- //
  13. a rotina do programa que está causando esse erro: oIE:=TOleAuto():New( "InternetExplorer.Application" ) * oIE:ToolBar := .T. oIE:StatusBar := .T. oIE:MenuBar := .F. oIE:Visible := .F. * oIE:Navigate2( "http://www.nfe.fazenda.gov.br/portal/consultaResumoCompletaAntiga.aspx?tipoConsulta=completa&tipoConteudo=XbSeqxE8pl8=" ) while oIE:Busy SysWait(.2) end * oActdo:=oIE:Document() oActdo:All:Item("ctl00$ContentPlaceHolder1$txtChaveAcessoCompleta",0):Value:=cChave SysWait() * oActdo:All:Item("ctl00$ContentPlaceHolder1$btnConsultar"):Click() SysWait() * GetWndDefault():Minimize() while oIE:Busy SysWait() end * cHtml:=oIE:Document():All():OuterHTML // já tentei assim * cHtml:=oIE:Document():All(0):OuterHTML // já tentei assim * cHtml:=oIE:Document():All(1):OuterHTML // já tentei assim * cHtml:=oIE:Document():All(2):OuterHTML // já tentei assim while oIE:Busy SysWait() end TRY oIE:Quit() catch end Release oIE * cHtml:=strtran(cHtml,'&') cHtml:=strtran(cHtml,'nbsp;') *
  14. tenta assim: @ 50, 20 BITMAP oBmp FILENAME "..\bitmaps\Tutanka1.bmp" OF oGrp SIZE 300,200 PIXEL SCROLL
  15. Boa tarde, Baixei um prg aqui no site que permite baixar xml direto da receita, sem precisar digitar o captcha, na semana passada, funcionou, mas agora da emitindo o erro abaixo: Error description: Error InternetExplorer.Application:DOCUMENT:ALL/0 S_OK: OUTERHTML linha do erro: cHtml:=oIE:Document():All(1):OuterHTML Alguém já passou por isso e já resolver? Att. Pompeo Guaratinguetá SP
  16. Os exemplos da ultima página, do link acima, deu certo, obrigado.
  17. Matheus, esse também não funciona, dá erro no captcha.
  18. Alguém mais, está tendo problema no captcha para importar o xml da nfe direto da receita? Att. Pompeo Guaratinguetá - SP
  19. Bom dia, fivewinners Gostaria de saber se é possível no xbrowse, definir cabeçalho de duas linhas, sendo a primeira linha deve ocupar duas colunas, sem dividir a primeira linha, só dividir da segunda linha em diante. exemplo: +--------------------------------+----------------------------+-----------------------------+--------------------------+ | ENTRADAS | SAÍDAS | +------------------------------+------------------------------+---------------------------------------------------------+ | PREVISTAS | REALIZADAS | PREVISTAS | REALIZADAS | +-----------------------------+------------------------------+----------------------------+----------------------------+ | | | | | | | | | | mais ou menos isso, é possível, alguém saberia como me dizer? Obrigado, Pompeo Guaratinguetá-SP
  20. https://www.fsist.com.br/ aqui, vá em contatos e solicite informações e valores, pois, esse pessoal tem uma dll, que vc pode inserir no seu sistema.
  21. Se você configurar a usb da impressora, pode usar os comando PRINTER normalmente.
  22. Toda empresa do simples nacional deverá fazer a nfe de devolução de compras, conforme a nfe da compra. assim, no xml da compra, você tem todas as informações (icms, ipi, st, etc) que você deverá preencher no xml de devolução. Na ausência de alguma dessas informações, a empresa que vai efetuar a devolução, deverá entrar em contato com o departamento fiscal da empresa fornecedora, para solicitar as informações faltantes. O CSOSN da nfe de devolução deverá ser preenchido com "900", para que a receita federal ignore a presença dos imposto no xml da devolução
  23. Boa tarde, fivewinners, Alguém sabe como fazer no mysql, num só comando um INSERT ou um UPDATE dependendo de uma condição? Exemplo: preciso incluir a ficha de um cliente, se essa ficha não existir, eu executo um INSERT, caso contrário executo um UPDATE. Agora, estou trabalhando com a rotina abaixo, e não achei muito inteligente, pesquisando na net, só achei comandos básico. e_esta:=.F. if select("ARQ_BANCOS")=0 e_esta:=.T. ELSE SELECT ARQ_BANCOS endif cSqlQ:="SELECT * FROM BANCOS WHERE CODIGO="+CHR(34)+STRZERO(NB,4)+CHR(34)+";" dbUseArea(e_esta, "SQLRDD", cSqlQ, 'ARQ_BANCOS') IF ARQ_SALDOS->(EOF()) APCODE:="INSERT INTO BANCOS (CODIGO,NOME) VALUE ("+CHR(34)+STRZERO(NB,4)+CHR(34)+","+CHR(34)+ALLTRIM(NO_B)+CHR(34)+");" OSQL:EXEC(APCODE ) else APCODE:="UPDATE BANCOS SET NOME="+CHR(34)+ALLTRIM(NO_B)+CHR(34)+" WHERE CODIGO="+CHR(34)+STRZERO(NB,4)+CHR(34)+";" OSQL:EXEC(APCODE ) endif Muito grato. Pompeo Guaratinguetá - SP
  24. Pessoal tb, tenho interesse, principalmente, como fazer uma assinatura digital, transmissão e recepção. Att. Pompeo Guaratinguetá - SP
  25. Bom dia, fivewinners Com a instalação da revolução 4.0 (revolução industrial 4.0, já está às portas, prepare-se) o fiveweb, fivedroid ou melhor, o fivewin multidispositivo, será de suma importância, pois o modelo de programação de computador atual, ficará obsoleto. Alguém tem alguma alguma informação sobre o fiveweb e fivedroid, será que vão sair, para nós? Att. Pompeo Guaratinguetá - SP
×
×
  • Create New...