Jump to content
Fivewin Brasil

Ex RED Z BEMA Pendente - Info


oziel

Recommended Posts

Colegas recebi esse email da Bematech - trata-se

da verificação se existe uma Redução Z pendente.

Está escrito em Delphi e VB - considero que dar para

fazer em FW - para que usa as Imp. Bematech.

Meus progr. em FWH estão voltados a área de RH, Psicologia Ocupacional e Controle de Bibliotecas.

Mas, espero que as dicas sirvam...

ATT

Oziel Lopes.

//----------------------------------------------------

Caro Partner e Desenvolvedor Bematech,

Nesta edição de nosso Flash Tip, estaremos tratando uma das situações de nossos ECFs e de grande importância dentro de qualquer aplicação de PDV, que é a verificação do status da Redução Z (RZ).

A verificação desse status é fundamental no momento em que a aplicação de PDV é iniciada, pois é com ela que podemos tratar e informar ao operador se a impressora fiscal está aguardando o fechamento do dia anterior (pendente de RZ), se já está preparada para realizar o movimento de vendas do dia ou se já houve RZ no dia.

Para essa verificação, usaremos duas funções da BemaFI32/BemaFI64.dll. São elas:

Bematech_FI_DataMovimento

Bematech_FI_DataHoraUltimaReducaoMFD

Bematech_FI_DataMovimento

Com essa função podemos obter o retorno referente à data do movimento atual da impressora fiscal.

Declaração em Delphi

function Bematech_FI_DataMovimento( Data: String ): Integer; StdCall; External ‘BEMAFI32.DLL’;

Uso em Delphi

(…)

for iConta := 1 to 7 do DataMovimento := DataMovimento + ‘ ‘;

iRetorno := Bematech_FI_DataMovimento( DataMovimento );

(…)

Declaração em Visual Basic

Public Declare Function Bematech_FI_DataMovimento Lib “BEMAFI32.DLL†(ByVal Data As String) As Integer

Uso em Visual Basic

(…)

DataMovimento = Space(7)

iRetorno = Bematech_FI_DataMovimento(DataMovimento)

(…)

Bematech_FI_DataMovimentoUltimaReducaoMFD

Com essa função podemos obter o retorno referente à data do movimento da última RZ emitida na impressora fiscal.

Declaração em Delphi

function Bematech_FI_DataMovimentoUltimaReducaoMFD( cData: String ): Integer; StdCall; External ‘BEMAFI32.DLL’;

Uso em Delphi

(…)

for iConta := 1 to 7 do cDataMovimento := cDataMovimento + ‘ ‘;

iRetorno := Bematech_FI_DataMovimentoUltimaReducaoMFD( cDataMovimento );

(…)

Declaração em Visual Basic

Public Declare Function Bematech_FI_DataMovimentoUltimaReducaoMFD Lib “BEMAFI32.DLL†(ByVal cData As String) As Integer

Uso em Visual Basic

(…)

cDataMovimento = space(7)

iRetorno = Bematech_FI_DataMovimentoUltimaReducaoMFD(cDataMovimento)

(…)

Agora que já conhecemos as duas funções, passamos a descrever como seus retornos devem ser tratados dentro da aplicação de PDV.

Em nossa análise, utilizamos a função de retorno da data do movimento da ultima redução Z primeiro (Bematech_FI_DataMovimentoUltimaReducaoMFD) e, em seguida, a função de retorno da data do movimento atual da impressora (Bematech_FI_DataMovimento). Para um melhor entendimento, usaremos as siglas:

DT_RZ = Data do movimento da última RZ.

DT_MOV = Data do movimento atual.

1º Caso:

DT_RZ = 00000 (ddmmaa) e DT_MOV = data atual

Neste caso, não houve movimento no dia anterior e a RZ referente já foi emitida.

OBS: Quando o retorno da data do movimento corresponde à data atual, isso indica que já houve registro de valor no dia na impressora fiscal.

2º Caso:

DT_RZ = data anterior e DT_MOV = data anterior

