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. Boa noite, Apenas para informar aos responsáveis pela atualização dos fontes que o endereço do webServices de Bacabal-MA, código 2101202, mudou de http://1a7601e12b31.sn.mynetname.net:8080/IssWeb-ejb/IssWebWS/IssWebWS?wsdl Para http://1a7601e12b31.sn.mynetname.net:5661/IssWeb-ejb/IssWebWS/IssWebWS?wsdl Obrigado!
  2. Não Juliana, a função não está fazendo as duas condições. A função retorna 17 se for uma ou outra condição. Eu acho que é um bug sim. Vou tentar detalhar melhor. Por favor analise todas as minhas considerações abaixo. O valor de NossoNumero quando chega nessa função está com "5", que é o valor enviado pelo minha aplicação, ou seja, apenas um único dígito. É essa função CalcularTamMaximoNossoNumero que muda ele para 17 dígitos e causa todo o problema. Pelo que entendi da tua análise, esse "or" que vem depois de (wCarteira = '18'))) estaria condicionado ao primeiro "and" que vem depois de (Length(trim(NossoNumero)) > 10). Mas não é isso que acontece nessa função. Descrevendo o result dessa linha teremos: Condição a: se length(NossoNumero) for maior que 10 e wTamConvenio = 6 e wCarteira = 16 ou carteira = 18, result será 17; Condição b: se wTamConvenio = 7 e wCarteira = 18, result será 17. Essa condição b sendo atendida, não importa o length(NossoNumero), o resultado será sempre 17. Veja como era essa função no trunk (e que funcionava certinho): if (Length(trim(NossoNumero)) > 10) and (wTamConvenio = 6) and ((wCarteira = '16') or (wCarteira = '18')) then Result:= 17 Agora compare com a função que foi modificada no trunk2: if (Length(trim(NossoNumero)) > 10) and ((wTamConvenio = 6) and ((wCarteira = '16') or (wCarteira = '18'))) or ((wTamConvenio = 7) and (wCarteira = '18')) then Result:= 17 Obs. ambas essas linhas acima são da função CalcularTamMaximoNossoNumero. Coloquei apenas parte da função para não ficar um texto longo, já que o problema, ao meu ver, está nesse if que foi modificado do trunk para o trunk2. Obrigado!
  3. Descobri a causa do problema, está na function TACBrBancoBrasil.CalcularTamMaximoNossoNumero(. O problema ocorre porque nos fontes do trunk2 foi íncluída uma linha (vide abaixo) nessa função, que faz com que o tamanho do nosso número fique em 17, quando deve ser 10. É carteira 18, convênio 7, nosso número 10. Só não entendi porque essa linha foi incluída. É um erro no componente? Como corrigir nos fontes? Veja abaixo a função e a linha destacada e que está causando esse problema. function TACBrBancoBrasil.CalcularTamMaximoNossoNumero( const Carteira: String; NossoNumero : String = ''): Integer; var wCarteira : String; wTamConvenio: Integer; begin Result := 10; if (ACBrBanco.ACBrBoleto.Cedente.Convenio = '') then raise Exception.Create(ACBrStr('Banco do Brasil requer que o Convênio do Cedente '+ 'seja informado.')); if (Carteira = '') then raise Exception.Create(ACBrStr('Banco do Brasil requer que a carteira seja '+ 'informada antes do Nosso Número.')); wCarteira:= Trim(Carteira); wTamConvenio:= Length(Trim(ACBrBanco.ACBrBoleto.Cedente.Convenio)); if (Length(trim(NossoNumero)) > 10) and ((wTamConvenio = 6) and ((wCarteira = '16') or (wCarteira = '18'))) then // ((wTamConvenio = 7) and (wCarteira = '18')) then linha comentada Result:= 17 else if (wTamConvenio <= 4) then Result := 7 else if ((wTamConvenio > 4) and (wTamConvenio < 6)) or ((wTamConvenio = 6) and ((wCarteira = '12') or (wCarteira = '15') or (wCarteira = '17'))) then Result := 5 else if (wTamConvenio = 6) then Result := 11 else if (wTamConvenio = 7) then Result := 10; end;
  4. Bom dia, Sim, foi esse número que o banco passou, com 7 dígitos. Era dessa forma mesmo que eu estava testando, ou seja, colocando os 7 dígitos do código do convênio. Porém, o valor campo "Nosso Número" no boleto e também na linha digitável está saindo errado. Aí não sei se tem alguma coisa errada no componente ou sou eu que estou fazendo algo errado. Vejamos: os dados do boleto são: - Número (nosso número): 5; - Carteira: 18; - Convênio: 149649-5 (7 posições). Quando alimento o nossonumero no componente, ele formata esse valor para 000 000 000 000 000 05 (os espaços são só para facilitar a leitura) através da procedure "TACBrTitulo.SetNossoNumero ( const AValue: String )", ou seja, já formatado com 17 dígitos. Aí, quando processar a "function TACBrBancoBrasil.FormataNossoNumero(const ACBrTitulo :TACBrTitulo): String" o if verdaeiro será o: if (Length(AConvenio) = 7) then ANossoNumero := PadLeft(AConvenio, 7, '0') + PadLeft(ANossoNumero, 10, '0'); Com isso, o ANossoNumero retornará 149 649 500 000 000 00, ou seja, traz os 7 dígitos do convênio + os 10 dígitos iniciais do nossonumero, desprezando os 000 000 5 (7 dígitos finais). O que estou fazendo de errado? O mais interessante é que não mudei nada nas rotinas de geração boletos do meu sistema. E verificando na base de dados de meu cliente, há até poucos dias estava gerando corretamente, ou seja, 149 649 500 000 000 05. Tudo indica que foi feita alguma modificação no ACbr e essa modificação está incorreta. Obrigado!
  5. Boa noite, Estou com uma dúvida em relação à alimentação dos dados para geração do boleto. Mais especificamente o campo ACBrBoleto1.Cedente.Convenio de boletos do Banco do Brasil, carteira 18. Na function TACBrBancoBrasil.FormataNossoNumero(const ACBrTitulo :TACBrTitulo): String o Acbr utiliza o convenio para formatar o campo nosso número. Conforme for o tamanho (length) do código de convênio será o result dessa função, certo? Muito bem, a dúvida é: na alimentação do componente, esse campo deve ser alimentado com ou sem o DV? Ex. um código de convênio assim: 149649-5, deve ser informado 149649 ou 1496495? Obrigado!
  6. Valdir Dill

    SAT - Cancelamento

    Boa tarde, Pelo que analisei até agora no manuais e no demo Acbr, para cancelar um CFe-SAT, é relativamente simples. Basta carregar o XML do CFe autorizado na memória do ACBRSAt e executar os comandos. Fiz os procedimentos e acho que está tudo certo. Mas, por causa do nome da função de cancelamento (CancelarUltimaVenda) me suscitou uma dúvida. Pelo que entendi do manual, é pssível cancelar qualquer cupom que tenha sido enviado ao SAT até 30 minutos antes, independente de ser o último, penúltimo, ...envio feito. Então pergunto, a função ACBrSAT1.CancelarUltimaVenda não significa que será cancelado o último cupom enviado ao SAT, certo? Esse nome usado para a função não deve ser considerado literalmente. Estou correto na minhas interpretações? Obrigado!
  7. Boa tarde, Estou implementando o SAT e gravando o XML no banco de dados. A dúvida que me surgiu é se tem como carregar um CFe na memória do SAT para poder imprimi-lo sem ter que salvar o conteúdo em arquivo. A opção do "LoadFromFile..." eu conheço e funciona beleza, mas precisa sempre salvar o conteúdo em arquivo e depois carregá-lo para o componente. o que eu gostaria é de fazer algo assim: ACBrSAT1.CFe.AsXMLString := ClientaDataSet.FieldByName('XML').AsString. Tem como? Logicamente que a ideia é poder imprimir um CFe que não seja o último enviado ao SAT, pois este já está carregado na memória. Obrigado!
  8. Bom dia, Obrigado Regys, mas no componente ACBrNFeDANFCeFortes eu consigo imprpimir também em A4? Tentei fazer essa impressão mudando ACBrNFeDANFCeFortes1.TipoDANFE := tiNFCeA4, mas sempre imprime o cupom. Obrigado!
  9. Boa tarde, É possível imprimir o Danfe no formato cupom (mini impressora) com o TACBrNFeDANFeRL? No teste que eu fiz com esse componente mudei a propriedade tipoDanfe para tiNFCe, mas imprime sempre no formato A4 (folha cheia); Teria que mudar mais alguma no componente ou ele não está preparada para imprimir em bobina? Obrigado!
  10. Bom dia, Existem alguma forma de impedir a impressão do desconto/acréscimo em cada item do DAnfe da NFCe? OBs.: Utilizo o Fast Report para essa impressão, mas tenho apenas a versão que vem com o Delphi. Obrigado!
  11. Valdir Dill

    ACBRSat x numeroSessao

    Boa tarde, Estou fazendo teste com o demo do ACBRSat. E tenho duas questões em relação. 1 - Em relação ao meu AC gerar esse dado (numeroSessao) ou deixar para o SAT fazê-lo. O que seria mais indicado? Em princípio penso que seria melhor meu sistema gerar, pois aí teria um maior controle e poderia inclusive personalizar esse dado, colocando, por exemplo, o número da venda do sistema; 2 - Fiz testes para mim gerar esse campo e não tive sucesso. Devo estar fazendo algo errado. A rotina que estou utilizando é: a) ACBrSAT1.numeroSessao := 80256; b ) ACBrSAT1.EnviarDadosVenda(mVendaEnviar.Text ); c) ShowMessage(InttoStr(ACBrSAT1.Resposta.numeroSessao)); No item c acima o resultado não deveria ser 80256? Mas está retornando um valor aleatório, ou seja, o número da sessão continua sendo gerado pelo SAT. Obs.: os testes estou fazendo com o emulador. Obrigado!
  12. Bom dia, Tagales, veja esse post https://regys.com.br/como-instalar-o-trunk2-do-acbr/ do Regys. O post tem orientações importantes sobre a migração para trunk2. E sua pergunta está respondida nos comentários do post. A resposta do colega foi tirada de lá, mas sem citar a fonte. Abraços.
  13. Boa tarde, Discordo Daniel. Talvez algumas coisas sejam básicas para que já está com a mão na massa há mais tempo. Como estou iniciando no SAT e logicamente o cliente sempre que tudo pronto prá ontem.... O manual que você se refere é a Especificacao_SAT_v_ER_2_7_5, certo? Eu li ele todo e fui anotando algumas dúvidas que foram surgindo. Essa questão de ativar o SAT e associar a assinatura, por exemplo eu não consegui definir muito bem qual é o correto, pois o manual dá orientações ambíguas. Uma hora fala que são procedimentos que podem ser feitos pelo AC e outra parte dá a impressão que é o aplicativo do fabricante do SAT que deve fazer. Além disso, como contribuo no SAC, pensei que nessa fase que estou iniciando com o meu SAT eu teria um auxílio mais analítico do fórum. Mas tudo bem, vou tentar reler o manual e a FAQ da SEFAZ e ver se esclareço as dúvidas. Obrigado!
  14. Valdir Dill

    SAT x Certificado

    Bom dia, Pelo que entendi, o XML enviados ao SAT não precisam ser assinados com certificado digital instalado no computador. É isso mesmo? Outra dúvida: para que servem as opções dos menus "Ativação -> Comunicar Certificado" e "Ativação -> Associar Assinatura" do demo do SATAcbr? Em que situação preciso utilizar essas funções? Obrigado!
  15. Boa tarde, Pelo que entendi, a variável Config.infCFe_versaoDadosEnt é a versão dos schemas para o XML do CFe, certo? Pelas pesquisas que fiz aqui no fórum, atualmente eu devo informar 0.06 para esse campo, está correto? Mas eu queria saber um pouco mais sobre esse dado. Quem é responsável por disponibilizá-lo? A SEFAZ-SP? Quando devo mudar o valor dele? Obrigado
  16. Fiz essa mesma alteração na RLFilters.pas da pasta \vcl e resolveu o problema que ocorria com Delphi.
  17. Bom dia, Estou iniciando alguns testes na NFSe com trunk2. Percebi que uma mudança implementada é a utilização de arquivos .ini (cidades.ini e provedor.ini). Minha sugestão é que se defina um path específico para esses arquivos e não mantê-los na ApplicationPath. Por exemplo, na procedure TGeralConfNFSe.SetConfigMunicipio da ACBrNFSeConfiguracoes.pas, na linha "NomeArqParams := ApplicationPath + 'Cidades.ini';", mudar para " FPathOutros + 'Cidades.ini'. Mesma coisa na "NomeArqParams := ApplicationPath + FxProvedor +'.ini';". Lógico que precisa criar toda estrutura nos fontes desse novo FPathOutros. Do jeito que está, os arquivos .ini precisam ficar na pasta raiz da aplicação. Não haveria maiores problemas nisso. Mas acho que sendo possível colocar esses arquivos em uma pasta específica, ficaria mais organizado. Não sei exatamente quais seriam todas as units que teria que alterar para criar essa propriedade (FPathOutros) no componente. Se não eu já enviaria os fontes com as alterações. Então, peço que alguém que conheça melhor os fontes e saiba como fazer isso e, logicamente concordar com minha sugestão, que o faça. Obrigado!
  18. Beleza! Só para deixar registrado para o caso de alguém mais passar por situação idêntica...no caso do Santander, esse campo tem tamanho fixo de 15 se for cnab240 e tamanho fixo se for cnab400. Obrigado
  19. Certo, mas é um dado fixo do cedente, ou seja, não muda a cada transmissão, correto?
  20. Bom dia, Após atualizar para trunk2, em alguns usuários está ocorrendo o erro "não foi possível localizar o ponto de entrada do procedimento xmlNewDocPI na biblioteca de vinculo dinamico libxml2.dll" na emissão de NFe. Mas não são todas as máquinas em que o erro ocorre. A dll, assim como as demais (iconv.dll, libxslt.dll, zlib1.dll), está na pasta do sistema. Alguma dica?
  21. Certo, obrigado! Mas seu quiser usar somente o ACBRPosPrinter teria como imprimir a logomarca em cupom não fiscal? Procurei mas não achei função para isso. Tem somente o grupo "ConfigLogo", mas pelo que parece seriam propriedades que terão efeito no componente ligado ao ACBRPosPrinter. Obrigado.
  22. Boa noite, Meu arquivo remessa para o Santander foi rejeitado. É solicitado que seja informado no registro header do arquivo (pos 033 a 047) e registro header do lote (pos 054 a 068) o código de transmissão. Pelo que entendi devo informar esse dado em ACBrBoleto1.Cedente.codigoTransmissao, está correto? Mas que código seria esse? Seria o código de cedente ou de convênio do cedente? Obrigado
  23. Bom dia, Estive analisando o demo do TACbrposPrinter e estou pensando em utilizar esse componente para minhas impressões diretas de cupom NÃO fiscal, recibos, ... Pergunto: - Haveria alguma recomendação contrária a isso? - Terei sempre que vincular o TACBRDAnfeESCPOS utilizar a função ACBrNFeDANFeESCPOS.ImprimirRelatorio(, certo? - No memo do demo tem o texto a ser impresso onde diz "texto livre - até 600 caracteres". Esse é mesmo o limite de caracteres para essa função? Obrigado!
  24. Tive um usuário com esse problema ainda no trunk e a causa era Internet Explorer desatualizado.
  25. Boa tarde, Pelo que estou percebendo agora com o trunk2 preciso distribuir outras (libxml2, libxslt,...) .dll junto com meu aplicativo, certo? Essas .dll devem ficar na pasta do meu aplicativo ou na pasta system do Windows? Qual é o local mais indicado? 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...