none
Homologação versão 01.08 RRS feed

  • Discussão Geral

  • Boa tarde pessoal!

    Como comentei em outros posts, vou colocar nesse tópico alguns detalhes que me complicaram a vida na homologação da versão 01.08.
    Espero que possa ajudar aos colegas que irão homologar nessa versão.


    Bom, primeiro de tudo, minha homologação foi na TECPAR de Curitiba/PR. Então é preciso ter em mente que em outras homologadoras pode ser diferente.
    Além disso, nosso sistema só executa os testes obrigatórios e os testes de oficina de conserto. Com relação aos outros não sei dar mais informações.

    =========================
    #Dicas gerais
    - Antes eles nos disponibilizavam internet e rede, mas dessa vez havia apenas o ponto de energia elétrica.
    Eles nos conseguiram um monitor pois não tínhamos levado, mas recomendo levar tudo o que puderem, inclusive monitores, teclados, cabos, etc

    - Testem além do roteiro. Quando me preparei para homologação, apenas segui os testes do roteiro à risca.
    Mas o homologar vai além, e faz testes diferentes.

    - Uma coisa é quase certa: não dá tempo. Os testes aumentaram, e a complexibilidade deles também.
    Mas o tempo continua o mesmo de antes, então se preparem para comprar umas horas à mais, e levem o sistema muito bem testado, para não precisar perder tempo arrumando lá.

    =========================
    #O que precisei levar
    - modem 3g para ter internet, e a NF-e configurada e pronta para emitir
    - hub e cabos de rede
    - muitas bobinas, levei 4 para garantir
    - certificado digital válido para NF-e, pois precisamos tirar uma NF-e real
    - pinpad e demais acessórios para o TEF
    - adaptadores de plugs elétricos, por causa do novo padrão

    =========================
    #Testes

     

    - teste 004 (pré-venda)
    Existe uma observação bem pequena no roteiro: "não podendo esta função estar disponível no ponto de venda"
    Aí complicou, pois a pré-venda não pode estar disponível na frente de caixa, então tive que adicionar um parâmetro no arquivo criptografado, para que o sistema dê uma mensagem de erro na frente de caixa, e libere a pré-venda apenas nos terminais que não possuam ECF.
    Mas, obviamente, na frente de caixa deve ser possível fazer o procedimento de fechar a pré-venda e emitir o cupom. Também deve existir a opção de cancelar e mesclar a pré-venda. Essas opções não devem estar disponíveis nos outros terminais, apenas na frente de caixa onde está o ECF.

    - teste 008 (DAV)
    Aqui a única ressalva é que não é mais obrigatória a impressão do DAV.
    O homologador também me informou que é possível fazer impressão em impressoras não fiscais, mesmo em UF que só permitam impressão no ECF, desde que essa impressora não esteja na frente de caixa. Mas não peguei mais detalhes com ele, vou me informar melhor a respeito disso.

    - teste 17A = testes 23 e 24
    O teste 17A gera o mesmo arquivo dos testes 23 e 24 (Ato Cotepe 17/04), mas com registros diferentes. Ou seja, os arquivos se complementam.
    No teste 17A devem ser gerados os registros E01, E02 + registros E03 até E13;
    Nos outros testes, devem ser gerados os registros E01, E02 + registros E14 até E21.

    - teste 26 e 84 (arquivo estoque)
    O detalhe nos arquivos de estoque é que devem ser gerados até o dia *anterior* ao movimento.
    Ou seja, a movimentação do dia atual em que estão sendo feitos os testes não deve aparecer nos saldos de estoque. Apenas os lançamentos feitos até o fechamento do dia anterior.

    - teste 38 (hash MD5)
    Nessa versão, é preciso relacionar na lista de MD5 todos os executáveis e mais as DLLs. Ou seja, agora as DLLs também ficam travadas pelo MD5.

    - teste 53 (após redução Z)
    Nesse teste, são feitas muitas tentativas de trabalhar com o ECF após a redução Z, e todas devem ser tratadas corretamente.
    Depois disso, é preciso gerar NF-e e nota do consumidor, e esses lançamentos devem aparecer nos arquivos de Vendas por Período (SPED e Sintegra).
    Além disso, o ECF é desligado e repetem-se todos os testes. Então não se pode contar com o ECF para gerar os arquivos ou assiná-los. Tem que ser tudo pelo sistema.
    Aqui é usado o modem 3G e o certificado válido para emitir a NF-e.

    - requisito XXI
    Aqui os homologadores estendem os testes para quase todas as telas do sistema.
    Ou seja, os testes de checagem de valores negativos, zerados e tudo mais, são executados na maioria das telas do sistema (sangria, suprimento, NF-e, cupom fiscal, recebimento não fiscal, nota do consumidor, etc)

    - requisito XXII
    Aqui também os testes são estendidos.
    A validação do número de série e do GT é feita em todas as telas que comunicam com o ECF (sangria, recebimento não fiscal, LMFC, LMFS, e etc); deve ser verificado até na leitura X que é algo bem mais simples.
    Também deve ser feita essa verificação na inicialização do sistema, avisando que o ECF não está liberado ou não está configurado corretamente ao carregar o sistema.

    - teste 80 (movimento por ECF)
    Aqui me compliquei um pouco, por causa do Bloco VII. Pois nos testes desse bloco é preciso alterar informações como o número de série e data de movimento.
    Aí ficou complicado, pois se é alterado o número de série por exemplo, a movimentação não aparecia mais, pois estava vinculada ao outro número.
    Tive que modificar lá na hora para sempre aparecer toda a movimentação, independente das modificações que o homologador faça nos registros

    - requisito XXVIII
    A principal modificação nesses testes foram a inclusão do registros da NF-e:
    - para o Sintegra, os registros tipo 50 e derivados
    - para o SPED, registros tipo C100 e derivados
    Os homologadores não conheciam muito bem como funcionava a NF-e, então não executaram muitos testes.
    Apenas lançamos uma nota e deu certo. Com o tempo, provavelmente eles conheçam melhor e façam testes mais elaborados.

    - Bloco V - teste 097 - (DAV-OS - oficinas de conserto)
    Aqui existe um erro no roteiro. No passo 12 diz para guardar o CCF do cupom emitido, mas deve-se guardar o COO, como é mencionado nas condições de requisito atendido

    - Bloco V - teste 100A (Conta de cliente - oficinas de conserto)
    Esse teste é novo, e não tem segredo. É uma mistura de DAV-OS com a conferência de mesa dos restaurantes.
    Só precisei modificar detalhes, como a impressão do texto exato que pede no roteiro.
    Ou seja, eu abreviei a frase "SEM EMISSÃO DE CONFERÊNCIA DE CONTA DE CLIENTE", mas o homologador me informou que deve-se colocar a frase inteira, mesmo quebrando para a outra linha :)

    - Bloco VII - geral
    O bloco VII foi a parte mais complicada, pois o roteiro nos leva a entender algo, e o homologador cobra outro.
    Quando analisei os testes, verifiquei todos os campos que deveriam ser alterados e implementei fazendo o hash desses campos.
    Mas o homologador pode pedir a alteração de qualquer campo que o arquivo seja composto.
    Por exemplo, no teste 103 diz para alterar o COO do cupom, COO do DAV, sequencial do ECF, nome adquirinte, CPF adquirinte, data do DAV e valor do DAV.
    Mas o homologador pode alterar qualquer outro campo que faça parte do arquivo (título do DAV, por exemplo), e o efeito tem que ser o mesmo.
    Foi aí que me compliquei, pois tive que fazer tudo de novo, e repetir todos os testes para gerar os hash corretamente. Não foi fácil hehe :)
    Outro detalhe: os homologadores não aceitam triggers para isso. Tem que ser via hash ou criptografia dos dados mesmo.

    - Bloco VII - teste 106
    Esse teste é esquisito, pois numa parte o Ato Cotepe diz que as informações do estabelecimento e da desenvolvedora devem ser guardadas em arquivo auxiliar criptografado. E aqui nesse teste elas devem estar dentro do banco.
    Simplesmente armazenei as informações nos 2 lugares. Fazer o que né :)

    - Bloco VII - teste 107, 108, 109...
    Aqui acontece aquilo que comentei no teste 80.
    O homologador vai alterar, por exemplo, o número de série da redução Z. E o arquivo deve continuar mostrando a movimentação do número de série original, os totalizadores parciais, cupons fiscais, meios de pagamento, e etc

    - Bloco VII - teste 115
    Esse é o teste mais bizarro do roteiro.
    Se o registro é excluído do banco de dados, como ele irá aparecer nos arquivos com interrogações?
    E se ele é incluso exatamente igual à antes (inclusive o mesmo hash), não deveria marcar o registro com as interrogações! :)
    Não consegui encontrar meios práticos/viáveis de executar esse teste. E no caso da minha homologadora, eles ainda estão verificando como fazer para cobrar esse teste, então nós o ignoramos.
    Recomendo que confirmem com suas homologadoras se esse teste 115 será feito, e todos os detalhes de como será feito.


    =========================

    Bom pessoal, que eu lembre foi isso que achei de diferenças entre minha interpretação do roteiro e o teste real.
    Nos outros testes, tudo ocorreu conforme era explicado no roteiro.
    Se eu lembrar de mais alguma coisa, adiciono depois.

    Espero que alguém possa aproveitar essas dicas para alguma coisa ;)

    Abraços!
    Fabio Schunig

     

    segunda-feira, 22 de agosto de 2011 20:50

