Jump to content

diadoacbr

Gerar Arq. Tabela De Produtos Menu Fiscal


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

Recommended Posts

Bom dia,

 

Estou tentando implementar no java a geração de arquivo do menu fiscal, a Tabela de Produtos.

 

Não sei se estou fazendo da maneira correta, observei o código em Delphi e tentei realizar no Java, mas esta ocorrendo erro na chamada do metodo:

 

public static void geraTabelaProdutos(List<Produto> produtos, String arquivo) {
        /**
         * int PAF_SaveFileTXT_TITP(
         *   int pafHandle, 
         *   ACBrPAFInterop.RegistroMercadoriasRec RegistroMercadorias[], 
         *   int Count, 
         *   ACBrPAFInterop.RegistroInsumosRec RegistroInsumos[], 
         *   String Arquivo, 
         *   String titulo, 
         *   double data)
         */

        int i = 0;
        ACBrPAFInterop.RegistroMercadoriasRec mercadorias[] = new ACBrPAFInterop.RegistroMercadoriasRec[produtos.size()];
        ACBrPAFInterop.RegistroInsumosRec insumos[] = new ACBrPAFInterop.RegistroInsumosRec[10];
        
        for (Produto p : produtos) {
            mercadorias[i] = new ACBrPAFInterop.RegistroMercadoriasRec();
            mercadorias[i].Descricao = p.getDescricao().toCharArray();
            mercadorias[i].Codigo = p.getProdCodi().toString().toCharArray();
            mercadorias[i].VlrUnitario = p.getPreco().doubleValue();
            mercadorias[i].CST = p.getClassFisc().getClassCodi().toString().toCharArray();
            mercadorias[i].Unidade = p.getUnidade().getUnidade().toCharArray();
                        
            ACBrPAFInterop.INSTANCE.PAF_SaveFileTXT_TITP(
                i, 
                mercadorias, 
                i, 
                insumos, 
                arquivo, 
                "tabela_produtos.txt", 
                Util.dateToDouble()
            );
        }
      
    }

 

mas ocorre um erro:

 

 

java.lang.NullPointerException
    at com.sun.jna.Structure.structureArrayCheck(Structure.java:1361)
    at com.sun.jna.Structure.autoWrite(Structure.java:1393)
    at com.sun.jna.Function.convertArgument(Function.java:540)
    at com.sun.jna.Function.invoke(Function.java:258)
    at com.sun.jna.Library$Handler.invoke(Library.java:216)
    at sun.proxy.$Proxy25.PAF_SaveFileTXT_TITP(Unknown Source)
    at br.com.amazonas.clube.pdv.infra.Paf.geraTabelaProdutos(Paf.java:177)
 
Agradeço desde ja a atenção de todos;
Link to comment
Share on other sites

As classes Interop não são para serem usadas diretamente dessa forma, elas precisam ser encapsuladas num modelo de objeto que reproduza o comportamento do componente PAF do ACBr.

 

O componente ACBrPAF ainda não está implementado no Java, e a classe ACBrPAFInterop foi gerada automaticamente a partir do DefExporter, então, nesse momento é bem capaz de precisar de um trabalho de debug nessas assinaturas do Interop.

 

Dessa forma aconselho você, caso queira desenvolver o componente PAF, trabalhar sobre um modelo de classes condizente com componente ACBrPAF ao invés de usar a classe interop diretamente no seu código. As APIs dos componentes são públicas serão mantidas compatíveis com novas versões no futuro, já as APIs do interop são privadas e podem mudar livremente de acordo com o design do projeto. Você corre o risco de ter que reimplementar tudo isso quando o componente for liberado pra uso.

 

Olhe o componente ACBrECF e veja a idéia por trás do uso do Interop.

Rafael Batiati

ACBrFramework - Automação comercial para todos.

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

Link to comment
Share on other sites

Temos previsão sim,

 

90% do código do ACBrECF foi gerado pelo nosso DefExporter.

Código em java para propriedades, métodos e eventos são gerados automaticamente baseada em convenções de nomes extraídas a partir do metadata do componente feito em .Net; Isso facilitou muito o nosso trabalho.

 

Mas temos ainda que implementar a geração no caso de classes complexas (as ComposedComponents) e no caso de structs. Esses dois pontos são largamente usados em componentes como o AAC, PAF e EAD.

 

Ou seja, dentro em breve teremos praticamente todos os componentes implementados  em Java.

Abs.

Rafael Batiati

ACBrFramework - Automação comercial para todos.

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

Link to comment
Share on other sites

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.