Ir para conteúdo
  • Cadastre-se

dev botao

Novo: Acbrecf


Rafael Batiati
  • Este tópico foi criado há 4026 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Pessoal,

Boas novidades.

 

O projeto jACBrFramework passou por um grande refactoring, foi praticamente refeito do ZERO com novas classes bases e reorganização dos pacotes.

 

A classe ACBrECF (que agora fica no pacote jACBrFramework.serial.ecf.ACBrECF) está com todas as propriedade e métodos implementados.

Faltam alguns ajustes nos métodos que retornam/recebem classes complexas.

 

Agora temos também suporte a eventos no Java (via Listeners), todos os eventos disponíveis foram adicionados ao componente ACBrECF, veja no exemplo como utilizá-los.

 

(...)

 

Com essas alterações novos componentes poderão ser adicionados mais facilmente, dispensando o uso de C++ para as chamadas nativas.

 

Aos usuários do antigo jACBr ou da última versão do jACBrFramework que ainda dependia da ACBrFramework_JNI.dll, peço que atualizem seus projetos. Esta versão atual está muito melhor e mais fácil de manter.

 

Baixem os fontes e confiram (agora com projeto NetBeans incluído).

 

Por link direto

http://sourceforge.net/projects/acbrframework/files/jACBrFramework.zip/download

 

Ou pelo SVN

http://acbrframework.sourceforge.net/downloads/codigo-fonte/

 

Qualquer dúvida/problema é só postar por aqui.

Abs

Rafael Batiati

ACBrFramework - Automação comercial para todos.

MultiClubes - Soluções para a área de clubes, parques, lazer e entretenimento.

Link para o comentário
Compartilhar em outros sites

Já efetuei alguns testes e realmente ficou muito bom a implementação via JNA. Agora estou tentando compilar o projeto ACBrFramework no ubuntu 32 e 64 bits, com objetivo de deixar o projeto multiplataforma.

 

Gostaria de saber se tem algum exemplo da utilização do ACBr em Lazarus e compilado em Linux?

Editado por bienemann

Brian Bienemann

AgillizA Software

Link para o comentário
Compartilhar em outros sites

Não temos esse tipo de demo, você pode documentar e postar aqui um tutorial, será bem vindo.

 

Acho que o ACBr no momento não está compilando em 64bits, por causa de funções nativas implementadas somente em 32bits .... será resolvido, mas no momento só via 32bits mesmo. Não sei no linux, mas creio que idem.

Rafael Batiati

ACBrFramework - Automação comercial para todos.

MultiClubes - Soluções para a área de clubes, parques, lazer e entretenimento.

Link para o comentário
Compartilhar em outros sites

Estou tentando compilar no linux (ubuntu), e passei por esse problema. Se não me engando está do nome da unit e do arquivo gravado em disco. Estou com outros erros agora, se quiser me add no skype bjbienemann podemos trabalhar juntos.

Brian Bienemann

AgillizA Software

Link para o comentário
Compartilhar em outros sites

Para eu pegar o valores totais das aliquotas como faço usando o novo jacbr?

 

Isso entra no que eu disse no primeiro post "Faltam alguns ajustes nos métodos que retornam/recebem classes complexas."  :cool: 

Rafael Batiati

ACBrFramework - Automação comercial para todos.

MultiClubes - Soluções para a área de clubes, parques, lazer e entretenimento.

Link para o comentário
Compartilhar em outros sites

tem algum metodo que eu possa dar uma olhada para usar como exemplo e tentar desenvolver esse?

 

Sim, pode dar uma olhada nos métodos getFormasPagamento(), carregaFormasPagamento(int count) e na classe FormaPagamento que seguem a mesma lógica de uso de structs das Alíquotas, RelatorioGerencial e ComprovanteNaoFiscal.

 

Caso queira implementar, poste o código aí pra gente que incluímos no SVN depois.

Abs

Rafael Batiati

ACBrFramework - Automação comercial para todos.

MultiClubes - Soluções para a área de clubes, parques, lazer e entretenimento.

Link para o comentário
Compartilhar em outros sites

Segue o código, testei aqui deu certo.

 

Abs.

 

package jACBrFramework.serial.ecf;

public class Aliquota {
    //<editor-fold defaultstate="collapsed" desc="Fields">

    private String indice;
    private double aliquota;
    private boolean tipo;
    private double total;
    private boolean sequencia;

    //</editor-fold>
    //<editor-fold defaultstate="collapsed" desc="Properties">
    public Aliquota(String indice, double aliquota, boolean tipo, double total, boolean sequencia) {
        this.indice = indice;
        this.aliquota = aliquota;
        this.tipo = tipo;
        this.total = total;
        this.sequencia = sequencia;
    }

    public String getIndice() {
        return indice;
    }

    public double getAliquota() {
        return aliquota;
    }

    public boolean getTipo() {
        return tipo;
    }


    public double getTotal() {
        return total;
    }

    public boolean getSequencia() {
        return sequencia;
    }


    //</editor-fold>
}

