-- DROP FUNCTION f_seller_attr_update(IN kubun int4, IN i_membercd int4, IN i_depbanknm "varchar", IN i_depbranchnm "varchar", IN i_depaccount int4, IN i_depaccountno "varchar", IN i_depaccountnm "varchar", IN i_depinfo int4, IN i_deppostalcd "varchar", IN i_depprefcd int4, IN i_depaddr1 "varchar", IN i_depaddr2 "varchar", IN i_deptelno1 "varchar", IN i_depaddressee "varchar", IN i_payinfo int4, IN i_paybanknm "varchar", IN i_paybranchnm "varchar", IN i_payaccount int4, IN i_payaccountno "varchar", IN i_payaccountnm "varchar", IN i_identtelno "varchar", IN i_creditregist int4, IN i_credittype int4, IN i_creditaccountnm "varchar", IN i_creditaccountno "varchar", IN i_creditexpireyear int4, IN i_creditexpiremonth int4, IN i_securitycd "varchar", IN i_sellerdiv int4, IN i_basicfee int4, IN i_exsystemfee int4, IN i_stsystemfee int4, IN i_sellerstate int4, IN i_itemexhibitstop bool, IN i_news "varchar", IN i_sellersouryou int4, IN i_sellersouryoumax int4, IN i_profile "varchar", IN i_takkyubinprc int4, IN i_registdate date, IN i_updusrnm "varchar", IN i_updpcnm "varchar", IN i_updcnt int4, OUT errcd int4, OUT errmsg "varchar", OUT code int4);


-- 出品者属性 変更
CREATE OR REPLACE FUNCTION f_seller_attr_update(
    kubun               integer,
    i_membercd          integer,
    i_depbanknm         character varying,
    i_depbranchnm       character varying,
    i_depaccount        integer,
    i_depaccountno      character varying,
    i_depaccountnm      character varying,
    i_depinfo           integer,
    i_deppostalcd       character varying,
    i_depprefcd         integer,
    i_depaddr1          character varying,
    i_depaddr2          character varying,
    i_deptelno1         character varying,
    i_depaddressee      character varying,
    i_payinfo           integer,
    i_paybanknm         character varying,
    i_paybranchnm       character varying,
    i_payaccount        integer,
    i_payaccountno      character varying,
    i_payaccountnm      character varying,
    i_Identtelno        character varying,
    i_creditregist      integer,
    i_credittype        integer,
    i_creditaccountnm   character varying,
    i_creditaccountno   character varying,
    i_creditexpireyear  integer,
    i_creditexpiremonth integer,
    i_securitycd        character varying,
    i_sellerdiv         integer,
    i_basicFee          integer,
    i_exsystemfee       integer,
    i_stsystemfee       integer,
    i_sellerstate       integer,
    i_itemexhibitstop   boolean,
    i_news              character varying,
    i_sellersouryou     integer,
    i_sellersouryoumax  integer,
    i_profile           character varying,
    i_takkyubinprc      integer,
    i_registdate        date,
    i_updusrnm      varchar,
    i_updpcnm       varchar,
    i_updcnt        integer,
    OUT errcd       integer,
    OUT errmsg      character varying,
    OUT code        integer
) AS
$BODY$
DECLARE
    cntcheck integer;
BEGIN

