Ir para conteúdo
  • Cadastre-se

GustavoKato

Membros
  • Total de ítens

    152
  • Registro em

  • Última visita

Tudo que GustavoKato postou

  1. Antes utilizava o Quick Report, e o pdf do DACTE ficava em torno de 90k, no Fast 178k e no Fortes 50k Pra enviar os documentos via e-mail faz toda a diferença (em grande quantidade)
  2. na verdade é com cunho construtivo, sem confusão.
  3. bug resultado do commit 9086, ocasionou baixa de vários títulos sem identificação em um cliente
  4. Segue Unit ACBrBancoCaixa.pas
  5. Bom dia, identifiquei um problema na leitura do layout da Caixa SIGCB 240. A leitura do campo "SeuNumero" está pegando a mesma informação do campo "NumeroDocumento" if Copy(Linha,14,1)= 'T' then begin SeuNumero := Trim(copy(Linha,59,11)); NumeroDocumento := copy(Linha,59,11); segundo o manual: Número Documento (Seu Nº) | Número do Documento de Cobrança | 59 | 69 | 11 Uso da Empresa | Identificação do Título na Empresa | 106 | 130 | 25 Trecho alterado: if Copy(Linha,14,1)= 'T' then begin SeuNumero := Trim(copy(Linha,106,25)); NumeroDocumento := copy(Linha,59,11);
  6. Bom dia Italo, Fiz a simulação aqui e finalmente entendi. Achei que os retornos eram gravados no índice respectivo ao envio dos CT-es. Fica abaixo a forma em que utilizei para "sincronizar". for i := 0 to (Lote.WebServices.Retorno.CteRetorno.ProtCTe.Count - 1) do begin for j := 0 to (Lote.Conhecimentos.Count - 1) do begin if Copy(Lote.Conhecimentos.Items[j].CTe.inFCTe.ID,4,44) = Lote.WebServices.Retorno.CteRetorno.ProtCTe.Items[i].chCTe then break; end; //resto da rotina end; grato pela ajuda e atenção de todos. Ótima semana
  7. boa tarde, Luis. vc consulta a chave no SEFAZ? Se sim cuidado com o tal do "Consumo indevido"
  8. A rotina a baixo sempre funcionou e gravo utilizando a chave, houve alteração na rotina do ACBr recentemente? for i := 0 to (Lote.WebServices.Retorno.CteRetorno.ProtCTe.Count - 1) do begin sDataHora := DateTimeToStr(Lote.WebServices.Retorno.CteRetorno.ProtCTe.Items[i].dhRecbto); sProtocolo := Lote.WebServices.Retorno.CteRetorno.ProtCTe.Items[i].nProt; sStat := IntToStr(Lote.WebServices.Retorno.CteRetorno.ProtCTe.Items[i].cStat); sMotivo := Lote.WebServices.Retorno.CteRetorno.ProtCTe.Items[i].xMotivo; sConhecimento := Copy(Lote.WebServices.Retorno.CteRetorno.ProtCTe.Items[i].chCTe, 26, 3) + '.' + Copy(Lote.WebServices.Retorno.CteRetorno.ProtCTe.Items[i].chCTe, 29, 3) + '.' + Copy(Lote.WebServices.Retorno.CteRetorno.ProtCTe.Items[i].chCTe, 32, 3); MemoStatus.Add(' ' + sConhecimento + ' ' + sProtocolo + ' ' + sDataHora + ' ' + sStat + ' - ' + sMotivo); if ((Lote.WebServices.Retorno.CTeRetorno.ProtCTe.Items[i].cStat = 100) or //Só grava na tabela CONHECIMENTOS se Autorizada ou Denegada (Lote.WebServices.Retorno.CTeRetorno.ProtCTe.Items[i].cStat = 110)) then begin try //Conhecimento qUpdConhecimento.SQL.Clear; qUpdConhecimento.SQL.Add('UPDATE CONHECIMENTOS SET'); qUpdConhecimento.SQL.Add(' CTE_EMISSAO = :xEmissao,'); qUpdConhecimento.SQL.Add(' CTE_ENVIADO = :xEnviado,'); qUpdConhecimento.SQL.Add(' CTE_PROTOCOLADO = :xProtocolado,'); qUpdConhecimento.SQL.Add(' CTE_PROTOCOLO = :xProtocolo,'); qUpdConhecimento.SQL.Add(' CTE_IMPRESSO = :xImpresso,'); qUpdConhecimento.SQL.Add(' CTE_XML = '+ QuotedStr(Lote.Conhecimentos.Items[i].XML)); // qUpdConhecimento.SQL.Add(' CTE_XML = :xXML,'); qUpdConhecimento.SQL.Add(' , CTE_STATUS_CODIGO = :xStatus,'); qUpdConhecimento.SQL.Add(' CTE_STATUS_DESCRICAO = :xDescricao'); qUpdConhecimento.SQL.Add(' WHERE CTE_CHAVE = ' + QuotedStr(Copy(Lote.Conhecimentos.Items[i].CTe.inFCTe.ID,4,44))); qUpdConhecimento.ParamByName('xEmissao' ).AsDateTime := Lote.Conhecimentos.Items[i].CTe.Ide.dhEmi; qUpdConhecimento.ParamByName('xEnviado' ).AsString := 'S'; qUpdConhecimento.ParamByName('xProtocolado').AsString := 'S'; qUpdConhecimento.ParamByName('xProtocolo' ).AsString := sProtocolo; qUpdConhecimento.ParamByName('xImpresso' ).AsString := 'N'; qUpdConhecimento.ParamByName('xStatus' ).AsSmallInt := Lote.WebServices.Retorno.CteRetorno.ProtCTe.Items[i].cStat; qUpdConhecimento.ParamByName('xDescricao' ).AsString := Copy(Lote.WebServices.Retorno.CteRetorno.ProtCTe.Items[i].xMotivo, 1, 130); // qUpdConhecimento.ParamByName('xXML' ).AsWideString := Lote.Conhecimentos.Items[i].XML; qUpdConhecimento.ExecSQL;
  9. Bom dia, pessoal. Está ocorrendo um problema quando há envio de um lote e entre eles há uma rejeição, por exemplo: CT-es 1,2 e 3 ocorre a rejeição no 2, ele grava no 1 (I.E inválida por exemplo). 1 - Autorizado porém recebe Rejeição (I.E inválida) referente ao 2 2 - Recebe status 100 porém houve rejeição (I.E inválida). 3 - Autorizado Em resumo, parece que há um problema no índice ao processar o retorno fazendo com que meu sistema receba status 100 sendo que não foi autorizado e outro que foi autorizado receber uma rejeição.
  10. Bom dia Aqui também voltou. Obrigado
  11. Bom dia, estou com problemas no cancelamento também, desde ontem recebo o seguinte erro: Rejeição: Erro não catalogado (código de status não localizado: 999 (Erro ao ler informações do banco de dados)) mais alguém com este caso?
  12. boa tarde, será que não é a codificação (ANSI, unicode, UTF-8, etc) do txt que está salvando?
  13. experimentem utilizar o servidor de dns do google (8.8.8.8)
  14. aqui tbm está assim, acontece um dia melhora em outro, volta a acontecer... vou ver se consigo debugar
  15. aqui está horrível, retornando o erro O identificador não está no estado correto para a operação solicitada - URL:https://nfe.fazenda....etRecepcao.asmx- SOAPAction:http://www.portalfiscal.inf.br/cte/wsdl/CteRetRecepcao/cteRetRecepcao as vezes autoriza porém não recebe retorno, alguma sugestão Italo?
  16. edit: post em topico errado
  17. SEFAZ está péssima hoje
  18. boa tarde, tive este problema também... o problema ocorre pq está como padrão no create CodigoMora := '12', atribuindo posteriormente 'A' ou 'B' resolve, porém deu esse probleminha mesmo.
  19. boa tarde, algum retorno sobre esta implementação?
  20. bom dia, essa parte do fórum realmente esta meio abandonada acho q vai demorar para alguém realizar esta alteração, como solução temporaria colocaria uma divisão. Por exemplo if NossoNumero > 100000 then b := 1 + NossoNumero div 100000 ps: não sei os valores corretos, só dei exemplo de uma solução
  21. bom dia, Roberto. Sim, sempre vem no retorno o mesmo valor que vc informou na remessa. O campo "SeuNumero" vc pode colocar algum número de controle do seu sistema. Exemplo: Empresa+Fatura Eu utilizo separando por barras assim não preciso ficar controlando por número de caracteres. Só se atente que alguns bancos (SICREDI) o campo é meio pequeno.
  22. Boa tarde, está correto sim...
  23. faça o debug na montagem do número e verá qual informação está faltando passar.
  24. Alterado ACBrBoleto: Classe TACBrTitulo, adicionei as propriedades fAgencia : String; fContaCorrente : String; fContaCorrenteDigito : String; e a procedure LerRetorno400 do banco Bradesco para alimentar estas propriedades Segue anexo Units para análise. No aguardo. Alter ACBrBoleto contas.zip
×
×
  • 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.