Ir para conteúdo
  • Cadastre-se

Marciano

Membros
  • Total de ítens

    10
  • Registro em

  • Última visita

Últimos Visitantes

O bloco dos últimos visitantes está desativado e não está sendo visualizado por outros usuários.

Marciano's Achievements

Apprentice

Apprentice (3/14)

  • First Post
  • Collaborator Rare
  • Conversation Starter
  • Week One Done
  • One Month Later

Recent Badges

0

Reputação

  1. Olá pessoal! Me deparei com "Rage Error" ao fazer testes de emissão de DANFE NFCe utilizando ACBrNFeDANFeESCPOS com impressora Daruma DR700. Debugando, encontrei um problema na function QuebraLinhas do ACBrUtil.pas que pode afetar mais pessoas. Segue abaixo o código da function QuebraLinhas, onde adicionei apenas um IF para evitar o problema. Não anexei o ACBrUtil.pas alterado pois é apenas um IF adicionado na function. function QuebraLinhas(const Texto: String; const Colunas: Integer; const CaracterQuebrar : Char = ' '): String; Var PosIni, PosFim, Tamanho : Integer ; begin Result := ''; Tamanho := Length(Texto) ; PosIni := 1 ; repeat if PosIni > 1 then Result := Result + sLineBreak; PosFim := PosIni + Colunas - 1 ; if Tamanho > PosFim then // Ainda tem proxima linha ? if Texto[PosFim+1] <> CaracterQuebrar then // Proximo já é uma Quebra ? while (Texto[PosFim] <> CaracterQuebrar) and (PosFim > PosIni) do // Ache uma Quebra Dec(PosFim) ; if PosFim = PosIni then // Não foi capaz de encontrar uma quebra PosFim := PosIni + Colunas - 1 ; Result := Result + Copy( Texto, PosIni, (PosFim-PosIni)+1 ); PosIni := PosFim + 1 ; // Marciano Lizzoni adicionou o IF abaixo pois estava mostrando Range Erro quando o PosIni já vem maior que Tamanho if (PosIni <= Tamanho) then // Pula CaracterQuebrar no Inicio da String while (Texto[PosIni] = CaracterQuebrar) and (PosIni <= Tamanho) do Inc(PosIni) ; until (PosIni > Tamanho); end;
  2. Olá amigos! Estou com um problema com o ecfSweda quanto ao retorno do estado em ECF ST200. Um teste bem simples, pelo ECFTeste.exe mesmo: 1. abrir cupom 2. vender item 3. subtotalizar cupom 4. fechar a aplicação (isso mesmo) 5. abrir a aplicação e ativar Percebam que o estado esta "Venda", mas deveria ser "Pagamento". Também testei pelo ecfSwedaSTX, mas o problema não ocorre usando este. Alguém esta tendo o mesmo problema que eu? Devo utilizar preferencialmente o ecfSwedaSTX? O ecfSweda pode ser considerado depreciado? Agradeço pela atenção.
  3. o Regys postou uma correção para o problema esta tarde. Para mim já esta compilando.
  4. Obrigado Regys, resolveu.
  5. Atualizei os fontes do acbr a pouco e não consegui mais compilar. Da erro no arquivo ACBrUtil.pas na function ParseText. Linha 2256 e 2269: Texto := AnsiString(UTF8ToString(Texto)); Não existe a function UTF8ToString no Delphi 2007.
  6. Mesmo erro aqui com Delphi 2007. O problema aqui é no arquivo ACBrUtil.pas.
  7. Olá pessoal! Identifiquei um problema ao testar a geração de arquivos MF por RDZ. O Código está dessa forma: procedure TACBrECF.LeituraMemoriaFiscalSerial(ReducaoInicial, ReducaoFinal: Integer; Linhas : TStringList; Simplificada : Boolean ); begin if ComandoLOG = '' then ComandoLOG := 'LeituraMemoriaFiscalSerial( '+IntToStr(ReducaoInicial)+' , '+ IntToStr(ReducaoFinal)+' , Linhas ,'+ BoolToStr(Simplificada)+' )'; LeituraMemoriaFiscalSerial( ReducaoInicial, ReducaoFinal, Linhas, Simplificada ) ; Linhas.Text := DecodificarPaginaDeCodigoECF( Linhas.Text ); end; mas creio que o correto seja: procedure TACBrECF.LeituraMemoriaFiscalSerial(ReducaoInicial, ReducaoFinal: Integer; Linhas : TStringList; Simplificada : Boolean ); begin if ComandoLOG = '' then ComandoLOG := 'LeituraMemoriaFiscalSerial( '+IntToStr(ReducaoInicial)+' , '+ IntToStr(ReducaoFinal)+' , Linhas ,'+ BoolToStr(Simplificada)+' )'; fsECF.LeituraMemoriaFiscalSerial( ReducaoInicial, ReducaoFinal, Linhas, Simplificada ) ; Linhas.Text := DecodificarPaginaDeCodigoECF( Linhas.Text ); end; Resumindo, o problema esta na falta do "fsECF.", gerando assim estouro de pilha. Abraço!
  8. Amigos! Também tive este problema, mas descobri que estava passando de forma errada o parâmetro. Eu passava o caminho completo do arquivo, mas o procedimento já "soma" o Path, então deve-se passar apenas o nome do arquivo a ser salvo. O Path é preenchido com o caminho do executável, mas se precisar mudar, existe a property Path na classe do TACBrPAF. Exemplo: Incorreto: AcbrPAF.SAveFileTXT_N("C:\Diretório do Programa\arquivo.txt"); Correto: AcbrPAF.SAveFileTXT_N("arquivo.txt"); Espero ter ajudado!
  9. Marciano

    ACBrECF - PAF

    Pessoal, bateu uma dúvida neste tópico, olhando a Especificação de Requisitos Versão 01.06 no Req. VI Item 3: Tanto o Espelho MFD quanto o Arq. MFD pedem por Data e por COO, mas no LMFC pede por Data e por CRZ. Os métodos disponíveis no ACBr são: Procedure ArquivoMFD_DLL( DataInicial, DataFinal : TDateTime; NomeArquivo : AnsiString; Documentos : TACBrECFTipoDocumentoSet = [docTodos]; Finalidade: TACBrECFFinalizaArqMFD = finArqMFD ) ; overload ; Procedure ArquivoMFD_DLL( COOInicial, COOFinal : Integer; NomeArquivo : AnsiString; Documentos : TACBrECFTipoDocumentoSet = [docTodos]; Finalidade: TACBrECFFinalizaArqMFD = finArqMFD) ; overload ; Resumindo, como poderia gerar o arquivo eletrônico LMFC no formato Ato COTEPE/ICMS 17/04 por CRZ? Devo usar o mesmo método do ArquivoMFD_DLL por COO, ou vamos ter que criar outro método com assinatura para filtrar por CRZ? Desde já, agradeço pela atenção!
  10. Marciano

    Eventos ECF

    Daniel, creio que esteja faltando declarar as seguintes propriedades logo abaixo da property OnErrorVendeItem: property OnAntesSubtotalizaCupom: TACBrECFOnSubtotalizaCupom write FOnAntesSubtotalizaCupom read FOnAntesSubtotalizaCupom; property OnDepoisSubtotalizaCupom: TACBrECFOnSubtotalizaCupom write FOnDepoisSubtotalizaCupom read FOnDepoisSubtotalizaCupom; property OnErrorSubtotalizaCupom: TACBrECFEventoOnError write FOnErrorSubtotalizaCupom read FOnErrorSubtotalizaCupom; O fonte esta todo certo, só faltou declarar estas propriedades. Abraço
×
×
  • 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.