1.
1.
Processo de consolidação de cupom fiscal
Linx Farma ITEC > Processos > Processo de consolidação de cupom fiscal
Este documento tem o objetivo de mostrar os processos de validação, busca e escrita para a consolidação do cupom fiscal.
Click here to expand... PROCESSAR NA PDV_VD_CUPONS
Processar na PDV_VD_CUPONS
Valida se o cupom fiscal existe no SQL do cliente 1. Se não existir o cupom, insira na [PDV_VD_CUPONS]
- Caso o banco retorne algum erro, a aplicação irá reconhecer e apresentar no log;
2. Se existir, atualiza a [PDV_VD_CUPONS]
- Caso o banco retorne algum erro, a aplicação irá reconhecer e apresentar no log;
Click here to expand... PROCESSAR CUPOM FISCAL
Processar cupom fiscal
1. Valida a filial por CNPJ na [PRC_FILIAL]
Caso não retorne registro e lançado uma exceção: “Filial não encontrada”
2. Valida se o caixa esta desbloqueado para movimentar
Caso o caixa esteja bloqueado, é retornado uma mensagem: “FECHAMENTO DE CAIXA BLOQUEADO PARA ALTERACAO”
3. Valida se no cupom tem NFCE
Clique aqui para expandir...
3.1 Valida se a flag NFCE é igual a 1;
Valida serie da NFCE na [EST_NF_SERIE]
Se não existir, a aplicação retorna a seguinte exceção: “SERIE NFCE NÃO EXISTE”
Valida se a serie NFCE e valida para o caixa;
Se não existir, a aplicação retorna a seguinte exceção: “SERIE NFCE NÃO EXISTE PARA ESTE CAIXA”
4. Valida se o cupom fiscal já existe no SQL do cliente na [PDV_VD]
5. Valida se o resultado acima retornou algum dado
Clique aqui para expandir...
Click here to expand... PROCESSAR CUPOM FISCAL 5.1 Caso não exista no SQL
5.1.1 Valida o cupom Fiscal
1º. Valida se veio a Filial no cupom fiscal
Caso não, retorna à exceção “CUPOM FISCAL – CODIGO DA FILIAL NÃO INFORMADO”
2º. Valida se veio o numero ECF no cupom fiscal
Caso não, retorna à exceção “CUPOM FISCAL – ECF ZERADO”
3º. Valida se veio o numero do caixa no cupom fiscal
Caso não, retorna à exceção “CUPOM FISCAL – CODIGO DE CAIXA(PDV) ZERADO (0)”
4º. Valida se o cupom não é cancelado
4.1 Valida se veio no cupom itens e valor liquido da venda
Caso não, retorna à exceção “CUPOM FISCAL – DOCUMENTO NÃO POSSUI ITENS”
4.2 Valida se veio no cupom a forma de pagamento
Caso não, retorna à exceção “CUPOM FISCAL – DOCUMENTO NÃO POSSUI RECIBOS”
5º. Valida o cliente Clique aqui para expandir...
5.1 Caso o cliente não seja identificado e retornando uma exceção 5.2 Valida o tipo de pagamento crediário
Caso venha os dados do pagamento e retornado a seguinte exceção “CLIENTE – MODALIDADE DE PAGAMENTO NÃO PERMITE CONSUMIDOR FINAL”
5.3 Busca o consumidor final da filial
Caso haja algum erro de Banco de Dados, retorna à exceção “CLIENTE – ERRO BANCO DE DADOS – CONSULTA CONSUMIDOR FINAL.”
Exceção caso não encontre dados do consumidor final “CLIENTE – CONSUMIDOR FINAL NÃO DEFINIDO”
5.4 Valida se no cupom o cliente é conveniado
Valida se os dados do convenio veio preenchido
- Caso esteja vazio, retorna à exceção “CLIENTE – CODIGO DO CONVENIO NÃO INFORMADO”
Busca conveniado pelo código de cliente
- Caso haja algum erro de Banco de Dados, retorna à exceção “CLIENTE – ERRO BANDO DE DADOS – CONSULTA CONVENIADO POR CODIGO DE CLIENTE.”
- Exceção caso não retorne dados do conveniado “CLIENTE – NÃO POSSUI VINCULO COM ESTE CONVENIO”
6º. Valida o Rateio de Descontos
Executa a regra de diferença de desconto Rateio
- Caso o resultado for diferente de 0, atualiza o rateio Descontos
7º. Valida se no cupom existe orçamento Clique aqui para expandir...
7.1 Valida se existe o orçamento no SQL
Inclui o Orçamento na [EST_ORC]
Inclui os itens do Orçamento na [EST_ORC_CPL]
Valida se veio no orçamento o orçamento do concorrente.
- Caso venha os dados insere na [EST_ORC_CPL_CONCOR]
Valida se no orçamento veio a receita - Caso venha os dados da receita.
- Verifica se o médico da receita existe no SQL. Caso não exista, e inserido na GLB_MEDICOS.
- Inclui a receita na [EST_ORC_GLB_MEDICO]
Caso ocorra algum erro no processo de inclusão do orçamento, receita e do médico, e retornado apenas a mensagem de erro da aplicação
8º. Caso o Orçamento exista, e processado novamente orçamento com as informações contidas no cupom fiscal
Caso houver algum erro no processamento ele retorna à exceção e processa o erro com os dados do cupom, gravando na [ADM_ERRO_PDV_VD_INTEGRACOES]
9º. Valida se o orçamento veio o código do orçamento
Se for nulo a informação, atribui o valor zero (0) ao código de orçamento [cdOrc]
10º. Caso não exista orçamento
Atribui zero (0) ao código de orçamento.
11º. Valida se o cupom contem pagamento do tipo crediário Caso exista, é guardado o valor para ser inserido.
12º. Valida o valor do convenio e o código de convenio
Caso o valor do convenio seja maior que zero, e o código do convenio for igual à zero - Retorna a exceção “CONVENIO NÃO DEFINIDO”
13º. Incluir Cupom [PDV_VD]
Clique aqui para expandir...
13.1 Valida se existe itens no cupom fiscal
Caso exista, e feito a busca de parâmetros dos itens nas tabelas [EST_PROD _CPL, EST_PROD, EST_PROD_PRECO, EST_PROD_CPL_TRIB_EST]
Inclui os itens na [PDV_VD_IT]
Verifica se o item do cupom cote lote
- Caso exista e feito o vinculo do lote na [PDV_VD_IT_LOTE]
- É feito o update na [EST_PROD_CPL_LOTE], diminuindo a quantidade de lote.
14º. Valida se contem NFCE no cupom
Caso exista, validar se a autorização NFCE e igual a vazio, caso seja, atribuir ao status valido igual a 2, se não igual a 1.
15º. Valida se o cupom contem Cancelamento de NFCE
Caso exista, atribuir valores ao NFCE com os valores que veio no cupom
16º. Incluir NFCE na [PDV_VD_NFCE]
Em caso de erro, e retornado uma exceção “CUPOM FISCAL – ERRO AO VINCULAR VENDA A NFCE”
17º. Vincula o NFCE com a venda
17.1 Valida se contem NFCE ou Cancelamento de NFCE
Busca pela NFCE da venda na [PDV_VD_PDV_VD_NFCE].
- Caso não exista é feita a inserção na [PDV_VD_PDV_VD_NFCE].
18º. Valida se existe orçamento e se o código de orçamento e maior que zero.
Caso exista, e feito o vinculo da venda com o orçamento na [PDV_VD_EST_ORC].
- Se houver erro, é retornado à exceção “ORCAMENTO – ERRO AO VINCULAR VENDA AO ORCAMENTO.”
19º. Cadastro de procedimento de auditoria na [PDV_VD_PROCD_AUDIT]
20º. Valida se existe dados na flag NFCE
20. 1 Caso exista, validar se a flag NFCE e igual a 1 Valida se existe NFCE
- Se não existir e feito a inclusão na [PDV_VD_NFCE_NAO_ENCONTRADO]
21º. Registrar saída do estoque [UPDATE] – [EST_PROD_CPL].
22º. Receber -> Gravar o pagamento de acordo com o tipo de pagamento.
Clique aqui para expandir...
22.1 Recebimento do tipo crediário
Lançar crediário na [RC_CREDIARIO_PARC]
Atualiza o saldo do crediário executando a procedure [P_ATUALIZA_SALDO_CREDIARIO]
Gera a Rc crediário fechamento executando a procedure [P_GERA_RC_CREDIARIO_FECHA]
22.2 Recebimento do tipo cartão Insere na [PDV_VD_TEF]
- Caso ocorra erro retorna à exceção “CARTÃO – ERRO AO LANCAR CARTAO”
22.3 Recebimento do tipo cheque
Percorre a lista de cheques onde para cada cheque e feito a validação se existe a filial na [PRC_FILIAL], e é inserido na [CHQ_EMI].
É lançado os cheques na [PDV_VD_CHQS].
Insere o emitente na [CHQ_EMI]
Lançar lote dos cheques
- Valida a conta padrão na [PRC_GRP_ECON_PRC_FILIAL, BC_CONTAS, BC_CONTAS_PRC_GRP_ECON] se existe.
=> Caso exista e atualizado a conta padrão do cheque.
= > Lança o lote de cheque na [CHQ_LANC]
- Lança controle bancário na [BC_LANC]
22.4 Recebimento do tipo NCC
Insere na [PDV_VD_DEV_NCC_PDV_VD].
22.5 Recebimento do tipo PBM Valida se existe dados PBM
- Valida se existe código de autorização
=> Se não existir, lança a exceção “PBM – NUMERO DE AUTORIZAÇÃO DE PBM INVALIDO.”
- Valida a autorização do PBM (cdIt).
= > Se não existir, lança a exceção “PBM – AUTORIZACAO DE PBM NÃO POSSUI LISTA DE PRODUTOS AUTORIZADOS.”
- Percorre a lista de itens do cupom para validar se o código de produto da PBM e código do produto dos itens do cupom são iguais a autorização (cdIt)
=> Caso seja, os parâmetros dos itens são gravados em um objeto.
=> É gravado as informações em uma lista, para lançar a lista de PBM na [PDV_VD_IT_VD_PBM]
22.6 Recebimento do tipo convenio.
Valida se o código de convenio não é nulo
- Valida se o código de convenio e maior que zero (0)
=> Caso seja maior que zero (0). Lançar parcelas do convenio.
=> Validar a quantidade de parcelas do convenio
=> Percorrer as parcelas subtraindo o total de parcela pelo valor da parcela
=> Validar se existe o convenio na [RC_VD_CONV]
=>Validar se o código CTR e nulo
=> Caso seja, validar quantidade de parcelas, se for igual a 1, e gravado a quantidade de dias prorrogados do convenio.
=> Se não, adicionar o mês menos a parcela menos 1
=> Inserir convenio na [RC_VD_CONV].
=> Inserir link do convenio na [PDV_VD_RC_VD_CONV].
=> Caso o código CTR não seja nulo, apenas inserir o link na [PDV_VD_RC_VD_CONV]
=> Atualizar saldo do convenio, executando a procedure [P_ATUALIZA_SALDO_CONVENIADO]
22.7 Recebimento tipo vale compra
- Inserir na [PDV_VD_RC_CLI_FIDELI_VALE_COMPRA]
= > No caso de erro, retorna à exceção
23º. Caso o pagamento for nulo Valida se o valor em dinheiro é nulo
- Caso seja nulo, retorna uma exceção “RECEBER – PAGAMENTO NÃO INFORMADO”.
24º. Incluir receita dos itens Clique aqui para expandir...
- Verifica na tabela [GLB_MEDICOS], se o médico existe no SQL
=> Caso não exista, e feito a inserção na tabela [GLB_MEDICOS].
- Verifica o código de vendedor
=> Se o vendedor não existir no SQL e gravado o código 1 para o código de vendedor.
- Inclui itens da receita na tabela [PDV_VD_IT_REC]
- No caso de erro e processado o erro e gravado na tabela [ADM_ERRO_PDV_VD_INTEGRACOES]
- Deleta os cupons pendentes na [PDV_CONSLD_VD_CUPOM_PENDENCIA]
25º. Vincular venda com televendas Verificar se o orçamento e diferente de nulo Clique aqui para expandir...
- Verificar se o numero do pedido do televendas e diferente de nulo
=> Valida se o numero do pedido do televendas e maior que zero (0)
Vincula a venda com o televendas na [TELE_ORC_ETAPA_PDV_VD]
Em caso de erro, retorna à exceção “CUPOM FISCAL – ERRO AO VINCULAR VENDAS COM O TELEVENDAS”
26º. Buscar cliente padrão nas tabelas [RC_CLI, PRC_FILIAL, PRC_EMP_CONFIG], o resultado da consulta retorna um inteiro Clique aqui para expandir...
- Caso o resultado for maior que um (1), lançar os pontos fidelidade.
=> Validar se é para debitar pontos
Caso for para debitar, inserir na tabela [PDV_VD_IT_FIDELI_CARTAO], dividindo o total de itens com a quantidades de pontos fidelidade Caso não inserindo na tabela [PDV_VD_IT_FIDELI_CARTAO], multiplicando a quantidade de item com a quantidade de pontos fidelidade.
27º. Atualizar verba de desconto [UPDATE] – [PRC_FILIAL_VERBA_DESC]
- Em caso de erro, retorna à exceção “Cupom Fiscal - Erro ao atualizar desconto de verba”
28º. Fazer o update na data de consolidação - [UPDATE]-[PRC_FILIAL_CONSD_ULT]
29º. Cupom Fiscal processado com sucesso
6. Se o cupom existir no SQL
Clique aqui para expandir...
6.1 Validar status do cupom fiscal na tabela [PDV_VD], a consulta retorna o status do cupom se está cancelado ou não, se retornar 1 o cupom está cancelado, se retornar 0 o cupom não está cancelado.
a. Caso retorne zero (0)
1º Validar cupom fiscal existente - Valida se o status do cupom e igual a 0
=> Valida o cupom fiscal
Valida se veio a Filial no cupom fiscal
Caso não, retorna à exceção “CUPOM FISCAL – CODIGO DA FILIAL NÃO INFORMADO”
Valida se veio o número ECF no cupom fiscal
• Caso não, retorna à exceção “CUPOM FISCAL – ECF ZERADO”
Valida se veio o número do caixa no cupom fiscal
• Caso não, retorna à exceção “CUPOM FISCAL – CODIGO DE CAIXA(PDV) ZERADO (0)”
Valida se veio no cupom itens e valor líquido da venda
• Caso não, retorna à exceção “CUPOM FISCAL – DOCUMENTO NÃO POSSUI ITENS”
Valida se veio no cupom a forma de pagamento
• Caso não, retorna à exceção “CUPOM FISCAL – DOCUMENTO NÃO POSSUI RECIBOS”
Soma a diferença total de itens no cupom
• Validar se o valor liquido do cupom não veio zerado
Caso venha zerado, gravar a soma do total de itens do cupom
• Validar se a soma dos itens e menor que 0.01.
Marcar o cupom como cancelado
Valida o cliente
Caso o cliente não seja identificado e retornando uma exceção Valida o tipo de pagamento crediário
Caso venha os dados do pagamento e retornado a seguinte exceção “CLIENTE – MODALIDADE DE PAGAMENTO NÃO PERMITE CONSUMIDOR FINAL”
Busca o consumidor final da filial
Caso haja algum erro de Banco de Dados, retorna à exceção “CLIENTE – ERRO BANDO DE DADOS – CONSULTA CONSUMIDOR FINAL.”
Exceção caso não encontre dados do consumidor final “CLIENTE – CONSUMIDOR FINAL NÃO DEFINIDO”
Valida se no cupom o cliente e conveniado Valida se os dados do convenio veio preenchido
Caso esteja vazio, retorna à exceção “CLIENTE – CODIGO DO CONVENIO NÃO INFORMADO”
Busca conveniado pelo código de cliente
Caso haja algum erro de Banco de Dados, retorna à exceção “CLIENTE – ERRO BANDO DE DADOS – CONSULTA CONVENIADO POR CODIGO DE CLIENTE.”
Exceção caso não retorne dados do conveniado “CLIENTE – NÃO POSSUI VINCULO COM ESTE CONVENIO”
Valida o Rateio de Descontos
Executa a regra de diferença de desconto Rateio
•
Caso o resultado for diferente de 0, atualiza o rateio Descontos
=> Valida se existe orçamento no cupom fiscal
Valida se no cupom existe orçamento Valida se existe o orçamento no SQL
• Inclui o Orçamento na [EST_ORC]
Inclui os itens do Orçamento na [EST_ORC_CPL]
Valida se veio no orçamento o orçamento do concorrente.
Caso venha os dados insere na [EST_ORC_CPL_CONCOR]
Valida se no orçamento veio a receita Caso venha os dados da receita.
Verifica se o médico da receita existe no SQL. Caso não exista, e inserido na GLB_MEDICOS.
Inclui a receita na [EST_ORC_GLB_MEDICO]
• Caso ocorra algum erro no processo de inclusão do orçamento, receita e do médico, e retornado apenas a mensagem de erro da aplicação
Grava o novo numero de orçamento que é gerado no ato de inserção, para atualizar o vinculo do orçamento com o cupom fiscal Faz update nos dados do cupom já gravado na [PDV_VD]
•
• Deleta os itens da venda para inserir novamente, executando a procedore [P_REMOVE_PDV_VD_IT]
• Percorre a lista de itens, adicionando os parâmetros que veio no cupom fiscal.
Busca os itens na [PDV_VD_IT]
• Caso não exista, é feita a busca de parâmetros nas tabelas [EST_PROD_CPL, (INNER JOIN) -> EST_PROD, (LEFT JOIN) -> EST_PROD_PRECO, (LEFT JOIN) ->
EST_PROD_CPL_TRIB_EST].
Gravar os parâmetros na [PDV_VD_IT]
Registrar a saída de estoque na [EST_PROD_CPL]
Percorrer a lista de receita
Validar se a receita tem o código do médico. Caso não tenha, gravar os dados que estão no cupom.
Verificar se o médico já existe na base SQL.
Caso não exista, incluir na [GLB_MEIDCOS]
Verificar se existe o vendedor na base do SQL [FP_FUNC]
Se não existir, gravar o código padrão como 1
Validar se os itens da receita existem na [PDV_VD_IT_REC]
Se não existir incluir receita na [PDV_VD_IT_REC]
Se existir apenas aplica o update na [PDV_VD_IT_REC]
=> Valida se existe NFCE no SQL na tabela [PDV_VD_NFCE]
Valida se cotem NFCE no cupom
Caso exista, validar se a autorização NFCE e igual a vazio, caso seja, atribuir ao status valido igual a 2, se não igual a 1.
Valida se o cupom contem Cancelamento de NFCE
Caso exista, atribuir valores ao NFCE com os valores que veio no cupom
Incluir NFCE na [PDV_VD_NFCE]
Em caso de erro, e retornado uma exceção “CUPOM FISCAL – ERRO AO VINCULAR VENDA A NFCE”
Vincula o NFCE com a venda na
Valida se contem NFCE ou Cancelamento de NFCE Busca pela NFCE da venda na [PDV_VD_PDV_VD_NFCE].
Caso não exista é feita a inserção na [PDV_VD_PDV_VD_NFCE].
Valida se existe orçamento e se o código de orçamento e maior que zero.
=>
Caso exista, e feito o vínculo da venda com o orçamento na [PDV_VD_EST_ORC].
Se houver erro, é retornado à exceção “ORCAMENTO – ERRO AO VINCULAR VENDA AO ORCAMENTO.”
Cadastro de procedimento de auditoria na [PDV_VD_PROCD_AUDIT]
Valida se existe dados na flag NFCE
Receber -> Gravar o pagamento de acordo com o tipo de pagamento.
=>
Recebimento do tipo crediário
Lançar crediário na [RC_CREDIARIO_PARC]
Atualiza o saldo do crediário executando a procedure [P_ATUALIZA_SALDO_CREDIARIO]
Gera a Rc crediário fechamento executando a procedure [P_GERA_RC_CREDIARIO_FECHA]
Recebimento do tipo cartão Insere na [PDV_VD_TEF]
Caso ocorra erro retorna à exceção “CARTÃO – ERRO AO LANCAR CARTAO”
Recebimento do tipo cheque
Percorre a lista de cheques onde para cada cheque e feito a validação se existe a filial na [PRC_FILIAL], e é inserido na [CHQ_EMI].
É lançado os cheques na [PDV_VD_CHQS].
Insere o emitente na [CHQ_EMI]
Lançar lote dos cheques
Valida a conta padrão na [PRC_GRP_ECON_PRC_FILIAL, BC_CONTAS, BC_CONTAS_PRC_GRP_ECON] se existe.
Caso exista e atualizado a conta padrão do cheque.
Lança o lote de cheque na [CHQ_LANC]
Lança controle bancário na [BC_LANC]
Recebimento do tipo NCC
Insere na [PDV_VD_DEV_NCC_PDV_VD].
Recebimento do tipo PBM
Valida se existe dados PBM
Valida se existe código de autorização
Se não existir, lança a exceção “PBM – NUMERO DE AUTORIZAÇÃO DE PBM INVALIDO.”
Valida a autorização do PBM (cdIt).
Se não existir, lança a exceção “PBM – AUTORIZACAO DE PBM NÃO POSSUI LISTA DE PRODUTOS AUTORIZADOS.”
Percorre a lista de itens do cupom para validar se o código de produto da PBM e código do produto dos itens do cupom são iguais a autorização (cdIt)
Caso seja, os parâmetros dos itens são gravados em um objeto.
É gravado as informações em uma lista, para lançar a lista de PBM na [PDV_VD_IT_VD_PBM]
Recebimento do tipo convenio.
Valida se o código de convenio não é nulo
Valida se o código de convenio e maior que zero (0) Caso seja maior que zero (0). Lançar parcelas do convenio.
Validar a quantidade de parcelas do convenio
Percorrer as parcelas subtraindo o total de parcela pelo valor da parcela Validar se existe o convenio na [RC_VD_CONV]
Validar se o código CTR e nulo
Caso seja, validar quantidade de parcelas, se for igual a 1, e gravado a quantidade de dias prorrogados do convenio.
Se não, adicionar o mês menos a parcela menos 1 Inserir convenio na [RC_VD_CONV].
Inserir link do convenio na [PDV_VD_RC_VD_CONV].
Caso o código CTR não seja nulo, apenas inserir o link na [PDV_VD_RC_VD_CONV]
Atualizar saldo do convenio, executando a procedure [P_ATUALIZA_SALDO_CONVENIADO]
Recebimento tipo vale compra
Inserir na [PDV_VD_RC_CLI_FIDELI_VALE_COMPRA]
No caso de erro, retorna à exceção Caso o pagamento for nulo Valida se o valor em dinheiro é nulo
Caso seja nulo, retorna uma exceção “RECEBER – PAGAMENTO NÃO INFORMADO”.
Vincular venda com televendas
=>
Verificar se o orçamento e diferente de nulo
Verificar se o número do pedido do televendas e diferente de nulo Valida se o número do pedido do televendas e maior que zero (0) Vincula a venda com o televendas na [TELE_ORC_ETAPA_PDV_VD]
Em caso de erro, retorna à exceção “CUPOM FISCAL – ERRO AO VINCULAR VENDAS COM O TELEVENDAS”
Deletar os erros do cupom na tabela [ADM_ERRO_PDV_VD_INTEGRACOES]
=>
Alterar a data de consolidação na [UPDATE]-[PRC_FILIAL_CONSD_ULT]
=>
Valida se existe dados na flag NFCE
=>
Caso exista, validar se a flag NFCE e igual a 1 Valida se existe NFCE
Se não existir e feito a inclusão na [PDV_VD_NFCE_NAO_ENCONTRADO]
b. Caso o status do cupom seja diferente de zero (0), no caso cancelado - Verificar as parcelas
1º. Buscar recebimento de convenio na tabela [PDV_VD_RC_VD_CONV]
Caso exista parcelas, cancelar, executando a atualização dos dados [UPDATE] – [RC_VD_CONV]
2º. Buscar o código CTR do pagamento do tipo Crediário na [RC_CREDIARIO_PARC_PDV_VD], gravar o resultado na variável [cdDoc], do cupom Fiscal.
3º. Validar se o código de documento (cdDoc) e diferente de zero (0).
Executar a atualização dos dados [UPDATE] – [RC_CREDIARIO_PARC].
4º. Executar a atualização dos dados inseridos no cupom fiscal [UPDATE] – [PDV_VD]
c. Deletar os cupons pendentes para serem consolidados na [PDV_CONSLD_VD_CUPOM_PENDENCIA]
d. CUPOM FISCAL RECONSOLIDADO COM SUCESSO.