Integração DAV via Stored Procedure
Interface de Integração de Orçamento via Stored Procedure.
Índice
Conceito
O processo de integração de orçamentos (DAVs e Pré-vendas) via stored procedure serve para que sistemas parceiros similares ao Totall Order possam enviar DAVs para serem resgatadas pelo Commerce Checkout.
A partir da versão 01.08 do PAF-ECF (2011) passam a vigorar as seguintes regras para a retaguarda:
- Gravação do DAV no banco de dados deve ser de forma concomitante, ou seja a cada novo item inserido deve-se gravar no banco de dados.
- O DAV não pode ser impresso mais de uma vez.
- Após impresso o DAV não pode ser alterado.
- Não é permitir exclusão de itens de orçamento, podendo apenas cancelar os mesmos.
- Não permitir alterar a quantidade de um item.
- Os itens cancelados precisam ser enviados para o Checkout com um campo para definir que ele foi cancelado.
- Não será permitido incluir novos itens de DAV se o mesmo tiver algum item vendido.
As imagens abaixo ilustram a principal mudança de conceito. Antes o DAV poderia ser todo criado na retaguarda para depois ser passado ao banco de dados.
Agora, essas duas etapas se fundiram porque o DAV precisa ser o tempo todo gravado no banco.
A imagem abaixo ilustra o uso das stored procedures para enviar um pedido de venda para o banco de dados.
ENVIA_DAV
Método responsável pela inserção ou atualização de uma DAV ou Pré-venda. Quando o orçamento é novo ele não ficará disponível para ser vendido enquanto não for executado o método VALIDA_DAV. Caso alguma inconsistência seja verificada o método gerará exceção. Para PostgreSQL foi implementado como uma função que retorna o campo NUMPED. No Oracle deve-se chamar como Stored Procedure passando os valores por parâmetro e pegando o retorno no parâmetro NUMPED.
| Parâmetro | Significado | Tipo | Tamanho | Aceita Nulo | Default | Domínio | Coluna Retorno? |
|---|---|---|---|---|---|---|---|
| CODEXT | Código Externo | NUMBER | 15,0 | Sim | |||
| CODSER | Série Padrão para a Venda | CHAR | 2 | Sim | |||
| DOCNFP | Documento p/ NFP | VARCHAR2 | 15 | Sim | |||
| DATAPR | Data de aprovação | DATE | 7 | Sim | |||
| CODFIL | Filial | CHAR | 3 | ||||
| TIPPED | Tipo de Pedido/OS | CHAR | 1 | 'O' | O - DAV P - Pré-Venda |
||
| CLIEXT | Código externo do Cliente | VARCHAR | 20 | ||||
| VLRTOT | Valor Total | NUMBER | 12,2 | ||||
| VLRPAR | Valor da Parcela | NUMBER | 12,2 | ||||
| VLRDES | Valor do Desconto/Acréscimo | NUMBER | 12,2 | ||||
| QTDPAR | Qtd. de Parcelas | NUMBER | 5,0 | ||||
| FILFAT | Filial. End. Fatura | CHAR | 3 | ||||
| NUMFAT | Núm. End. Fatura | NUMBER | 4,0 | ||||
| FILENT | Filial. End. Entrega | CHAR | 3 | ||||
| NUMENT | Núm. End. Entrega | NUMBER | 4,0 | ||||
| FILCOB | Filial. End Cobrança | CHAR | 3 | ||||
| NUMCOB | Núm. End Cobrança | NUMBER | 4,0 | ||||
| DATVAL | Validade | DATE | 7 | ||||
| DATPRI | 1º Parcela | DATE | 7 | ||||
| APEVEN | Apelido Vendedor | VARCHAR | 10 | ||||
| PLANO | Plano | CHAR | 9 | ||||
| DESPRE | Descrição da Tabela de Preços (se nulo utiliza VAREJO) | VARCHAR | 30 | Sim | |||
| RESERV | Reserva? | VARCHAR2 | 1 | 'F' | F - Falso T - Verdadeiro |
||
| EMIDES | Frete pelo Emitente? | VARCHAR2 | 1 | 'F' | F - Falso T - Verdadeiro |
||
| PESLIQ | Peso Líquido | NUMBER | 12,2 | Sim | |||
| PESBRU | Peso Bruto | NUMBER | 12,2 | Sim | |||
| VLRSEG | Valor do Seguro | NUMBER | 12,2 | Sim | |||
| VLRFRE | Valor do Frete | NUMBER | 12,2 | Sim | |||
| SINAL | Sinal ou Entrada | NUMBER | 12,2 | Sim | |||
| OBSERV | Observações de venda | VARCHAR2 | 4000 | Sim | |||
| NUMBLO | Número do Bloco | VARCHAR2 | 8 | Sim | |||
| OBSORC | Observação Orçamento | VARCHAR2 | 4000 | Sim | |||
| DATSEG | 2º Parcela | DATE | 7 | Sim | |||
| APROVA | Tipo Aprovação | CHAR | 1 | 'A' | A - Aprovado E - Em Aprovação |
||
| APRCLI | Aprovação Cliente | CHAR | 1 | '1' | 1 - Aprovado A - Em Aberto 2 - Reprovado |
||
| PLACAS | Placa Veículo | VARCHAR2 | 7 | Sim | |||
| QTD_KM | Qtde KM | NUMBER | 7,0 | Sim | |||
| CODSEQ | Cód. Sequen. NSU | NUMBER | 22 | Sim | |||
| CODEMP | Código da Empresa da Retaguarda | NUMBER | 5 | (solicitar a Totall) | |||
| ASSINA | Assinatura do Registro | VARCHAR | 256 | Sim | |||
| NUMPED | Número da DAV ou Pré-Venda | CHAR | 8 | Sim | Sim | ||
| ORCIMP | Imprimiu? | VARCHAR | 1 | 'F' | F - Falso T - Verdadeiro |
ENVIAITEM_DAV
Método responsável pela inserção ou atualização de um item de DAV ou Pré-venda. Somente pode ser executado após ter sido incluso o DAV pelo método ENVIA_DAV. Caso alguma inconsistência seja verificada gerará exceção.
| Parâmetro | Significado | Tipo | Tamanho | Aceita Nulo | Default | Domínio | Coluna Retorno? |
|---|---|---|---|---|---|---|---|
| CODFIL | Filial da DAV | CHAR | 3 | ||||
| TIPPED | Tipo Pedido/OS | CHAR | 1 | 'O' | O - DAV
P - Pré-Venda |
||
| NUMPED | Número da DAV ou Pré-Venda | CHAR | 8 | ||||
| NUMITE | Item (número seqüencial por DAV) | NUMBER | 5,0 | ||||
| VLRCUS | Valor Total | NUMBER | 12,2 | ||||
| VLRPGT | Valor Total Sem Desc/Acrés | NUMBER | 12,2 | ||||
| QTDITE | Quantidade | NUMBER | 12,4 | ||||
| VLRITE | Vlr. Unitário | NUMBER | 14,4 | ||||
| VLRENT | Vlr. Unitário Sem desconto/Acrés. | NUMBER | 14,4 | ||||
| PROEXT | Código externo do Produto | VARCHAR | 20 | ||||
| PROMOC | Promoção | CHAR | 1 | 'N' | N - Não promocional no plano E - Promocional no plano Q - Promocional para qualquer plano |
||
| PREUNI | Preço Unitário | NUMBER | 12,2 | Sim | |||
| DESMUL | Sub-Estoque | VARCHAR | 30 | Sim | Nulo | ||
| OBSERV | Observação | VARCHAR2 | 4000 | Sim | |||
| PERIPI | % IPI Última Compra | NUMBER | 5,2 | Sim | |||
| ASSINA | Assinatura do Registro | VARCHAR | 256 | Sim | |||
| FLGEST | Situação do Item | CHAR | 1 | Sim | A - Aberto R - Reservado NULL - Sistema usa o que foi mandado na TT_ORC.RESERV |
CANCELAITEM_DAV
Método responsável por cancelar um item de DAV.
Caso não encontre o item ou o mesmo não possa ser cancelado gerará uma exceção.
| Parâmetro | Significado | Tipo | Tamanho | Aceita Nulo | Default | Domínio | Coluna Retorno? |
|---|---|---|---|---|---|---|---|
| CODFIL | Filial da DAV | CHAR | 3 | ||||
| TIPPED | Tipo Pedido/OS | CHAR | 1 | 'O' | O - DAV
P - Pré-Venda |
||
| NUMPED | Número da DAV ou Pré-Venda | CHAR | 8 | ||||
| NUMITE | Item (número seqüencial por DAV) | NUMBER | 5,0 |
VALIDA_DAV
Método responsável pela verificação do DAV e liberação para o Checkout. Realizando validações entre o DAV e seus itens. Caso a validação não gere exceção o DAV ficará disponível para ser resgatado na Venda. Caso alguma inconsistência seja verificada gerará exceção.
| Parâmetro | Significado | Tipo | Tamanho | Aceita Nulo | Default | Domínio | Coluna Retorno? |
|---|---|---|---|---|---|---|---|
| CODFIL | Filial da DAV | CHAR | 3 | ||||
| NUMPED | Número da DAV ou Pré-Venda | CHAR | 8 | ||||
| TIPPED | Tipo Pedido/OS | CHAR | 1 | 'O' | O - DAV
P - Pré-Venda |
CANCELA_DAV
Função responsável pelo cancelamento de uma DAV.
Obs.: Função não existente para Pré-Venda por obrigação do PAF. Caso não seja possível o cancelamento gerará exceção.
| Parâmetro | Significado | Tipo | Tamanho | Aceita Nulo | Default | Domínio | Coluna Retorno? |
|---|---|---|---|---|---|---|---|
| CODFIL | Filial da DAV | CHAR | 3 | ||||
| NUMPED | Número da DAV ou Pré-Venda | CHAR | 8 |
ASSINA_DAV
Método serve para gravar a coluna ASSINA da TT_ORC em caso de inclusão de um novo orçamento. Isto porque é necessário executar ENVIA_DAV para obter o NUMPED. E o NUMPED faz parte da assinatura.
| Parâmetro | Significado | Tipo | Tamanho | Aceita Nulo | Default | Domínio | Coluna Retorno? |
|---|---|---|---|---|---|---|---|
| CODFIL | Filial da DAV | CHAR | 3 | ||||
| NUMPED | Número da DAV ou Pré-Venda | CHAR | 8 | ||||
| TIPPED | Tipo Pedido/OS | CHAR | 1 | 'O' | O - DAV
P - Pré-Venda |
||
| ASSINA | Assinatura do Registro | VARCHAR | 256 | Sim |
Procedimentos para Assinatura
Os parceiros que mandam a assinatura da DAV (TT_ORC) e do item de DAV (TT_IOR) devem se responsabilizar por conferir se a assinatura atual da tabela está correta antes de enviar as alterações.
O PAF-ECF proíbe que se assine um registro adulterado.
Para não se preocupar com isso, pode-se usar o método [RegistraAcesso] (vide Integração de Banco via Rotinas de Importação).
Com esse método não é necessário utilizar o ASSINA_DAV e basta mandar null nos campos ASSINA.
Assinatura de DAV
1. Chamar a função conecta para o código da empresa parceira na Totall:
SELECT Conecta(:CodigoEmpresa, path_ttsegur) AS pConecta, path_ttsegur AS pPathSegur FROM tt_cfg
CodigoEmpresa:
0 - TOTALL
1 - INTERSYS
2 - ADVANCE
3 - SARAIVA
4 - MODERNA
5 - WALLIS
6 - BENNER
2. Gerar Hash:
pSenhaFixa: É uma constante de segurança enviada parceiro por e-mail.
pHashConexao := md5(pConecta || pSenhaFixa)
3. Enviar a DAV:
SELECT ENVIA_DAV(...) as pNumped FROM dual
ou
DECLARE BEGIN ENVIA_DAV(..., pNumped); END;
4. Gerar texto a ser criptografado:
SELECT ConcatenaORC(CODFIL,
TIPPED,
NUMPED,
NUMPED,
PED_EM,
VLRTOT,
CODEMP ,
COOORC ) as pTexto
FROM tt_orc
WHERE CODFIL = :CODFIL
AND TIPPED = :TIPPED
AND NUMPED = :NUMPED
É importante concatenar os campos da TT_ORC da forma indicada para garantir que os dados concatenados sejam idênticos aos gravados.
5. Assinar os dados da DAV:
SELECT AssinaTab('TT_ORC'
:pTexto
:pConecta IN NUMBER,
:pHashConexao IN VARCHAR2,
'',
:CodigoEmpresa,
path_ttsegur)
FROM tt_cfg;
6. Gravar Assinatura:
DECLARE
BEGIN
ASSINA_DAV(:CODFIL,
:NUMPED,
:TIPPED,
:ASSINA)
END;
ou
SELECT ASSINA_DAV(:CODFIL,
:NUMPED,
:TIPPED,
:ASSINA);
Assinatura de Item de DAV
1. Chamar a função conecta:
SELECT Conecta (:CodigoEmpresa, path_ttsegur) as pConecta, path_ttsegur as pPathSegur FROM tt_cfg
CodigoEmpresa: N - Empresa
2. Gerar Hash da mesma forma como foi feita na assinatura da DAV.
3. Gerar texto a ser criptografado:
SELECT ConcatenaIOR(:CODFIL,
:TIPPED,
:NUMPED,
:NUMITE,
:COOVEN,
:ECFVEN,
:QTDITE,
:VLRITE,
ROUND(:VLRPGT-:VLRCUS,2),
:VLRPGT,
:FLGEST,
:NUMITE
) as pTexto
FROM dual
Parâmetro COOVEN refere-se à coluna gravada pelo Checkout após venda. Deve-se passar null.
Parâmetro ECFVEN refere-se à coluna gravada pelo Checkout após venda. Deve-se passar null.
4. Assinar os dados do item:
SELECT AssinaTab('TT_IOR',
:pTexto,
:pConecta IN NUMBER,
:pHashConexao IN VARCHAR2,
'',
:CodigoEmpresa,
path_ttsegur)
FROM tt_cfg
5. Gravar Item da DAV.
Impressão de DAV
Não é permitido que o DAV/Pré-venda seja impresso mais de uma vez.
Com isso, quem quiser implementar a rotina de impressão deve se preocupar em mandar o parâmetro ORCIMP = 'T' no ENVIA_DAV.
No caso de uma tentativa de reimpressão o sistema deve apresentar a seguinte mensagem:
PAF Req VI item 11 - É vedada a reimpressão de DAV.
Alterações
Versão 5.2a
- Permitir informar lote no item.
Artigos Anteriores
| Versão do PAF-ECF | Versão do Banco de Dados |
|---|---|
| 2011 | Integração_DAV_via_Stored_Procedure&oldid=21578 5.0G |
| 2010 | 5.0F |