Todas as Respostas

  • Valeu Fabio,

    Vou homologar na próxima semana e suas dicas me ajudaram bastante.

    Depois eu posto aqui o que houve de diferente comigo.

    Vou homologar pela POLIMIG.

    Abraços.


    Se foi útil para você, então Marque para ajudar outras pessoas.
    quarta-feira, 24 de agosto de 2011 20:47
  • Ola Jose Roberto

    Tambem vou homologar com a Polimig, e eles cobram o teste 115, eu pensei em fazer da seguinte forma:

    Para cada Registro na tabela de cupons por exemplo, eu cadastraria tmb o ID e seu hash numa tabela de apoio (verificacao).  Ou seja: para cada registro em CUPONS, teria um correspondente em CUPONS_VERIFICACAO... para cada registro em CUPOM_ITENS, eu teria um registro em CUPOM_ITENS_VERIFICACAO, e assim por diante.

    A meu ver seria a unica maneira de se ter seguranca e possibilidade de cumprir esse teste.

    quinta-feira, 25 de agosto de 2011 00:07
  • Ola Jose Roberto,

    vou homologar com a Polimig tambem na semana que vem.

    estou com muitas duvidas no teste 115, pode me dar uma força? 

    para registros incluidos e ou alterados a sua ideia eu entendi perfeitamente... mas e os excluidos como proceder?

    obrigado .

    sábado, 17 de setembro de 2011 15:11
  • Boa tarde!

     

    -Posso ter um mesmo executável onde vai ter as opções tanto para o balcão (onde será feito o PV ou DAV) e para a emissão do cupom (ligado ao ECF) e, quando abrir o programa habilitar/desabilitar as opções conforme situação? (já que vai ter o arquivo com o serial ECF - caso que seria CAIXA - ou se não tiver esse arquivo - caso do BALCÃO). Isso seria para ter somente um executável.
    Sim, foi assim que eu fiz.

    -Se você puder dar uma dica de como resolveu o problema do teste 80. Se vai mudar o número do ECF, como vai relacionar esse registro com os dados do ECF a ser listado?
    Retirei o filtro de número. Apenas filtrei pela data de movimentação.

    -Cadastros de Itens/Empresas e outros. Você fez opção para incluir/alterar no PAF-ECF ou somente na retaguarda?
    Deixei opção no PAF-ECF também, pois alguns clientes não usam retaguarda, só frente de caixa

     

    Abraços
    Fabio Schunig

     


    • Editado Fabio Schunig quinta-feira, 29 de setembro de 2011 16:34
    quinta-feira, 29 de setembro de 2011 16:34
  • Boa tarde Geovani

    Vou responder de acordo com o que aconteceu na minha homologação:

    Apenas filtrei pela data de movimentação. E se fosse alterada a DATA? (...)
    Quando o homologador alterar a data, ele vai mudar ela para o dia seguinte. Aí você terá que gerar o arquivo filtrando até essa data final, aparecendo a movimentação desses dois dias.

     

    (...) Aí o homologador mudou novamente para 10 (que seria o correto - o original) e invalidou, pois, o HASH ficou válido novamente. Mas, se o registro está correto porquê invalidar?
    No caso da TECPAR, quando volta a informação original, é obrigatório que volte tudo como estava antes, e que o arquivo seja gerado sem as interrogações, pois (logicamente) os dados voltaram ao normal.
    Inclusive os homologadores voltam ao valor original em todos os testes e conferem.

     

    O melhor é gravar as informações em um BD Local (o mesmo usado para continuar sem a rede), ou pegar diretamente do arquivo CCCCCNNNNNNNNNN....DDMMAAAA.txt que vai ser gravado diariamente?
    Eu gravo num banco de dados local. E então, quando a rede volta, replico tudo na base de dados central.

     

    Outra, este arquivo pode ser sobreposto. Certo? Pois, se gravar o arquivo depois da redução Z do dia 28/09/2011 vai gerar o arquivo com final 28092011.
    Sim, acabará sobrepondo o arquivo.

     

    Se for selecionado no Menu Fiscal a opção Aquivo Eletônico de Movimento do dia 10/09/11 a 28/09/11, por exemplo, TAMBÉM gerará um arquivo com final 280911 sobrepondo o que foi gerado automaticamente após a redução Z do dia 28/09/11. Certo?
    Pelo menu fiscal, a data usada no nome do arquivo deve ser a data atual.
    Então se você gerar o arquivo no dia 28/09/11, irá sobrepor o arquivo sim.

     

    Abraços
    Fabio Schunig

     

    quinta-feira, 29 de setembro de 2011 20:48
  • Olá...primeiramente...Parabéns pela ajuda que está nos dando....

    Uma dúvida...

    quando a citação "-Se você puder dar uma dica de como resolveu o problema do teste 80. Se vai mudar o número do ECF, como vai relacionar esse registro com os dados do ECF a ser listado?
    Retirei o filtro de número. Apenas filtrei pela data de movimentação."

     

    e levando em conta no que diz o ato cotepe 06 - 08

    "7.1.1.1 - Deve ser criado somente um registro tipo R01 para cada arquivo, sendo um arquivo para cada ECF do estabelecimento usuário;"

     

    Pelo que eu entendi, então... vc fez uma tela onde aparece somente data inicial e data final para efetuar a pesquisa.... e seria então gerado um arquivo para cada ecf neste intervalo de tempo?

     

    e quando ao teste de inclusão e exclusão do registro r01 como vc fez para a geração?

     

     

     

    terça-feira, 11 de outubro de 2011 14:28
  • Bom dia

    "Pelo que eu entendi, então... vc fez uma tela onde aparece somente data inicial e data final para efetuar a pesquisa.... e seria então gerado um arquivo para cada ecf neste intervalo de tempo?"
    Sim. Como o homologador mudou o número de série, é como se tivesse movimentação desse novo número, então o sistema gerou 1 arquivo para cada número de ECF daquele período.

     

    "e quando ao teste de inclusão e exclusão do registro r01 como vc fez para a geração?"
    Se você está se referindo ao teste 115, foi esse teste que não encontramos maneira eficiente de executar.

     

    Abraços
    Fabio Schunig

    quinta-feira, 13 de outubro de 2011 14:15
  •  

    Boa tarde.....Obrigado pela resposta....

    Agora estava analisando a seguinte questão

     

    "Apenas filtrei pela data de movimentação. E se fosse alterada a DATA? (...)
    Quando o homologador alterar a data, ele vai mudar ela para o dia seguinte. Aí você terá que gerar o arquivo filtrando até essa data final, aparecendo a movimentação desses dois dias."

     

    Sabendo-se que por exemplo o registro R02(Redução Z) e R03(Detalhe da Redução Z) estão relacionados entre si...

    Teoricamente, se a data do registro R02 for alterada, os registro r03 também iriam aparecer no arquivo para a mesma data do R02 alterado?  ou somente iria deslocar do arquivo o registro R02?

    Ou até mesmo excluir um registro r02, então os registros r03 deverão aparecer igual?


    • Editado Disakr quinta-feira, 13 de outubro de 2011 17:26
    quinta-feira, 13 de outubro de 2011 17:23
  • Bom dia

     

    Teoricamente, se a data do registro R02 for alterada, os registro r03 também iriam aparecer no arquivo para a mesma data do R02 alterado?  ou somente iria deslocar do arquivo o registro R02?
    Eu fiz para deslocar para outro arquivo, ficando registros R03 órfãos no arquivo original.

    Ou até mesmo excluir um registro r02, então os registros r03 deverão aparecer igual?
    Como falei anteriormente, não fiz esse teste da exclusão.

     

    Abraços
    Fabio Schunig

     

    terça-feira, 18 de outubro de 2011 11:07
  • Obrigado Fábio, foram ótimas dicas.

     

    Nós também homologamos nesse roteiro e criamos um forum especifico para compartilhas dúvidas do PAF.

     

    Agradeço quem puder ajudar:

     

    http://www.pafbr.com.br/forum/


    Paulo T. C. Mariano
    sexta-feira, 28 de outubro de 2011 18:02
  • Oi pessoal, está muito boa essa discussão aqui. Ajuda bastante quem ainda vai homologar na nova versão.

    Eu consegui homologar o meu PAF-ECF, pela POLIMIG, na versão 01.08. Vou citar algumas coisas que aconteceram comigo.

    No teste 115, que é a grande novidade deste roteiro, para testar se houve alteração, eu uso um campo hash. Para testar se houve inclusão ou exclusão de registros, eu uso o relacionamento entre as tabelas do meu sistema.

    Por exemplo: os registros R02 são os dados da Redução Z e os registros R03 são os detalhes das alíquotas da Redução Z. Para validar o teste, eu verifico se há algum registro na minha tabela R02 que não tem correspondente na minha outra tabela R03 e vice-versa. Faço assim tambem para os outros registros de R01 a R07.

    A nivel de SQL, pode-se utilizar as cláusulas NOT EXISTS ou NOT IN.

    Como o meu sistema trabalha com PV e DAV e ainda fizemos o roteiro específico para Bares e Restaurantes, o tempo de homologação não foi suficiente e precisamos comprar algumas horas a mais para concluir.

    O problema é que tem muitos testes repetitivos, parece até de propósito. Os testes que demoram mais são os que tem que colocar e tirar o ECF em intervenção técnica. Tem que levar o programinha do fabricante para poder alterar a data. Isso tem que ser feito muitas vezes. Na primeira homologação, ano passado, danificamos um ECF por causa disso. Eu troquei por outro de backup para concluir.

    No geral, levei todos os equipamentos possíveis e imaginários para não correr o risco de faltar nada, inclusive um modem 3G para internet. Os homologadores seguiram fielmente o roteiro e não pediram muito além dele. As vezes, quando havia algum problema no sistema, eles davam sugestão de como outra software house tinha feito para corrigir.

    Se eu lembrar de mais alguma coisa, adiciono depois.

    Abraços a todos e boa sorte,


    Se foi útil para você, então Marque para ajudar outras pessoas.
    segunda-feira, 31 de outubro de 2011 15:23
  • ATO COTEPE 39_11 (Ato Cotepe 06_08 versão 01.09)

    ROTEIRO_DE_ANALISE_DE_PAF-ECF_VERSAO_1.7

     

    Bom pessoal aki no ES o teste 115 foi feito da seguinte forma:

    quando excluir ou incluir o registro, as ? tem que sair no campo "rasão social da desenvolvedora " na 1º linha do r01 quando for o caso.

    quando se tratar dos outros "R da vida, r02,r03..." onde estiver alterações em estoque por exemplo, coloque as ? tbm na 1° linha do registro só que no campo modelo da ecf.

    sobre como saber se foi incluido ou não, se for SGBD, implemente md5 dos R, se for tabela livre como nos meus, faça copia em algum lugar e compare sempre :).


    • Editado BrunoES segunda-feira, 21 de novembro de 2011 17:09
    segunda-feira, 21 de novembro de 2011 17:07
  • oa tarde,

    Me desculpem trolar os tópicos, mas estou sem saber como fazer!

    Eu pesquisei muito sobre este tópico.

    Encontrei exemplos de como criar um Hash do registro para os casos de alterações para apresentar a ? na geração dos arquivos do PAF.

    Mas para tratar a EXCLUSÃO do registro só encontrei um exemplo de como criar uma trigger na base de dados para criar uma tabela de log de exclusão. E pesquisar a partir dessa tabela se o ítem foi excluido pelo sistema ou não.

    Aí tem o problema que alguns relataram: Disseram que não pode ser tratado com trigger na base de dados!

    É possível me darem um exemplo simples de como resolveram esse problema?


    Agradeço muito qualquer ajuda!

    Grato

     

    Aldrin Fagundes
    segunda-feira, 21 de novembro de 2011 17:15

  • É possível me darem um exemplo simples de como resolveram esse problema?

     

    Vou tentar sintetizar a nossa abordagem:

    É gerado um HASH dos valores das colunas a serem controladas e gravada em uma coluna chamada HASH1.

    No momento da geração do arquivo é gerado novamente um HASH com os valores atuais e comparado com o valor da coluna HASH1, se a comparação não foi verdadeira inclue o '?'

     


    Paulo T. C. Mariano
    terça-feira, 22 de novembro de 2011 12:02

  • É possível me darem um exemplo simples de como resolveram esse problema?

     

    Vou tentar sintetizar a nossa abordagem:

    É gerado um HASH dos valores das colunas a serem controladas e gravada em uma coluna chamada HASH1.

    No momento da geração do arquivo é gerado novamente um HASH com os valores atuais e comparado com o valor da coluna HASH1, se a comparação não foi verdadeira inclue o '?'

     


    Paulo T. C. Mariano

    Isso eu entendi.

    O problema é na EXCLUSÃO do ítem... Pois ouvi dizer que não pode ser controlado com TRIGGER no banco de dados!

    Gostaria de dica de como tratar esse caso!

     

    Grato

     

    Aldrin Fagundes

    terça-feira, 22 de novembro de 2011 12:16
  • É possível me darem um exemplo simples de como resolveram esse problema?

    Criamos uma tabela de log onde armazenamos a tabela, e o codigo do registro, e a data do registro, no qual é alimentado a cada inserção PELO SISTEMA

    Quando for gerar o arquivo, você precisa comparar estes códigos com o da tabela pesquisada. Com isso você consegue cercar a inclusão e exclusão

    Ex.: 

    Inserção do cod 10 na tbl PAF_R04, crie na tbl de LOG ('PAF_R04',  10, data)

    comparação: 

    quando for gerar o arquivo você precisa de:

    1. armazenar a quantidade de registro nas 2 tabela de acordo com a data, dá pra fazer com o inner join

    2. armazenar a quantidade de registro R04 na tabela PAF_R04 de acordo com a data

    3. armazenar a quantidade de registro R04 na tabela LOG de acordo com a data

    caso não seja inserido ou excluido manualmente alguma informação as 3 variaveis acima estarão iguais, quer dizer que o banco está íntegro, caso alguma variavel esteja diferente houve inclusão ou exclusão...

    Parece confuso, mas não é... tentem fazer deste jeito, conosco deu certo...

    Espero que tenha ajudado

    quarta-feira, 30 de novembro de 2011 12:38
  • Caro Douglas_Programador e pessoal,

    Utilizamos uma solução parecida com a sua, com uma tabela de log.

    A dúvida é: Para apresentar esses dados no relatório, é necessário mostrar o registro deletado/inserido manualmente no mesmo, ou apenas evidenciar que o banco de dados não está íntegro nos registros de cabeçalho (ex: E1, R01)... ?

    O que deixa outra dúvida: O que fazer se o próprio registro E01 ou R01 for deletado do banco (tabela aonde são guardadas essas informações)?

    Obrigada!
    segunda-feira, 16 de janeiro de 2012 18:36
  • ola para todos, ainda sobre a exclusao, a ideia de gravar o log na inclusao do registro e nao na exclusao como foi citado pelo colega e bem interessante, pois isso da para fazer via aplicacao e nao precisa de trigger.

    o colega sugeriu no log gravar apenas a chave primaria da tabela+nome da tabela + data

    e na hora de gerar o arquivo se na tabela principal nao existir a linha quem tem no log entao emitir os ??

    a duvida minha e que nesse caso posso gerar o interrogação em todos os campos/colunas do registro excluido

    e quando for alteração jogo as interrogacoes apenas no campo conforme o roteiro pede.

    pois se for gerar apenas em cima das colunas citadas no teste de alteração, (que no meu caso faço via md5 de todas as colunas e funciona bem)

    eu teria que ter tambem nesse log, a informação das demais colunas para gerar o arquivo, ou seja teria que ter uma copia da tabela inteira.

    se for isso e  muita igenuidade dos homologadores, se um usuario final teria conhecimentos e condicoes de manipular os registros da tabela do paf.

    pq ele nao teria condicoes de alterar tambem na tabela do log.?

    grato a todos.


    wilton


    wilton

    terça-feira, 19 de junho de 2012 12:55
  • para quem esta precisando. exemplo para calcular md5 do registro

    criar coluna MD5 com 32 posicoes em todas as tabelas do paf

    nomeu caso aqui eu criei tabelas especificas do paf contendo os dados necessarios para geracao dos arquivos, ao efetuar uma venda, eu gravo na minha tabela do sistema de gestao e gravo tambem na tabela do paf.

    Procedure CalculaMD5Registro(msg:string;qry:TADOQUERY);
    Var
    i :integer;
    s :string;
    sl:tSTringList;
    a :String;
    Begin
    try
           if not (qry.state in [dsEdit,dsInsert]) Then
              Raise Exception.Create('Problemas ao calcular MD5, '+#13+
                                     'Tabela não esta em modo de inclusao ou edição'+#13+msg+#13+

                                       'SQL:'+Qry.Sql.Text);

          //Qry ja Deve Estar em modo de edicao
           SL :=TStringList.create;
           S :='';
           For I := 0 to qry.FieldCount-1 do
              Begin
                if (qry.Fields[i].fieldName<>'MD5') and (uppercase(qry.Fields[i].fieldName)<>'FLAGENVIADO') then //VC INCLUI OUTROS CAMPOS Q NAO QUER QUE ENTRE NO CALCULO!
                   Begin
                     if not qry.fields[i].IsNull then  //evita que novos campos entrem no calculo do MD5
                        S :=s+qry.fields[i].AsString+'|';
                   End
              End;
            a :=CalcHash2(s,haMD5); //AQUI VC PODE USAR OUTRAS FUNCOES DE CALCULO DE MD5, NAS DLL DA DARUMA OU BEMATECH JA EXISTE..
            qry.fieldbyname('MD5').asString :=uppercase(copy(a,1,32));
    finally
    end;
    END;

    function VerificaMD5Registro(qry:tadoquery;campo:String):string;
    Var
    i:integer;
    s:string;
    sl:tSTringList;
    a:string;
    BEGIN
    try
        sl :=TStringList.create;
        S :='';
        For I := 0 to qry.FieldCount-1 do
          Begin
            if (qry.Fields[i].fieldName<>'MD5') and (uppercase(qry.Fields[i].fieldName)<>'FLAGENVIADO') then
               Begin
                 if not Qry.Fields[i].IsNull then  //evita que novos campos entrem no calculo do MD5
                    S :=s+qry.fields[i].AsString+'|';
               End;
          End;
        a :=CalcHash2(s,haMD5);
        a :=uppercase(copy(a,1,32));
        if copy(qry.fieldbyname('MD5').asString,1,32) =A then
             result :=qry.fieldbyname(campo).asString
        Else result :=qry.fieldbyname(campo).asString+'??????????????????????????????????';
    Finally
      Begin
       freeandnil(sl);
      End;
    End;

    End;


    wilton


    • Editado wilton_rad terça-feira, 26 de junho de 2012 11:38
    terça-feira, 26 de junho de 2012 11:37
  • Caro William,

    você disse:

    "se for isso e  muita igenuidade dos homologadores, se um usuario final teria conhecimentos e condicoes de manipular os registros da tabela do paf.

    pq ele nao teria condicoes de alterar tambem na tabela do log.?"

    É exatamente o que penso! E se o usuário alterar as 2 tabelas. Como fica? O que mais me impressiona é isso!

    Na Tecpar, me falaram prá fazer uma cópia criptografada. Muito bem, por exemplo, no registro NÃO-criptografado, fui lá e alterei a quantidade e, no registro criptografado eu simplesmente apaguei o conteúdo criptografado ou alterei uma 'letra' (depende da criptografia). Já não vai bater e, explico melhor abaixo.

    Por exemplo (já questionei acima e o Fábio Schunig respondeu, mas, não convenceu, e, tambem não voltei a questão porque aqui no PR não havia obrigatoriedade até Maio/12 e agora existe previsão para Janeiro/2013):

      - Tenho um ÚNICO cupom emitido no dia 01/08/2102. Aí altero a data para dia 05/08/2012 e, na outra tabela criptografado, foi mudado o campo criptografado que já não irá retornar uma data específica, pois, conforme a criptografia pode voltar QUALQUER COISA que não seja uma data válida. Aí tenho que emitir o 'Movimento por ECF' - Requisito XXV do dia 01/08/2012. É claro que não vai sair mais esse cupom em questão, pois, não existe mais referência no dia 01/08/2012. E, como fica na homologação, é exigido que este cupom esteja neste arquivo?

    -Outra coisa que já discuti até com um agente da Receita Estadual, se nós programadores sabemos como foi feita toda a criptografia, podemos muito bem fazer uma alteração, por exemplo, na quantidade de um produto de um cupom fiscal e, gerar todos os dados de backup (ou criptografados) de maneira a gerar o arquivo sem os tais '?', o fiscal nunca perceberá que foi alterado o campo. Somente se olhar cupom a cupom (imagine uma agulha no palheiro).

    Att

    Geovani Weber

    quarta-feira, 22 de agosto de 2012 18:52
  • Bom dia!

    já questionei acima e o Fábio Schunig respondeu, mas, não convenceu
    Não tenho como objetivo convencer ninguém. Apenas tento ajudar aos colegas da melhor forma que meu (escasso) tempo permite :)

    É claro que não vai sair mais esse cupom em questão, pois, não existe mais referência no dia 01/08/2012. E, como fica na homologação, é exigido que este cupom esteja neste arquivo?
    Não sei se entendi direito a pergunta, mas você deve gerar o arquivo abrangendo o período 01/08/12 até 05/08/12. O seu sistema deve gerar 2 arquivos, e o cupom modificado deve aparecer no arquivo do dia 05/08.

    Outra coisa que já discuti até com um agente da Receita Estadual, se nós programadores sabemos como foi feita toda a criptografia, podemos muito bem fazer uma alteração (...) o fiscal nunca perceberá que foi alterado o campo.
    OK, poderíamos. O PAF ECF (e mesmo a estrutura de tributação brasileira) tem muitas falhas. Isso todo mundo sabe.
    Também sabemos que a softwarehouse pode fazer o que quiser dentro do sistema para "dar um jeitinho".
    Mas, do meu ponto de vista, a questão é evitar que um "zé mané", "piazão da informática", "sobrinho que mexe com computador" abra a base de dados e altere as coisas livremente.
    Se a softwarehouse e o cliente quiserem sonegar impostos, eles vão conseguir. Mas a criptografia evita que um terceiro (que não conhece a criptografia) possa ser incluído no processo para fraudar os dados.


    Enfim, apenas minha opinião

    Abraços!
    Fabio Schunig

    quinta-feira, 23 de agosto de 2012 13:34
  • Grande Fábio,

    não leve a mal quando disse que você não convenceu. Foi só o jeito de falar.

    Todos nós com tantas mudanças na legislação temos tanta coisa a fazer e, você com tantas respostas aqui no fórum já me ajudou e MUITO!

    Abraço

    Geovani Weber

    quarta-feira, 29 de agosto de 2012 13:51
  • Boa tarde,

    Alguém sabe informar o que acontece com uma empresa que for fiscalizada o o PAF estiver desatualizado? ou com quem posso me informar sobre isso?

     

    Sobre o PAF-ECF, vocês acham realmente que ira durar mais muito tempo? agora com a NFc-e, RS por exemplo ate hj não exige o PAF. e já está testando a NFc-e

    Eu já homologuei umas 4x, e cada vez acho isso uma palhaçada, cada homologada faz da forma que quer, não tem padrão, não tem CREDIBILIDADE nenhuma, o próprio roteiro é cheio de falhas. é um processo exaustivo e maçante. Já existe a ECF LACRADA para registrar as vendas oficialmente. e o governo ACHA que colocando 1 milhão de regras vai impedir quem REALMENTE quer sonegar.....

    Eu só vejo isso como arrecadação de dinheiro por parte das homologadoras.

    só desabafei ai... foi mal

    sexta-feira, 31 de agosto de 2012 18:55
  • Dúvida: Req. VII Item 8 b) 

    Olá colegas, não sei se cabe neste tópico, mas estou com a seguinte dúvida e se alguém puder me ajudar seria muito grato.

    Será que você(s) poderia(m) esclarecer melhor este trecho referente ao Requisito VII item 8 b) (em vermelho)? 

    “Estoque”, para gerar arquivo eletrônico conforme leiaute estabelecido no Anexo IV, devendo abrir subcategoria “ESTOQUE TOTAL”, para gerar arquivo com todas as informações e subcategoria “ESTOQUE PARCIAL”, para gerar arquivo somente de uma ou mais mercadorias informadas pelo código ou pela descrição, contendo:
    a) o código e a descrição das mercadorias cadastradas na Tabela de Mercadorias e Serviços prevista no requisito XI;
    b) a quantidade de mercadorias em estoque atualizada na abertura do dia, considerando abertura do dia o momento em que o primeiro documento (fiscal ou não fiscal) é impresso por um ECF no estabelecimento. 

    - No Registro E1, campos 11 e 12 fala em Data e Hora da atualização do estoque;
    - No Registro E2, campo 07 temos "Quantidade em estoque".

    A dúvida final que surge é:

    1) Para o Registro E1 eu tenho que guardar uma data e hora do estoque da abertura do dia?
    2) Para o Registro E2 qual quantidade eu tenho que mostrar, a corrente (atual)? Ou também terei de guardar a quantidade de estoque no momento da atualização da Data e Hora mencionada no Registro E1 e mostrar no arquivo a quantidade no momento da abertura do dia?
    segunda-feira, 3 de setembro de 2012 17:01
  • Bom dia Rafael

    1) Para o Registro E1 eu tenho que guardar uma data e hora do estoque da abertura do dia?
    Sim. É preciso guardar em alguma tabela a data de fechamento do estoque (ou abertura do dia, depende de como funciona teu sistema).
    Inclusive, no Bloco VII, existem testes que alteram essa data.


    2) Para o Registro E2 qual quantidade eu tenho que mostrar, a corrente (atual)? Ou também terei de guardar a quantidade de estoque no momento da atualização da Data e Hora mencionada no Registro E1 e mostrar no arquivo a quantidade no momento da abertura do dia?
    Sempre o saldo que estava no fechamento/abertura.
    Mais um vez, existem testes que verificam se o saldo no arquivo de estoque é modificado ao emitir cupons e afins.

    Abraços
    Fabio Schunig

    terça-feira, 4 de setembro de 2012 13:54
  • Bom dia

    Alguém sabe informar o que acontece com uma empresa que for fiscalizada o o PAF estiver desatualizado? ou com quem posso me informar sobre isso?
    Sinceramente, não sei te informar. Mas você pode tirar a dúvida com sua homologadora.

    Sobre o PAF-ECF, vocês acham realmente que ira durar mais muito tempo? agora com a NFc-e, RS por exemplo ate hj não exige o PAF. e já está testando a NFc-e
    Depende o que você considera "muito tempo".
    Na minha opinião, pelo menos uns 5 anos. Ou enquanto os ECFs estiverem em nossos clientes. Lembre-se que nossos clientes pagaram caro pelo equipamento, e vão querer utilizar até o final da memória fiscal. ;)

    Também acho que a homologação do PAF ECF não vai acabar totalmente.
    Tem muita gente e muito dinheiro envolvido no processo todo, então vão arrastar isso o máximo que puderem.
    Além do mais, mesmo que sejam eliminados os ECFs, eles podem inventar uma homologação para trabalhar com o WebService.


    Na minha opinião, não é de todo ruim.
    Apesar do custo, o PAF ECF acaba sendo um diferencial de mercado para quem consegue homologar. ;)

    Abraços
    Fabio Schunig

    terça-feira, 4 de setembro de 2012 14:01
  • Bom dia Geovani


    não leve a mal quando disse que você não convenceu. Foi só o jeito de falar.
    Não levei a mal não. Estamos aqui para nos ajudar ;)

    Abraços
    Fabio Schunig

    terça-feira, 4 de setembro de 2012 14:02

  • Valeu Fábio Schunig!

    1) Para o Registro E1 eu tenho que guardar uma data e hora do estoque da abertura do dia?
    Sim. É preciso guardar em alguma tabela a data de fechamento do estoque (ou abertura do dia, depende de como funciona teu sistema).
    Inclusive, no Bloco VII, existem testes que alteram essa data.

    Eu já possuo uma tabela que armazena a data e hora do estoque no fim do dia (fechamento), mas acho que não posso usar pois pelo que entendi no teste preciso ter a data e hora na abertura do dia (na emissão do primeiro documento fiscal ou não fiscal). Ou seja, pelo visto terei de criar uma nova só para isso... hunpf.

    Concordas?

    2) Para o Registro E2 qual quantidade eu tenho que mostrar, a corrente (atual)? Ou também terei de guardar a quantidade de estoque no momento da atualização da Data e Hora mencionada no Registro E1 e mostrar no arquivo a quantidade no momento da abertura do dia?
    Sempre o saldo que estava no fechamento/abertura.
    Mais um vez, existem testes que verificam se o saldo no arquivo de estoque é modificado ao emitir cupons e afins.

    Sério? Pensei que eles quisessem testar a quantidade no estoque corrente. Mas se entendi bem, quando você menciona "arquivo de estoque", você se refere ao estoque "congelado" na abertura do dia, logo ao emitir cupons tal estoque não pode ser alterado. Entendi certo?


    terça-feira, 4 de setembro de 2012 19:41
  • Boa tarde

    Ou seja, pelo visto terei de criar uma nova só para isso... hunpf. Concordas?
    Sim, foi o que fizemos aqui também. Criamos uma data de abertura do dia, que é atualizada ao tirar o 1º cupom do dia.

    Sério? Pensei que eles quisessem testar a quantidade no estoque corrente. Mas se entendi bem, quando você menciona "arquivo de estoque", você se refere ao estoque "congelado" na abertura do dia, logo ao emitir cupons tal estoque não pode ser alterado. Entendi certo?
    Sim, é isso mesmo. Tem que ser o saldo do último fechamento.

    Abraços
    Fabio Schunig

    segunda-feira, 10 de setembro de 2012 22:06
  • Pô Fábio obrigadão, não sabes como tens  me ajudado, porque a empresa na qual homologamos a primeira versão não se pronuncia.

    Pra fechar esta minha dúvida, um último detalhe:

    b) a quantidade de mercadorias em estoque atualizada na abertura do dia, considerando abertura do dia o momento em que o primeiro documento (fiscal ou não fiscal) é impresso por um ECF no estabelecimento. 

    Pergunto:

    A Leitura X, é considerada um "Documento Não Fiscal" ou "Fiscal"? Porque no meu sistema e acho que é padrão, ao Abrir o dia é emitida uma Leitura X e eu estava pensando em atualizar a data e estoque neste momento, após a Leitura X, mas pra isso preciso saber se ela se encaixa em Documento Fiscal ou Não Fiscal, conforme solicitado na alínea "b".

    terça-feira, 11 de setembro de 2012 02:07
  • Fabio,

    No caso do teste 107 que pede para emitir a redução z e após colocar a impressora em modo de intervenção e voltar sem alterar a data da impressora para continuação dos testes, ocasionando duas ou mais reduções com a mesma data. No momento da homologação eles trabalham dessa forma? 

    Obrigado.

    quarta-feira, 12 de setembro de 2012 20:46
  • Bom dia

    A Leitura X, é considerada um "Documento Não Fiscal" ou "Fiscal"? Porque no meu sistema e acho que é padrão, ao Abrir o dia é emitida uma Leitura X e eu estava pensando em atualizar a data e estoque neste momento, após a Leitura X, mas pra isso preciso saber se ela se encaixa em Documento Fiscal ou Não Fiscal, conforme solicitado na alínea "b".
    Antigamente era padrão tirar uma leitura X no começo do dia. Com os ECFs novos (MFD) não é mais obrigatório.
    Não sei te dizer se a leitura X é fiscal ou não fiscal. Mas, se teu sistema emite ela obrigatoriamente em todo inicio de dia, seria uma boa hora para atualizar essa data sim.
    Aqui atualizamos somente antes de emitir o cupom fiscal.

    Abraços
    Fabio Schunig

    segunda-feira, 17 de setembro de 2012 13:37
  • Bom dia

    No caso do teste 107 que pede para emitir a redução z e após colocar a impressora em modo de intervenção e voltar sem alterar a data da impressora para continuação dos testes, ocasionando duas ou mais reduções com a mesma data. No momento da homologação eles trabalham dessa forma?
    Tanto no teste 107, bem como em outros testes do Bloco VII, o roteiro não é seguido de forma literal, pois seria mais demorado e não seria prático de fazer.
    Na última homologação, nós gerados os dados uma vez apenas, e geramos várias cópias da base de dados. Então os testes são feitos, e a cada teste, é utilizada uma cópia da base do estado "original" dos dados.

    Abraços
    Fabio Schunig

    segunda-feira, 17 de setembro de 2012 13:43
  • R02 - Data do movimento X Data de emissão


    Olá,

    alguém sabe me dizer qual a diferença entre os campos 09 e 10, Data do movimento e Data de emissão respectivamente, do Registro R02 (RELAÇÃO DE REDUÇÕES Z)?

    Att,

    Rafael Santos
    quinta-feira, 11 de outubro de 2012 13:02
  • R02 - Data do movimento X Data de emissão


    Olá,

    alguém sabe me dizer qual a diferença entre os campos 09 e 10, Data do movimento e Data de emissão respectivamente, do Registro R02 (RELAÇÃO DE REDUÇÕES Z)?

    Att,

    Rafael Santos

    A data do movimento se refere a movimentação do dia da redução Z, e data da emissao é o data em que a Z foi emitida. Ja que voce pode ter movimentos no dia 17 por exemplo e emitir a Z somente no dia 20
    terça-feira, 16 de outubro de 2012 13:24