Ir para conteúdo
  • Cadastre-se

Quality Automação

Membros Pro
  • Total de ítens

    147
  • Registro em

  • Última visita

Tudo que Quality Automação postou

  1. Obrigado. Vamos ir acompanhando.
  2. Vai ter um modulo especifico? Pois pelas documentações que andei lendo vai existir um padrão para gerar o QrCode e um URL para consulta da transação, mesmo assim será necessario passar pelo TEF?
  3. Boa tarde. Está nos planos do projeto criar um componente para gerar o QrCode de pagamentos PIX? Dei uma olhada aqui e não encontrei.
  4. Estava correndo aqui tambem. Vou testar por aqui.
  5. Exelente a implementação, mas sempre tem um porem né... O colega informou um bug pois estava sempre imprimendo bandeira visa, mas acredito que é pelo fato de quando a venda não for integrada ele não preenche as informações de autorização, no meu caso eu já preencho e precisava que imprimisse. Podemos tratar de outra forma?
  6. Daniel Simoes Obrigado pela velocidade. Acabei implementando a autorização do cartão. Consegue adicionar pra gente? var i: Integer; Troco: Real; DescPagto, DescBandeira,CodigoAutorizacao: String; begin //Total := 0; FPosPrinter.Buffer.Add('<c>' + PadSpace('FORMA DE PAGAMENTO | VALOR PAGO R$', FPosPrinter.ColunasFonteCondensada, '|')); for i := 0 to FpNFe.pag.Count - 1 do begin with FpNFe.pag.Items[i] do begin DescPagto := ACBrStr(FormaPagamentoToDescricao(tPag)); if (tPag in [fpCartaoCredito, fpCartaoDebito]) then begin DescBandeira := BandeiraCartaoToDescStr(tBand); CodigoAutorizacao := 'Aut: '+cAut; end else begin DescBandeira := ''; CodigoAutorizacao := ''; end; FPosPrinter.Buffer.Add('<c>' + PadSpace( DescPagto + ' ' + DescBandeira + ' ' + CodigoAutorizacao + '|' + FormatFloatBr(vPag), FPosPrinter.ColunasFonteCondensada, '|')); end; end; Troco := IIf(FpNFe.pag.vTroco > 0,FpNFe.pag.vTroco,vTroco); if Troco > 0 then FPosPrinter.Buffer.Add('<c>' + PadSpace('Troco R$|' + FormatFloatBr(Troco), FPosPrinter.ColunasFonteCondensada, '|')); end;
  7. Acompanhei os ultimos commit's e não identifique a alteração. Acreditam que vão colocar essa opção no ESCPOS ou é necessario mudar manual mesmo? Se for preciso posso enviar a classe com as alterações para ser feito o commit.
  8. Bom dia Juliana. Estou passando por uma dificuldade na leitura de um retorno do Banco do Brasil. Tenho uma conta com Carteira 17 e convenio composto por 6 Números. Na leitura do retorno o componente capta o nosso numero pela seguinte função: NossoNumero := Copy(Linha,63,11) No meu caso ele retorna 18916368669 Pelo que entendo esse nosso numero tem o convenio + numero do titulo. Só que ao setar o valor do nosso numero ele faz a validação e me retorna um exceção falando que o tamanho do nosso numero é 5. Eu entendo que ele seria sim desse tamanho caso na captura não pegue o convenio, tanto que para liberar aqui deixei da seguinte forma no componente: NossoNumero := Copy(Linha,63,11).Replace(ACBrBoleto.Cedente.Convenio,''); Vou anexar o arquivo de retorno aqui para se for possível dar uma avaliada e ver se e necessário uma correção em uma das funções. Muito Obrigado. CBR64348332806201612149.ret
  9. Bom dia. 1 – ESTRUTURA DO NÚMERO BANCÁRIO (NOSSO NÚMERO) E E E E E N N N N N D Onde: EEEEE = Código do Cliente no Banco (Nº. do Range) Código numérico a ser fornecido pelo Banco por ocasião do início dos testes. Este código tem amarração cadastral com a conta de cobrança, portanto deverão ser obtidos tantos códigos quantos forem às contas de cobrança a serem utilizadas para a Cobrança Diretiva ou após utilizar todos os números sequenciais do documento. NNNNN = Número sequencial do documento / título. Uso a critério do cliente e quando utilizar todos, deve solicitar um novo número Range. D = Dígito verificador de segurança. É calculado pelo Módulo 11, com pesos de 2 a 7 da direita para a esquerda. Pagina 13. Olhei no manual mais fui na logica. Se tem uma verificação se o nosso numero e maior que 6 então não tem logica limitar um nosso numero com 5 dígitos. Aguardo o retorno. cobbarra.pdf
  10. Tambem estou passando pelo mesmo problema. No meu caso preciso de utilizar o nosso numero com 10 dígitos. Acredito que a validação esta errada, pois tem um lugar da classe que tem o seguinte codigo: if (ACBrTitulo.Carteira = 'CSB') or (ACBrTitulo.Carteira = '1') then begin if Length(ACBrTitulo.NossoNumero) < 6 then wNossoNumero:= PadLeft(trim(ACBrTitulo.ACBrBoleto.Cedente.Convenio),5,'0') + RightStr(ACBrTitulo.NossoNumero,5) else wNossoNumero:= RightStr(ACBrTitulo.NossoNumero,10); Modulo.CalculoPadrao; Modulo.MultiplicadorFinal := 7; Modulo.Documento := wNossoNumero; Modulo.Calcular; Result := RightStr(wNossoNumero,10) + AnsiString(IntToStr(Modulo.DigitoFinal)); end else Result :=ACBrTitulo.NossoNumero + '-' + CalcularDigitoVerificador(ACBrTitulo); Como não posso ter um nosso numero com 10 dígitos???? Para funcionar precise alterar a função CalcularTamMaximoNossoNumero function TACBrBancoHSBC.CalcularTamMaximoNossoNumero( const Carteira: String; NossoNumero : String = ''): Integer; begin Result := fpTamanhoMaximoNossoNum; if (trim(Carteira) = '') then raise Exception.Create(ACBrStr('Banco HSBC requer que a carteira seja '+ 'informada antes do Nosso Número.')); if (trim(Carteira) = 'CSB') or (trim(Carteira) = '1') then begin Result := 10; fpTamanhoMaximoNossoNum := 10; end; end; Se for possível fazer o commit dessa alteração.
  11. Bom dia. Precisei fazer uma alteração na leitura do retorno também. Segue o commit para analise. commit.diff
  12. Eu não disse que o Acbr não confiável. Sem problemas mas olhei no Trunk2 e o código permanece da mesma forma preciso de ajuda para ser feito o commit.
  13. Boa Tarde. Passei por um problema na leitura do retorno do banco do brasil com carteira 17. 1º Foi preciso Alterar a sequencia da leitura da carteira. Coloquei antes do nosso numero, pois ao ler o nosso numero ele exigia a carteria. Antes: 1544 NossoNumero := Copy(Linha,64,17); 1555 Carteira := Copy(Linha,107,2); Depois: 1554 Carteira := Copy(Linha,107,2); 1555 NossoNumero := Copy(Linha,64,17); 2º No SetNossoNumero o projeto faz algumas validações do tamanho do nosso numero, ai que esta o problema no retorno o nosso numero vem de um tamanho diferente do calculado pelo projeto. O problema esta que no nosso numero que vem da remessa esta com o convenioCedente ai foi preciso retirar o convenio. 1555 NossoNumero := Copy(Linha,64,17).Replace(rConvenioCedente,''); Preciso que desse commit. ValorRecebido := StrToFloatDef(Copy(Linha,254,13),0)/100; ValorMoraJuros := StrToFloatDef(Copy(Linha,267,13),0)/100; ValorOutrosCreditos := StrToFloatDef(Copy(Linha,280,13),0)/100; - NossoNumero := Copy(Linha,64,17); Carteira := Copy(Linha,107,2); + NossoNumero := Copy(Linha,64,17).Replace(rConvenioCedente,''); + ValorDespesaCobranca := StrToFloatDef(Copy(Linha,182,07),0)/100; //--Anderson: Valor tarifa ValorOutrasDespesas := StrToFloatDef(Copy(Linha,189,13),0)/100; Anexei para facilitar. commit
  14. Segue o Arquivo como Solicitado ACBrNFeUtil.pas ACBrNFeUtil.pas
  15. Precisei fazer uma alteração no ACBrNFeUtil incluindo uma URL para consulta de Cadastro no ES Mas não tenho permissão para o commit. Como faço para solicitar esse commit? Index: Fontes/ACBrNFe2/ACBrNFeUtil.pas =================================================================== --- Fontes/ACBrNFe2/ACBrNFeUtil.pas (revision 7184) +++ Fontes/ACBrNFe2/ACBrNFeUtil.pas (working copy) @@ -100,6 +100,7 @@ class function GetURLCE(AAmbiente: Integer; ALayOut: TLayOut; AModeloDF: TpcnModeloDF = moNFe; AVersaoDF: TpcnVersaoDF = ve200): WideString; //atualizado 2.0 Homologação e Produção class function GetURLGO(AAmbiente: Integer; ALayOut: TLayOut; AModeloDF: TpcnModeloDF = moNFe; AVersaoDF: TpcnVersaoDF = ve200): WideString; //atualizado 2.0 Homologação e Produção class function GetURLMT(AAmbiente: Integer; ALayOut: TLayOut; AModeloDF: TpcnModeloDF = moNFe; AVersaoDF: TpcnVersaoDF = ve200): WideString; //atualizado 2.0 Homologação e Produção + class function GetURLES(AAmbiente: Integer; ALayOut: TLayOut; AModeloDF: TpcnModeloDF = moNfe; AVersaoDF: TpcnVersaoDF = ve200) : WideString; class function GetURLMS(AAmbiente: Integer; ALayOut: TLayOut; AModeloDF: TpcnModeloDF = moNFe; AVersaoDF: TpcnVersaoDF = ve200): WideString; //atualizado 2.0 Homologação e Produção class function GetURLMG(AAmbiente: Integer; ALayOut: TLayOut; AModeloDF: TpcnModeloDF = moNFe; AVersaoDF: TpcnVersaoDF = ve200): WideString; //atualizado 2.0 Homologação e Produção class function GetURLPR(AAmbiente: Integer; ALayOut: TLayOut; AModeloDF: TpcnModeloDF = moNFe; AVersaoDF: TpcnVersaoDF = ve200): WideString; //atualizado 2.0 Homologação e Produção @@ -928,7 +929,12 @@ 53: Result := NotaUtil.GetURLSVRS(AAmbiente,ALayOut, AModeloDF, AVersaoDF); //DF // 32: Result := NotaUtil.GetURLSVAN(AAmbiente,ALayOut, AModeloDF, AVersaoDF); //ES - 32: Result := NotaUtil.GetURLSVRS(AAmbiente,ALayOut, AModeloDF, AVersaoDF); //ES + 32:begin //ES + if ALayOut = LayNfeCadastro then + Result := NotaUtil.GetURLES(AAmbiente,ALayOut,AModeloDF) + else + Result := NotaUtil.GetURLSVRS(AAmbiente,ALayOut, AModeloDF); + end; 52: Result := NotaUtil.GetURLGO(AAmbiente,ALayOut, AModeloDF, AVersaoDF); //GO // 21: Result := NotaUtil.GetURLSVAN(AAmbiente,ALayOut, AModeloDF, AVersaoDF); //MA @@ -2631,6 +2637,17 @@ end; end; +class function NotaUtil.GetURLES(AAmbiente: Integer; ALayOut: TLayOut; + AModeloDF: TpcnModeloDF; AVersaoDF: TpcnVersaoDF): WideString; +begin + if AModeloDF = moNFe then + begin + case ALayOut of + LayNfeCadastro : Result := DFeUtil.SeSenao(AAmbiente=1, 'https://app.sefaz.es.gov.br/ConsultaCadastroService/CadConsultaCadastro2.asmx,https://app.sefaz.es.gov.br/ConsultaCadastroService/CadConsultaCadastro2.asmx'); + end; + end; +end; + class function NotaUtil.GetURLQRCode(const AUF : Integer; AAmbiente : TpcnTipoAmbiente; AchNFe, AcDest: String; AdhEmi: TDateTime;
  16. Boa Tarde. Já li muitas paginas no forum e estou com duvida em qual função usar para enviar o evento de Manifestação do Destinatario da NFE. Se for possivel alguem me ajudar.
×
×
  • 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.