A RZ está pendente na impressora (ECF deve imprimir mensagem “Aguardando Redução Z†ao ser ligado).

OBS: Quando o retorno da data do movimento é a data atual, isso garante que no dia anterior houve ao menos um registro de valor na impressora fiscal.

3º Caso:

DT_RZ = data atual e DT_MOV = 000000 (ddmmaa)

Aqui temos a RZ já executada na impressora fiscal, ou seja, a RZ do dia atual já foi emitida não permitindo abrir o movimento, sendo que o ECF ficará bloqueado até a mudança do dia (00:00h).

4º Caso:

DT_RZ = 000000 (ddmmaa) e DT_MOV = 000000 (ddmmaa)

Neste caso, para analisar se a impressora fiscal está bloqueada ou se já teve a RZ do dia atual emitida, teremos que utilizar uma terceira função – a Bematech_FI_DataHoraReducao -, além da leitura da data do movimento atual (DT_MOV) e da ultima RZ (DT_RZ).

A função Bematech_FI_DataHoraReducao retorna duas strings com a data e com a hora de emissão da ultima RZ.

Quando a data da última RZ estiver zerada e a data do movimento também, podemos ter situações distintas, conforme explicamos abaixo:

RZ do dia anterior já emitida (DT_RZ) sem o registro de valor na impressora fiscal e dia atual (DT_MOV) ainda não iniciado;

Aqui, teremos o retorno da data correta de emissão da RZ, lendo a data de emissão da mesma, pela função Bematech_FI_DataHoraReducao.

RZ do dia atual (DT_RZ) já emitida sem registro de valor (DT_MOV).

Aqui, se a data retornada for igual a data atual temos o dia fechado, sem movimento de vendas bloqueando a impressora até a 00:00h.

Declaração em Delphi

function Bematech_FI_DataHoraReducao( Data: String; Hora: String ): Integer; StdCall; External ‘BEMAFI32.DLL’;

Uso em Delphi

(…)

for iConta := 1 to 7 do DataReducao := DataReducao + ‘ ‘;

for iConta := 1 to 7 do HoraReducao := HoraReducao + ‘ ‘;

iRetorno := Bematech_FI_DataHoraReducao( DataReducao, HoraReducao );

(…)

Declaração em Visual Basic

Public Declare Function Bematech_FI_DataHoraReducao Lib “BEMAFI32.DLL†(ByVal Data As String, ByVal Hora As String) As Integer

Uso em Visual Basic

(…)

DataReducao = Space(7)

HoraReducao = Space(7)

iRetorno = Bematech_FI_DataHoraReducao(DataReducao, HoraReducao)

(…)

Sendo assim, quando ambas as variáveis (DT_RZ e DT_MOV) tiverem o valor zerado, analisando a data e hora da ultima RZ, será possível identificar se podemos iniciar o movimento de valor na impressora fiscal ou se a mesma estará bloqueada pela RZ.

Esperamos que essa descrição detalhada das funções e também de como tratar seus retornos auxilie você na implementação desta rotina em sua aplicação de PDV.

Caso surjam dúvidas, estamos à disposição para esclarecê-las através de nossos canais de atendimento.

Um forte abraço e até o próximo Flash Tip.

André L. Schikovski

Equipe BSP – Bematech Software Partners

0800 644 7277

Email/MSN: andre.schikovski@bematech.com.br

Skype: suporte.andre.luiz

?cid=c7aa5a53b531c1ae&sc=photos

OZIEL LOPES

FW 22c - Clipper 5.3b - Workshop 4.0

FWH 6.12 Free - xHarbour 0.99.71 Simplex - BCC55 - Pelles C - xDev.

Editado por - oziel on 21/09/2011 11:20:52

Link to comment
Share on other sites

Colegas recebi esse email da Bematech - trata-se

da verificação se existe uma Redução Z pendente.

Está escrito em Delphi e VB - considero que dar para

fazer em FW - para que usa as Imp. Bematech.

