Disponibilizar integração entre HOS e MyPharma (sistema de ecommerce terceirizado)
Solução
1º Adicionar um usuário no Firebird (servidor) de nome mypharma e senha hos@mypharma;
2º Adicionar o índice abaixo (caso o mesmo não exista):
CREATE INDEX IDX_PROMOCAO_MYPHARMA ON PROMOCAO_PRD
(PRODUTO).
3º Adicionar a view abaixo (ALTERE O CÓDIGO DA EMPRESA, CASO O MESMO SEJA DIFERENTE DE 1):
CREATE VIEW CONSULTA_MYPHARMA_PRODUTOS (EAN, NAME, PRICE, QUANTITY, LABORATORY, PRECO_SEM_DESCONTO, PMC, ACTIVEPRINCIPLE)
AS
select ean,name,iif(prc_promo > 0 and prc_promo < price,prc_promo,price) as price, quantity,laboratory, PRECO_SEM_DESCONTO, PMC, activeprinciple
from
(
select ean,name,sum(price) price,sum(prc_promo) prc_promo,sum(quantity) as quantity,laboratory, PRECO_SEM_DESCONTO, PMC, activeprinciple
from
(
select
PRODUTOS.COD_BARRA as ean
,PRODUTOS.DESCRICAO as name
,(PRODUTOS.PRC_VENDA - ((PRODUTOS.PRC_VENDA / 100) * coalesce(PRODUTOS.DESC_INDIVIDUAL,0))) price
,0 as prc_promo
,ESTOQUES.EST_ATUAL as quantity,
PRODUTOS.FABRICANTE as laboratory,
PRODUTOS.PRECO_ECOMMERCE as PRECO_SEM_DESCONTO,
PRODUTOS.PMC as PMC,
PRODUTOS.PRINCATIVO As activeprinciple
from produtos
join estoques on PRODUTOS.CODIGO = ESTOQUES.CODIGO and ESTOQUES.EMPRESA =1
union all
select
PRODUTOS.COD_BARRA
,produtos.DESCRICAO
,0 as price
,(PRODUTOS.PRC_VENDA - ((PRODUTOS.PRC_VENDA / 100) * coalesce(PROMOCAO_PRD.DESCONTO,0))) prc_promo
,0
,PRODUTOS.FABRICANTE,
PRODUTOS.PRECO_ECOMMERCE as PRECO_SEM_DESCONTO,
PRODUTOS.PMC as PMC,
PRODUTOS.PRINCATIVO As activeprinciple
from produtos
join PROMOCAO_PRD on PROMOCAO_PRD.PRODUTO = PRODUTOS.CODIGO and PROMOCAO_PRD.DELETED_AT is null
join PROMOCAO_PRD_LOJAS on PROMOCAO_PRD.ID = PROMOCAO_PRD_LOJAS.ID_PRD_PROMOCAO
join PROMOCAO_CAB on PROMOCAO_CAB.ID = PROMOCAO_PRD.ID_CAB_PROMOCAO
and current_date between PROMOCAO_CAB.VIGENCIA_INICIAL and PROMOCAO_CAB.VIGENCIA_FINAL and promocao_cab.DELETED_AT is null
left join vendidos on vendidos.produto = produtos.codigo and VENDIDOS.DATA between PROMOCAO_CAB.VIGENCIA_INICIAL and PROMOCAO_CAB.VIGENCIA_FINAL
group by cod_barra,produtos.descricao,fabricante,price,PROMOCAO_PRD.DESCONTO,PROMOCAO_PRD_LOJAS.QUANTIDADE, PRECO_SEM_DESCONTO, PRODUTOS.PMC,prc_promo,produtos.princativo
having coalesce(sum(QUANTI - DEVOLVIDO), 0) < iif(PROMOCAO_PRD_LOJAS.QUANTIDADE is null, coalesce(sum(QUANTI - DEVOLVIDO), 0) + 1, PROMOCAO_PRD_LOJAS.QUANTIDADE)
)
group by ean,name,laboratory,PRECO_SEM_DESCONTO, PMC,activeprinciple
)
;
GRANT SELECT
ON CONSULTA_MYPHARMA_PRODUTOS TO MYPHARMA;
GRANT DELETE, INSERT, REFERENCES, SELECT, UPDATE
ON CONSULTA_MYPHARMA_PRODUTOS TO SYSDBA WITH GRANT OPTION;