-- View: "v_stock_stocktitle_list"

DROP VIEW "v_stock_stocktitle_list";

CREATE OR REPLACE VIEW "v_stock_stocktitle_list"
AS
SELECT DISTINCT on (s.stocktitlecd, s.itemcd, s.structcd)
    s.itemcd,
    i.itemnm,
    s.structcd,
    s.stockcd,
    s.sellercd,
    s.stocktitlecd,
    o.itemcd AS orderitemcd,
    o.structcd AS orderstructcd,
    t.orderno,
    t.orderdate,
    t.suppliercd,
    t.supplidiv,
    n1.name AS supplidivnm,
    so.exhibitcount,
    s.condition,
    n2.name AS conditionnm,
    s.sellingprice,
    s.souryouprc,
    s.stockstate,
    n3.name AS stockstatenm,
    s.scdstartdate,
    s.scdcompdate,
    s.itemexp,
    s.rackid,
    s.managecd,
    s.costprice,
    s.ntcostprice,
    s.consignment,
    s.arrivaldate,
    s.updcnt,
    COALESCE(s_cnt.stocktitlecdcont, 0) as stocktitlecdcont
    FROM
    t_ex_stock_detail s
    LEFT JOIN t_order_detail o
        ON o.itemcd = s.itemcd
        AND o.structcd = s.structcd
        AND o.delflg = FALSE
    LEFT JOIN t_stock_title t
        ON t.stocktitlecd = s.stocktitlecd
        AND t.delflg = FALSE
    LEFT JOIN t_name n1
        ON n1.namecd = t.supplidiv
        AND n1.namediv = 8  -- 仕入区分
    LEFT JOIN t_name n2
        ON n2.namecd = s.condition
        AND n2.namediv = 9  -- コンディション
    LEFT JOIN t_name n3
        ON n3.namecd = s.stockstate
        AND n3.namediv = 10  -- 在庫状態
    INNER JOIN t_item_basic_attr i
        ON i.itemcd = s.itemcd
        AND i.delflg = FALSE
    INNER JOIN v_stock_order so
        ON so.itemcd = s.itemcd
        AND so.structcd = s.structcd
        AND so.stockcd = s.stockcd
    LEFT JOIN (SELECT t_s.itemcd, t_s.structcd, t_s.stocktitlecd, count(t_s.itemcd) as stocktitlecdcont
        FROM t_ex_stock_detail t_s
        left join
          (select * from t_order_detail t_o
              left join t_forward_detail t_f
               on t_f.orderno=t_o.orderno
                   and t_f.orderrowno=t_o.orderrowno
             where t_f.forwardstate is null
                       or not (t_f.forwardstate is not null
                       and (t_f.forwardstate=9
                       or (t_f.forwardstate=8 and t_f.returndate is not null)))
          ) t_o
          on t_o.itemcd = t_s.itemcd AND t_o.structcd = t_s.structcd and t_s.stockcd = t_o.stockcd
        WHERE t_o.itemcd IS NULL
        AND   t_s.stockstate = 3
        AND   (t_s.sellercd IS NULL OR t_s.sellercd = 9999)
        AND   t_s.delflg = false
        GROUP BY t_s.itemcd, t_s.structcd, t_s.stocktitlecd
        ) AS s_cnt
        ON s_cnt.itemcd = s.itemcd
        AND s_cnt.structcd = s.structcd
        AND s_cnt.stocktitlecd = s.stocktitlecd
WHERE
    s.delflg = FALSE
    AND (s.sellercd IS NULL OR s.sellercd = 9999)
;