Ir para conteúdo
  • Cadastre-se

dev botao

Gerar Arq. Tabela De Produtos Menu Fiscal


Wagner Fonseca
  • Este tópico foi criado há 4063 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 4063 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.

The popup will be closed in 10 segundos...