A7Pharma:Script para criação de Base de Dados de Integração
Problema / Pergunta
Como fazer para criar uma base limpa (modelo) para Integração Externa via Base de Dados?
Ambiente
- A7Pharma 2.61.0.0
Solução / Resposta
Após a configuração A7Pharma pelo pessoal de Suporte o sistema irá criar automaticamente as tabelas de integração na base de dados configurada durante a primeira execução da integração. Caso a base de dados precise ser criada previamente, fins de desenvolvimento ou testes, o seguinte script pode ser utilizado para fazer a criação das tabelas.
Importante: Substituir o "${PREFIXO}" no script abaixo por um nome de database no MySQL, ou um schema no Postgres conforme a necessidade.-- 1.sql --------------------------------------------------------------------------------
-- Nota: Esse domain para o tipo "datetime" é necessário para o PostgreSQL apenas (e não para o MySQL):
create domain datetime as timestamp;
create table ${PREFIXO}out_embalagem (
o_ID bigint primary key, -- Representa o ID da embalagem no A7pharma
do_ID datetime,
o_etiqueta varchar(16), -- Representa a etiqueta da embalagem no A7Pharma
do_etiqueta datetime,
i_codigoIntegracao varchar(100), -- Representa o ID da embalagem no integrador
di_codigoIntegracao datetime,
io_integracaoConcluida boolean, -- Flag que indica que o A7 enviou dados para a tabela, e que não foram processados.
do_integracaoConcluida datetime,
di_integracaoConcluida datetime,
o_descricao varchar(100), -- Descricão da embalagem.
do_descricao datetime,
o_codigobarras varchar(14), -- Código de barras da embalagem.
do_codigobarras datetime,
o_precovenda numeric(15,4), -- Preço de venda da embalagem.
do_precovenda datetime,
o_precopromocional numeric(15,4), -- Preço promocional da embalagem.
do_precopromocional datetime,
o_inicioprecopromocional datetime, -- Data de inicio do preço promocional da embalagem.
do_inicioprecopromocional datetime,
o_fimprecopromocional datetime, -- Data de término do preço promocional da embalagem.
do_fimprecopromocional datetime,
o_idfabricante bigint, -- Representa o ID do cadastro de pessoa do fabricante da embalagem.
do_idfabricante datetime,
o_nomefabricante varchar(70), -- Nome do fabricante da embalagem.
do_nomefabricante datetime,
o_estoque numeric(15,4), -- Estoque da embalagem.
do_estoque datetime,
o_altura numeric(15,4), -- Altura da embalagem.
do_altura datetime,
o_largura numeric(15,4), -- Largura da embalagem.
do_largura datetime,
o_comprimento numeric(15,4), -- Comprimento da embalagem.
do_comprimento datetime,
o_peso numeric(15,4), -- Peso da embalagem.
do_peso datetime,
o_idclassificacao bigint, -- ID da classifição final do produto.
do_idclassificacao datetime,
o_caminhoclassificacao varchar(250), -- Caminho da classificação do produto.
do_caminhoclassificacao datetime,
o_idclassificacaoprimeironivel bigint, -- ID da classifição de Nível 1 do produto.
do_idclassificacaoprimeironivel datetime,
o_nomeclassificacaoprimeironivel varchar(50), -- Nome da Classificação de Nível 1 do produto.
do_nomeclassificacaoprimeironivel datetime,
o_idclassificacaosegundonivel bigint, -- ID da classifição de Nível 2 do produto.
do_idclassificacaosegundonivel datetime,
o_nomeclassificacaosegundonivel varchar(50), -- Nome da Classificação de Nível 2 do produto.
do_nomeclassificacaosegundonivel datetime,
o_idclassificacaoterceironivel bigint, -- ID da classifição de Nível 3 do produto.
do_idclassificacaoterceironivel datetime,
o_nomeclassificacaoterceironivel varchar(50), -- Nome da Classificação de Nível 3 do produto.
do_nomeclassificacaoterceironivel datetime
);
create table ${PREFIXO}in_pedido (
i_codigointegracao varchar(100) not null, -- Representa o código(ID) do pedido provido pelo integrador.
i_codigopessoaintegracao varchar(100), -- Representa o código da pessoa vinculada ao pedido.
io_statusintegracao char(1) default 'N' not null, -- Representa o status da integração do pedido.
do_statusintegracao datetime,
di_statusintegracao datetime not null,
o_descricaoerrointegracao text, -- Representa a mensagem de erro na apresentada caso ocorra uma falha na integração do pedido.
do_descricaoerrointegracao datetime,
i_logradouroentrega varchar(70), -- Representa o logradouro ao qual o pedido será entregue.
di_logradouroentrega datetime,
i_bairroentrega varchar(70), -- Representa o bairo ao qual o pedido será entregue.
di_bairroentrega datetime,
i_cepentrega varchar(10), -- Representa o CEP a qual o pedido será entregue.
di_cepentrega datetime,
i_cidadeentrega varchar(70), -- Representa a cidade a qual o pedido será entregue.
di_cidadeentrega datetime,
i_estadoentrega varchar(2), -- Representa o estado a qual o pedido será entregue.
di_estadoentrega datetime,
i_numeroentrega varchar(6), -- Representa o número do local a qual o pedido será entregue.
di_numeroentrega datetime,
i_complementoentrega varchar(30), -- Representa o complemento do endereço ao qual o pedido será entregue.
di_complementoentrega datetime,
i_taxaentrega numeric(15, 4), -- Representa o valor da taxa de entrega do pedido.
di_taxaentrega datetime,
i_statuspedido char(1) not null, -- Representa o status ao qual o pedido se encontra.
di_statuspedido datetime,
i_valortotal numeric(15,4), -- Representa o valor total do pedido.
di_valortotal datetime,
i_dataemissaopedido datetime not null, -- Representa a data de emissão do pedido.
o_idorcamento bigint, -- Representa o ID do orçamento criado no A7Pharma.
o_codigoorcamento varchar(16), -- Representa o código do orçamento criado no A7Pharma.
o_datahoraorcamento datetime, -- Representa a data e a hora da criação do orçamento no A7Pharma.
primary key (i_codigointegracao)
);
create table ${PREFIXO}in_pessoa (
i_codigointegracao varchar(100) not null, -- Representa o código(ID) da pessoa provida pelo integrador.
io_statusintegracao char(1) default 'N' not null, -- Representa o status da integração do pessoa.
do_statusintegracao datetime,
di_statusintegracao datetime not null,
o_descricaoerrointegracao text, -- Representa a mensagem de erro na apresentada caso ocorra uma falha na integração da pessoa.
do_descricaoerrointegracao datetime,
o_idpessoa bigint, -- Representa o ID da pessoa criada no A7Pharma.
do_idpessoa datetime,
i_tipo char(1) not null, -- Representa o Tipo da pessoa a ser integrada.
di_tipo datetime not null,
i_nome varchar(70), -- Representa o nome da pessoa a ser integrada
di_nome datetime,
i_logradouro varchar(70), -- Representa o logradouro ao qual a pessoa a ser integrada reside.
di_logradouro datetime,
i_cep varchar(10), -- Representa o CEP a qual a pessoa a ser integrada reside.
di_cep datetime,
i_bairro varchar(70), -- Representa o bairro ao qual a pessoa a ser integrada reside.
di_bairro datetime,
i_cidade varchar(70), -- Representa a cidade a qual a pessoa a ser integrada reside.
di_cidade datetime,
i_estado varchar(2), -- Representa o estado ao qual a pessoa a ser integrada reside.
di_estado datetime,
i_numero varchar(6), -- Representa o numero da residência da pessoa a ser integrada.
di_numero datetime,
i_complemento varchar(30), -- Representa o complemento ao qual a pessoa a ser integrada reside.
di_complemento datetime,
i_referencia varchar(70), -- Representa a referência ao qual a pessoa a ser integrada reside.
di_referencia datetime,
i_email varchar(50), -- Representa o e-mail da pessoa a ser integrada.
di_email datetime,
i_datanascimento datetime, -- Representa da data de nascimento da pessoa a ser integrada.
di_datanascimento datetime,
i_cpf varchar(11), -- Representa o CPF da pessoa a ser integrada.
di_cpf datetime,
i_sexo char(1), -- Representa o sexo da pessoa a ser integrada.
di_sexo datetime,
i_cnpj varchar(14), -- Representa o CNPJ da pessoa a ser integrada.
di_cnpj datetime,
i_razaosocial varchar(70), -- Representa da Razão social da pessoa a ser integrada.
di_razaosocial datetime,
i_inscricaoestadual varchar(14), -- Representa a inscrição estadual da pessoa a ser integrada.
di_inscricaoestadual datetime,
i_dddTelefone varchar(2), -- Representa o código de area "DDD" do telefone.
di_dddTelefone datetime,
i_telefone varchar(50), -- Representa o telefone da pessoa a ser integrada.
di_telefone datetime,
i_dddTelefone2 varchar(2), -- Representa o código de area "DDD" do telefone 2.
di_dddTelefone2 datetime,
i_telefone2 varchar(50), -- Representa um segundo telefone da pessoa a ser integrada.
di_telefone2 datetime,
i_dddCelular varchar(2), -- Representa o código de area "DDD" do celular.
di_dddCelular datetime,
i_celular varchar(50), -- Representa o celular da pessoa a ser integrada.
di_celular datetime,
primary key (i_codigointegracao)
);
create table ${PREFIXO}in_itempedido (
i_codigointegracao varchar(100) not null, -- Representa o código(ID) do item do pedido provido pelo integrador.
i_codigopedidointegracao varchar(100) not null, -- Representa o código do pedido a qual o item está vinculado.
i_idoutembalagem bigint not null, -- Representa o ID da embalagem a qual o item do pedido se refere.
di_idoutembalagem datetime,
i_valorunitariobruto numeric(15, 4), -- Representa o valor unitário bruto do item do pedido.
di_valorunitariobruto datetime,
i_valorunitarioliquido numeric(15, 4), -- Representa o valor unitário liquido do item do pedido(Com acréscimos ou descontos).
di_valorunitarioliquido datetime,
i_quantidade numeric(15, 4), -- Representa a quantidade que desse item que compõe o pedido.
di_quantidade datetime,
i_valortotal numeric(15, 4), -- Representa o valor total desse item dentro do pedido.
di_valortotal datetime,
primary key (i_codigointegracao)
);
alter table ${PREFIXO}in_pedido
add constraint fk_in_pessoa_in_pedido foreign key (i_codigopessoaintegracao) references ${PREFIXO}in_pessoa (i_codigointegracao);
alter table ${PREFIXO}in_itempedido
add constraint fk_in_pedido_in_itempedido foreign key (i_codigopedidointegracao) references ${PREFIXO}in_pedido (i_codigointegracao);
alter table ${PREFIXO}in_itempedido
add constraint fk_out_embalagem_in_itempedido foreign key (i_idoutembalagem) references ${PREFIXO}out_embalagem (o_ID);
create table ${PREFIXO}out_documentofiscalpedido (
o_ID bigint not null, -- Representa o ID do DFe no A7Pharma.
do_ID datetime,
o_codigopedidointegracao varchar(100) not null, -- Representa o código do pedido ao qual o DFe pertênce.
do_codigopedidointegracao datetime,
o_numero bigint, -- Representa o numero do DFe.
do_numero datetime,
o_tipoDocumento varchar(50), -- Representa o Tipo do DF-e (NFe, CFe, etc).
do_tipoDocumento datetime,
o_chaveacesso varchar(44), -- Representa a chave de acesso do DFe.
do_chaveacesso datetime,
o_datahoraemissao datetime, -- Representa a data e a hora da emissão do DFe.
do_datahoraemissao datetime,
o_cfop varchar(4), -- Representa o CFOP do DFe.
do_cfop datetime,
o_serie varchar(3), -- Representa o número de série do DFe.
do_serie datetime,
o_valorprodutos numeric(15, 4), -- Representa o valor total do produtos do DFe.
do_valorprodutos datetime,
o_valortotal numeric(15, 4), -- Representa o valor total do DFe.
do_valortotal datetime,
o_xml text, -- Representa o XML do DFe.
do_xml datetime,
o_urlconsulta text, -- Representa a URL de consulta para o DFe.
do_urlconsulta datetime,
i_codigointegracao varchar(100), -- Representa o código de integração do DFe atribuído pelo integrador.
di_codigointegracao datetime,
io_integracaoConcluida boolean, -- Flag que indica que o A7 enviou dados para a tabela, e que não foram processados.
do_integracaoConcluida datetime,
di_integracaoConcluida datetime,
primary key (o_ID));
alter table ${PREFIXO}out_documentofiscalpedido
add constraint fk_in_pedido_out_documentofiscalpedido foreign key (o_codigopedidointegracao) references ${PREFIXO}in_pedido (i_codigointegracao);
create table ${PREFIXO}cfg_integracao(
versaodb integer not null
);
-- 2.sql --------------------------------------------------------------------------------
alter table ${PREFIXO}in_pedido
add column i_formapagamento varchar(50), -- Representa a forma de pagamento realizada no pedido.
add column i_modalidadecartao varchar(50), -- Representa a modalidade de cartão para as formas de pagamento do tipo "Cartão" realizada.
add column i_tipoentrega char(1), -- Determina o tipo de entrega do pedido (A: Entrega realizada pela LOJA | B: Entrega realizada por TERCEIROS).
add column i_retiradaloja boolean not null default false, -- Determina se o pedido será retirado na loja ou não.
add column i_pagamentoAdiantadoEntrega boolean not null default false, -- Determina se o pagamento do pedido já foi realizado.
add column i_vendafinalizadaexternamente boolean not null default false, -- Determina se a venda foi finalizada externamente.
add column di_vendafinalizadaexternamente datetime;
---------------------- ATENÇÃO ------------------------------
-- Nota: Caso a base for PostgreSQL, utilize o comando abaixo:
alter table ${PREFIXO}out_documentofiscalpedido
alter column o_chaveacesso type varchar(47);
-- Nota: Caso a base for MySQL, utilize o comando abaixo:
alter table ${PREFIXO}out_documentofiscalpedido
modify o_chaveacesso varchar(47);
-------------------------------------------------------------
alter table ${PREFIXO}out_embalagem
add column o_inativa boolean not null default false, -- Determina se a embalagem deve ser inativada no e-commerce.
add column do_inativa datetime,
add column o_medicamentoSujeitoSNGPC boolean not null default false, -- Determina se a embalagem está sujeito a SNGPC.
add column do_medicamentoSujeitoSNGPC datetime;
create table ${PREFIXO}out_entregaremessapedido (
o_ID bigint not null,
do_ID datetime,
o_Codigo varchar(10) not null, -- Código sequencial da Remessa
do_Codigo datetime,
o_Status char(1) default 'A' not null, -- Status da Remessa (A: Enviada | B: Não Recebida | C: Recebida | D: Cancelada)
do_Status datetime,
o_DataHoraInicial datetime not null, -- Data e Hora de Criação da Remessa
do_DataHoraInicial datetime,
o_DataHoraFinal datetime, -- Data e hora da finalização ou cancelamento da Remessa
do_DataHoraFinal datetime,
o_codigopedidointegracao varchar(100) not null, -- Representa o código do pedido a qual o item está vinculado.
do_codigopedidointegracao datetime,
io_integracaoConcluida boolean, -- Flag que indica que o A7 enviou dados para a tabela, e que não foram processados.
do_integracaoConcluida datetime,
di_integracaoConcluida datetime,
primary key (o_ID));
alter table ${PREFIXO}out_entregaremessapedido
add constraint fk_in_pedido_out_entregaremessapedido foreign key (o_codigopedidointegracao) references ${PREFIXO}in_pedido (i_codigointegracao);
-- 3.sql --------------------------------------------------------------------------------
alter table ${PREFIXO}in_pedido
add column i_trocoEntrega numeric(15,4); -- Representa o "Troco Para", ou seja, o valor em dinheiro a ser recebido na entrega. (Exemplo: Uma compra de R$ 40,00 é feita e uma nota de R$ 50,00 é entregue, o valor 50 deve ser informado a esse campo)
INSERT INTO ${PREFIXO}cfg_integracao VALUES (3);
-- 4.sql --------------------------------------------------------------------------------