Aut. Cml. - Procedures de Inserção
1. Introdução
As procedures de inserção possibilitam na integração a inclusão de novos dados vindos da plataforma Vtrina, basta a mesma realizar a chamada da procedure que necessita, passando os parâmetros que ela espera para inclusão. No grupo de procedures de inserção contamos com as seguintes procedures:
P_VT_CRIA_PEDIDO - Responsável pela criação do cabeçalho de novos pedidos
P_VT_CRIA_ITEMPEDIDO - Responsável pela criação das informações de itens dos pedidos
2. Responsável pela criação do cabeçalho de novos pedidos
A procedure P_VT_CRIA_PEDIDO é responsável pela criação do cabeçalho do pedido que é feito nas plataformas digitais, o mesmo realiza a inserção de dados na tabela WECPEDIDO do banco. Os parâmetros esperados são:
Parâmetro | Tipo | Informação |
---|---|---|
I_PEDCODIGO | VARCHAR2 | Código do Pedido no e-Commerce |
I_PEDIDOSTATUS | INTEGER | Status do Pedido (Padrão = 2) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
['', 'any', 'pending', 'processing', 'on-hold', 'completed', 'cancelled', 'refunded', 'failed', 'trash'], |
I_CLINOMERAZAOSOC | VARCHAR(60) | Nome do Cliente |
2.1 View
Abaixo segue o SQL da procedure usada na criação dos pedidos:
P_VT_CRIA_PEDIDO
CREATE OR ALTER PROCEDURE P_VT_CRIA_PEDIDO (
I_PEDCODIGO VARCHAR(20),
I_CLINOMERAZAOSOC VARCHAR(60),
I_CLICNPJF VARCHAR(14),
I_CLIEMAIL VARCHAR(250),
I_CLIENDERECO VARCHAR(70),
I_CLINUMERO VARCHAR(10),
I_CLICOMPL VARCHAR(900),
I_CLIBAIRRO VARCHAR(60),
I_CLICEP VARCHAR(8),
I_CLICIDADE VARCHAR(40),
I_CLIESTADO VARCHAR(40),
I_CLIPAIS VARCHAR(20),
I_CLITEL VARCHAR(14),
I_PEDIDOSTATUS INTEGER,
I_PEDSUBTOTAL DOUBLE PRECISION,
I_PEDFORMAPAGTO VARCHAR(40),
I_PEDPARCELAS INTEGER,
I_PEDTOTAL DOUBLE PRECISION,
I_ENTENDERECO VARCHAR(70),
I_ENTNUMERO VARCHAR(10),
I_ENTCOMPL VARCHAR(900),
I_ENTBAIRRO VARCHAR(60),
I_ENTCEP VARCHAR(8),
I_ENTCIDADE VARCHAR(40),
I_ENTESTADO VARCHAR(40),
I_ENTPAIS VARCHAR(20),
I_ENTTEL VARCHAR(14),
I_PEDFRETE VARCHAR(20),
I_PEDATA TIMESTAMP,
I_OBS VARCHAR(1000),
I_CLIINSCEST VARCHAR(20),
I_MARKETPLACE VARCHAR(50),
I_PEDMARKET VARCHAR(50),
I_DATADOWNLOAD TIMESTAMP,
I_IDPARCELA INTEGER,
I_IDCARTAO INTEGER,
I_ESTABPED INTEGER NOT NULL
) AS
DECLARE VARIABLE V_IDCIDADE VARCHAR(5);
DECLARE VARIABLE V_IDCIDADECOB VARCHAR(5);
DECLARE VARIABLE V_CODCLIENTE INTEGER;
DECLARE VARIABLE V_NROPED VARCHAR(15);
BEGIN
SELECT MAX(MX.ULTIMO) FROM (
SELECT CH.ULTIMO FROM PCHAVE CH
WHERE CH.EMPRESA=:I_ESTABPED AND CH.TABELA='PCABPEDV'
UNION ALL
SELECT MAX(PD.NROPEDVDA) AS ULTIMO FROM PCABPEDV PD
WHERE PD.EMPRESA=:I_ESTABPED
) MX
INTO V_NROPED;
V_NROPED = COALESCE(V_NROPED,'000000');
V_NROPED = LPAD(COALESCE(CAST(V_NROPED AS INTEGER),0)+1,CHAR_LENGTH(V_NROPED),'0');
UPDATE OR INSERT INTO PCHAVE (EMPRESA,TABELA,ULTIMO)
VALUES(:I_ESTABPED,'PCABPEDV',:V_NROPED)MATCHING(EMPRESA,TABELA);
SELECT FIRST 1 C.CIDADE
FROM CIDADE C,UF
WHERE C.UF=UF.UF
AND ( UPPER(C.NOME)=UPPER(:I_CLICIDADE)
OR UPPER((SELECT RESULTADO FROM SEM_ACENTOS(C.NOME)))=UPPER((SELECT RESULTADO FROM SEM_ACENTOS(:I_CLICIDADE))) )
AND ( UPPER((SELECT RESULTADO FROM SEM_ACENTOS(UF.NOME)))=UPPER((SELECT RESULTADO FROM SEM_ACENTOS(:I_CLIESTADO)))
OR C.UF=UPPER(:I_CLIESTADO)
OR C.UF=UPPER((SELECT RESULTADO FROM SEM_ACENTOS(:I_CLIESTADO))) )
INTO :V_IDCIDADE;
IF ( :V_IDCIDADE IS NULL ) THEN
BEGIN
EXCEPTION EXCEPTION_PADRAO 'Cidade de cadastro com o nome "'||COALESCE(:I_CLICIDADE,' ')
||'" no estado de "'||COALESCE(:I_CLIESTADO,' ')||'" nao foi encontrada. Verifique o cadastro de cidades';
END
SELECT FIRST 1 C.CIDADE FROM CIDADE C,UF
WHERE C.UF=UF.UF
AND ( UPPER(C.NOME)=UPPER(:I_ENTCIDADE)
OR UPPER((SELECT RESULTADO FROM SEM_ACENTOS(C.NOME)))=UPPER((SELECT RESULTADO FROM SEM_ACENTOS(:I_ENTCIDADE))) )
AND ( UPPER((SELECT RESULTADO FROM SEM_ACENTOS(UF.NOME)))=UPPER((SELECT RESULTADO FROM SEM_ACENTOS(:I_ENTESTADO)))
OR C.UF=UPPER(:I_ENTESTADO) OR C.UF=UPPER((SELECT RESULTADO FROM SEM_ACENTOS(:I_ENTESTADO))) )
INTO :V_IDCIDADECOB;
IF ( :V_IDCIDADECOB IS NULL ) THEN
BEGIN
EXCEPTION EXCEPTION_PADRAO 'Cidade de entrega com o nome "'||COALESCE(:I_ENTCIDADE,' ')
||'" no estado de "'||COALESCE(:I_ENTESTADO,' ')||'" nao foi encontrada. Verifique o cadastro de cidades';
END
SELECT FIRST 1 CL.CLIENTE FROM PPESCLI CL
WHERE CL.CPF=:I_CLICNPJF OR CL.CGC=:I_CLICNPJF
INTO V_CODCLIENTE;
INSERT INTO WECPEDIDO(
PEDCODIGO,
CLICODIGO,
CLINOMERAZAOSOC,
CLICNPJF,
CLIEMAIL,
CLIENDERECO,
CLINUMERO,
CLICOMPL,
CLIBAIRRO,
CLICEP,
CLICIDADE,
CLIESTADO,
CLIPAIS,
CLITEL,
PEDIDOSTATUS,
PEDATA,
PEDSUBTOTAL,
PEDFRETE,
PEDFORMAPAGTO,
PEDTOTAL,
ENTENDERECO,
ENTNUMERO,
ENTCOMPL,
ENTBAIRRO,
ENTCEP,
ENTCIDADE,
ENTESTADO,
ENTPAIS,
ENTTEL,
DATADOWNLOAD,
IDCIDADE,
ENTIDCIDADE,
EMPRESA,
PEDPARCELAS,
OBS,
CLIINSCEST,
MARKETPLACE,
PEDMARKET,
PARCELAMEN,
CARTAO,
NROPED
) VALUES (
:I_PEDCODIGO,
:V_CODCLIENTE,
:I_CLINOMERAZAOSOC,
:I_CLICNPJF,
:I_CLIEMAIL,
:I_CLIENDERECO,
:I_CLINUMERO,
:I_CLICOMPL,
:I_CLIBAIRRO,
:I_CLICEP,
:I_CLICIDADE,
:I_CLIESTADO,
:I_CLIPAIS,
:I_CLITEL,
:I_PEDIDOSTATUS,
:I_PEDATA,
:I_PEDSUBTOTAL,
:I_PEDFRETE,
:I_PEDFORMAPAGTO,
:I_PEDTOTAL,
:I_ENTENDERECO,
:I_ENTNUMERO,
:I_ENTCOMPL,
:I_ENTBAIRRO,
:I_ENTCEP,
:I_ENTCIDADE,
:I_ENTESTADO,
:I_ENTPAIS,
:I_ENTTEL,
:I_DATADOWNLOAD,
:V_IDCIDADE,
:V_IDCIDADECOB,
:I_ESTABPED,
:I_PEDPARCELAS,
:I_OBS,
:I_CLIINSCEST,
:I_MARKETPLACE,
:I_PEDMARKET,
:I_IDPARCELA,
:I_IDCARTAO,
:V_NROPED
);
END
3. Responsável pela criação das informações de itens dos pedidos
A procedure P_VT_CRIA_ITEMPEDIDO é responsável pela criação dos itens do pedido que é feito nas plataformas digitais, o mesmo realiza a inserção de dados na tabela WECPEDIDOITEM do banco. Os parâmetros esperados são:
Parâmetro | Tipo | Informação |
---|---|---|
|
| Código do Item |
|
| Descrição do Item |
|
| Sub-Total do Item |
|
| Quantidade do Item |
|
| Desconto do Item |
|
| Valor total do Item |
|
| Sequência do Item |
|
| Código do Pedido |
|
| Código do Estabelecimento (Mesma informação do cabeçalho do pedido) |
3.1 View
Abaixo segue o SQL da procedure usada na criação dos itens de pedidos:
P_VT_CRIA_ITEMPEDIDO
CREATE OR ALTER PROCEDURE P_VT_CRIA_ITEMPEDIDO (
I_IDITEM VARCHAR(20),
I_DESCRICAO VARCHAR(40),
I_SUBTOTAL DOUBLE PRECISION,
I_QUANTIDADE DOUBLE PRECISION,
I_DESCONTO DOUBLE PRECISION,
I_VALORTOTAL DOUBLE PRECISION,
I_SEQITEM INTEGER,
I_PEDCODIGO VARCHAR(20),
I_ESTABPED INTEGER NOT NULL
)
AS
BEGIN
INSERT INTO WECPEDIDOITEM(
PEDCODIGO,
SEQITEM,
IDITEM,
DESCRICAO,
SUBTOTAL,
QUANTIDADE,
DESCONTO,
VALORTOTAL,
ESTABITEM,
EMPRESA
)
VALUES
(
:I_PEDCODIGO,
:I_SEQITEM,
:I_IDITEM,
:I_DESCRICAO,
:I_SUBTOTAL,
:I_QUANTIDADE,
:I_DESCONTO,
:I_VALORTOTAL,
(SELECT U.USADE FROM USANDODE U WHERE ESTAB=:I_ESTABPED AND TABELA='ITEM'),
:I_ESTABPED
);
END