-- 必須チェック --

    -- 処理区分
    IF kubun IS NULL OR kubun NOT IN (1,2,3) THEN
        RAISE EXCEPTION '処理区分が不正です';
    END IF;

    IF kubun IN (1,2,3) THEN
        IF i_membercd IS NULL THEN
            RAISE EXCEPTION '会員コードの引数は必須です';
        END IF;
        IF i_updusrnm IS NULL THEN
            RAISE EXCEPTION '更新ユーザ名が指定されていません';
        END IF;
        IF i_updpcnm IS NULL THEN
            RAISE EXCEPTION '更新マシン名が指定されていません';
        END IF;
    END IF;

    IF kubun IN (2,3) THEN
        IF i_updcnt IS NULL THEN
            RAISE EXCEPTION '更新カウンタの引数は必須です';
        END IF;

    END IF;


    -- 存在チェック
    IF kubun IN (1) THEN
        SELECT membercd INTO cntcheck FROM t_seller_attr WHERE membercd = i_membercd;
          IF FOUND THEN
            RAISE EXCEPTION 'その会員コードのレコードは存在します';
        END IF;
    END IF;

    IF kubun IN (1,2,3) THEN
        SELECT membercd INTO cntcheck FROM t_member_basic_attr WHERE membercd = i_membercd;
          IF NOT FOUND THEN
            RAISE EXCEPTION '会員テーブルにその会員コードのレコードは存在しません';
        END IF;
    END IF;

    -- 更新カウンタチェック
    IF kubun IN (2,3) THEN
        SELECT updcnt INTO cntcheck FROM t_seller_attr WHERE membercd = i_membercd;
          IF NOT FOUND OR cntcheck <> i_updcnt THEN
            errcd = -11;
            errmsg = '更新カウンタが不正';
            RETURN;
          END IF;
    END IF;

 ---  更新処理 ---

    IF kubun = 1 THEN
        -- 追加
        INSERT INTO t_seller_attr(
            membercd,               -- 会員C
            depbanknm,              -- 入金先銀行名
            depbranchnm,            -- 入金先支店名
            depaccount,             -- 入金先口座
            depaccountno,           -- 入金先口座番号
            depaccountnm,           -- 入金先口座名義
            depinfo,                -- 入金先情報
            deppostalcd,            -- 入金先郵便番号
            depprefcd,              -- 入金先都道府県C
            depaddr1,               -- 入金先住所1
            depaddr2,               -- 入金先住所2
            deptelno1,              -- 入金先電話番号1
            depaddressee,           -- 入金先宛名
            payinfo,                -- 支払先情報
            paybanknm,              -- 支払先銀行名
            paybranchnm,            -- 支払先支店名
            payaccount,             -- 支払先口座
            payaccountno,           -- 支払先口座番号
            payaccountnm,           -- 支払先口座名義
            Identtelno,             -- 本人確認用電話番号
            creditregist,           -- クレジットカード登録
            credittype,             -- カード種類
            creditaccountnm,        -- カード名義
            creditaccountno,        -- カード番号
            creditexpireyear,       -- カード有効期限 年
            creditexpiremonth,      -- カード有効期限 月
            securitycd,             -- セキュリティコード
            sellerdiv,              -- 出品者区分
            basicFee,               -- 月額基本利用料
            exsystemfee,            -- 出品システム利用料
            stsystemfee,            -- 決済システム利用料
            sellerstate,            -- 出品者状態
            itemexhibitstop,        -- 出品機能利用停止
            news,                   -- お知らせ
            profile,                -- プロフィール
            takkyubinprc,
            registdate,             -- 登録日
            sellersouryou,          -- 出品者送料
            sellersouryoumax,       -- 出品者送料 上限

            updusrnm,               -- 更新ユーザ名
            updpcnm                 -- 更新マシン名

        )VALUES(
            i_membercd,             -- 会員C
            i_depbanknm,            -- 入金先銀行名
            i_depbranchnm,          -- 入金先支店名
            i_depaccount,           -- 入金先口座
            i_depaccountno,         -- 入金先口座番号
            i_depaccountnm,         -- 入金先口座名義
            i_depinfo,              -- 入金先情報
            i_deppostalcd,          -- 入金先郵便番号
            i_depprefcd,            -- 入金先都道府県C
            i_depaddr1,             -- 入金先住所1
            i_depaddr2,             -- 入金先住所2
            i_deptelno1,            -- 入金先電話番号1
            i_depaddressee,         -- 入金先宛名
            i_payinfo,              -- 支払先情報
            i_paybanknm,            -- 支払先銀行名
            i_paybranchnm,          -- 支払先支店名
            i_payaccount,           -- 支払先口座
            i_payaccountno,         -- 支払先口座番号
            i_payaccountnm,         -- 支払先口座名義
            i_Identtelno,           -- 本人確認用電話番号
            i_creditregist,         -- クレジットカード登録
            i_credittype,           -- カード種類
            i_creditaccountnm,      -- カード名義
            i_creditaccountno,      -- カード番号
            i_creditexpireyear,     -- カード有効期限 年
            i_creditexpiremonth,    -- カード有効期限 月
            i_securitycd,           -- セキュリティコード
            i_sellerdiv,            -- 出品者区分
            i_basicFee,             -- 月額基本利用料
            i_exsystemfee,          -- 出品システム利用料
            i_stsystemfee,          -- 決済システム利用料
            i_sellerstate,          -- 出品者状態
            i_itemexhibitstop,      -- 出品機能利用停止
            i_news,                 -- お知らせ
            i_profile,              -- プロフィール
            i_takkyubinprc,
            i_registdate,           -- 登録日
            i_sellersouryou,        -- 出品者送料
            i_sellersouryoumax,     -- 出品者送料 上限

            i_updusrnm,             -- 更新ユーザ名
            i_updpcnm               -- 更新マシン名
        );
        errcd = 1;
        RETURN;

    -- 変更
    ELSIF kubun = 2 THEN
        -- 更新ユーザ
        UPDATE t_seller_attr SET
            membercd            = i_membercd,               -- 会員C
            depbanknm           = i_depbanknm,              -- 入金先銀行名
            depbranchnm         = i_depbranchnm,            -- 入金先支店名
            depaccount          = i_depaccount,             -- 入金先口座
            depaccountno        = i_depaccountno,           -- 入金先口座番号
            depaccountnm        = i_depaccountnm,           -- 入金先口座名義
            depinfo             = i_depinfo,                -- 入金先情報
            deppostalcd         = i_deppostalcd,            -- 入金先郵便番号
            depprefcd           = i_depprefcd,             -- 入金先都道府県C
            depaddr1            = i_depaddr1,              -- 入金先住所1
            depaddr2            = i_depaddr2,              -- 入金先住所2
            deptelno1           = i_deptelno1,             -- 入金先電話番号1
            depaddressee        = i_depaddressee,          -- 入金先宛名
            payinfo             = i_payinfo,               -- 支払先情報
            paybanknm           = i_paybanknm,             -- 支払先銀行名
            paybranchnm         = i_paybranchnm,           -- 支払先支店名
            payaccount          = i_payaccount,            -- 支払先口座
            payaccountno        = i_payaccountno,          -- 支払先口座番号
            payaccountnm        = i_payaccountnm,          -- 支払先口座名義
            identtelno          = i_identtelno,            -- 本人確認用電話番号
            creditregist        = i_creditregist,          -- クレジットカード登録
            credittype          = i_credittype,            -- カード種類
            creditaccountnm     = i_creditaccountnm,      -- カード名義
            creditaccountno     = i_creditaccountno,       -- カード番号
            creditexpireyear    = i_creditexpireyear,      -- カード有効期限 年
            creditexpiremonth   = i_creditexpiremonth,     -- カード有効期限 月
            securitycd          = i_securitycd,            -- セキュリティコード
            sellerdiv           = i_sellerdiv,             -- 出品者区分
            basicFee            = i_basicFee,              -- 月額基本利用料
            exsystemfee         = i_exsystemfee,           -- 出品システム利用料
            stsystemfee         = i_stsystemfee,           -- 決済システム利用料
--            sellerstate         = i_sellerstate,           -- 出品者状態
--            itemexhibitstop     = i_itemexhibitstop,       -- 出品機能利用停止
            news                = i_news,                  -- お知らせ
            sellersouryou       = i_sellersouryou,         -- 出品者送料
            sellersouryoumax    = i_sellersouryoumax,      -- 出品者送料 上限
            profile             = i_profile,               -- プロフィール
            takkyubinprc        = i_takkyubinprc,
            registdate          = i_registdate,            -- 登録日
            updusrnm            = i_updusrnm,              -- 更新ユーザ名
            updpcnm             = i_updpcnm                -- 更新マシン名
        WHERE membercd = i_membercd;
 
        errcd = 1;
        code = i_membercd;
        RETURN;

    -- 削除
    ELSIF kubun =3 THEN
        UPDATE t_seller_attr
           SET delflg   = TRUE,
               updusrnm = i_updusrnm,
               updpcnm  = i_updpcnm
           WHERE membercd = i_membercd;

        errcd = 1;
        code = i_membercd;

        RETURN;
    END IF;
END;

$BODY$
  LANGUAGE 'plpgsql' VOLATILE;