Meus progr. em FWH estão voltados a área de RH, Psicologia Ocupacional e Controle de Bibliotecas.

Mas, espero que as dicas sirvam...

ATT

Oziel Lopes.

//----------------------------------------------------

Caro Partner e Desenvolvedor Bematech,

Nesta edição de nosso Flash Tip, estaremos tratando uma das situações de nossos ECFs e de grande importância dentro de qualquer aplicação de PDV, que é a verificação do status da Redução Z (RZ).

A verificação desse status é fundamental no momento em que a aplicação de PDV é iniciada, pois é com ela que podemos tratar e informar ao operador se a impressora fiscal está aguardando o fechamento do dia anterior (pendente de RZ), se já está preparada para realizar o movimento de vendas do dia ou se já houve RZ no dia.

Para essa verificação, usaremos duas funções da BemaFI32/BemaFI64.dll. São elas:

Bematech_FI_DataMovimento

Bematech_FI_DataHoraUltimaReducaoMFD

Bematech_FI_DataMovimento

Com essa função podemos obter o retorno referente à data do movimento atual da impressora fiscal.

Declaração em Delphi

function Bematech_FI_DataMovimento( Data: String ): Integer; StdCall; External ‘BEMAFI32.DLL’;

Uso em Delphi

(…)

for iConta := 1 to 7 do DataMovimento := DataMovimento + ‘ ‘;

iRetorno := Bematech_FI_DataMovimento( DataMovimento );

(…)

Declaração em Visual Basic

Public Declare Function Bematech_FI_DataMovimento Lib “BEMAFI32.DLL†(ByVal Data As String) As Integer

Uso em Visual Basic

(…)

DataMovimento = Space(7)

iRetorno = Bematech_FI_DataMovimento(DataMovimento)

(…)

Bematech_FI_DataMovimentoUltimaReducaoMFD

Com essa função podemos obter o retorno referente à data do movimento da última RZ emitida na impressora fiscal.

Declaração em Delphi

function Bematech_FI_DataMovimentoUltimaReducaoMFD( cData: String ): Integer; StdCall; External ‘BEMAFI32.DLL’;

Uso em Delphi

(…)

for iConta := 1 to 7 do cDataMovimento := cDataMovimento + ‘ ‘;

iRetorno := Bematech_FI_DataMovimentoUltimaReducaoMFD( cDataMovimento );

(…)

Declaração em Visual Basic

Public Declare Function Bematech_FI_DataMovimentoUltimaReducaoMFD Lib “BEMAFI32.DLL†(ByVal cData As String) As Integer

Uso em Visual Basic

(…)

cDataMovimento = space(7)

iRetorno = Bematech_FI_DataMovimentoUltimaReducaoMFD(cDataMovimento)

(…)

Agora que já conhecemos as duas funções, passamos a descrever como seus retornos devem ser tratados dentro da aplicação de PDV.

Em nossa análise, utilizamos a função de retorno da data do movimento da ultima redução Z primeiro (Bematech_FI_DataMovimentoUltimaReducaoMFD) e, em seguida, a função de retorno da data do movimento atual da impressora (Bematech_FI_DataMovimento). Para um melhor entendimento, usaremos as siglas:

DT_RZ = Data do movimento da última RZ.

DT_MOV = Data do movimento atual.

1º Caso:

DT_RZ = 00000 (ddmmaa) e DT_MOV = data atual

Neste caso, não houve movimento no dia anterior e a RZ referente já foi emitida.

OBS: Quando o retorno da data do movimento corresponde à data atual, isso indica que já houve registro de valor no dia na impressora fiscal.

2º Caso:

DT_RZ = data anterior e DT_MOV = data anterior

A RZ está pendente na impressora (ECF deve imprimir mensagem “Aguardando Redução Z†ao ser ligado).

OBS: Quando o retorno da data do movimento é a data atual, isso garante que no dia anterior houve ao menos um registro de valor na impressora fiscal.

3º Caso:

DT_RZ = data atual e DT_MOV = 000000 (ddmmaa)

