Ir para conteúdo
  • Cadastre-se

dev botao

Acbrpaf Java


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

Recommended Posts

Bom dia eu terminei de fazer o AcbrEAD.java

 

estou tentando desenvolver o AcbrPaf.java, gostaria de uma ajudinha por exemplo estou tentando fazer o metodo:

int PAF_SaveFileTXT_P(int pafHandle, ACBrPAFInterop.RegistroHD1Rec RegistroP1, ACBrPAFInterop.RegistroP2Rec RegistroP2[], int CountP2, String Arquivo);

no caso eu peguei o exemplo do AcbrEcf.java das Aliquotas, mas é um pouco diferente, se você puderem me passar o procedimento desse metodo eu faço os outros e mando para vocês, eu pretendo ajudar manter a implementação do Acbr para o java.

 

o que eu fiz até então criei a classe ACBrPAF.java

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package jACBrFramework.serial.ecf;

import com.sun.jna.ptr.IntByReference;
import jACBrFramework.ACBrClass;
import jACBrFramework.ACBrException;
import jACBrFramework.interop.ACBrPAFInterop;
import jACBrFramework.interop.ACBrPAFInterop.RegistroHD1Rec;
import jACBrFramework.interop.ACBrPAFInterop.RegistroP2Rec;
import java.nio.ByteBuffer;

/**
 *
 * @author Valde
 */
public final class ACBrPAF extends ACBrClass {

    private RegistroHD1Rec registroHD1Rec;
    private RegistroP2Rec[] registroP2Rec;
    
    public ACBrPAF() throws ACBrException {
    }
    
    

    @Override
    protected void onInitialize() throws ACBrException {
        IntByReference handle = new IntByReference();
        int ret = ACBrPAFInterop.INSTANCE.PAF_Create(handle);
        checkResult(ret);

        setHandle(handle.getValue());
    }

    @Override
    protected void onFinalize() throws ACBrException {
        int ret = ACBrPAFInterop.INSTANCE.PAF_Destroy(getHandle());
        checkResult(ret);

        setHandle(0);
    }

    @Override
    protected void checkResult(int result) throws ACBrException {
        switch (result) {
            case -1:
                String message;

                int LEN = 1024;
                ByteBuffer buffer = ByteBuffer.allocate(LEN);
                int ret = ACBrPAFInterop.INSTANCE.PAF_GetUltimoErro(getHandle(), buffer, LEN);

                message = fromUTF8(buffer, ret);
                throw new ACBrException(message);


            case -2:
                throw new ACBrException("ACBr PAF não inicializado.");
        }
    }
    
    
    private void saveFileTXT_P(){
        
    }
    
    
}

também criei o objeto RegistroP1.java, RegistroP2.java

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.arena.paf.model;

/**
 *
 * @author Valde
 */
public class RegistroP1 {

    public String RAZAOSOCIAL;
    public String UF;
    public String CNPJ;
    public String IE;
    public String IM;

    public RegistroP1() {
    }

    public RegistroP1(String RAZAOSOCIAL, String UF, String CNPJ, String IE, String IM) {
        this.RAZAOSOCIAL = RAZAOSOCIAL;
        this.UF = UF;
        this.CNPJ = CNPJ;
        this.IE = IE;
        this.IM = IM;
    }

    public String getRAZAOSOCIAL() {
        return RAZAOSOCIAL;
    }

    public void setRAZAOSOCIAL(String RAZAOSOCIAL) {
        this.RAZAOSOCIAL = RAZAOSOCIAL;
    }

    public String getUF() {
        return UF;
    }

    public void setUF(String UF) {
        this.UF = UF;
    }

    public String getCNPJ() {
        return CNPJ;
    }

    public void setCNPJ(String CNPJ) {
        this.CNPJ = CNPJ;
    }

    public String getIE() {
        return IE;
    }

    public void setIE(String IE) {
        this.IE = IE;
    }

    public String getIM() {
        return IM;
    }

    public void setIM(String IM) {
        this.IM = IM;
    }
}

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.arena.paf.model;

/**
 *
 * @author Valde
 */
public class RegistroP2 {

    public String COD_MERC_SERV;
    public String DESC_MERC_SERV;
    public String UN_MED;
    public String IAT;
    public String IPPT;
    public String ST;
    public double ALIQ;
    public double VL_UNIT;
    public boolean RegistroValido;

    public RegistroP2() {
    }

    public String getCOD_MERC_SERV() {
        return COD_MERC_SERV;
    }

    public void setCOD_MERC_SERV(String COD_MERC_SERV) {
        this.COD_MERC_SERV = COD_MERC_SERV;
    }

    public String getDESC_MERC_SERV() {
        return DESC_MERC_SERV;
    }

    public void setDESC_MERC_SERV(String DESC_MERC_SERV) {
        this.DESC_MERC_SERV = DESC_MERC_SERV;
    }

