-- 返品依頼の商品を返品済みにするSP

CREATE OR REPLACE FUNCTION f_forward_detail_update_returndate(
 IN _orderno        integer,    -- 受注No
 IN _orderrowno     integer,    -- 受注行No

 IN upduser         varchar,    -- 更新ユーザ
 IN pc              varchar,    -- 更新マシン
 IN count           integer,    -- 更新カウンタ

 OUT errcd          integer,
 OUT errmsg         varchar,
 OUT code           integer) AS
$BODY$
DECLARE
    cntcheck  integer;
BEGIN
    --
    -- パラメータチェック
    --

    -- 必須チェック
    IF _orderno IS NULL THEN
        RAISE EXCEPTION '引数 受注Noは必須です';
    END IF;
    IF _orderrowno IS NULL THEN
        RAISE EXCEPTION '引数 受注行Noは必須です';
    END IF;

    -- 出荷日と返品理由取得
    SELECT updcnt INTO cntcheck FROM t_forward_detail WHERE orderno = _orderno AND orderrowno = _orderrowno AND delflg = FALSE;
    IF NOT FOUND THEN
        RAISE EXCEPTION 'レコードがありません';
    END IF;

    -- 更新カウンタチェック
    IF cntcheck IS NOT NULL AND cntcheck <> count THEN
        RAISE EXCEPTION '更新カウンタが不正です';
    END IF;

    -- ステータス更新
    UPDATE t_forward_detail SET
        returndate = current_timestamp,

        updusrnm = upduser,
        updpcnm = pc
        WHERE orderno = _orderno AND orderrowno = _orderrowno;

    errcd := 1;
    code := _orderno;
    errmsg := '完了';
    RETURN;

END;
$BODY$
  LANGUAGE 'plpgsql' VOLATILE;
