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

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
I_CLICNPJF
I_CLIEMAIL
I_CLIENDERECO
I_CLINUMERO
I_CLICOMPL
I_CLIBAIRRO
I_CLICEP
I_CLICIDADE
I_CLIESTADO
I_CLIPAIS
I_CLITEL
I_PEDATA
I_PEDSUBTOTAL
I_PEDFRETE
I_PEDTOTAL
I_PEDTRANSACAOID
I_ENTENDERECO
I_ENTNUMERO
I_ENTCOMPL
I_ENTBAIRRO
I_ENTCEP
I_ENTCIDADE
I_ENTESTADO
I_ENTPAIS
I_ENTTEL
I_DATADOWNLOAD
I_ESTABPED
I_MARKETPLACE
I_PEDMARKET
I_OBS
I_IDPARCELA
I_IDCARTAO

VARCHAR(60)
VARCHAR(14)
VARCHAR(250)
VARCHAR(70)
VARCHAR(10)
VARCHAR(900)
VARCHAR(60)
VARCHAR(8)
VARCHAR(40)
VARCHAR(40)
VARCHAR(20)
VARCHAR(14)
TIMESTAMP
NUMBER
VARCHAR(20)
NUMBER
VARCHAR(40)
VARCHAR(70)
VARCHAR(10)
VARCHAR(900)
VARCHAR(60)
VARCHAR(8)
VARCHAR(40)
VARCHAR(40)
VARCHAR(20)
VARCHAR(14)
TIMESTAMP
INTEGER
VARCHAR
VARCHAR
VARCHAR(1000)
INTEGER
INTEGER

Nome do Cliente
CNPJ ou CPF do Cliente
Email do Cliente
Endereço do Cliente
Número do Endereço do Cliente
Complemento do Endereço
Bairro
CEP
Cidade do Cliente
UF
País
Telefone
Data/Hora do Pedido
Subtotal do Pedido
Tipo de Frete
Valor Total do Pedido
Id Transação
Endereço de Entrega
Número do Endereço de Entrega
Complemento do Endereço de Entrega
Bairro da Entrega
CEP da Entrega
Cidade da Entrega
UF da Entrega
País da Entrega
Telefone do Endereço de Entrega
Data de Download do Pedido
Código da Empresa
Marketplace da venda
Código do pedido no Marketplace
Observações
Cód. do parcelamento
Cód. do Cartão

 

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

Parâmetro

Tipo

Informação

I_IDITEM

VARCHAR(20)

Código do Item

I_DESCRICAO

VARCHAR(40)

Descrição do Item

I_SUBTOTAL

NUMBER

Sub-Total do Item

I_QUANTIDADE

NUMBER

Quantidade do Item

I_DESCONTO

NUMBER

Desconto do Item

I_VALORTOTAL

NUMBER

Valor total do Item

I_SEQITEM

INTEGER

Sequência do Item

I_PEDCODIGO

VARCHAR(20)

Código do Pedido

I_ESTABPED

INTEGER

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