A7Pharma:Script para criação de Base de Dados de Integração

De Base de Conhecimento Alpha7
Ir para: navegação, pesquisa

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 --------------------------------------------------------------------------------

Causa

Palavras-Chave


Este conteúdo foi útil para você?
Então curta esse artigo!

1