Ir para conteúdo
  • Cadastre-se

Valdir Dill

Membros Pro
  • Total de ítens

    954
  • Registro em

  • Última visita

  • Days Won

    5

Tudo que Valdir Dill postou

  1. Obrigado, consegui resolver... Olha a função que criei. Funciona tanto no Win como Android. Compartilho para ajudar outros, se precisarem. class procedure TFuncoes.BuscaCEPKIngHost(VCEP : String; Const VResult : TCEP); Const VChave = 'XXXXXX'; VUrl = 'http://webservice.kinghost.net/web_cep.php?auth='; Var VStream : TStringStream; VRetorno : String; VIdHttp : TIdHTTP; VURLFinal : String; begin VResult.FQtdeEnder := 0; VCEP := SomenteNumeros(VCEP); if length(VCEP) <> 8 then exit; //se não é um CEP válido nem analisa. VStream := TStringStream.Create('', TEncoding.ANSI{tem q ter esse ANSI para não dar erro no Android}); VIdHttp := TIdHTTP.Create(nil); try VURLFinal := VUrl + VChave + '&formato=xml&cep=' + VCEP; VIdHttp.Request.UserAgent := 'Mozilla/4.0 (compatible; MSIE 9.0)'; VIdHttp.Get(VURLFinal, VStream); VRetorno := VStream.DataString; VResult.FQtdeEnder := StrToIntDef(LerTagXML(VRetorno, 'resultado'), 0); if VResult.FQtdeEnder > 0 then begin //obs LerTagXML é uma função do acbrUtil VResult.FTipoLogr := LerTagXML(VRetorno, 'tipo_logradouro'); VResult.FLogr := LerTagXML(VRetorno, 'logradouro'); VResult.FCompl := LerTagXML(VRetorno, 'complemento'); VResult.FBairro := LerTagXML(VRetorno, 'bairro'); VResult.FCidade := LerTagXML(VRetorno, 'cidade'); VResult.FUF := LerTagXML(VRetorno, 'uf'); end; finally VStream.DisposeOf; VIdHttp.DisposeOf; end; end; Obrigado!!
  2. Bom dia e obrigado Daniel, no seu caso, vc não está considerando o "encoding" no header da mensagem HTTP 'text/xml; charset=iso-8859-1'; Pode me passar uma dica de como fazer isso? Tente Memo1.Text := ACBrStr(str); Não funcionou. O str volta como foi, sem alterações. Obrigado!
  3. Bom dia, Sei que a dúvida que estou postando não tem relação direta com o ACBR, mas se alguém pudere analisar e me dar uma dica, agradecerioa muito. É o seguinte: estou tentando fazer uma busca de CEP com Firemonkey para Android. Fiz uma rotina utilizando a classe THTTPSend e me baseiei nas rotinas do próprio acbrCEP. Funcionou 100% em Windows. Porém, quando fui complicar em Android, notei que essa classe (hpttpSend.pas) não pode ser usada para Android. Então tentei com o componente TidHttp. Funciona tanto em Windows, como Android. Veja a rotina abaixo. Traz todos os dados do WS KingHost. O problema neste caso, é que ele traz errado os dados que têm caractere com acento. Veja o bairro no print que estou anexando. Rotina com TidHTTP. prcedure BuscaCEPKIngHost; Const urlKingHost = 'http://webservice.kinghost.net/web_cep.php?auth=' + VmyKey + '3c1a01713160cab43caea3d24f3baf4e&formato=xml&cep=82650520'; var str : String; begin idHTTP1.Request.Accept := 'text/html, */*'; idHTTP1.Request.ContentType := 'text/xml; charset=iso-8859-1'; idHTTP1.Request.ContentEncoding := 'iso-8859-1'; IdHTTP1.Request.UserAgent := 'Mozilla/4.0 (compatible; MSIE 9.0)'; IdHTTP1.Request.ContentType := 'application/x-www-form-urlencoded'; str := IdHTTP1.Get(urlKingHost); Memo1.Text := str; end; Pergunto: 1 - Realmente não tem como usar httpSend no Androi? 2 - No meu exemplo acima com idHttp estou fazendo algo errado na chamada? Qual a sugestão? Obrigado
  4. Boa tarde, Gostaria de uma ajuda numa questão que há tempos estou em dúvida e não sei bem como deixar a interface para o usuário preencher determinados dados. Na verdade é mais uma dica/sugestão que gostaria de receber dos colegas, do que propriamente uma dúvida. É em relação a alimentação de dois campos no AcbrBoleto, quais sejam: ACBrBoleto1.Cedente.CodigoCedente e ACBrBoleto1.Cedente.Convenio. No meu sistema, tenho ambos os campos (código de cedente e código de convênio) para o usuário preencher. O usuário preenche conforme ele receber a informação do seu banco. Mas é muito comum o usuário achar que tem que preencher os dois campos e aí informa dados incorretos no campo do qual ele não tem a informação. Ou ainda, o banco diz prá ele "...o código do seu convênio é XXXX". Com isso, ele (o usuário) preenche o campo do convênio. Mas, na verdade, a carteira dele é com código de cedente e não convênio. Já tive mais de um caso onde o usuário deveria só preencher o convênio. Aí como não sabia o código de cedente, informou o número da agência nesse campo, o que logicamente gera problemas depois na geração dos boletos/arquivos remessa. Enfim, dois campos gera bastante sempre bastante confusão. Tem banco que deve-se informar CodigoCedente e banco que deve-se informar o Convenio, está correto? Em nenhum caso (nenhum banco/carteira), haverá os dois? Ou pode ocorrer de determinado banco/carteira ter tanto código de cedente, como código de convênio? Se cada banco tem apenas um desses campos (ou código cedente ou código convênio), então poderíamos ter o sistema somente com um campo a ser alimentado pelo usuário, certo? Como vocês fazem no sistema de vocês? Dois campos ou apenas um? Aceito sugestões. Obrigado!
  5. Valdir Dill

    Boleto CEF

    Bom dia, No dia 04/08, relatei um problema no boleto Sicob da Caixa no fórum geral (link abaixo). Pelo que entendi das respostas da Juliana, havia mesmo problema nos fontes e que seria corrigido. Mas até agora não houve a correção. O mais estranho é que não vi outros usuários relatarem nada sobre esse problema. Será que essa opção de convênio 870 é tão pouco usada? O problema que relatei no tópico anterior é mesmo um erro dos fontes do ACBR? Será corrigido? Obrigado! Link ->
  6. Boa tarde, Estou realizando alguns testes com o componente posPrinter. Se coloco assim: VTexto := 'teste de impressão <corte_total>'; acbrPosPrinter1.Imprimir(VTexto); Aí, imprime beleza. Mas, se colocar assim: VTexto := '</zera> teste de impressão <corte_total>'; acbrPosPrinter1.Imprimir(VTexto); Aí ele pula uma linha no início, ou seja, parece que a a tag '</zera>' avança o papel. É isso mesmo que é para ocorrer? Obrigado!
  7. Baixei os fontes hoje e ainda continua da mesma forma. Pelo que entendi, seria corrigido ou não? Obrigado!
  8. Bom dia, Mais uma vez a cidade de Bacabal-MA (2101202) mudou seu endereço de recepção dos XMLs de NFSe. Em anexo o arquivo Fiorilli.ini atualizado. Mudou de: http://1a7601e12b31.sn.mynetname.net:5661/IssWeb-ejb/IssWebWS/IssWebWS?wsdl Para: http://187.28.44.121:5661/IssWeb-ejb/IssWebWS/IssWebWS?wsdl Obrigado! Fiorilli.INI
  9. Boa tarde, Ok. Ficamos no aguardo então. Obrigado!
  10. Boa noite Juliana, Banco.TipoCobranca := cobCaixaSicob; ListadeBoletos.Clear; //limpa boletos emitidos numa proc anterior. Cedente.TipoCarteira := tctSimples; Cedente.Conta := 162; Cedente.ContaDigito := 9; Cedente.Agencia := 2538; Cedente.CodigoCedente := 870 000 000 09 (os espaço são só para facilitar a leitura) Convenio := ''; LocalPagamento := Lotérica; Vencimento := 27/07/2016; DataDocumento := 01/04/2016; EspecieDoc := 'DM'; Aceite := atNao; DataProcessamento := Now; TotalParcelas := 1; Carteira := 'SR'; NossoNumero := 000 000 000 18792 ValorDocumento := 2104,00;
  11. Boa tarde, Fiz o teste, mas aí fica pior. Não formata do campo Agencia/Código Beneficiário. O código do cedente (infromado no campo convenio) nem aparece na linha digitável.... Obrigado
  12. Boa tarde Juliana, Deixo em branco. Só alimento o cedente.codigoCedente, pois esse convênio 870, até onde eu sei, não tem código de convênio, apenas codigoCedente. Estou fazendo algo errado? Obrigado!
  13. Depois que atualizei os fontes, notei foram feitas alterações na formatação do nosso número da cobrança é do tipo SICOB da CEF. E isso está gerando problemas nos boletos. Na function TACBrCaixaEconomicaSICOB.FormataNossoNumero(const ACBrTitulo :TACBrTitulo): String, que inicia a partir da linha 357 da ACBrBancoCaixaSICOB.pas (abaixo) Nessa função está formatando as variáveis wTamNossoNum e wOperacao estão recebendo valor conforme o valor do código convênio. Até antes da atualização, era o código do cedente que era utilizado. function TACBrCaixaEconomicaSICOB.FormataNossoNumero(const ACBrTitulo :TACBrTitulo): String; var ANossoNumero: String; wTamNossoNum: Integer; wOperacao: Integer; begin with ACBrTitulo do begin ANossoNumero := OnlyNumber(NossoNumero); wTamNossoNum := CalcularTamMaximoNossoNumero(Carteira, ANossoNumero, ACBrBoleto.Cedente.Convenio ); Não deveria ser ACBrBoleto.Cedente.CodigoCedente wOperacao := StrToIntDef(Copy(ACBrBoleto.Cedente.Convenio, 1 , 3 ), 0); if (Carteira = 'SR') then begin if (wOperacao = 870) then ANossoNumero:= '8'+ PadLeft(Copy(ANossoNumero,Length(ANossoNumero)-13,14),14) else ANossoNumero:= '82'+ PadLeft(Copy(ANossoNumero,Length(ANossoNumero)-7,8),8); end else if (Carteira = 'CS') then ANossoNumero := PadLeft(Copy(ANossoNumero,Length(ANossoNumero)-9,10),10,'0') else ANossoNumero:= '9' + PadLeft(Copy(ANossoNumero,Length(ANossoNumero)-8,9),9,'0'); end; Result := ANossoNumero; end; Com as alterações, o formato do nosso npumero ficou assim (sem os espaços): 82 000 000 000-DV. Antes era 800 000 000 000 000 - DV Agora fiquei na dúvda se essas mudanças estão mesmo corretas. Obrigado!
  14. Perfeito, agora passou tudo, hehe! Sem erros. Só ainda tá dando um erro "CNPJ não consta na base de dados". Mas acho que deve ser porque estou usando o nosso CNPJ que não é usuário de Sorriso-MT. Vou pedir pro usuário fazer um teste real. Me diga uma coisa, essa unit vai ainda subir pro repositório, certo? Obrigado!
  15. Fiz isso, mas o mesmo problema persiste. No caso do segundo erro, o da quantidade no caso do segundo erro, o da quantidade, a linha 351 da pnfsNFSeW_Agili.pas tem a seguinte rotina: Gerador.wCampoNFSe(tcDe4, '#13', 'Quantidade ', 01, 17, 1, NFSe.Servico.ItemServico.Quantidade, '') ou seja, está gerando o campo com 4 decimais (tcDe4). Pelo que entendi do erro, esse campo é no máximo 2 decimais. Vejamos o schemas (XSDAgili.XSD) <xsd:simpleType name="tsQuantidade"> <xsd:restriction base="xsd:decimal"> <xsd:totalDigits value="10" /> <xsd:fractionDigits value="2" /> esta regra que tá gerando o conflito. <xsd:minInclusive value="0" /> </xsd:restriction> </xsd:simpleType> Obrigado!
  16. Sim, eu percebi isso. Estou testando para Sorriso-MT. Não cheguei a consultar o provedor, mas, pelo que entendi analisando o arquivo cidades.ini, esta cidade utilizar o Provedor=Agiliv2. Então configurei tudo (inis e schemas) para essa versão. Está correta minha interpretação? Ou seja, Sorriso usa Agiliv2, certo? Ou isso depende de mais alguma coisa? Obrigado!
  17. Boa tarde, Atualizei os fontes e fiz alguns testes. Primeiro deu erro no arquivo um (ErroUm.png anexo). Aí, para testar, alterei o valor de Servico.Valores.Aliquota := 0; e de Servico.Valores.ValorIss := 0; Depois disso ocorreu outro erro (ErroUm.png anexo) da quantidade que no xml está 1.0000. Parece que não aceita mais que dois decimais, mas é gerado com 4. Obrigado!
  18. Certo Italo, foi exatamente isso que eu também entendi lendo a mensagem de forma literal, mas pensei que não poderia ser isso, rs... Então, se entendi direito, nesse caso, não tem como enviar uma única nota (RPS). Precisa enviar sempre, no mínimo duas notas? Isso não é muito estranho? Obrigado!
  19. Valeu BingWings...era isso mesmo, ou seja, a chave digital tem que alimentar na Prestador.ChaveACesso. Só que agora que passou desse ponto, gerou outro erro, rs..não estou conseguindo achar onde alimentar...le pede uma QuantidadeRps. Estou anexando print... Alguma dica? Obrigado!
  20. Eu tentei isso Italo, mas não é essa variável. Tentei também Configuracoes.Geral.Emitente.WebFraseSecr :=...mas dá erro -> " ssa atualização deveria resolver o erro '' violates length constraint of '32'.The element '{http://www.agili.com.br/nfse_v_1.00.xsd}chaveDigital' with value '' failed to parse." Obrigado!
  21. Realmente faltava esse dado. Agora outro, chaveDigital. Fucei nos fontes do Acbr, não encontrei um campo onde pudesse informar esse dado. Saberia me informar? Obrigado!
  22. Boa tarde Italo, Essa atualização deveria resolver o erro '' violates length constraint of '14'.The element '{http://www.agili.com.br/nfse_v_1.00.xsd}UnidadeGestora' with value '' failed to parse.".? Eu atualizei tudo e o erro continua. Lembrando que estou testando para a cidade de Sorriso-MT. Obrigado!
  23. Estou tendo este erro no envio de notas para Sorrisso-MT '' violates length constraint of '14'. The element '{http://www.agili.com.br/nfse_v_1.00.xsd}UnidadeGestora' with value '' failed to parse. ". Alguma dica? Obrigado!
  24. Bom dia Leandro, Sim, eu salvo o protocolo no BD. Ele não pertence a nenhuma outra nota. Antes de abrir o post, eu fiz isso que você sugere e mais uma dezena de outras tentativas, rs. Não há nenhum "rastro" de erro ou inconsistência nos dados. Nesse dia o cliente emitiu mais 50 notas. Todas estão autorizadas, com chave e com protocolo. Tudo normal. Apenas essa nota é que tem um protocolo que não pertence a nenhuma outra nota, mas essa nota (chave) não existe no servidor da SEFAZ. Pelo que já analisei, a única forma de encontrar alguma coisa seria alguma opção de consulta apenas com o protocolo. Você saberia me dizer para que serve o protocolo afinal? Se é um dado que, apenas com ele, não podemos localizar nada, nem via sistema, nem via portal da receita, do que serve essa informação? Seria apenas para confirmar a nota pela chave? Obrigado!
  25. Obrigado pela resposta Leandro, mas sua sugestão é justamente o que eu quero fazer, rs.. A questão é como fazer!!! Se a chave que eu tenho não corresponde ao protocolo, então à qual nota pertence esse protocolo? Essa é pergunta do post inclusive, ou seja, é possível consultar uma nota tendo apenas o número do protocolo? Eu não sei como o cliente conseguiu fazer isso, mas fez. Ele tem uma nota com status autorizada no banco de dados do sistema, mas que a chave dessa nota não consta nas consultas pela chave. Então queria fazer uma consulta apenas com o protocolo. Por exemplo, pelo Acbr é possível encontrar uma nota pelo número do recibo, correto? Imaginei que pudesse ter algo parecido para consultar pelo protocolo. Obrigado!
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...