DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

PAF-ECF – Mesclando DAV’s para emissão de cupom fiscal

Informações sobre as mudanças do requisito VI do roteiro de homologação do PAF-ECF da versão 1.03 para 1.04 em diante.


Neste artigo vou comentar sobre algumas pequenas e importantes mudanças que ocorreram no roteiro de homologação do PAF-ECF, a partir da sua versão 1.04. No vídeo do curso do PAF-ECF na parte referente ao DAV, foi mostrada a forma usada na versão 1.03 do roteiro de homologação.

Vamos lá:

No ITEM 2, subitem C, pede que o CNPJ do estabelecimento emitente, seja devidamente consistido. E foi adicionado mais um tópico que pede para imprimir os dados, denominação ou nome, e o CNPJ ou CPF do destinatário, também devidamente consistido.

Para realizar esta consistência e bem simples, haja vista a grande disponibilidade de funções que podem ser encontradas na internet. Segue abaixo um destes modelos:

function VerificaCNPJ(fCNPJ: String): Boolean;

Var

d1, d4, xx, nCount, fator, resto, digito1, digito2: Integer;

Check: String;

begin

d1 := 0;

d4 := 0;

xx := 1;

for nCount := 1 to Length(fCNPJ) - 2 do

begin

if Pos(Copy(fCNPJ, nCount, 1), '/-.') = 0 then

begin

if xx < 5 then

begin

fator := 6 - xx;

end

else

begin

fator := 14 - xx;

end;

d1 := d1 + StrToInt(Copy(fCNPJ, nCount, 1)) * fator;

if xx < 6 then

begin

fator := 7 - xx;

end

else

begin

fator := 15 - xx;

end;

d4 := d4 + StrToInt(Copy(fCNPJ, nCount, 1)) * fator;

xx := xx + 1;

end;

end;

resto := (d1 mod 11);

if resto < 2 then

begin

digito1 := 0;

end

else

begin

digito1 := 11 - resto;

end;

d4 := d4 + 2 * digito1;

resto := (d4 mod 11);

if resto < 2 then

begin

digito2 := 0;

end

else

begin

digito2 := 11 - resto;

end;

Check := IntToStr(digito1) + IntToStr(digito2);

if Check <> Copy(fCNPJ, succ(Length(fCNPJ) - 2), 2) then

begin

Result := False;

end

else

begin

Result := True;

end;

end;

function VerificaCpf(fCPF: String): Boolean;

Var

d1, d4, xx, nCount, resto, digito1, digito2: Integer;

Check: String;

Begin

d1 := 0;

d4 := 0;

xx := 1;

for nCount := 1 to Length(fCPF) - 2 do

begin

if Pos(Copy(fCPF, nCount, 1), '/-.') = 0 then

begin

d1 := d1 + (11 - xx) * StrToInt(Copy(fCPF, nCount, 1));

d4 := d4 + (12 - xx) * StrToInt(Copy(fCPF, nCount, 1));

xx := xx + 1;

end;

end;

resto := (d1 mod 11);

if resto < 2 then

begin

digito1 := 0;

end

else

begin

digito1 := 11 - resto;

end;

d4 := d4 + 2 * digito1;

resto := (d4 mod 11);

if resto < 2 then

begin

digito2 := 0;

end

else

begin

digito2 := 11 - resto;

end;

Check := IntToStr(digito1) + IntToStr(digito2);

if Check <> Copy(fCPF, succ(Length(fCPF) - 2), 2) then

begin

Result := False;

end

else

begin

Result := True;

end;

end;

Já no ITEM 5, foram adicionadas as principais mudanças.

No item 5.1 solicita a gravação do CCF no pedido/orçamento que esta originando o DAV. Para esclarecer, CCF (Contador de Cupom Fiscal), é um dos diversos contadores que o ECF possui como, por exemplo, COO, CRZ, CRO, etc...

