Mudanças entre as edições de "Integração DAV via Stored Procedure"
Linha 1: | Linha 1: | ||
− | + | Interface de Integração de Orçamento via Stored Procedure (compatível com a versão PAF-ECF 2011): | |
+ | |||
+ | == 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. <BR/> | ||
+ | |||
+ | |||
+ | 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. | ||
+ | |||
+ | <gallery widths="280px" heights="180px" perrow="2"> | ||
+ | Imagem:Integracao-antes.PNG|Antes | ||
+ | Imagem:Integracao-depois.PNG|Depois | ||
+ | </gallery> | ||
+ | |||
+ | |||
+ | A imagem abaixo ilustra o uso das stored procedures para enviar um pedido de venda para o banco de dados. | ||
+ | |||
+ | [[Imagem:Pre-venda-2011.png|856px]] | ||
+ | |||
+ | == 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. | ||
{| cellpadding="6px" border=1 style="border:1px solid #C0C0C0; border-collapse:collapse;" | {| cellpadding="6px" border=1 style="border:1px solid #C0C0C0; border-collapse:collapse;" | ||
− | ! style="background:#efefef;" |'' | + | ! style="background:#efefef;" |''Parâmetro'' |
− | ! style="background:#efefef;" |'' | + | ! style="background:#efefef;" |''Significado'' |
− | ! style="background:#efefef;" |'' | + | ! style="background:#efefef;" |''Tipo'' |
+ | ! style="background:#efefef;" |''Tamanho'' | ||
+ | ! style="background:#efefef;" |''Aceita Nulo'' | ||
+ | ! style="background:#efefef;" |''Default'' | ||
+ | ! style="background:#efefef;" |''Domínio'' | ||
+ | ! style="background:#efefef;" |''Coluna Retorno?'' | ||
|- | |- | ||
− | | | + | ||CODEXT |
− | | | + | ||Código Externo |
− | | | + | ||NUMBER |
+ | ||15,0 | ||
+ | ||Sim | ||
+ | || | ||
+ | || | ||
+ | || | ||
|- | |- | ||
− | | | + | ||CODSER |
− | |5. | + | ||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<BR />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<BR />T - Verdadeiro | ||
+ | || | ||
+ | |- | ||
+ | ||EMIDES | ||
+ | ||Frete pelo Emitente? | ||
+ | ||VARCHAR2 | ||
+ | ||1 | ||
+ | || | ||
+ | ||'F' | ||
+ | ||F - Falso<BR />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<BR />E - Em Aprovação | ||
+ | || | ||
+ | |- | ||
+ | ||APRCLI | ||
+ | ||Aprovação Cliente | ||
+ | ||CHAR | ||
+ | ||1 | ||
+ | || | ||
+ | ||'1' | ||
+ | ||1 - Aprovado<BR />A - Em Aberto<BR />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<BR />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. | ||
+ | |||
+ | {| cellpadding="6px" border=1 style="border:1px solid #C0C0C0; border-collapse:collapse;" | ||
+ | ! style="background:#efefef;" |''Parâmetro'' | ||
+ | ! style="background:#efefef;" |''Significado'' | ||
+ | ! style="background:#efefef;" |''Tipo'' | ||
+ | ! style="background:#efefef;" |''Tamanho'' | ||
+ | ! style="background:#efefef;" |''Aceita Nulo'' | ||
+ | ! style="background:#efefef;" |''Default'' | ||
+ | ! style="background:#efefef;" |''Domínio'' | ||
+ | ! style="background:#efefef;" |''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<BR/>E - Promocional no plano<BR/>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<br />R - Reservado<br />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. | ||
+ | |||
+ | {| cellpadding="6px" border=1 style="border:1px solid #C0C0C0; border-collapse:collapse;" | ||
+ | ! style="background:#efefef;" |''Parâmetro'' | ||
+ | ! style="background:#efefef;" |''Significado'' | ||
+ | ! style="background:#efefef;" |''Tipo'' | ||
+ | ! style="background:#efefef;" |''Tamanho'' | ||
+ | ! style="background:#efefef;" |''Aceita Nulo'' | ||
+ | ! style="background:#efefef;" |''Default'' | ||
+ | ! style="background:#efefef;" |''Domínio'' | ||
+ | ! style="background:#efefef;" |''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. | ||
+ | |||
+ | {| cellpadding="6px" border=1 style="border:1px solid #C0C0C0; border-collapse:collapse;" | ||
+ | ! style="background:#efefef;" |''Parâmetro'' | ||
+ | ! style="background:#efefef;" |''Significado'' | ||
+ | ! style="background:#efefef;" |''Tipo'' | ||
+ | ! style="background:#efefef;" |''Tamanho'' | ||
+ | ! style="background:#efefef;" |''Aceita Nulo'' | ||
+ | ! style="background:#efefef;" |''Default'' | ||
+ | ! style="background:#efefef;" |''Domínio'' | ||
+ | ! style="background:#efefef;" |''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. | ||
+ | |||
+ | {| cellpadding="6px" border=1 style="border:1px solid #C0C0C0; border-collapse:collapse;" | ||
+ | ! style="background:#efefef;" |''Parâmetro'' | ||
+ | ! style="background:#efefef;" |''Significado'' | ||
+ | ! style="background:#efefef;" |''Tipo'' | ||
+ | ! style="background:#efefef;" |''Tamanho'' | ||
+ | ! style="background:#efefef;" |''Aceita Nulo'' | ||
+ | ! style="background:#efefef;" |''Default'' | ||
+ | ! style="background:#efefef;" |''Domínio'' | ||
+ | ! style="background:#efefef;" |''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. | ||
+ | |||
+ | {| cellpadding="6px" border=1 style="border:1px solid #C0C0C0; border-collapse:collapse;" | ||
+ | ! style="background:#efefef;" |''Parâmetro'' | ||
+ | ! style="background:#efefef;" |''Significado'' | ||
+ | ! style="background:#efefef;" |''Tipo'' | ||
+ | ! style="background:#efefef;" |''Tamanho'' | ||
+ | ! style="background:#efefef;" |''Aceita Nulo'' | ||
+ | ! style="background:#efefef;" |''Default'' | ||
+ | ! style="background:#efefef;" |''Domínio'' | ||
+ | ! style="background:#efefef;" |''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>TT_ORC</TT>) e do item de DAV (<TT>TT_IOR</TT>) devem se responsabilizar por conferir se a assinatura atual da tabela está correta antes de enviar as alterações.<BR /> | ||
+ | O PAF-ECF proíbe que se assine um registro adulterado.<BR /> | ||
+ | Para não se preocupar com isso, pode-se usar o método [[http://ttadm:8080/wiki/index.php/Integração_de_Banco_via_Rotinas_de_Importação#RegistraAcesso RegistraAcesso]] (vide [[Integração de Banco via Rotinas de Importação]]).<BR /> | ||
+ | Com esse método não é necessário utilizar o <TT>ASSINA_DAV</TT> e basta mandar <TT>null</TT> 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:<BR /> | ||
+ | 0 - TOTALL<BR /> | ||
+ | 1 - INTERSYS<BR /> | ||
+ | 2 - ADVANCE<BR /> | ||
+ | 3 - SARAIVA<BR /> | ||
+ | 4 - MODERNA<BR /> | ||
+ | 5 - WALLIS<BR /> | ||
+ | 6 - BENNER<BR /> | ||
+ | |||
+ | '''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, | ||
+ | <nowiki>''</nowiki>, | ||
+ | :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.<BR /> | ||
+ | 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, | ||
+ | <nowiki>''</nowiki>, | ||
+ | :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.<BR/> | ||
+ | Com isso, quem quiser implementar a rotina de impressão deve se preocupar em mandar o parâmetro <TT>ORCIMP = 'T'</TT> no ENVIA_DAV.<BR/> | ||
+ | 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. | ||
== Categorias == | == Categorias == | ||
[[Categoria:Integração]] | [[Categoria:Integração]] |
Edição das 19h07min de 21 de novembro de 2014
Interface de Integração de Orçamento via Stored Procedure (compatível com a versão PAF-ECF 2011):
Í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.