CREATE VIEW vw_systock_fornecedor AS
SELECT
    codigo::int AS "IDFORNECEDOR",
    nome AS "RAZAO_SOCIAL",
    0 AS "TEMPO_REPOSICAO",
    0 AS "VLR_MIN_COMPRA"
FROM bling_fornecedores bf
WHERE NULLIF(codigo, '') IS NOT NULL;

CREATE VIEW vw_systock_produtos AS
SELECT
    1 AS "IDFILIAL",
    p.codigo AS "IDPRODUTO",
    i.fornecedor_codigo AS "CODIGOPRODUTO",
    p.nome AS "DESCRICAO_PRODUTO",
    i.unidade AS "UNIDADE_VENDA",
    i.unidade AS "UNIDADE_COMPRA",
    p.preco AS "VALOR_UNITARIO",
    i.fornecedor_preco_compra AS "VALOR_COMPRA",
    p.preco_custo AS "CUSTO_UNITARIO",
    i.estoque_saldo_virtual_total AS "ESTOQUE",
    0 AS "ESTOQUE_BLOQUEADO",
    0 AS "ESTOQUE_RESERVADO",
    0 AS "ESTOQUE_AVARIA",
    i.estoque_minimo AS "ESTOQUE_ESTETICO",
    0 AS "ESTOQUE_TRANSITO_TRANSF",
    i.categoria_id AS "IDDEPARTAMENTO",
    0 AS "IDSECAO",
    0 AS "IDCATEGORIA",
    0 AS "IDCOMPRADOR",
    f.codigo::int AS "IDFORNECEDOR",
    0 AS "IDFABRICANTE",
    CASE
        WHEN p.situacao = 'A' THEN 'A'
        ELSE 'FL'
        END AS "ATIVO",
    'N' AS "IMPORTADO",
    CASE
        WHEN p.situacao = 'A' THEN 'S'
        ELSE 'N'
        END AS "STATUS_COMPRA",
    i.dimensoes_unidade_medida AS "FATOR_CONVERSAO",
    1 AS "LOTE_MINIMO",
    i.gtin AS "CODIGO_BARRAS",
    current_date - 730 AS "DATA_CADASTRO",
    i.peso_bruto AS "PESO_BRUTO",
    i.dimensoes_altura AS "ALTURA",
    i.dimensoes_largura AS "LARGURA",
    0 AS "COMPRIMENTO",
    'R' AS "MOEDA"
FROM bling_produtos p
         INNER JOIN bling_produtos_detalhamento i ON i.id = p.id
         LEFT JOIN bling_fornecedores f ON f.id = i.fornecedor_contato_id;

CREATE VIEW vw_systock_requisicoes AS
SELECT
    bpc.numero::int AS "IDSOLICITACAO",
    0 AS "ITEM",
    bpci.produto_codigo AS "IDPRODUTO",
    bpc."data" AS "DATA_SOLICITACAO",
    NULL AS "DATA_LIBERACAO",
    bpci.descricao AS "DESCRICAO_PRODUTO",
    bpci.quantidade AS "QTDE_SOLICITADA",
    bpci.quantidade AS "QTDE_ENTREGUE",
    bpci.unidade AS "UNIDADE_MEDIDA",
    0 AS "ORDEM_COMPRA",
    1 AS "IDFILIAL",
    bpc.data_prevista AS "DATA_PREVISAO",
    NULL AS "DATA_FATURAMENTO",
    bpci.valor AS "PRECO_COMPRA_PEDIDO",
    bpci.valor - (bpci.desconto_valor / bpci.quantidade) AS "PRECO_COMPRA_LIQUIDO",
    bpci.valor - (bpci.desconto_valor / bpci.quantidade) AS "PRECO_COMPRA_PEDIDO_ANTERIOR",
    bpci.quantidade AS "QTDE_FATURADA",
    'F' AS "STATUS_ITEM",
    bpc.fornecedor_id AS "IDFORNECEDOR",
    'R' AS "MOEDA"
FROM bling_pedidos_compra bpc
         INNER JOIN bling_pedidos_compra_itens bpci ON bpci.id_pedido = bpc.id;

CREATE OR REPLACE VIEW vw_systock_consumos AS
SELECT
    1 AS "IDFILIAL",
    bpv.numero::bigint AS "IDCONSUMO",
    bpv."data" AS "EMISSAO",
    '00:00:00' AS "HORARIOMOV",
    bpvi.codigo::varchar AS "IDPRODUTO",
    0 AS "ITEM",
    bpvi.quantidade AS "QTDE",
    bpvi.valor AS "VALOR_UNITARIO",
    NULL AS "VALOR_UNIT_CMV",
    'V' AS "STATUS",
    v.id AS "COD_VENDEDOR",
    v.nome AS "NOME_VENDEDOR",
    bpv.contato_id AS "COD_CLIENTE",
    bpv.contato_nome AS "NOME_CLIENTE"
FROM bling_pedidos_venda bpv
         INNER JOIN bling_pedidos_venda_itens bpvi ON bpvi.id_pedido = bpv.id
         LEFT JOIN bling_vendedores v ON v.id = bpvi.vendedor_id;