Aqui temos a RZ já executada na impressora fiscal, ou seja, a RZ do dia atual já foi emitida não permitindo abrir o movimento, sendo que o ECF ficará bloqueado até a mudança do dia (00:00h).

4º Caso:

DT_RZ = 000000 (ddmmaa) e DT_MOV = 000000 (ddmmaa)

Neste caso, para analisar se a impressora fiscal está bloqueada ou se já teve a RZ do dia atual emitida, teremos que utilizar uma terceira função – a Bematech_FI_DataHoraReducao -, além da leitura da data do movimento atual (DT_MOV) e da ultima RZ (DT_RZ).

A função Bematech_FI_DataHoraReducao retorna duas strings com a data e com a hora de emissão da ultima RZ.

Quando a data da última RZ estiver zerada e a data do movimento também, podemos ter situações distintas, conforme explicamos abaixo:

RZ do dia anterior já emitida (DT_RZ) sem o registro de valor na impressora fiscal e dia atual (DT_MOV) ainda não iniciado;

Aqui, teremos o retorno da data correta de emissão da RZ, lendo a data de emissão da mesma, pela função Bematech_FI_DataHoraReducao.

RZ do dia atual (DT_RZ) já emitida sem registro de valor (DT_MOV).

Aqui, se a data retornada for igual a data atual temos o dia fechado, sem movimento de vendas bloqueando a impressora até a 00:00h.

Declaração em Delphi

function Bematech_FI_DataHoraReducao( Data: String; Hora: String ): Integer; StdCall; External ‘BEMAFI32.DLL’;

Uso em Delphi

(…)

for iConta := 1 to 7 do DataReducao := DataReducao + ‘ ‘;

for iConta := 1 to 7 do HoraReducao := HoraReducao + ‘ ‘;

iRetorno := Bematech_FI_DataHoraReducao( DataReducao, HoraReducao );

(…)

Declaração em Visual Basic

Public Declare Function Bematech_FI_DataHoraReducao Lib “BEMAFI32.DLL†(ByVal Data As String, ByVal Hora As String) As Integer

Uso em Visual Basic

(…)

DataReducao = Space(7)

HoraReducao = Space(7)

iRetorno = Bematech_FI_DataHoraReducao(DataReducao, HoraReducao)

(…)

Sendo assim, quando ambas as variáveis (DT_RZ e DT_MOV) tiverem o valor zerado, analisando a data e hora da ultima RZ, será possível identificar se podemos iniciar o movimento de valor na impressora fiscal ou se a mesma estará bloqueada pela RZ.

Esperamos que essa descrição detalhada das funções e também de como tratar seus retornos auxilie você na implementação desta rotina em sua aplicação de PDV.

Caso surjam dúvidas, estamos à disposição para esclarecê-las através de nossos canais de atendimento.

Um forte abraço e até o próximo Flash Tip.

André L. Schikovski

Equipe BSP – Bematech Software Partners

0800 644 7277

Email/MSN: andre.schikovski@bematech.com.br

Skype: suporte.andre.luiz

?cid=c7aa5a53b531c1ae&sc=photos

OZIEL LOPES

FW 22c - Clipper 5.3b - Workshop 4.0

FWH 6.12 Free - xHarbour 0.99.71 Simplex - BCC55 - Pelles C - xDev.

Editado por - oziel on 21/09/2011 11:20:52

Link to comment
Share on other sites

Obrigado pelo exemplo!

Acho ridículo não terem ainda uma função única para retornar o status do dia fiscal...

Algo como StatusDiaFiscal(@cVariavel,@cMensagem)

MsgAlert(cMensagem)//-- "Redução Z já emitida" / "Redução Z Pendente" / etc

If nVariavel = "0" //-- Dia Fiscal aberto

Elseif nVariavel = "1" //-- Z Pendente

Elseif nVariavel = "2" //-- Z Já emitida

Elseif nVariavel = "3" //-- X Pendente

end

sambomb.jpg

RCA Sistemas - Itaocara - RJ

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...