CREATE OR ALTER PROCEDURE dbo.ASS_TRANSFER_MULTI_Master_SendAppr
@p_TRANSFER_MULTI_ID VARCHAR(15) = NULL,
@p_TYPE_APP NVARCHAR(15) = NUll,
@p_USER_LOGIN VARCHAR(15) = NULL,
@p_DESC NVARCHAR(max) = NULL
AS
DECLARE @ASSET_ID_LST VARCHAR(MAX), @CURRENT_TRANS_ERROR NVARCHAR(MAX)
BEGIN TRANSACTION
DECLARE @PRICE_OF_ASSET DECIMAL = (SELECT MAX(A.BUY_PRICE) FROM ASS_TRANSFER_MULTI_DT ATMD LEFT JOIN ASS_MASTER A ON A.ASSET_ID = ATMD.ASSET_ID WHERE ATMD.TRANS_MULTI_MASTER_ID = @p_TRANSFER_MULTI_ID)
DECLARE @BRANCH_ID VARCHAR(15) = (SELECT TU.TLSUBBRID FROM TL_USER TU WHERE TU.TLNANME = @p_USER_LOGIN)
DECLARE @DEP_ID VARCHAR(15) = (SELECT TU.SECUR_CODE FROM TL_USER TU WHERE TU.TLNANME = @p_USER_LOGIN)
DECLARE @NOTISENDAPP NVARCHAR(MAX) = N' đã được gửi phê duyệt thành công. Vui lòng đợi bộ phận phê duyệt xác nhận.'
DECLARE @NOTISENDAPPZ NVARCHAR(MAX) = N'Trưởng đơn vị ' + (SELECT CB.BRANCH_NAME FROM TL_USER TU LEFT JOIN CM_BRANCH CB ON TU.TLSUBBRID = CB.BRANCH_ID WHERE TU.TLNANME = @p_USER_LOGIN)
+ N' xác nhận điều chuyển'
DECLARE @SL_PYC INT
DECLARE @TYPE_PYC VARCHAR(15) = (SELECT TOP 1 B.TYPE_XL FROM ASS_TRANSFER_MULTI_MASTER A
LEFT JOIN TR_REQUEST_SHOP_DOC_DT B ON A.REQ_ID = B.REQ_DOC_ID
WHERE TRANS_MULTI_MASTER_ID=@p_TRANSFER_MULTI_ID)
DECLARE @PROCESS_C VARCHAR(20) = (SELECT TOP 1 PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_TRANSFER_MULTI_ID AND STATUS='C')
DECLARE @PARENT_ID VARCHAR(20)
DECLARE @DEP_QLTS VARCHAR(20), @DEP_DVNB VARCHAR(20), @DEP_HTKD VARCHAR(20)
SET @DEP_QLTS = (SELECT TOP 1 sp.ParaValue FROM SYS_PARAMETERS sp WHERE sp.ParaKey = 'DEP_QLTS')
SET @DEP_DVNB = (SELECT TOP 1 sp.ParaValue FROM SYS_PARAMETERS sp WHERE sp.ParaKey = 'DEP_TTQLTS')
SET @DEP_HTKD = (SELECT TOP 1 sp.ParaValue FROM SYS_PARAMETERS sp WHERE sp.ParaKey = 'DEP_KQLTS')
IF (@p_TYPE_APP = 'S_TDV')
BEGIN
-- KIỂM TRA TÀI SẢN ĐANG TREO TRONG GIAO DỊCH KHÁC
SET @ASSET_ID_LST = (SELECT B.ASSET_ID + '|' FROM (SELECT A.ASSET_ID
FROM ASS_TRANSFER_MULTI_DT A
where A.TRANS_MULTI_MASTER_ID = @p_TRANSFER_MULTI_ID) B
FOR XML PATH (''))
SELECT @CURRENT_TRANS_ERROR = dbo.ASSET_CHECK_CURRENT_TRANS(@ASSET_ID_LST)
IF(@CURRENT_TRANS_ERROR IS NOT NULL AND @CURRENT_TRANS_ERROR <> '')
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' WH_O_HCQT_MUL_ID, @CURRENT_TRANS_ERROR ErrorDesc
RETURN '-1'
END
--CHECK MAPPING TT/PB/K
DECLARE @HS TABLE(ID INT IDENTITY, DEP VARCHAR(50), KHOI VARCHAR(50), TT VARCHAR(50))
INSERT INTO @HS SELECT A.DEPT_ID, A.KHOI_ID, A.CENTER_ID FROM ASS_TRANSFER_MULTI_DT A
LEFT JOIN CM_BRANCH CB ON A.BRANCH_ID = CB.BRANCH_ID WHERE A.TRANS_MULTI_MASTER_ID = @p_TRANSFER_MULTI_ID AND CB.BRANCH_TYPE ='HS'
IF(EXISTS(SELECT * FROM @HS WHERE 1=1 AND (DEP IS NULL OR DEP = '' )
AND (KHOI IS NULL OR KHOI = '' )
AND (TT IS NULL OR TT = '' )))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' Result, N'Gửi duyệt thất bại! Thông tin điều chuyển phiếu số: '+@p_TRANSFER_MULTI_ID+
N' Đơn vị nhận Hội sở cần chọn Phòng ban nhận hoặc Khối nhận hoặc Trung tâm nhận. Vui lòng xử lý phiếu' ErrorDesc
RETURN '-1'
END
UPDATE ASS_TRANSFER_MULTI_MASTER SET AUTH_STATUS = 'U'
WHERE TRANS_MULTI_MASTER_ID = @p_TRANSFER_MULTI_ID
IF @@ERROR <> 0 GOTO ABORT
--khiemchg tạo bảng tạm chứa các loại tài sản điều chuyển sai số lượng
-- DECLARE @check_QTY TABLE(QTY_DC DECIMAL, GROUP_CODE NVARCHAR(MAX),GROUP_NAME NVARCHAR(MAX), QTY_PYC DECIMAL)
-- INSERT INTO @check_QTY SELECT A.QTY AS QTY_DC,A.GROUP_CODE, A.GROUP_NAME, ISNULL(B.QTY_ETM, 0.00) AS QTY_PYC
-- FROM
-- (SELECT COUNT(A.ASSET_ID) AS QTY, AG.GROUP_CODE, AG.GROUP_NAME
-- FROM ASS_TRANSFER_MULTI_DT A
-- LEFT JOIN ASS_MASTER AM ON A.ASSET_ID = AM.ASSET_ID
-- LEFT JOIN ASS_GROUP AG ON AM.GROUP_ID = AG.GROUP_ID
-- LEFT JOIN ASS_TRANSFER_MULTI_MASTER ATMM ON A.TRANS_MULTI_MASTER_ID = ATMM.TRANS_MULTI_MASTER_ID
-- WHERE ATMM.REQ_ID = (SELECT ATM.REQ_ID FROM ASS_TRANSFER_MULTI_MASTER ATM WHERE ATM.TRANS_MULTI_MASTER_ID = @p_TRANSFER_MULTI_ID)
-- AND (ATMM.AUTH_STATUS <> 'E' OR ATMM.AUTH_STATUS <> 'R')
-- GROUP BY AG.GROUP_CODE, AG.GROUP_NAME) A
-- LEFT JOIN (SELECT TRSDD.QTY_ETM, AG2.GROUP_CODE, AG2.GROUP_NAME FROM TR_REQUEST_SHOP_DOC_DT TRSDD
-- LEFT JOIN ASS_GROUP AG2 ON TRSDD.ASS_GROUP_ID = AG2.GROUP_ID
-- WHERE
-- TRSDD.REQ_DOC_ID = (SELECT ATMM.REQ_ID FROM ASS_TRANSFER_MULTI_MASTER ATMM WHERE ATMM.TRANS_MULTI_MASTER_ID = @p_TRANSFER_MULTI_ID)
-- AND TRSDD.TYPE_XL = 'CPDC') B ON A.GROUP_CODE = B.GROUP_CODE
-- WHERE A.QTY > B.QTY_ETM
--
-- DECLARE @QTY_ERROR NVARCHAR(MAX) = (SELECT STUFF((SELECT ', ' + GROUP_NAME FROM @check_QTY FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, ''))
-- IF((SELECT COUNT(*) FROM @check_QTY) > 0)
-- BEGIN
-- ROLLBACK TRANSACTION
-- SELECT '-1' Result, N'Gửi duyệt thất bại! Thông tin điều chuyển phiếu số: '+@p_TRANSFER_MULTI_ID + '
' +
-- N' Số lượng tài sản thuộc loại: "'+ @QTY_ERROR + N'" không được lớn hơn số lượng tài sản được cấp điều chuyển theo Phiếu yêu cầu.'
-- + N' Vui lòng xử lý phiếu' ErrorDesc
-- RETURN '-1'
-- END
--khiemchg.
IF(EXISTS(SELECT 1 FROM dbo.ASS_TRANSFER_MULTI_MASTER WHERE TRANS_MULTI_MASTER_ID=@p_TRANSFER_MULTI_ID AND AUTH_STATUS='R'))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' Result, N'Gửi duyệt thất bại! Thông tin điều chuyển phiếu số: '+@p_TRANSFER_MULTI_ID+
N' đang bị từ chối. Vui lòng xử lý phiếu' ErrorDesc
RETURN '-1'
END
IF(EXISTS(SELECT 1 FROM dbo.ASS_TRANSFER_MULTI_MASTER WHERE TRANS_MULTI_MASTER_ID=@p_TRANSFER_MULTI_ID AND AUTH_STATUS='R'))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' Result, N'Gửi duyệt thất bại! Thông tin điều chuyển phiếu số: '+@p_TRANSFER_MULTI_ID+
N' đang bị từ chối. Vui lòng xử lý phiếu' ErrorDesc
RETURN '-1'
END
IF(@TYPE_PYC = 'CPDC')
BEGIN
SET @SL_PYC = (SELECT SUM(ISNULL(B.QTY_ETM, 0)) FROM ASS_TRANSFER_MULTI_MASTER A
LEFT JOIN TR_REQUEST_SHOP_DOC_DT B ON A.REQ_ID = B.REQ_DOC_ID
WHERE TRANS_MULTI_MASTER_ID=@p_TRANSFER_MULTI_ID)
IF((SELECT COUNT(ASSET_ID) FROM ASS_TRANSFER_MULTI_DT WHERE TRANS_MULTI_MASTER_ID = @p_TRANSFER_MULTI_ID) > @SL_PYC)
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' Result, N'Gửi duyệt thất bại! Thông tin điều chuyển phiếu số: '+@p_TRANSFER_MULTI_ID+
N' sai số lượng so với PYC được chọn. Vui lòng xử lý phiếu' ErrorDesc
RETURN '-1'
END
END
UPDATE ASS_TRANSFER_MULTI_MASTER SET AUTH_STATUS = 'U'
WHERE TRANS_MULTI_MASTER_ID = @p_TRANSFER_MULTI_ID
IF @@ERROR <> 0 GOTO ABORT
-- HUYHT 06/05/2022: THAY ĐỔI TRẠNG THÁI UPDATE CŨ THÀNH UPDATE_HC
UPDATE dbo.PL_PROCESS SET PROCESS_ID = 'UPDATE_HC' WHERE REQ_ID = @p_TRANSFER_MULTI_ID AND PROCESS_ID = 'UPDATE'
UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='C', RECEPTION_DT=GETDATE() WHERE REQ_ID=@p_TRANSFER_MULTI_ID AND PROCESS_ID='QLTS_D'
INSERT INTO dbo.PL_PROCESS(REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES)
VALUES(@p_TRANSFER_MULTI_ID, 'SEND', @p_USER_LOGIN, GETDATE(),
N'Gửi Trưởng đơn vị phê duyệt', N'Nhân viên tạo phiếu và gửi phê duyệt thành công')
UPDATE PL_REQUEST_PROCESS SET STATUS = 'P' WHERE REQ_ID = @p_TRANSFER_MULTI_ID AND PROCESS_ID = 'ADDNEW'
UPDATE ASS_TRANSFER_MULTI_MASTER SET STATUS = 'QLTS_D'
WHERE TRANS_MULTI_MASTER_ID = @p_TRANSFER_MULTI_ID
--khiemchg update treo tài sản khi thực hiện điều chuyển
UPDATE ASS_MASTER SET CURRENT_TRANS = @p_TRANSFER_MULTI_ID, CURRENT_TRANS_TYPE = 'ASS_TF_MUL'
WHERE ASSET_ID IN (SELECT ASSET_ID FROM ASS_TRANSFER_MULTI_DT WHERE TRANS_MULTI_MASTER_ID = @p_TRANSFER_MULTI_ID)
IF @@ERROR <> 0 GOTO ABORT
BEGIN
-- IF(@PRICE_OF_ASSET <= 30000000)
-- BEGIN
--SET @PARENT_ID = 'QLTS_D'
-- END
--IF(@PRICE_OF_ASSET > 30000000 AND @PRICE_OF_ASSET <= 50000000)
-- IF(@PRICE_OF_ASSET > 30000000)
-- BEGIN
-- INSERT INTO PL_REQUEST_PROCESS(REQ_ID,[PROCESS_ID],[STATUS],ROLE_USER,BRANCH_ID,PARENT_PROCESS_ID, DEP_ID)
-- VALUES(@p_TRANSFER_MULTI_ID,'TT_DVNB','U','GDDV_QLTS','DV0001','QLTS_D', @DEP_DVNB)
-- SET @PARENT_ID = 'TT_DVNB'
-- END
-- ELSE IF (@PRICE_OF_ASSET > 50000000 AND @PRICE_OF_ASSET <= 100000000)
-- BEGIN
-- INSERT INTO PL_REQUEST_PROCESS(REQ_ID,[PROCESS_ID],[STATUS],ROLE_USER,BRANCH_ID,PARENT_PROCESS_ID, DEP_ID)
-- VALUES(@p_TRANSFER_MULTI_ID,'TT_DVNB','C','GDDV_QLTS','DV0001','QLTS_D', @DEP_DVNB)
--
---- INSERT INTO PL_REQUEST_PROCESS(REQ_ID,[PROCESS_ID],[STATUS],ROLE_USER,BRANCH_ID,PARENT_PROCESS_ID, DEP_ID)
---- VALUES(@p_TRANSFER_MULTI_ID,'K_HTKD','U','GDDV','DV0001','TT_DVNB', @DEP_HTKD)
--
-- SET @PARENT_ID = 'TT_DVNB'
-- END
-- ELSE IF (@PRICE_OF_ASSET > 100000000)
-- BEGIN
-- INSERT INTO PL_REQUEST_PROCESS(REQ_ID,[PROCESS_ID],[STATUS],ROLE_USER,BRANCH_ID,PARENT_PROCESS_ID, DEP_ID)
-- VALUES(@p_TRANSFER_MULTI_ID,'TT_DVNB','C','GDDV_QLTS','DV0001','QLTS_D', @DEP_DVNB)
--
---- INSERT INTO PL_REQUEST_PROCESS(REQ_ID,[PROCESS_ID],[STATUS],ROLE_USER,BRANCH_ID,PARENT_PROCESS_ID, DEP_ID)
---- VALUES(@p_TRANSFER_MULTI_ID,'K_HTKD','U','GDDV','DV0001','TT_DVNB', @DEP_HTKD)
----
---- INSERT INTO PL_REQUEST_PROCESS(REQ_ID,[PROCESS_ID],[STATUS],ROLE_USER,BRANCH_ID,PARENT_PROCESS_ID)
---- VALUES(@p_TRANSFER_MULTI_ID,'TGD','U','TGD','DV0001','K_HTKD')
--
-- SET @PARENT_ID = 'TT_DVNB'
-- END
SET @PARENT_ID = 'QLTS_D'
--Khiemchg lấy danh sách đơn vị nhận và cho
DECLARE @lstBranch TABLE
(
ID INT IDENTITY,
Branch_Id VARCHAR(50),
Dep_Id VARCHAR(50),
Center_Id VARCHAR(50),
Khoi_Id VARCHAR(50)
)
DECLARE @temp TABLE
(
BRN_SD VARCHAR(50),
K_SD VARCHAR(50),
TT_SD VARCHAR(50),
DEP_SD VARCHAR(50),
BRN_N VARCHAR(50),
K_N VARCHAR(50),
TT_N VARCHAR(50),
DEP_N VARCHAR(50)
)
INSERT INTO @temp
SELECT DISTINCT BRANCH_ID_OLD, KHOI_ID_OLD, CENTER_ID_OLD, DEPT_ID_OLD,
BRANCH_ID, KHOI_ID, CENTER_ID, DEPT_ID
FROM ASS_TRANSFER_MULTI_DT
WHERE TRANS_MULTI_MASTER_ID = @p_TRANSFER_MULTI_ID
-- DELETE @temp WHERE (BRN_SD = BRN_N AND DEP_SD = DEP_N AND K_SD = K_N AND TT_SD = TT_N)
-- OR (BRN_SD = BRN_N AND DEP_SD = DEP_N AND K_SD = K_N AND TT_SD = TT_N)
DELETE @temp WHERE (BRN_SD = BRN_N AND DEP_SD = DEP_N)
INSERT INTO @lstBranch(Branch_Id, Dep_Id, Center_Id, Khoi_Id) SELECT DISTINCT BRN_SD, DEP_SD, TT_SD, K_SD FROM @temp
INSERT INTO @lstBranch(Branch_Id, Dep_Id, Center_Id, Khoi_Id) SELECT DISTINCT BRN_N, DEP_N, TT_N, K_N FROM @temp
DECLARE @int INT = 1
DECLARE @countt INT = (SELECT COUNT(ID) FROM @lstBranch)
--IF(@count > 1)
BEGIN
WHILE @int <= @countt
BEGIN
DECLARE @BRANCH VARCHAR(20) = (SELECT Branch_Id FROM @lstBranch WHERE ID = @int)
DECLARE @DEPT VARCHAR(20) = (SELECT Dep_Id FROM @lstBranch WHERE ID = @int)
DECLARE @CENTER VARCHAR(20) = (SELECT Center_Id FROM @lstBranch WHERE ID = @int)
DECLARE @KHOI VARCHAR(20) = (SELECT Khoi_Id FROM @lstBranch WHERE ID = @int)
IF(@BRANCH <> '' OR @BRANCH IS NOT NULL)
BEGIN
IF((@KHOI IS NOT NULL AND @KHOI <> '') AND (@CENTER IS NOT NULL AND @CENTER <> '') AND (@DEPT IS NOT NULL AND @DEPT <> ''))
BEGIN
INSERT INTO PL_REQUEST_PROCESS(REQ_ID,[PROCESS_ID],[STATUS],ROLE_USER,BRANCH_ID,PARENT_PROCESS_ID, DEP_ID)
VALUES(@p_TRANSFER_MULTI_ID,'XNGN','U','GDDV',@BRANCH,@PARENT_ID, @DEPT)
END
ELSE IF((@KHOI IS NOT NULL AND @KHOI <> '') AND (@CENTER IS NOT NULL AND @CENTER <> '') AND (@DEPT IS NULL OR @DEPT = ''))
BEGIN
INSERT INTO PL_REQUEST_PROCESS(REQ_ID,[PROCESS_ID],[STATUS],ROLE_USER,BRANCH_ID,PARENT_PROCESS_ID, DEP_ID)
VALUES(@p_TRANSFER_MULTI_ID,'XNGN','U','GDDV',@BRANCH,@PARENT_ID, @CENTER)
END
ELSE IF((@KHOI IS NOT NULL AND @KHOI <> '') AND (@CENTER IS NULL OR @CENTER = '') AND (@DEPT IS NULL OR @DEPT = ''))
BEGIN
INSERT INTO PL_REQUEST_PROCESS(REQ_ID,[PROCESS_ID],[STATUS],ROLE_USER,BRANCH_ID,PARENT_PROCESS_ID, DEP_ID)
VALUES(@p_TRANSFER_MULTI_ID,'XNGN','U','GDDV',@BRANCH,@PARENT_ID, @KHOI)
END
ELSE
BEGIN
INSERT INTO PL_REQUEST_PROCESS(REQ_ID,[PROCESS_ID],[STATUS],ROLE_USER,BRANCH_ID,PARENT_PROCESS_ID, DEP_ID)
VALUES(@p_TRANSFER_MULTI_ID,'XNGN','U','GDDV',@BRANCH,@PARENT_ID, @DEPT)
END
END
SET @int = @int + 1
END
END
IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS PRP WHERE PRP.REQ_ID = @p_TRANSFER_MULTI_ID AND PRP.PROCESS_ID = 'XNGN')) SET @PARENT_ID = 'XNGN'
INSERT INTO PL_REQUEST_PROCESS(REQ_ID,[PROCESS_ID],[STATUS],PARENT_PROCESS_ID)
VALUES(@p_TRANSFER_MULTI_ID,'APPROVE','U',@PARENT_ID)
END
END
ELSE IF (@p_TYPE_APP = 'CONFIRM')
BEGIN
IF (@PROCESS_C = 'XNGN')
BEGIN
IF((SELECT CB.BRANCH_TYPE FROM TL_USER TU LEFT JOIN CM_BRANCH CB ON TU.TLSUBBRID = CB.BRANCH_ID WHERE TU.TLNANME = @p_USER_LOGIN) = 'HS')
BEGIN
SET @NOTISENDAPP = N' Trưởng đơn vị ' + (SELECT CB.DEP_NAME FROM TL_USER TU LEFT JOIN CM_DEPARTMENT CB ON TU.SECUR_CODE = CB.DEP_ID WHERE TU.TLNANME = @p_USER_LOGIN)
+ N' đã xác nhận điều chuyển thành công'
SET @NOTISENDAPPZ = N' Trưởng đơn vị ' + (SELECT CB.DEP_NAME FROM TL_USER TU LEFT JOIN CM_DEPARTMENT CB ON TU.SECUR_CODE = CB.DEP_ID WHERE TU.TLNANME = @p_USER_LOGIN)
+ N' đã xác nhận điều chuyển'
END
UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='P', CHECKER_ID = @p_USER_LOGIN, APPROVE_DT=GETDATE()
WHERE REQ_ID = @p_TRANSFER_MULTI_ID AND PROCESS_ID='XNGN'
AND ((@BRANCH_ID = 'DV0001' AND BRANCH_ID = @BRANCH_ID AND (DEP_ID = @DEP_ID
OR DEP_ID IN (SELECT DEPT_ID FROM TL_USER_GET_ROLES(@p_USER_LOGIN) GROUP BY DEPT_ID))
) OR (@BRANCH_ID <> 'DV0001' AND BRANCH_ID = @BRANCH_ID))
AND STATUS = 'C'
INSERT INTO dbo.PL_PROCESS
(
REQ_ID,
PROCESS_ID,
CHECKER_ID,
APPROVE_DT,
PROCESS_DESC,
NOTES
)
VALUES
( @p_TRANSFER_MULTI_ID,
'CONFIRM',
@p_USER_LOGIN,
GETDATE(),
N'Trưởng đơn vị xác nhận thành công' ,
@NOTISENDAPPZ
)
IF(NOT EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE PROCESS_ID = 'XNGN' AND STATUS = 'C' AND REQ_ID = @p_TRANSFER_MULTI_ID) AND (SELECT ATMM.AUTH_STATUS FROM ASS_TRANSFER_MULTI_MASTER ATMM WHERE ATMM.TRANS_MULTI_MASTER_ID = @p_TRANSFER_MULTI_ID) = 'U')
BEGIN
UPDATE ASS_TRANSFER_MULTI_MASTER SET STATUS = 'APPROVE' , AUTH_STATUS = 'A' WHERE [TRANS_MULTI_MASTER_ID] = @p_TRANSFER_MULTI_ID
UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='C', APPROVE_DT=GETDATE()
WHERE REQ_ID = @p_TRANSFER_MULTI_ID AND PROCESS_ID = 'APPROVE' AND STATUS = 'U'
INSERT INTO dbo.PL_PROCESS
(
REQ_ID,
PROCESS_ID,
APPROVE_DT,
PROCESS_DESC,
NOTES
)
VALUES
( @p_TRANSFER_MULTI_ID,
'CONFIRMED',
GETDATE(),
N'Hoàn thành xác nhận tài sản',
N'Phiếu hoàn thành xác nhận tài sản sau khi Trưởng đơn vị bên cho và nhận xác nhận'
)
END
END
END
ELSE IF (@p_TYPE_APP = 'KT')
BEGIN
IF((SELECT CORE_NOTE FROM ASS_TRANSFER_MULTI_MASTER WHERE TRANS_MULTI_MASTER_ID = @p_TRANSFER_MULTI_ID) IS NULL OR (SELECT CORE_NOTE FROM ASS_TRANSFER_MULTI_MASTER WHERE TRANS_MULTI_MASTER_ID = @p_TRANSFER_MULTI_ID) = '')
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' Result, N'Gửi duyệt thất bại! Thông tin điều chuyển phiếu số: '+@p_TRANSFER_MULTI_ID+
N' đang trống diễn giải hạch toán' ErrorDesc
RETURN '-1'
END
UPDATE ASS_TRANSFER_MULTI_MASTER SET AUTH_STATUS_KT = 'U' WHERE TRANS_MULTI_MASTER_ID = @p_TRANSFER_MULTI_ID
INSERT INTO dbo.PL_PROCESS
(
REQ_ID,
PROCESS_ID,
CHECKER_ID,
APPROVE_DT,
PROCESS_DESC,
NOTES
)
VALUES
( @p_TRANSFER_MULTI_ID,
'GDV',
@p_USER_LOGIN,
GETDATE(),
N'Giao dịch viên Kế toán gửi Kiểm soát viên phê duyệt' ,
N'Giao dịch viên Kế toán gửi duyệt'
)
END
--PHUCVH 06/03/23 BỔ SUNG MESSAGE
DECLARE @MESSAGE NVARCHAR(MAX)
IF (@p_TYPE_APP = 'S_TDV')
BEGIN
DECLARE @REQ_DOC_ID VARCHAR(15) = (SELECT TOP 1 atmm.REQ_ID FROM ASS_TRANSFER_MULTI_MASTER atmm WHERE atmm.TRANS_MULTI_MASTER_ID = @p_TRANSFER_MULTI_ID)
IF(@REQ_DOC_ID IS NOT NULL AND @REQ_DOC_ID <> '')
BEGIN
SET @MESSAGE = '
' + (
SELECT REPLACE(
(SELECT STUFF((SELECT ' ' + DDDD.MESSAGE FROM ( SELECT CASE WHEN ROW_NUMBER() OVER (ORDER BY (SELECT 0)) = 1 THEN ''ELSE '/' END + N'Loại tài sản: ' + ISNULL(BB.GROUP_NAME,'') + N' | Số lượng yêu cầu: ' + CONVERT(VARCHAR(10),ISNULL(AA.QTY_ETM,0)) + N' | Số lượng đã điều chuyển: ' + CONVERT(VARCHAR(10),ISNULL(AA.ALLOCATED,0)) +
N' | Số lượng điều chuyển trong phiếu hiện tại: ' + CONVERT(VARCHAR(10),ISNULL((SELECT SUM(TMP.COUNT) FROM (
(SELECT COUNT(*) AS COUNT
FROM ASS_TRANSFER_MULTI_DT A
LEFT JOIN ASS_TRANSFER_MULTI_MASTER B ON A.TRANS_MULTI_MASTER_ID = B.TRANS_MULTI_MASTER_ID
LEFT JOIN ASS_MASTER C ON A.ASSET_ID = C.ASSET_ID
WHERE A.TRANS_MULTI_MASTER_ID = @p_TRANSFER_MULTI_ID
GROUP BY B.REQ_ID, C.GROUP_ID, C.REQ_ID
HAVING B.REQ_ID = @REQ_DOC_ID
AND ((C.GROUP_ID = BB.GROUP_ID
AND (SELECT COUNT(*) FROM ASS_GROUP ag WHERE ag.GROUP_CODE = BB.GROUP_CODE
AND ag.GROUP_ID IN (SELECT trsdd.ASS_GROUP_ID FROM TR_REQUEST_SHOP_DOC_DT trsdd WHERE trsdd.REQ_DOC_ID = AA.REQ_DOC_ID
AND trsdd.REQ_DT_TYPE = 'XKSD' AND trsdd.TYPE_XL = 'CPDC'))>1 )
OR C.GROUP_ID IN (SELECT ag.GROUP_ID FROM ASS_GROUP ag WHERE ag.GROUP_CODE = BB.GROUP_CODE))
AND (C.REQ_ID IS NULL OR C.REQ_ID = '')))TMP),0)) AS MESSAGE
FROM TR_REQUEST_SHOP_DOC_DT AA
LEFT JOIN ASS_GROUP BB ON AA.ASS_GROUP_ID = BB.GROUP_ID
WHERE AA.REQ_DOC_ID = @REQ_DOC_ID AND AA.REQ_DT_TYPE = 'XKSD' AND AA.TYPE_XL = 'CPDC') DDDD FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '')),'/','
'))
END
--CHECK ALLOCATED
DECLARE @TBL_CHECK_UPD TABLE (REQDT_ID VARCHAR(15), ASS_GROUP_ID VARCHAR(15), REQ_DOC_ID VARCHAR(15))
DECLARE @TBL_GROUP_CODE_ASS_USE TABLE (GROUP_ID VARCHAR(15))
INSERT INTO @TBL_CHECK_UPD
SELECT A.REQDT_ID, A.ASS_GROUP_ID,A.REQ_DOC_ID
FROM TR_REQUEST_SHOP_DOC_DT A
WHERE A.REQ_DOC_ID = @REQ_DOC_ID AND A.REQ_DT_TYPE = 'XKSD' AND A.TYPE_XL = 'CPDC'
DECLARE @C_REQDT_ID VARCHAR(15), @C_ASS_GROUP_ID VARCHAR(15), @C_REQ_DOC_ID VARCHAR(15)
DECLARE @IS_MULTI_GROUP VARCHAR(1) = '0'
DECLARE DATA_CURSOR_CHECK_UPD CURSOR FOR
SELECT * FROM @TBL_CHECK_UPD
OPEN DATA_CURSOR_CHECK_UPD
FETCH NEXT FROM DATA_CURSOR_CHECK_UPD INTO
@C_REQDT_ID,@C_ASS_GROUP_ID,@C_REQ_DOC_ID
DECLARE @ALLOCATED INT,@ALLOCATED_CURR INT, @ALLOCATED_OLD INT, @QTY_ETM INT
WHILE @@FETCH_STATUS = 0
BEGIN
SET @IS_MULTI_GROUP = '0'
DELETE @TBL_GROUP_CODE_ASS_USE
INSERT INTO @TBL_GROUP_CODE_ASS_USE (GROUP_ID)
SELECT A.GROUP_ID FROM ASS_GROUP A WHERE A.GROUP_CODE IN (SELECT B.GROUP_CODE FROM ASS_GROUP B WHERE B.GROUP_ID = @C_ASS_GROUP_ID)
IF((SELECT COUNT(*) FROM @TBL_GROUP_CODE_ASS_USE WHERE GROUP_ID IN (SELECT trsdd.ASS_GROUP_ID FROM TR_REQUEST_SHOP_DOC_DT trsdd WHERE trsdd.REQ_DOC_ID = @C_REQ_DOC_ID AND trsdd.REQ_DT_TYPE = 'XKSD' AND trsdd.TYPE_XL = 'CPDC')) > 1)
BEGIN
SET @IS_MULTI_GROUP = '1'
END
SET @ALLOCATED_CURR = (SELECT SUM(TMP.COUNT) FROM (
(SELECT COUNT(*) AS COUNT
FROM ASS_TRANSFER_MULTI_DT A
LEFT JOIN ASS_TRANSFER_MULTI_MASTER B ON A.TRANS_MULTI_MASTER_ID = B.TRANS_MULTI_MASTER_ID
LEFT JOIN ASS_MASTER C ON A.ASSET_ID = C.ASSET_ID
WHERE A.TRANS_MULTI_MASTER_ID = @p_TRANSFER_MULTI_ID
GROUP BY B.REQ_ID, C.GROUP_ID, C.REQ_ID
HAVING B.REQ_ID = @C_REQ_DOC_ID
AND C.GROUP_ID IN (SELECT GROUP_ID FROM @TBL_GROUP_CODE_ASS_USE WHERE ((@IS_MULTI_GROUP = '1' AND C.GROUP_ID = @C_ASS_GROUP_ID) OR @IS_MULTI_GROUP = '0'))
AND (C.REQ_ID IS NULL OR C.REQ_ID = '')))TMP)
SELECT TOP 1 @ALLOCATED_OLD = trsdd.ALLOCATED, @QTY_ETM = trsdd.QTY_ETM FROM TR_REQUEST_SHOP_DOC_DT trsdd WHERE trsdd.REQDT_ID = @C_REQDT_ID
IF(@QTY_ETM < (ISNULL(@ALLOCATED_OLD,0) + ISNULL(@ALLOCATED_CURR,0)))
BEGIN
ROLLBACK TRANSACTION
CLOSE DATA_CURSOR_CHECK_UPD
DEALLOCATE DATA_CURSOR_CHECK_UPD
SELECT '-1' as Result, '' USER_MASTER_ID, N'Số lượng cấp phát vượt yêu cầu của đơn vị' +ISNULL(@MESSAGE,',') ErrorDesc
RETURN '-1'
END
FETCH NEXT FROM DATA_CURSOR_CHECK_UPD INTO
@C_REQDT_ID,@C_ASS_GROUP_ID,@C_REQ_DOC_ID
END
CLOSE DATA_CURSOR_CHECK_UPD
DEALLOCATE DATA_CURSOR_CHECK_UPD
END
COMMIT TRANSACTION
SELECT '0' as Result, N'Hồ sơ số: '+@p_TRANSFER_MULTI_ID+@NOTISENDAPP + ISNULL(@MESSAGE,'') ErrorDesc, @p_TRANSFER_MULTI_ID TRANS_MULTI_MASTER_ID
RETURN '0'
ABORT:
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' TRANS_MULTI_MASTER_ID, '' ErrorDesc
RETURN '-1'
END