    public String getUN_MED() {
        return UN_MED;
    }

    public void setUN_MED(String UN_MED) {
        this.UN_MED = UN_MED;
    }

    public String getIAT() {
        return IAT;
    }

    public void setIAT(String IAT) {
        this.IAT = IAT;
    }

    public String getIPPT() {
        return IPPT;
    }

    public void setIPPT(String IPPT) {
        this.IPPT = IPPT;
    }

    public String getST() {
        return ST;
    }

    public void setST(String ST) {
        this.ST = ST;
    }

    public double getALIQ() {
        return ALIQ;
    }

    public void setALIQ(double ALIQ) {
        this.ALIQ = ALIQ;
    }

    public double getVL_UNIT() {
        return VL_UNIT;
    }

    public void setVL_UNIT(double VL_UNIT) {
        this.VL_UNIT = VL_UNIT;
    }

    public boolean isRegistroValido() {
        return RegistroValido;
    }

    public void setRegistroValido(boolean RegistroValido) {
        this.RegistroValido = RegistroValido;
    }
}

Por gentileza se puderem me ajudar a implementação do private void saveFileTXT_P() da classe AcbrECF.java eu me viro com o resto.

 

Obrigado!

Link para o comentário
Compartilhar em outros sites

É +/- isso:?

    private void saveFileTXT_P(RegistroHD1Rec registroHD1Rec, RegistroP2Rec[] registroP2Rec, String arquivo) throws ACBrException {

        int ret = ACBrPAFInterop.INSTANCE.PAF_SaveFileTXT_P(getHandle(), registroHD1Rec, registroP2Rec, registroP2Rec.length, toUTF8(arquivo));
        checkResult(ret);

    }
Link para o comentário
Compartilhar em outros sites

eu fiz isso:

   public void saveFileTXT_P(RegistroP1 registroP1, RegistroP2[] registroP2, String arquivo, int countP2) throws ACBrException {

        ACBrPAFInterop.RegistroHD1Rec recordP1 = new ACBrPAFInterop.RegistroHD1Rec();
        
        recordP1.CNPJ = registroP1.getCNPJ().toCharArray();
        recordP1.IE = registroP1.getIE().toCharArray();
        recordP1.IM = registroP1.getIM().toCharArray();
        recordP1.RAZAOSOCIAL = registroP1.getRAZAOSOCIAL().toCharArray();
        recordP1.UF = registroP1.getUF().toCharArray();
       
        ACBrPAFInterop.RegistroP2Rec[] array = new ACBrPAFInterop.RegistroP2Rec[countP2];
        
        for (int i = 0; i < countP2; i++) {
            ACBrPAFInterop.RegistroP2Rec record = new ACBrPAFInterop.RegistroP2Rec();
            record.COD_MERC_SERV = registroP2[i].getCOD_MERC_SERV().toCharArray();
            record.ALIQ = registroP2[i].getALIQ();
            record.DESC_MERC_SERV = registroP2[i].getDESC_MERC_SERV().toCharArray();
            record.IAT = registroP2[i].getIAT().toCharArray();
            record.ST = registroP2[i].getST().toCharArray();
            record.IPPT = registroP2[i].getIPPT().toCharArray();
            record.UN_MED = registroP2[i].getUN_MED().toCharArray();
            record.VL_UNIT = registroP2[i].getVL_UNIT();
            record.RegistroValido = registroP2[i].isRegistroValido();
            array[i] = record;
        }

       // this.aliquotas = array;

        int ret = ACBrPAFInterop.INSTANCE.PAF_SaveFileTXT_P(getHandle(), recordP1, array, countP2, toUTF8(arquivo));//ECF_PafMF_MFD_Espelho_COO(getHandle(), COOInicial, COOFinal, toUTF8(CaminhoArquivo));
        checkResult(ret);

    }

e deu esse erro:

#
# A fatal error has been detected by the Java Runtime Environment:
#
#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x19735f57, pid=2572, tid=4548
#
# JRE version: 7.0_17-b02
# Java VM: Java HotSpot(TM) Client VM (23.7-b01 mixed mode windows-x86 )
# Problematic frame:
# C  [ACBrFramework32.dll+0x5f57]
#
# Failed to write core dump. Minidumps are not enabled by default on client versions of Windows
#
# An error report file with more information is saved as:
# E:\Projeto Arena\Projeto_Win\Arena\hs_err_pid2572.log
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.sun.com/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#
Link para o comentário
Compartilhar em outros sites

  • 1 mês depois ...

Olá, estou tentando utilizar o ACBrFramework, porem está acontencendo o mesmo erro do colega de cima, já instalei todas as versões do java e o erro persiste, nao sei o que posso fazer para resolver o problema, estou ultilizando a dll ACBrFramework.dll, nao encontrei a outra dll ACBrFramework_JNI.dll, nao sei se tem que colocar junto....

Link para o comentário
Compartilhar em outros sites

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

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • 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.