/*ACBrECF.java - INICIO*/

    public void lerTotaisAliquota() throws ACBrException {

        int ret = ACBrECFInterop.INSTANCE.ECF_LerTotaisAliquota(getHandle());
        checkResult(ret);

        carregaAliquotas(ret);

    }
	
	private void carregaAliquotas(int count) throws ACBrException {

        Aliquota[] array = new Aliquota[count];
        for (int i = 0; i < count; i++) {
            ACBrECFInterop.AliquotaRec record = new ACBrECFInterop.AliquotaRec();
            int ret = ACBrECFInterop.INSTANCE.ECF_GetAliquota(getHandle(), record, i);
            checkResult(ret);

            Aliquota item = new Aliquota(fromUTF8(record.Indice), record.Aliquota, record.Tipo, record.Total, record.Sequencia);
            array[i] = item;
        }

        this.aliquotas = array;

    }

	
	public void carregaAliquotas() throws ACBrException {
        int ret = ACBrECFInterop.INSTANCE.ECF_CarregaAliquotas(getHandle());
        checkResult(ret);

        carregaAliquotas(ret);
    }
	
	 public Aliquota[] getAliquota() throws ACBrException {
        return aliquotas;
    }
	
/*ACBrECF.java - FINAL*/	
Link para o comentário
Compartilhar em outros sites

@vasilvei

 

Muito bom o código, já foi incluído no SVN, pode pegar a última versão que sua alteração estará lá.

Pelo visto você entendeu perfeitamente como funciona ... mas qualquer dúvida é só postar aqui.

 

Apenas uma mudança que fiz, o método getAliquota() foi renomeado para getAliquotas() por causa da compatibilidade com a API original, cuja propriedade chama-se Aliquotas.

 

Obrigado pela contribuição,

Abs.

Rafael Batiati

ACBrFramework - Automação comercial para todos.

MultiClubes - Soluções para a área de clubes, parques, lazer e entretenimento.

Link para o comentário
Compartilhar em outros sites

Efetuei alguns testes e o netbeans e está encontrando a /usr/lib/libACBrFramework32.so só que não consegue carregar. Verifique se o nome da sua biblioteca está dessa mesma forma, por que se estiver tudo em caixa baixa "libacbrframework32.so" não encontrara o arquivo. Com relação as a chamada feita pela classe Intercetop pode ficar da mesma forma que está no projeto "ACBrFramework32".

 

Eu ainda não tive tempo de fazer com que compile a biblioteca no linux, se possivel compartilhe o seu código para que possamos trabalhar juntos.

 

segue o erro retornado pelo netbeans:

 

Exception in thread "main" java.lang.UnsatisfiedLinkError: Error looking up function 'ECF_Create': /usr/lib/libACBrFramework32.so: undefined symbol: ECF_Create
    at com.sun.jna.Function.<init>(Function.java:179)
    at com.sun.jna.NativeLibrary.getFunction(NativeLibrary.java:391)
    at com.sun.jna.NativeLibrary.getFunction(NativeLibrary.java:371)
    at com.sun.jna.Library$Handler.invoke(Library.java:205)
    at sun.proxy.$Proxy0.ECF_Create(Unknown Source)
    at jACBrFramework.serial.ecf.ACBrECF.onInitialize(ACBrECF.java:3569)
    at jACBrFramework.ACBrClass.<init>(ACBrClass.java:22)
    at jACBrFramework.serial.ecf.ACBrECF.<init>(ACBrECF.java:30)
    at jACBrFramework.Test.Program.main(Program.java:53)
Java Result: 1

Brian Bienemann

AgillizA Software

Link para o comentário
Compartilhar em outros sites

Galera eu mudei a chamada do medoto        public void pafMF_LMFC_Impressao(int CRZInicial, int CRZFinal) throws ACBrException {

 

ele estava chamado o mesmo método da Data. ficou assim:

 

    public void pafMF_LMFC_Impressao(int CRZInicial, int CRZFinal) throws ACBrException {


        int ret = ACBrECFInterop.INSTANCE.ECF_PafMF_LMFC_Impressao_CRZ(getHandle(), CRZInicial, CRZFinal);
        checkResult(ret);


    }
Link para o comentário
Compartilhar em outros sites

-Para gerar a leituras de memória fiscal, é necessário ter a dll das ecf's?

 

-Tentei gerar aqui ele geral só que dá erro na chave de acesso, o por que ocorre isso?

 

estou usando esses metodos:

 

 public void pafMF_LMFC_Espelho(int CRZInicial, int CRZFinal, String CaminhoArquivo) throws ACBrException {


        int ret = ACBrECFInterop.INSTANCE.ECF_PafMF_LMFC_Espelho_CRZ(getHandle(), CRZInicial, CRZFinal, toUTF8(CaminhoArquivo));
        checkResult(ret);


    }


Link para o comentário
Compartilhar em outros sites

Eu uso uma ecf epson, quando eu tiro uma leitura de memória fiscal espelho, ele gera o arquivo porém dá erro ao ler a chave, por que ocorre isso?

 

porém no final do arquivo ele gera:

 

000000041A008000BC12874181D09F7FBE477FA92B5FFCE60EF63C3A332F71CAD68AE89AB60EFC7510976A40067BE0B7F666B5D84FE4D095A1B5BE7A353438EBD45D62AC736EBE6C4FBACFB43AF10AC048F2676157F14A528D875D882BA267BC7AC702B2D896325B670F5B4D650A313FCEDF9AA6CF51EB5B49202D398F8DAD6CD5E1E2D6AE30EBBE

 

seria a assinatura EAD.?

Editado por vasilvei
Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 4026 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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.