USE [Pangya_S4_TH]
GO
/****** Object: StoredProcedure [dbo].[USP_CARD_JOIN_S4] Script Date: 01/17/2011 18:20:13 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROC [dbo].[USP_CARD_JOIN_S4] (
@UID INT
, @JOIN_TYPEID INT
, @JOIN_ITEMID INT
, @CARD_TYPEID INT
, @CARD_ITEMID INT
, @CARD_TYPE TINYINT
, @SLOT TINYINT
) -- -- WITH ENCRYPTION
AS
/**************************************************************************************************
20080513 HYUN HAEJIN - USP_CARD_JOIN_USE 에서 S4로 업그레이드
캐릭터 및 캐디카드 파츠장착
2009-02-12, GOMI97 : 캐릭터, 캐디 이외카드 장착 불가
상태에 따른 결과코드 추가
0 -- ROLLBACK => 1 로 변경
1 -- 성공 => 0
9 -- 차감할 카드수량 부족 : 2009-04-28 추가
4 -- JOIN_TYPEID 장착불가
2009-04-28, GOMI97 : 카드 보유수량 추가 체크
2009-06-19, GOMI97 : 장착할 의상 상태 체크 (VALID) ERRCODE = 8
ERRCODE
0 : 성공
1 : SYS ERR
4 : CARD_TYPE 캐릭터, 캐디 카드아님
8 : 장착의상 체크
9 : 카드수량 부족
EXEC USP_CARD_JOIN_S4
@UID = 3411537
, @JOIN_TYPEID = 135807079
, @JOIN_ITEMID = 572268755
, @CARD_TYPEID = 2080374788
, @CARD_ITEMID = 766 -- 766
, @CARD_TYPE = 1
, @SLOT = 2
**************************************************************************************************/
BEGIN
SET NOCOUNT ON
DECLARE @ERR TINYINT, @CARD_POP_ERR INT, @CARD_PUSH_ERR INT, @JOIN_ITEM_ID INT , @QTY INT, @TYPES TINYINT
SET @ERR = 0
SET @QTY = 1
SET @JOIN_ITEM_ID = 0
SET @TYPES = 4
IF EXISTS ( SELECT 1 FROM PANGYA_ITEM_WAREHOUSE WITH (NOLOCK) WHERE UID = @UID AND ITEM_ID = @JOIN_ITEMID AND TYPEID = @JOIN_TYPEID AND VALID = 1 ) BEGIN
IF ( @CARD_TYPE = 0 OR @CARD_TYPE = 1 ) BEGIN
-- #1. MINUS CARD QTY
EXEC USP_CARD_POP_S4 @UID, @CARD_ITEMID, @CARD_TYPEID, @QTY, 4, @CARD_POP_ERR OUTPUT
-- SELECT @CARD_POP_ERR
IF ( @CARD_POP_ERR = 0 ) BEGIN
BEGIN TRAN
-- #2. CARD = PARTS JOIN
SELECT @JOIN_ITEM_ID = JOIN_IDX
FROM DBO.TD_CARD_JOIN2 WITH (NOLOCK)
WHERE UID = @UID
AND JOIN_TYPEID = @JOIN_TYPEID
AND JOIN_ITEMID = @JOIN_ITEMID
AND CARD_TYPE = @CARD_TYPE
AND SLOT = @SLOT
AND USE_DT < GETDATE()
AND END_DT IS NULL
AND USE_YN = 'Y'
IF ( @JOIN_ITEM_ID > 0 ) BEGIN
UPDATE DBO.TD_CARD_JOIN2
SET CARD_TYPEID = @CARD_TYPEID
, USE_DT = GETDATE()
WHERE UID = @UID
AND JOIN_TYPEID = @JOIN_TYPEID
AND JOIN_ITEMID = @JOIN_ITEMID
AND JOIN_IDX = @JOIN_ITEM_ID
SELECT @ERR = CASE WHEN ( @@ROWCOUNT <> 1 AND @@ERROR <> 0 ) THEN @ERR + 1 ELSE @ERR END
END ELSE BEGIN
INSERT INTO DBO.TD_CARD_JOIN2 (UID, JOIN_TYPEID, JOIN_ITEMID, CARD_TYPEID, CARD_TYPE, SLOT, USE_DT, USE_YN)
VALUES (@UID, @JOIN_TYPEID, @JOIN_ITEMID, @CARD_TYPEID, @CARD_TYPE, @SLOT, GETDATE(), 'Y')
SELECT @ERR = CASE WHEN ( @@ROWCOUNT <> 1 AND @@ERROR <> 0 ) THEN @ERR + 1 ELSE @ERR END, @JOIN_ITEM_ID = SCOPE_IDENTITY()
END
IF (@ERR = 0) BEGIN
COMMIT TRAN
SELECT RESULT = @ERR
END ELSE BEGIN
ROLLBACK TRAN
SELECT RESULT = @ERR
END
END ELSE BEGIN -- POP END
-- ROLLBACK CARD : ADD
SET @ERR = @CARD_POP_ERR
SELECT RESULT = @CARD_POP_ERR
-- FINAL NEW CARD LOG
-- INSERT INTO Pangya_GDBLog.DBO.TZ_CARD_LOG (TYPES, ERRCODE, UID, ORI_ITEMID, CARD_ITEMID, CARD_TYPEID, QTY, FINAL_QTY, REGDATE)
-- SELECT @TYPES, ERRCODE = @ERR, @UID, ORI_CARD_ITEMID = @CARD_ITEMID,
-- CARD_ITEMID = @JOIN_ITEM_ID,
-- CARD_TYPEID = @JOIN_ITEMID,
-- ADD_QTY = CASE WHEN (@ERR != 0) THEN 0 ELSE @QTY END,
-- QTY = CASE WHEN (@ERR != 0) THEN 0 ELSE @QTY END, GETDATE()
-- -- FINAL NEW CARD LOG
END
END ELSE BEGIN
-- RETURN CARD_TYPE NOT CHARACTER, CADDIE : 4
SET @ERR = 4
SELECT RESULT = @ERR
END
END ELSE BEGIN
-- 장착할 의상 없음
SET @ERR = 8
SELECT RESULT = @ERR
END
END