Ir para conteúdo
  • Cadastre-se

José Mauro

Membros
  • Total de ítens

    115
  • Registro em

  • Última visita

  • Days Won

    1

Posts postados por José Mauro

  1. Obrigado por enquanto jmsandy,

     

    o valor aproximado eu devo calcular, ou o framework calcula pra mim, de acordo com a tabela ibpt?

     

    att

     

    O valor deve ser calculado pela sua aplicação. Basicamente você precisa realizar o seguinte cálculo:

     

    Vlr. Aprox += Vlr. Liq. Prod. n * Perc. Aprox. Trib. n

     

    onde:

    Vlr. Aprox: será o valor calculado pela sua aplicação que será enviado ao jACBr;

    Vlr. Liq. Prod: valor líquido do produto vendido;

    Perc. Aprox. Trib: valor aproximado de tributos associado ao item vendido com base em alguma fonte, normalmente IBPT;

    n: refere-se aos produtos em questão.

     

    Desta forma o percentual aproximado de tributos deve ser um campo presente na sua estrutura de produtos e, após o cálculo, seu valor submetido ao jACBr.

     

    Att.

  2. Boa tarde mascjunior,

     

    A classe Imposto.java está no pacote jACBrFramework.serial.ecf. Já o método getInfoRodapeCupom encontra-se disponível na classe ACBrECF.

     

    Verifique se você está com a última versão do jACBrFramework estas funcionalidades foram acrescidas no final do ano passado 28/12/2013.

     

    Você pode chamar o método para informar antes do método fecharCupom.

     

    Att.,

  3. Bom dia mascjunior,

     

    Este recurso foi acrescentando na lib em java. Dê uma olhada no link abaixo que há um exemplo de uso e uma explicação sobre o comportamento:

     

     

    Basicamente você tem duas possibilidades:

    1) Informar a fonte e valor:

    Imposto lImposto = getEcf().getInfoRodapeCupom().getImposto();
    lImposto.setFonte("IBPT");
    lImposto.setValorAproximado(pValorAprox);  
    

    2) Informar o texto já formatado para impressão:

    Imposto lImposto = getEcf().getInfoRodapeCupom().getImposto();
    lImposto.setTexto(pTexto);
    

    Qualquer dúvida estamos à disposição.

     

    Att.

  4. Eu uso o datamovimento normal, não entendi o que, no final, você deseja.

    Você que que caso não tenha movimento seja retornado isso?

    Se houve movimentação durante o dia o método retorna perfeitamente. A questão é quando você tira a RZ que o comportamento estava diferente, hoje já consegui contornar para a situação que precisava, talvez já deva até ter modificado a lib que é importada pelo JNI. Quando sobrar um tempo dou uma olhada e revejo com mais calma.

  5. Sem problema edsonmoretti pode deixar da forma que for coerente em seu contexto. Foi colocado desta forma porque um contexto estático é inicializado a nível somente uma vez dentro da JVM e economiza recursos caso haja mais de um acionamento.

     

    Só tome cuidado quando for fazer algum merge com as possíveis melhorias, correções que podem vir na biblioteca para não perder a suas personalizações.

     

    Abraço.

  6. Olá edsonmoretti,

    Primeiramente gostaríamos de agradecer a contribuição, realmente é um fator que complica bastante as configurações de ambiente.

    Alteramos apenas um detalhe para detecção da JVM, quando o bean ManagementFactory.getOperatingSystemMXBean().getArch() é acionado, há várias combinações possíveis de retorno dependendo do SO em questão, internamente é acionado System.getProperty("os.arch").

    Segundo a Oracle o modelo correto para fazer esta distinção é obtendo a propriedade, System.getProperty("sun.arch.data.model"), conforme pode ser visto no link: http://www.oracle.com/technetwork/java/hotspotfaq-138619.html, questão "When writing Java code, how do I distinguish between 32 and 64-bit operation?".

    Devido a isto o código ficou da seguinte forma:

    class PegarDLLpelaArqSO {
    	private static String library = "";
    	public static String pegarArq() {
    		if (library.isEmpty()) {                
    			library = System.getProperty("sun.arch.data.model").equals("64") 
    					? "ACBrFramework64" : "ACBrFramework32";
    		}
    		return library;
    	}
    }
    

    A modificação está presente no SVN. Qualquer melhoria que fizer ou achar necessária nos informe para aumentarmos a solidez da biblioteca em java.

     

    Att.,

     

    José Mauro

  7. Bom dia Willian,

     

    Esta funcionalidade foi acrescida a poucos dias e está em processo de validação. Alguns testes foram feitos para determinados blocos e esta funcional.

     

    Há um pequeno teste na lib, ProgramTestSpedFiscal.java.

     

    Caso encontre algum problema nos informe por favor.

     

    Att.

     

    José Mauro.

  8. Bom dia rpassos.

     

    Tive um problema parecido com a geração dos arquivos pelo ACBrPAF e ACBrSintegra, para resolvê-lo foi preciso especificar o encoding correto da aplicação. Há algumas formas que você pode tratar isto, dentre elas:

     

    1. especificar em tempo de execução o encoding, e.g.,
      System.setProperty("file.encoding", "cp1252")
    2. usando variável de ambiente ao executar a aplicação, e.g.,
      java -jar -Dfile.encoding="cp1252" .....

       

    No meu caso o encoding utilizado foi o cp1252.

     

    José Mauro.

  9. Boa tarde Rafael Dias, tudo bem?

     

    Sem em anexo dois patches. O primeiro contém algumas melhorias no jAcbrFramework (gerado do caminho ACBrFramework/jACBrFramework), já o segundo é uma alteração no projeto em .NET para gerar o interop relacionado ao sped, ACBrSpedFiscalInterop(gerado em ACBrFramework/ACBrFramework.Net).

     

    Está sendo iniciado o encapsulamento do Sped no jAcbrFramework e assim que finalizado será disponibilizado.

     

    Obrigado.

     

    José Mauro

     

     

    jACBrFramework_arquivo_mf_mfd_ajustesChave.zip

    patch-exportar-interop-sped-fiscal.zip

  10. Bom dia pessoal, tudo bem?

     

    Estou com um problema na geração do relatório de parâmetros de configuração com base no arquivo auxiliar gerado pelo ACBrAAC. Foi feito um teste onde são passadas algumas informações para gravação do arquivo, conforme abaixo:

    ACBrECF ecf = new ACBrECF();
    ecf.setModelo(2);        
    ecf.getDevice().setPorta("COM1");
    ACBrAAC lAcbr = new ACBrAAC();
    lAcbr.setKey(getChavePrivada());
    lAcbr.setNomeArquivoAuxiliar("C:\\teste.txt");
    lAcbr.setArqLOG("C:\\log_acbr.txt");
    lAcbr.setEfetuarFlush(true);
    IdenticacaoPaf paf = lAcbr.getIdentPaf();
    Empresa emp = paf.getEmpresa();
    
    InfoPaf info = paf.getPaf();
    ArquivoListaAutenticados lstAut = paf.getArquivoListaAutenticados();
    paf.setNumeroLaudo("Laudo");
    paf.setVersaoER("Versao");
    lstAut.setMD5("MD5");
    lstAut.setNome("Nome");
    emp.setRazaoSocial("Razão Social");
    emp.setCnpj("123123");
    info.setNomeAplicativo("PAF");
    info.setVersaoAplicativo("1.0");
    AACECF ecfAutoriz = new AACECF();
    ecfAutoriz.setCni(1);
    ecfAutoriz.setCro(1);
    ecfAutoriz.setNumeroSerie("EMULADOR");
    ecfAutoriz.setValorGT(0);
    paf.getEcfsAutorizados().add(ecfAutoriz);
    lAcbr.salvarArquivo();
    

    Após a gravação o arquivo foi gerado com sucesso. Porém ao chamar a função para geração do relatório, código abaixo, obtenho erro.

    ACBrAAC lAcbr = new ACBrAAC();
    lAcbr.setKey(getChavePrivada());
    lAcbr.setNomeArquivoAuxiliar("C:\\teste.txt");
    lAcbr.setArqLOG("C:\\log_acbr.txt");          
    lAcbr.abrirArquivo();
    
    ACBrECF ecf = new ACBrECF();
    ecf.setModelo(2);        
    ecf.getDevice().setPorta("COM1");
    ecf.setAAC(lAcbr);
    ecf.ativar();            
    ecf.pafMF_RelParametrosConfiguracao(lAcbr.getIdentPaf().getPaf(), 1);
    ecf.desativar();
    

    Como pode ser visto no primeiro trecho de código a impressora que é ativada foi adicionada no arquivo auxiliar (Emulador Bematech). Sei que ela foi gravada porque quando faço um get para obter as impressoras autorizadas ela vem, porém com a série criptografada. A mensagem de erro é: "ECF de Número de série EMULADOR não encontrado no Arquivo Auxiliar Criptografado.".

     

    Em anexo o log do processo.

     

    Têm alguma ideia de onde eu esteja errando?

     

    Desde já agradeço a ajuda.

     

    José Mauro

    log_acbr.txt

  11. Como eu disse, você precisa no mínimo gerar aqueles registros que informei, o arquivo agora é um todo, tudo junto, não existe mais opções em separado como antes.

    A única coisa que ainda existe é o estoque parcial ou total, então antes de gerar o arquivo você precisa deixar o usuário escolher, gerar tudo ou gerar somente dos produtos escolhidos.

     

    Quanto aos outros registros sempre tudo dentro do período, alguns registros não possuem período, como por exemplo o P2, E2, E3, mas o resto sim.

     

    Muito obrigado pela ajuda. Estamos evoluindo a lib em java e iremos enviando os patches dos recursos que formos encapsulando para a comunidade.

  12. Olá Régys, muito obrigado pelo esclarecimentos.

     

    Restou uma dúvida somente no item: "8. O Menu Fiscal Registros do Paf-ECF", devo gerar os registros de acordo com a função que for selecionada no menu?

     

    Por exemplo:

    U1 e P2, para produtos (antes P1 e P2);

    R01, R02.... R07 para movimentação da ECF,

    etc;

     

    Seria essa a ideia?

     

    É que como a movimentação é por período não vejo forma de ligá-la ao produto, exceto se seja para apresentar apenas os produtos e estoques que tiveram movimentação no período, é isto?

     

    Mais uma vez muito obrigado.

     

    José Mauro

  13. Pessoal, boa tarde!

     

    Poderiam por favor verificar se há algum problema na formação do valor aproximado de tributos. Ocorre que se informo o campo texto, somente ele é exibido, ou seja, não aparece valor ou fonte.

     

    Estou utilizando o jACBrFramework, mas creio que esta parte ainda não esteja no repositório, poderiam por favor verificar se acontece para nas outras linguagens do framework?

     

    Abaixo o exemplo do código:

    Imposto lImposto = ecf.getInfoRodapeCupom().getImposto();            
    lImposto.setFonte("IBPT");
    lImposto.setTexto("Val. Aprox. Impostos");
    lImposto.setValorAproximado(1);
    

    Este trecho é executado imediatamente antes do fechamento do cupom.

     

    Exemplo sem informar a linha 3:

    ------------------------------------------------
    Val.Aprox.Impostos R$1.00(4.63%) Fonte:IBPT
    MENSAGEM FECHAMENTO
    ------------------------------------------------
    BEMATECH        MP-2100 TH FI        ECF-IF
    VERSÃO:01.00.01                  ECF:001 LJ:0001
    QQQQQQQQQQQQQEREQQ          27/12/2013 16:37:30
    FAB:EMULADOR                                 BR
    ------------------------------------------------

    Exemplo informando todos os campos:

    ------------------------------------------------
    Val. Aprox. Impostos
    MENSAGEM FECHAMENTO
    ------------------------------------------------
    BEMATECH        MP-2100 TH FI        ECF-IF
    VERSÃO:01.00.01                  ECF:001 LJ:0001
    QQQQQQQQQQQQQEQOQQ          27/12/2013 16:34:17
    FAB:EMULADOR                                 BR
    ------------------------------------------------

     

    Por agora é plenamente contornável, mas quando puderem deem uma olhada por favor.

     

    José Mauro

  14. Boa tarde pessoal, tudo bem?

     

    Estivemos importando algumas funcionalidades para a lib em Java, jACBrFramewok, e o nosso colega Rafael Dias irá versioná-las para que outras pessoas possam ir evoluindo a sua utilização.

     

    Bem, após a importação do ACBrPAF, ACBrAAC, ACBrEAD e alguns recursos do ACBrECF, começamos a pegar os requisitos de homologação e utilizar, devidamente, as funcionalidades encapsuladas. Estávamos utilizando algumas dicas contidas em, http://www.regys.com.br/homologacao-do-paf-ecf-parte-2-menu-fiscal/, para nos localizarmos sobre cada item pertencente ao menu fiscal, mas como houve mudanças da versão dos requisitos ficaram algumas dúvidas no ar e acredito que possa ser interessante centralizá-las e evoluirmos a base de conhecimento.

     

    Gostaria da ajuda de vocês para associar os itens do Requisito VII com as respectivas funcionalidades do ACBr. Abaixo um resumo:

    Item 2: LX -> Qual função deve ser acionada, ECF_PafMF_LX_Impressao ou ECF_LeituraX? (Em que uma se difere da outra)

    Item 3: LMF(S/C) -> Para a leitura da memória fiscal, simples ou completa, qual dos métodos deve ser utilizado?
     ECF_PafMF_LMFC_Cotepe1704  - período e saída na ECF
     ECF_PafMF_LMFC_Cotepe1704_CRZ - crz e saída na ECF
     ECF_PafMF_LMFC_Espelho  - período e saída em arquivo
     ECF_PafMF_LMFC_Espelho_CRZ  - data e saída em arquivo
     ECF_PafMF_LMFC_Impressao  - período e saída na ECF
     ECF_PafMF_LMFC_Impressao_CR Z- crz e saída na ECF 

    ECF_PafMF_LMFS_Espelho - período e saída em arquivo
    ECF_PafMF_LMFS_Espelho_CRZ- data e saída em arquivo
    ECF_PafMF_LMFS_Impressao - período e saída na ECF
    ECF_PafMF_LMFS_Impressao_CRZ- crz e saída na ECF

     

    Ainda em relação ao item 3, nesta versão ainda continua precisando dos itens Espelho MFD e Arq. MFD.? É que não ficou explícito para mim.

    Item 4: Para a geração do arquivo MF deve ser acionada a função ECF_PafMF_ArqMF?

    Item 5: Para a geração do arquivo MFD deve ser acionada a função ECF_PafMF_ArqMFD?

    Item 11: Para a identificação do PAF,  deve ser acionada a função ECF_PafMF_RelIdentificacaoPafECF?

    Item 13: Do que se trata este item? Lendo ele parece que o subitem a), fala sobre o sintegra e o subitem b ) fala sobre o PAF_Preenche_H.

    Item 14: Tab. Índice Técnico Produção -> como funciona este item?
     

    Item 15: Parametros de Configuração -> para este item deve ser acionada a função PafMF_RelParametrosConfiguracao?

     

    Item 17: Este item é o mais complicado, minha opinião, antes havia um desmembramento que ficava mais fácil de entender, Arq. Prod, Meios de Pagamento, Estoque e Mov. Ecf. Estas funcionalidades continuam precisando, correto?

     

    Em relação a geração dos itens supracitados, seria:

    • Para Estoque gerar o tipo de  registro E  através do PAF_SaveFileTXT_E;
    • Para Tab. Prod. gerar o tipo de  registro P  através do PAF_SaveFileTXT_P; 
    • Para a Mov. Ecf. gerar o tipo de registro R através do PAF_SaveFileTXT_R;
    • Para os Meios de Pagamento acionar a função ECF_PafMF_RelMeiosPagamento;

    Estes seriam os passos? É que vi no ANEXO IV que há vários registros que devem ser informados, tirando os que são específicos a determinados segmentos, quais são necessários para cada funcionalidade?

    Pessoal sei que são muitas perguntas, mas qualquer ajuda será bem muita bem vinda. Além disso acredito que este tópico possa vir a ser uma postagem interessante para auxiliar os marinheiros de primeira viagem, assim como eu, neste processo de homologação.

     

    Desde já agradeço.

     

    José Mauro

  15. Prezado Rafael Dias,

     

    Segue em anexo o patch para acrescentar o ACBrPAF e o ACBrAAC. Todos os interops foram atualizados com a versão mais recente do ACBrFramework. Além disso a casca para inserir o ACBrEAD foi criada.

     

    Os pacotes ainda estão em validação, até agora usei o Registro E para geração do estoque e o registro P para o relatório de produtos e ambos funcionaram perfeitamente. Há um problema nos registros H e R referente a lixo de memória, achei bem estranho porque segue a mesma ideia dos outros, vou dar uma olhada com mais calma quando for gerar estes registros.

     

     

    Abraço.

     

    José Mauro

    patch-ACBrPAF-ACBrAAC-ACBrEAD.zip

  16. tem o codigo fonte dele no rep junto com o codigo do acbrframework.net

    Opa... Achei aqui..

     

    Dei uma mudada no JavaDefExporter para acertar um pouco a padronização dos nomes em java e também para mudar o array de caracteres para array de bytes nas estruturas que são trafegadas via jna.

     

    Atualizei todos os interops do jACbrFramework vou dar uma testar e encapsular o ACbrPAF e quando estiver OK coloco o patch aqui.

     

    Em anexo o patch com estas modificações.

     

    Vlw.

    patch-layout-interop-java.zip

  17. Sim o ACBrPAF é o que você procura, so que esta versão java deve estar desatualizada.

    E o registro que você procura é o TTIP

    Como consigo rodar aquele DefExporter para gerar o Interop atualizado? O resto vai na unha na boa...

  18. Pessoal, bom dia.

     

    Vi que há o Interop ACBrPAFInterop, para o encapsulamento de algumas funções necessárias para os relatórios de gerencialmente fiscal. Estou precisando de um em específico, Tab. Prod., por isso vou começar o encapsulamento das funções.

     

    Para passar minimamente na homologação quais registros devem ser informados?

     

    Ps.: O caminho para geração deste arquivo é realmente esta lib, correto?

     

    Agradeço a todos.

     

    Abraços.

  19. Prezado Rafael Dias,

     

    Segue em anexo o patch para geração dos arquivos do sintegra. Foi necessário criar um construtor sobrecarregado para receber o  Charset associado a máquina local para que não haja problema na conversão da string para o array de bytes que será enviado a lib. Há um exemplo em: jACBrFramework.Test.ProgramTestSintegra.java.

     

    Todos os registros, exceto o registro 56, foram validados e comparados com as tabelas do regulamento de ICMS. Foram detectadas duas coisas:

    1. no registro 77, a biblioteca está somando 1 ao campo tipo de receita, e.g., se envio 1 - Receita Própria, o arquivo é gerado com o valor 2 - Receita de terceiros;
    2. o bloco 90 estoura o tamanho quando precisa totalizar vários registros;

     

    Como melhoria irei fazendo à medida que der tempo a geração das tabelas, e.g., tipos de receitas para facilitar a alimentação da biblioteca.

     

    Att.,

     

    José Mauro

    geracao-sintegra.zip

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