No item 5.2, é solicitado que o aplicativo disponha de opção para mesclar os DAV’s, ou seja, suponhamos que o cliente foi ao estabelecimento e realizou um orçamento em um determinado dia. Em outro dia, o mesmo cliente retorna e solicita um segundo orçamento contendo produtos diferentes do primeiro. Após isso, este cliente resolve efetivar a compra de alguns produtos contidos nestes orçamentos.

Neste caso o aplicativo deverá fornecer opção para que o vendedor selecione itens dos dois orçamentos, conforme solicitação do cliente e gere um terceiro orçamento/pedido.

Eu vejo para isso uma solução bem simples, que seria a criação de uma tela no aplicativo onde seria efetuado um filtro para selecionar os orçamentos realizados pelo cliente em uma determinada faixa de período, onde no primeiro grid seriam exibidos os orçamentos encontrados, e num outro grid, seriam exibidos os itens do respectivo orçamento.

Ainda nesta tela adiciona-se um componente ClientDataSet, para que seja criado uma tabela temporária apenas para armazenar os dados do item selecionado em cada orçamento.

Após confirmar os dados, o aplicativo apenas criaria o pedido a partir dos dados do cliente que já figura nos orçamentos anteriores, adicionando os itens selecionado no ClientDataSet.

Quaisquer dúvidas fiquem a vontade para postarem as perguntas.

 

Um abraço!





    6 COMENTÁRIOS

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.



William De Carvalho Brazilino
Segundo os homologadores a mesclagem tem que ser feita no módulo PAF,
caso seja mesclagem de PV (pré-vendas) é necessário imediatamente após a mesclagem
a impressão do cupom das PV originais e o seguinte cancelamento do cupom.

Outro detalhe é que não é permitido mesclar PV com Dav.

Abraços,

William C. Brazilino
[há +1 ano] - Responder

 

[autor] Luis Carlos Godinho

Olá Willian!

 

Eu não encontrei no texto do roteiro algo que indique que esta tela seja criada no modulo PAF, na realidade eu nunca vi nada se indica a quantidade de módulos do sistema, haja vista que no requisito IX pede para listar todos os executáveis que compõem o projeto. Mas se o pessoal da homologação te orientou desta forma, não vou dizer contrário, pois são eles quem dá a palavra final. Mas também não tem nada que impeça a criação desta tela no PAF. Veja abaixo o texto do roteiro versão 1.05:

 

5.2) dispor de função que permita mesclar as informações contidas em dois ou mais DAV para um novo DAV apenas com os itens desejados pelo cliente, não podendo ser informado mais do que um DAV por Cupom Fiscal.

 

A parte do texto que cita a informação de mesclar é relacionada ao DAV, e não tem haver com a pré-venda. As regras da pré-venda, são citadas no requisito V.

Abs!

[há +1 ano] - Responder
 

Cleiton Maciel
Luis, o que você faz com os DAVs que você selecionou para mesclar, exclui eles?
[há +1 ano] - Responder
 

[autor] Luis Carlos Godinho
Isso fica a critério do cliente. Se ele quizer ele apaga!

Abs!
[há +1 ano] - Responder
 

George Pinheiro Souza
Mais segundo o roteiro, eu vou ter que emitir o cupom e depos cancelar e nao posso exluir sem emitir o Cupom.
[há +1 ano] - Responder

 

[autor] Luis Carlos Godinho
Olá!

Não entendi sua pergunta. Se possivel passe-a novamente com mais detalhes.

Abs!
[há +1 ano] - Responder
 



Publicidade
Curso Online
Autor
Luis Carlos Godinho

Programador formado em 1995, pela ETEIT – Escola técnica da UNIVALE. Atualmente trabalhando com a plataforma Delphi. Tem se dedicado nos últimos anos, ao desenvolvimento de aplicações PAF-ECF, SPED fiscal e NFe.


Space do autor
Estatísticas
Favorito:
Comentários:
Feedback:
Utilidade:
0   0
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]


Este post está fechado. Saiba mais sobre a assinatura MVP!
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03