/*
Run this script on:
(local)\SQLEXPRESS.gAMS_BVB_v3_Customer - This database will be modified
to synchronize it with:
192.168.1.230,5036.gAMSPro_BVB_v3_UAT_NB
You are recommended to back up your database before running this script
Script created by SQL Compare version 13.1.6.5463 from Red Gate Software Ltd at 2/15/2022 9:40:02 AM
*/
SET NUMERIC_ROUNDABORT OFF
GO
SET ANSI_PADDING, ANSI_WARNINGS, CONCAT_NULL_YIELDS_NULL, ARITHABORT, QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
SET XACT_ABORT ON
GO
SET TRANSACTION ISOLATION LEVEL Serializable
GO
BEGIN TRANSACTION
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Altering [dbo].[TR_REQ_PAYMENT_ById]'
GO
ALTER PROC [dbo].[TR_REQ_PAYMENT_ById]
@p_REQ_PAYMENT_ID varchar(15) = NULL,
@p_REQ_TYPE varchar(15)=NULL
AS
SELECT A.PAY_ADV_ID,A.PAY_ID,A.TRN_DATE,A.PAYDTID,A.AMT_PAY,B.REQ_PAY_CODE, B.MAKER_ID,B.CHECKER_ID, B.APPROVE_DT, B.TRANSFER_MAKER, B.TRANSFER_DT,
B.TRASFER_USER_RECIVE, B.MAKER_ID_KT, B.APPROVE_DT_KT,B.CHECKER_ID_KT, B.CREATE_DT_KT,AL.CONTENT REQ_TYPE_NAME,B.REQ_DT,
AL1.CONTENT REQ_TYPE_PAY_NAME,B.CREATE_DT,B.APPROVE_DT, BR.BRANCH_CODE, BR.BRANCH_NAME,A.AMT_ADVANCED,A.AMT_DO,A.AMT_REMAIN,A.AMT_REVERT,A.AMT_USE,A.AMT_ADD,
DP.DEP_CODE, DP.DEP_NAME, A.CURRENCY, A.RATE,
ISNULL(A.AMT_REMAIN, 0) - ISNULL(A.AMT_USE, 0) - ISNULL(A.AMT_REVERT, 0) + ISNULL(A.AMT_ADD, 0) AS SO_TIEN_TU_CL
FROM TR_REQ_PAYMENT_DT A
LEFT JOIN TR_REQ_ADVANCE_PAYMENT B ON A.PAY_ADV_ID = B.REQ_PAY_ID
LEFT JOIN CM_ALLCODE AL ON B.REQ_TYPE = AL.CDVAL AND AL.CDNAME='REQ_TYPE' AND AL.CDTYPE = 'REQ_TYPE'--Loại thanh toán (Nội bộ/Thanh toán/Nợ)
LEFT JOIN CM_ALLCODE AL1 ON B.REQ_PAY_TYPE = AL1.CDVAL AND AL1.CDNAME='REQ_PAY_TYPE' AND AL1.CDTYPE = 'REQ_TRANSFER'--Hình thức thanh toán( Tiền mặt/Chuyển khoản)
LEFT JOIN dbo.CM_BRANCH BR ON B.BRANCH_ID=BR.BRANCH_ID
LEFT JOIN dbo.CM_DEPARTMENT DP ON B.DEP_ID=DP.DEP_ID
WHERE A.PAY_ID = @p_REQ_PAYMENT_ID
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Creating [dbo].[BUD_CONTRACT_CUST_MASTER_Ins]'
GO
CREATE PROCEDURE [dbo].[BUD_CONTRACT_CUST_MASTER_Ins]
@p_CONTRACT_ID varchar(15) = NULL,
@p_BUILDING_ID varchar(15) = NULL,
@p_CONTRACT_NO nvarchar(100) = NULL,
@p_VERSION_NO int = NULL,
@p_TR_CONTRACT_ID VARCHAR(15) = NULL,
@p_CUST_ID varchar(15) = NULL,
@p_INPUT_DT VARCHAR(20) = NULL,
@p_AMEND_DT VARCHAR(20) = NULL,
@p_FROM_DT VARCHAR(20) = NULL,
@p_TO_DATE VARCHAR(20) = NULL,
@p_CLOSE_DT VARCHAR(20) = NULL,
@p_MONTHS int = NULL,
@p_RENT_PRICE numeric(18) = NULL,
@p_NOTES NVARCHAR(MAX)= NULL,
@p_BRANCH_ID VARCHAR(15) = NULL,
@p_RECORD_STATUS varchar(1) = NULL,
@p_AUTH_STATUS varchar(1) = NULL,
@p_STATUS VARCHAR(1) = NULL,
@p_MAKER_ID varchar(15) = NULL,
@p_CREATE_DT VARCHAR(20) = NULL,
@p_CHECKER_ID varchar(15) = NULL,
@p_APPROVE_DT VARCHAR(20) = NULL,
@p_XML_TEMP xml = NULL,
@p_VAT DECIMAL(18,0) = NULL,
@p_VAT_AMT DECIMAL(18,0) = NULL,
@p_DEPOSITS_AMT DECIMAL(18,0) = NULL,
@p_PAYMENT_SHEDULE NVARCHAR(500) = NULL,
@p_PAYMENT_DT VARCHAR(20) = NULL,
@p_EXTEND_DT VARCHAR(20) = NULL,
@p_IS_SEND_APPR VARCHAR(15) = NULL,
@p_SEND_APPR_DT VARCHAR(20) = NULL,
@p_SIGN_USER VARCHAR(15) = NULL,
@p_SIGN_DT VARCHAR(15) = NULL
AS
---BAODNQ 30/12/2021:Thêm cột vào bảng BUD_CONTRACT_MASTER-------
IF (EXISTS ( SELECT * FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_NO=@p_CONTRACT_NO AND VERSION_NO=@p_VERSION_NO))
BEGIN
SELECT '-1' Result, '' CONTRACT_ID, N'Số hợp đồng này đã tồn tại' ErrorDesc
RETURN '0'
END
BEGIN TRANSACTION
DECLARE @l_CONTRACT_ID VARCHAR(15)
IF(LEN( @p_CONTRACT_ID)=0 OR @p_CONTRACT_ID IS NULL)
EXEC SYS_CodeMasters_Gen 'BUD_CONTRACT_MASTER', @p_CONTRACT_ID out
IF @p_CONTRACT_ID='' OR @p_CONTRACT_ID IS NULL GOTO ABORT
INSERT INTO BUD_CONTRACT_CUST_MASTER([CONTRACT_ID],[BUILDING_ID],[CONTRACT_NO],[VERSION_NO],
[TR_CONTRACT_ID],[CUST_ID],[INPUT_DT],[AMEND_DT],[FROM_DT],[TO_DATE],[CLOSE_DT],[MONTHS],
[RENT_PRICE],[NOTES],[BRANCH_ID],[RECORD_STATUS],[AUTH_STATUS],[STATUS],[MAKER_ID],
[CREATE_DT],[CHECKER_ID],[APPROVE_DT],[XML_TEMP],[VAT],[VAT_AMT],[DEPOSITS_AMT],
[PAYMENT_SHEDULE], [PAYMENT_DT],[EXTEND_DT],[IS_SEND_APPR],[SEND_APPR_DT],[SIGN_USER],[SIGN_DT])
VALUES(@p_CONTRACT_ID ,@p_BUILDING_ID ,@p_CONTRACT_NO ,@p_VERSION_NO,@p_TR_CONTRACT_ID ,@p_CUST_ID ,
CONVERT(DATE, @p_INPUT_DT, 103) ,CONVERT(DATE, @p_AMEND_DT, 103) ,CONVERT(DATE, @p_FROM_DT, 103) ,
CONVERT(DATE, @p_TO_DATE, 103) ,CONVERT(DATE, @p_CLOSE_DT, 103) ,@p_MONTHS ,@p_RENT_PRICE ,@p_NOTES,@p_BRANCH_ID,
'1' ,'U','N',@p_MAKER_ID ,CONVERT(DATETIME, @p_CREATE_DT, 103) ,@p_CHECKER_ID ,NULL ,@p_XML_TEMP,
@p_VAT,@p_VAT_AMT,@p_DEPOSITS_AMT,@p_PAYMENT_SHEDULE, CONVERT(DATE, @p_PAYMENT_DT, 103),CONVERT(DATETIME,@p_EXTEND_DT,103) ,@p_IS_SEND_APPR,
@p_SEND_APPR_DT,@p_SIGN_USER,@p_SIGN_DT)
-----------------------------------------------------------------------------------------------------
----INSERT VAO BANG BUD_CONTACT
DELETE FROM BUD_CONTACT WHERE CONTRACT_ID = @p_CONTRACT_ID
INSERT INTO BUD_CONTACT VALUES(@p_CONTRACT_ID,@p_VERSION_NO,@p_BUILDING_ID,@p_CONTRACT_NO,@p_CUST_ID,CONVERT(DATE, @p_CREATE_DT, 103))
IF @@Error <> 0 GOTO ABORT
Declare @hdoc1 INT
DECLARE
@d_CONTRACT_DTID VARCHAR(15),
@d_BUILD_ID VARCHAR(15),
@d_VERSION_NO INT,
@d_BUILDING_AREA_ID VARCHAR(15),
@d_RENT_AREA DECIMAL,
@d_RENT_AREA_APP DECIMAL,
@d_AREA_REMAIN DECIMAL,
@d_RENT_PRICE DECIMAL,
@d_NOTES NVARCHAR(MAX),
@d_DIEN_TICH_TANG DECIMAL,
@d_DIEN_TICH_SD_NOI_BO DECIMAL,
@d_DIEN_TICH_DA_CHO_THUE DECIMAL,
@d_DIEN_TICH_CON_LAI DECIMAL,
@d_DIEN_TICH_CAN_CHOTHUE DECIMAL,
@d_PRICE DECIMAL,
@d_TOTAL_AMT DECIMAL,
@d_DIEN_TICH_CON_LAI_FINAL DECIMAL
Exec sp_xml_preparedocument @hdoc1 Output,@p_XML_TEMP
DECLARE XmlDataDoc CURSOR FOR
SELECT *
FROM OPENXML(@hdoc1,'/Root/XmlData1',2)
WITH
(
CONTRACT_DTID VARCHAR(15),
BUILD_ID VARCHAR(15),
VERSION_NO INT,
BUILDING_AREA_ID VARCHAR(15),
RENT_AREA DECIMAL,
RENT_AREA_APP DECIMAL,
AREA_REMAIN DECIMAL,
RENT_PRICE DECIMAL,
NOTES NVARCHAR(MAX),
DIEN_TICH_TANG DECIMAL,
DIEN_TICH_SD_NOI_BO DECIMAL,
DIEN_TICH_DA_CHO_THUE DECIMAL,
DIEN_TICH_CON_LAI DECIMAL,
DIEN_TICH_CAN_CHOTHUE DECIMAL,
PRICE DECIMAL,
TOTAL_AMT DECIMAL,
DIEN_TICH_CON_LAI_FINAL DECIMAL
)
OPEN XmlDataDoc
FETCH NEXT FROM XmlDataDoc INTO
@d_CONTRACT_DTID,
@d_BUILD_ID,
@d_VERSION_NO,
@d_BUILDING_AREA_ID,
@d_RENT_AREA,
@d_RENT_AREA_APP,
@d_AREA_REMAIN,
@d_RENT_PRICE,
@d_NOTES,
@d_DIEN_TICH_TANG,
@d_DIEN_TICH_SD_NOI_BO,
@d_DIEN_TICH_DA_CHO_THUE,
@d_DIEN_TICH_CON_LAI,
@d_DIEN_TICH_CAN_CHOTHUE,
@d_PRICE,
@d_TOTAL_AMT,
@d_DIEN_TICH_CON_LAI_FINAL
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC SYS_CodeMasters_Gen 'BUD_CONTRACT_DT', @d_CONTRACT_DTID out
IF @d_CONTRACT_DTID='' OR @d_CONTRACT_DTID IS NULL GOTO ABORT
INSERT INTO BUD_CONTRACT_CUST_DT([CONTRACT_DTID],[BUILD_ID],[CONTRACT_ID],[VERSION_NO],[BUILDING_AREA_ID],[RENT_AREA],[RENT_AREA_APP],
[AREA_REMAIN],[RENT_PRICE],[NOTES], [DIEN_TICH_TANG], [DIEN_TICH_SD_NOI_BO],[DIEN_TICH_DA_CHO_THUE],[DIEN_TICH_CON_LAI],
[DIEN_TICH_CAN_CHOTHUE],[PRICE],[TOTAL_AMT],[DIEN_TICH_CON_LAI_FINAL])
VALUES(@d_CONTRACT_DTID ,@d_BUILD_ID ,@p_CONTRACT_ID ,@d_VERSION_NO ,@d_BUILDING_AREA_ID ,@d_RENT_AREA,0,@d_AREA_REMAIN,@d_RENT_PRICE,@d_NOTES,
@d_DIEN_TICH_TANG,@d_DIEN_TICH_SD_NOI_BO,@d_DIEN_TICH_DA_CHO_THUE,@d_DIEN_TICH_CON_LAI,@d_DIEN_TICH_CAN_CHOTHUE,
@d_PRICE,@d_TOTAL_AMT,@d_DIEN_TICH_CON_LAI_FINAL)
IF @@Error <> 0 GOTO ABORT
FETCH NEXT FROM XmlDataDoc INTO
@d_CONTRACT_DTID,
@d_BUILD_ID,
@d_VERSION_NO,
@d_BUILDING_AREA_ID,
@d_RENT_AREA,
@d_RENT_AREA_APP,
@d_AREA_REMAIN,
@d_RENT_PRICE,
@d_NOTES,
@d_DIEN_TICH_TANG,
@d_DIEN_TICH_SD_NOI_BO,
@d_DIEN_TICH_DA_CHO_THUE,
@d_DIEN_TICH_CON_LAI,
@d_DIEN_TICH_CAN_CHOTHUE,
@d_PRICE,
@d_TOTAL_AMT,
@d_DIEN_TICH_CON_LAI_FINAL
END
CLOSE XmlDataDoc
DEALLOCATE XmlDataDoc
SET @p_RENT_PRICE = (SELECT SUM(TOTAL_AMT) FROM BUD_CONTRACT_CUST_DT
WHERE CONTRACT_ID =@p_CONTRACT_ID
AND VERSION_NO=@p_VERSION_NO)
UPDATE BUD_CONTRACT_CUST_MASTER
SET RENT_PRICE=@p_RENT_PRICE*MONTHS
WHERE CONTRACT_ID=@p_CONTRACT_ID AND VERSION_NO=@p_VERSION_NO
---BAODNQ 29/12/2021: Insert vào PL_PROCESS lưu lịch sử xử lý
INSERT INTO dbo.PL_PROCESS
(
REQ_ID,
PROCESS_ID,
CHECKER_ID,
APPROVE_DT,
PROCESS_DESC,
NOTES
)
VALUES
( @p_CONTRACT_ID,
'INSERT',
@p_MAKER_ID,
GETDATE(),
N'Thêm mới hợp đồng khách thuê thành công' ,
N'Thêm mới hợp đồng khách thuê'
)
COMMIT TRANSACTION
SELECT '0' as Result, @p_CONTRACT_ID CONTRACT_ID, @p_CONTRACT_NO CONTRACT_NO, '' ErrorDesc
RETURN '0'
ABORT:
BEGIN
--CLOSE XmlDataDoc
--DEALLOCATE XmlDataDoc
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' CONTRACT_ID, @p_CONTRACT_NO CONTRACT_NO, '' ErrorDesc
RETURN '-1'
End
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Altering [dbo].[CM_DEPARTMENT_Search]'
GO
ALTER PROCEDURE [dbo].[CM_DEPARTMENT_Search]
@p_DEP_ID varchar(15) = NULL,
@p_DEP_CODE varchar(15) = NULL,
@p_DEP_NAME nvarchar(200) = NULL,
@p_DAO_CODE varchar(40) = NULL,
@p_DAO_NAME nvarchar(500) = NULL,
@p_BRANCH_ID varchar(15) = NULL,
@p_GROUP_ID varchar(15) = NULL,
@p_TEL varchar(20) = NULL,
@p_NOTES nvarchar(1000) = NULL,
@p_RECORD_STATUS varchar(1) = NULL,
@p_MAKER_ID varchar(12) = NULL,
@p_CREATE_DT VARCHAR(20) = NULL,
@p_AUTH_STATUS varchar(50) = NULL,
@p_CHECKER_ID varchar(12) = NULL,
@p_APPROVE_DT VARCHAR(20) = NULL,
@p_KHOI_ID VARCHAR(20)=NULL,
@p_TOP INT = 10
AS
--Validation is here
/*
DECLARE @ERRORSYS NVARCHAR(15) = ''
IF ( [NOT] EXISTS ( SELECT * FROM [TABLE] WHERE [CONDITION] ))
SET @ERRORSYS = ''
IF @ERRORSYS <> ''
BEGIN
SELECT ErrorCode Result, '' CAR_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS
RETURN '0'
END */
BEGIN -- PAGING
BEGIN TRANSACTION
IF(@p_TOP IS NULL OR @P_TOP = '' OR @P_TOP = 0)
-- PAGING BEGIN
SELECT A.*, B.BRANCH_CODE, B.BRANCH_NAME, C.AUTH_STATUS_NAME, R.CONTENT AS RECORD_STATUS_NAME,FD.DEP_CODE +' - '+ FD.DEP_NAME as FATHER_NAME,D.DVDM_CODE, D.DVDM_NAME
-- SELECT END
FROM CM_DEPARTMENT A
LEFT JOIN CM_BRANCH B ON A.BRANCH_ID = B.BRANCH_ID
LEFT JOIN CM_AUTH_STATUS C ON A.AUTH_STATUS = C.AUTH_STATUS
LEFT JOIN CM_ALLCODE R ON A.RECORD_STATUS = R.CDVAL AND R.CDNAME = 'RECORD_STATUS'
LEFT JOIN CM_DEPARTMENT FD ON A.FATHER_ID = FD.DEP_ID
LEFT JOIN CM_DVDM D ON A.KHOI_ID = D.DVDM_ID
WHERE 1 = 1
AND (A.DEP_ID LIKE '%' + @p_DEP_ID + '%' OR @p_DEP_ID IS NULL OR @p_DEP_ID = '')
AND (A.DEP_CODE LIKE '%' + @p_DEP_CODE + '%' OR @p_DEP_CODE IS NULL OR @p_DEP_CODE = '')
AND (A.DEP_NAME LIKE '%' + @p_DEP_NAME + '%' OR @p_DEP_NAME IS NULL OR @p_DEP_NAME = '')
AND (A.DAO_CODE LIKE '%' + @p_DAO_CODE + '%' OR @p_DAO_CODE IS NULL OR @p_DAO_CODE = '')
AND (A.DAO_NAME LIKE '%' + @p_DAO_NAME + '%' OR @p_DAO_NAME IS NULL OR @p_DAO_NAME = '')
AND (A.BRANCH_ID LIKE '%' + @p_BRANCH_ID + '%' OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '')
AND (A.GROUP_ID LIKE '%' + @p_GROUP_ID + '%' OR @p_GROUP_ID IS NULL OR @p_GROUP_ID = '')
AND (A.TEL LIKE '%' + @p_TEL + '%' OR @p_TEL IS NULL OR @p_TEL = '')
AND (A.NOTES LIKE '%' + @p_NOTES + '%' OR @p_NOTES IS NULL OR @p_NOTES = '')
AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '')
AND (A.MAKER_ID LIKE '%' + @p_MAKER_ID + '%' OR @p_MAKER_ID IS NULL OR @p_MAKER_ID = '')
AND (DATEDIFF(DAY, A.CREATE_DT ,CONVERT(DATETIME, @p_CREATE_DT, 103)) = 0 OR @p_CREATE_DT IS NULL OR @p_CREATE_DT = '')
AND (A.AUTH_STATUS LIKE '%' + @p_AUTH_STATUS + '%' OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '')
AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '')
AND (DATEDIFF(DAY,A.APPROVE_DT ,CONVERT(DATETIME, @p_APPROVE_DT, 103)) = 0 OR @p_APPROVE_DT IS NULL OR @p_APPROVE_DT = '')
AND (A.RECORD_STATUS = @p_RECORD_STATUS OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '')
AND (A.KHOI_ID = @p_KHOI_ID OR @p_KHOI_ID IS NULL OR @p_KHOI_ID = '')
-- PAGING END
ELSE
-- PAGING BEGIN
SELECT TOP(CONVERT(INT,@P_TOP))A.*, B.BRANCH_CODE, B.BRANCH_NAME, C.AUTH_STATUS_NAME, R.CONTENT AS RECORD_STATUS_NAME,FD.DEP_CODE +' - '+ FD.DEP_NAME as FATHER_NAME,D.DVDM_CODE, D.DVDM_NAME
-- SELECT END
FROM CM_DEPARTMENT A
LEFT JOIN CM_BRANCH B ON A.BRANCH_ID = B.BRANCH_ID
LEFT JOIN CM_AUTH_STATUS C ON A.AUTH_STATUS=C.AUTH_STATUS
LEFT JOIN CM_ALLCODE R ON A.RECORD_STATUS = R.CDVAL AND R.CDNAME = 'RECORD_STATUS'
LEFT JOIN CM_DEPARTMENT FD ON A.FATHER_ID = FD.DEP_ID
LEFT JOIN CM_DVDM D ON A.KHOI_ID = D.DVDM_ID
WHERE 1 = 1
AND (A.DEP_ID LIKE '%' + @p_DEP_ID + '%' OR @p_DEP_ID IS NULL OR @p_DEP_ID = '')
AND (A.DEP_CODE LIKE '%' + @p_DEP_CODE + '%' OR @p_DEP_CODE IS NULL OR @p_DEP_CODE = '')
AND (A.DEP_NAME LIKE '%' + @p_DEP_NAME + '%' OR @p_DEP_NAME IS NULL OR @p_DEP_NAME = '')
AND (A.DAO_CODE LIKE '%' + @p_DAO_CODE + '%' OR @p_DAO_CODE IS NULL OR @p_DAO_CODE = '')
AND (A.DAO_NAME LIKE '%' + @p_DAO_NAME + '%' OR @p_DAO_NAME IS NULL OR @p_DAO_NAME = '')
AND (A.BRANCH_ID LIKE '%' + @p_BRANCH_ID + '%' OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '')
AND (A.GROUP_ID LIKE '%' + @p_GROUP_ID + '%' OR @p_GROUP_ID IS NULL OR @p_GROUP_ID = '')
AND (A.TEL LIKE '%' + @p_TEL + '%' OR @p_TEL IS NULL OR @p_TEL = '')
AND (A.NOTES LIKE '%' + @p_NOTES + '%' OR @p_NOTES IS NULL OR @p_NOTES = '')
AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '')
AND (A.MAKER_ID LIKE '%' + @p_MAKER_ID + '%' OR @p_MAKER_ID IS NULL OR @p_MAKER_ID = '')
AND (DATEDIFF(DAY, A.CREATE_DT ,CONVERT(DATETIME, @p_CREATE_DT, 103)) = 0 OR @p_CREATE_DT IS NULL OR @p_CREATE_DT = '')
AND (A.AUTH_STATUS LIKE '%' + @p_AUTH_STATUS + '%' OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '')
AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '')
AND (DATEDIFF(DAY,A.APPROVE_DT ,CONVERT(DATETIME, @p_APPROVE_DT, 103)) = 0 OR @p_APPROVE_DT IS NULL OR @p_APPROVE_DT = '')
AND (A.RECORD_STATUS = @p_RECORD_STATUS OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '')
AND (A.KHOI_ID = @p_KHOI_ID OR @p_KHOI_ID IS NULL OR @p_KHOI_ID = '')
-- PAGING END
COMMIT TRANSACTION
END -- PAGING
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Creating [dbo].[BUD_CONTRACT_CUST_MASTER_Upd]'
GO
CREATE PROCEDURE [dbo].[BUD_CONTRACT_CUST_MASTER_Upd]
@p_CONTRACT_ID varchar(15) = NULL,
@p_BUILDING_ID varchar(15) = NULL,
@p_CONTRACT_NO nvarchar(100) = NULL,
@p_VERSION_NO int = NULL,
@p_TR_CONTRACT_ID VARCHAR(15) = NULL,
@p_CUST_ID varchar(15) = NULL,
@p_INPUT_DT VARCHAR(20) = NULL,
@p_AMEND_DT VARCHAR(20) = NULL,
@p_FROM_DT VARCHAR(20) = NULL,
@p_TO_DATE VARCHAR(20) = NULL,
@p_CLOSE_DT VARCHAR(20) = NULL,
@p_MONTHS int = NULL,
@p_RENT_PRICE numeric(18) = NULL,
@p_NOTES NVARCHAR(MAX)= NULL,
@p_BRANCH_ID VARCHAR(15) = NULL,
@p_RECORD_STATUS varchar(1) = NULL,
@p_AUTH_STATUS varchar(1) = NULL,
@p_STATUS VARCHAR(1) = NULL,
@p_MAKER_ID varchar(15) = NULL,
@p_CREATE_DT VARCHAR(20) = NULL,
@p_CHECKER_ID varchar(15) = NULL,
@p_APPROVE_DT VARCHAR(20) = NULL,
@p_XML_TEMP xml = NULL,
@p_VAT DECIMAL(18,0) = NULL,
@p_VAT_AMT DECIMAL(18,0) = NULL,
@p_DEPOSITS_AMT DECIMAL(18,0) = NULL,
@p_PAYMENT_SHEDULE NVARCHAR(500) = NULL,
@p_PAYMENT_DT VARCHAR(20) = NULL,
@p_EXTEND_DT VARCHAR(20) = NULL,
@p_IS_SEND_APPR VARCHAR(15) = NULL,
@p_SEND_APPR_DT VARCHAR(20) = NULL,
@p_SIGN_USER VARCHAR(15) = NULL,
@p_SIGN_DT VARCHAR(15) = NULL
AS
/*
--Validation is here
DECLARE @ERRORSYS NVARCHAR(15) = ''
IF ( NOT EXISTS ( SELECT * FROM BUD_CONTRACT_MASTER WHERE VERSION_NO=@p_VERSION_NO
SET @ERRORSYS = ''
IF @ERRORSYS <> ''
BEGIN
SELECT ErrorCode Result, '' VERSION_NO, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS
RETURN '0'
END
*/
BEGIN TRANSACTION
IF (@p_STATUS = 'C')
BEGIN
UPDATE BUD_CONTRACT_CUST_MASTER SET
STATUS= @p_STATUS,
AUTH_STATUS='U',
APPROVE_DT=NULL,
CHECKER_ID=NULL
WHERE CONTRACT_ID=@p_CONTRACT_ID AND VERSION_NO=@p_VERSION_NO
END
ELSE
BEGIN
DELETE FROM BUD_CONTRACT_CUST_DT WHERE CONTRACT_ID=@p_CONTRACT_ID AND VERSION_NO= @p_VERSION_NO
Declare @hdoc1 INT
DECLARE
@d_CONTRACT_DTID VARCHAR(15),
@d_BUILD_ID VARCHAR(15),
@d_VERSION_NO INT,
@d_BUILDING_AREA_ID VARCHAR(15),
@d_RENT_AREA DECIMAL,
@d_RENT_AREA_APP DECIMAL,
@d_AREA_REMAIN DECIMAL,
@d_RENT_PRICE DECIMAL,
@d_NOTES NVARCHAR(MAX),
@d_DIEN_TICH_TANG DECIMAL,
@d_DIEN_TICH_SD_NOI_BO DECIMAL,
@d_DIEN_TICH_DA_CHO_THUE DECIMAL,
@d_DIEN_TICH_CON_LAI DECIMAL,
@d_DIEN_TICH_CAN_CHOTHUE DECIMAL,
@d_PRICE DECIMAL,
@d_TOTAL_AMT DECIMAL,
@d_DIEN_TICH_CON_LAI_FINAL DECIMAL
Exec sp_xml_preparedocument @hdoc1 Output,@p_XML_TEMP
DECLARE XmlDataDoc CURSOR FOR
SELECT *
FROM OPENXML(@hdoc1,'/Root/XmlData1',2)
WITH
(
CONTRACT_DTID VARCHAR(15),
BUILD_ID VARCHAR(15),
VERSION_NO INT,
BUILDING_AREA_ID VARCHAR(15),
RENT_AREA DECIMAL,
RENT_AREA_APP DECIMAL,
AREA_REMAIN DECIMAL,
RENT_PRICE DECIMAL,
NOTES NVARCHAR(MAX),
DIEN_TICH_TANG DECIMAL,
DIEN_TICH_SD_NOI_BO DECIMAL,
DIEN_TICH_DA_CHO_THUE DECIMAL,
DIEN_TICH_CON_LAI DECIMAL,
DIEN_TICH_CAN_CHOTHUE DECIMAL,
PRICE DECIMAL,
TOTAL_AMT DECIMAL,
DIEN_TICH_CON_LAI_FINAL DECIMAL
)
OPEN XmlDataDoc
FETCH NEXT FROM XmlDataDoc INTO
@d_CONTRACT_DTID,
@d_BUILD_ID,
@d_VERSION_NO,
@d_BUILDING_AREA_ID,
@d_RENT_AREA,
@d_RENT_AREA_APP,
@d_AREA_REMAIN,
@d_RENT_PRICE,
@d_NOTES,
@d_DIEN_TICH_TANG,
@d_DIEN_TICH_SD_NOI_BO,
@d_DIEN_TICH_DA_CHO_THUE,
@d_DIEN_TICH_CON_LAI,
@d_DIEN_TICH_CAN_CHOTHUE,
@d_PRICE,
@d_TOTAL_AMT,
@d_DIEN_TICH_CON_LAI_FINAL
WHILE @@FETCH_STATUS = 0
BEGIN
IF(LEN( @d_CONTRACT_DTID)=0)
EXEC SYS_CodeMasters_Gen 'BUD_CONTRACT_DT', @d_CONTRACT_DTID out
IF @d_CONTRACT_DTID='' OR @d_CONTRACT_DTID IS NULL GOTO ABORT
INSERT INTO BUD_CONTRACT_CUST_DT([CONTRACT_DTID],[BUILD_ID],[CONTRACT_ID],[VERSION_NO],[BUILDING_AREA_ID],[RENT_AREA],[RENT_AREA_APP],[AREA_REMAIN],[RENT_PRICE],[NOTES],
[DIEN_TICH_TANG],[DIEN_TICH_SD_NOI_BO],[DIEN_TICH_DA_CHO_THUE],[DIEN_TICH_CON_LAI],[DIEN_TICH_CAN_CHOTHUE],[PRICE],[TOTAL_AMT],
[DIEN_TICH_CON_LAI_FINAL])
VALUES(@d_CONTRACT_DTID ,@d_BUILD_ID ,@p_CONTRACT_ID ,@d_VERSION_NO ,@d_BUILDING_AREA_ID ,@d_RENT_AREA,@d_RENT_AREA_APP,@d_AREA_REMAIN,@d_RENT_PRICE,@d_NOTES,
@d_DIEN_TICH_TANG,@d_DIEN_TICH_SD_NOI_BO,@d_DIEN_TICH_DA_CHO_THUE,@d_DIEN_TICH_CON_LAI,@d_DIEN_TICH_CAN_CHOTHUE,@d_PRICE,@d_TOTAL_AMT,@d_DIEN_TICH_CON_LAI_FINAL)
IF @@Error <> 0 GOTO ABORT
FETCH NEXT FROM XmlDataDoc INTO
@d_CONTRACT_DTID,
@d_BUILD_ID,
@d_VERSION_NO,
@d_BUILDING_AREA_ID,
@d_RENT_AREA,
@d_RENT_AREA_APP,
@d_AREA_REMAIN ,
@d_RENT_PRICE,
@d_NOTES,
@d_DIEN_TICH_TANG,
@d_DIEN_TICH_SD_NOI_BO,
@d_DIEN_TICH_DA_CHO_THUE,
@d_DIEN_TICH_CON_LAI,
@d_DIEN_TICH_CAN_CHOTHUE,
@d_PRICE,
@d_TOTAL_AMT,
@d_DIEN_TICH_CON_LAI_FINAL
END
CLOSE XmlDataDoc
DEALLOCATE XmlDataDoc
IF @@Error <> 0 GOTO ABORT
SET @p_RENT_PRICE = (SELECT SUM(TOTAL_AMT) FROM BUD_CONTRACT_CUST_DT
WHERE CONTRACT_ID =@p_CONTRACT_ID
AND VERSION_NO=@p_VERSION_NO)
---BAODNQ 30/12/2021:Thêm cột vào bảng BUD_CONTRACT_MASTER-------
UPDATE BUD_CONTRACT_CUST_MASTER
SET BUILDING_ID =@p_BUILDING_ID,
CONTRACT_NO =@p_CONTRACT_NO,
TR_CONTRACT_ID = @p_TR_CONTRACT_ID,
CUST_ID=@p_CUST_ID,
INPUT_DT = CONVERT(DATE,@p_INPUT_DT,103),
AMEND_DT = CONVERT(DATE,@p_AMEND_DT,103),
FROM_DT = CONVERT(DATE,@p_FROM_DT,103),
TO_DATE = CONVERT(DATE,@p_TO_DATE,103),
CLOSE_DT = CONVERT(DATE,@p_CLOSE_DT,103),
AUTH_STATUS = @p_AUTH_STATUS,
STATUS= @p_STATUS,
MONTHS = @p_MONTHS,
RENT_PRICE=@p_RENT_PRICE*@p_MONTHS,
[NOTES] = @p_NOTES,
VAT =@p_VAT,
VAT_AMT =@p_VAT_AMT,
DEPOSITS_AMT =@p_DEPOSITS_AMT,
PAYMENT_SHEDULE =@p_PAYMENT_SHEDULE,
PAYMENT_DT = CONVERT(DATETIME, @p_PAYMENT_DT, 103),
EXTEND_DT = CONVERT(DATETIME, @p_EXTEND_DT, 103)
--IS_SEND_APPR = @p_IS_SEND_APPR,
--SEND_APPR_DT = @p_SEND_APPR_DT,
--SIGN_USER = @p_SIGN_USER,
--SIGN_DT = @p_SIGN_DT
WHERE CONTRACT_ID=@p_CONTRACT_ID AND VERSION_NO=@p_VERSION_NO
END
---BAODNQ 29/12/2021: Insert vào PL_PROCESS lưu lịch sử xử lý
INSERT INTO dbo.PL_PROCESS
(
REQ_ID,
PROCESS_ID,
CHECKER_ID,
APPROVE_DT,
PROCESS_DESC,
NOTES
)
VALUES
( @p_CONTRACT_ID,
'UPDATE',
@p_MAKER_ID,
GETDATE(),
N'Cập nhật hợp đồng khách thuê thành công' ,
N'Cập nhật hợp đồng khách thuê'
)
COMMIT TRANSACTION
SELECT '0' as Result, @p_CONTRACT_ID CONTRACT_ID, @p_CONTRACT_NO CONTRACT_NO, '' ErrorDesc
RETURN '0'
ABORT:
BEGIN
CLOSE XmlDataDoc
DEALLOCATE XmlDataDoc
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' CONTRACT_ID, @p_CONTRACT_NO CONTRACT_NO, '' ErrorDesc
RETURN '-1'
End
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Creating [dbo].[BUD_CONTRACT_CUST_MASTER_Del]'
GO
CREATE PROCEDURE [dbo].[BUD_CONTRACT_CUST_MASTER_Del]
@p_CONTRACT_ID varchar(15),
@p_VERSION_NO int
AS
BEGIN TRANSACTION
BEGIN
DELETE FROM BUD_CONTRACT_CUST_MASTER
WHERE VERSION_NO= @p_VERSION_NO AND CONTRACT_ID= @p_CONTRACT_ID
DELETE FROM BUD_CONTACT WHERE CONTRACT_ID = @p_CONTRACT_ID AND LATEST_VER_NO=@p_VERSION_NO
DELETE FROM BUD_CONTRACT_CUST_DT
WHERE VERSION_NO= @p_VERSION_NO AND CONTRACT_ID= @p_CONTRACT_ID
IF @@Error <> 0 GOTO ABORT
END
COMMIT TRANSACTION
SELECT '0' as Result, '' ErrorDesc
RETURN '0'
ABORT:
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' ErrorDesc
RETURN '-1'
End
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Creating [dbo].[BUD_CONTRACT_CUST_MASTER_ById]'
GO
CREATE PROCEDURE [dbo].[BUD_CONTRACT_CUST_MASTER_ById]
@p_CONTRACT_ID varchar(15) = NULL,
@p_VERSION_NO int =1
AS
BEGIN
------BAODNQ 27/12/2021: Select thêm SIGN_DT, START_DT, END_DT, APPROVE_DT từ bảng TR_CONTRACT---------
SELECT A.*,
B.AUTH_STATUS_NAME,
C.BUILDING_ID,
C.NUM_FLOOR,
C.BUILDING_NAME,
BR.BRANCH_NAME,
LS.CUSTOMER_NAME,
LS.CUSTOMER_CODE,
TC.CONTRACT_NAME,
TC.SIGN_DT AS NGAY_KY_HD,
TC.START_DT AS HIEU_LUC_TU_NGAY,
TC.END_DT AS HIEU_LUC_DEN_NGAY,
CASE
WHEN DATEDIFF(DAY, A.TO_DATE, TC.END_DT) <> 0 THEN TC.APPROVE_DT
ELSE A.EXTEND_DT
END
AS NGAY_GIA_HAN_HD,
-----BAODNQ 30/12/2021: Lấy thêm cột full name----
D.TLFullName AS SIGN_USER_FULLNAME
FROM BUD_CONTRACT_CUST_MASTER A
LEFT JOIN CM_AUTH_STATUS B ON A.AUTH_STATUS=B.AUTH_STATUS
LEFT JOIN BUD_MASTER C ON A.BUILDING_ID = C.BUILDING_ID
LEFT JOIN CM_BRANCH BR ON BR.BRANCH_ID = A.BRANCH_ID
LEFT JOIN LS_CUSTOMER LS ON LS.CUSTOMER_ID = A.CUST_ID
LEFT JOIN TR_CONTRACT TC ON A.TR_CONTRACT_ID = TC.CONTRACT_ID
----BAODNQ 30/12/2021: Kết thêm bảng TL_USER----
LEFT JOIN TL_USER D ON A.SIGN_USER = D.TLNANME
WHERE 1 = 1
AND (A.CONTRACT_ID LIKE '%' + @p_CONTRACT_ID + '%' OR @p_CONTRACT_ID IS NULL OR @p_CONTRACT_ID = '')
AND (A.VERSION_NO = @p_VERSION_NO)
END
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Creating [dbo].[BUD_CONTRACT_CUST_DT_ById]'
GO
CREATE PROCEDURE [dbo].[BUD_CONTRACT_CUST_DT_ById]
@p_CONTRACT_ID varchar(15),
@p_VERSION_NO int,
@p_CURRENT_CONTRACT_ID VARCHAR(15),-- = '' KHI VIEW, <> '' KHI TAO PHU LUC HOP DONG, KHONG TINH GIA TRI CUA HOP DONG HIEN TAI
@p_TO_DATE VARCHAR(18)--NEU '' THI LAY THEO NGAY DUYET HOP DONG - TRUONG HOP VIEW
-- NGUOC LAI NEU <> '': LAY THEO NGAY TU CLIEN - LAY DEN HIEN TAI - TAO PHU LUC HOP DONG
AS
DECLARE @l_TO_DATE DATETIME
IF @p_TO_DATE = ''
SET @l_TO_DATE = (select TOP 1 CONVERT(DATETIME,APPROVE_DT,103) from
BUD_UTIL_LOG where CONTRACT_ID =@p_CONTRACT_ID AND VERSION_NO = @p_VERSION_NO)
ELSE SET @l_TO_DATE = CONVERT(DATETIME, @p_TO_DATE, 103)
SELECT A.*,B.FLOOR_NO, B.BUILDING_AREA_ID,B.INTERNAL_AREA,B.UTILZED_AREA,B.FLOOR_AREA,
ISNULL(B.UTILZED_AREA,0) DIENTICH_DACHOTHUE,
ISNULL(B.FLOOR_AREA -B.UTILZED_AREA- B.INTERNAL_AREA + A.RENT_AREA_APP,0) DIENTICH_CONLAI,
ISNULL(B.FLOOR_AREA- B.INTERNAL_AREA,0) DIENTICH_CONLAI_CHOTHUE,
((select ISNULL(sum(AREA),0) from
BUD_UTIL_LOG
where CONVERT(DATETIME,APPROVE_DT,103) < @l_TO_DATE
AND (CONTRACT_ID <> @p_CURRENT_CONTRACT_ID OR @p_CURRENT_CONTRACT_ID = '')
AND UTIL_TYPE ='I' AND UTIL_RELEASE ='U' AND VERSION_NO <=@p_VERSION_NO
AND BUILDING_AREA_ID = A.BUILDING_AREA_ID)
- (select ISNULL(sum(AREA),0) from
BUD_UTIL_LOG
where CONVERT(DATETIME,APPROVE_DT,103) < @l_TO_DATE
AND (CONTRACT_ID <> @p_CURRENT_CONTRACT_ID OR @p_CURRENT_CONTRACT_ID = '')
AND UTIL_TYPE ='I' AND UTIL_RELEASE ='R' AND VERSION_NO <=@p_VERSION_NO
AND BUILDING_AREA_ID = A.BUILDING_AREA_ID)) AS TONGDIENTICH_NGANHANG_SUDUNG,
((select ISNULL(sum(AREA),0) from
BUD_UTIL_LOG
where CONVERT(DATETIME,APPROVE_DT,103) < @l_TO_DATE
AND (CONTRACT_ID <> @p_CURRENT_CONTRACT_ID OR @p_CURRENT_CONTRACT_ID = '')
AND UTIL_TYPE ='C' AND UTIL_RELEASE ='U' AND VERSION_NO <=@p_VERSION_NO
AND BUILDING_AREA_ID = A.BUILDING_AREA_ID)
- (select ISNULL(sum(AREA),0) from
BUD_UTIL_LOG
where CONVERT(DATETIME,APPROVE_DT,103) < @l_TO_DATE
AND (CONTRACT_ID <> @p_CURRENT_CONTRACT_ID OR @p_CURRENT_CONTRACT_ID = '')
AND UTIL_TYPE ='C' AND UTIL_RELEASE ='R' AND VERSION_NO <=@p_VERSION_NO
AND BUILDING_AREA_ID = A.BUILDING_AREA_ID)) AS TONGDIENTICH_KHACHHANG_SUDUNG
FROM BUD_CONTRACT_CUST_DT A
LEFT JOIN BUD_AREA_DT B ON A.BUILDING_AREA_ID = B.BUILDING_AREA_ID
WHERE
A.CONTRACT_ID =@p_CONTRACT_ID
AND A.VERSION_NO=@p_VERSION_NO
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Altering [dbo].[TR_REQ_PAYMENT_Del]'
GO
ALTER PROCEDURE [dbo].[TR_REQ_PAYMENT_Del]
@p_REQ_PAY_ID varchar(15)
AS
DECLARE @REQ_CODE VARCHAR(50), @BRANCH_ID VARCHAR(15), @MAKER_ID VARCHAR(15)
SET @REQ_CODE =(SELECT REQ_PAY_CODE FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
DECLARE @ERRORSYS NVARCHAR(15) = ''
--IF ( NOT EXISTS ( SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID= @p_REQ_PAY_ID))
-- SET @ERRORSYS = 'REQ-00002'
--IF @ERRORSYS <> ''
--BEGIN
-- SELECT ErrorCode Result, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS
-- RETURN '0'
--END
BEGIN TRANSACTION
--IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS <>'E'))
--BEGIN
-- ROLLBACK TRANSACTION
-- SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID, N'Phiếu đề nghị thanh toán số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+ N' đã được gửi phê duyệt! Bạn chỉ được phép xóa bản nháp!' ErrorDesc
-- RETURN '-1'
--END
--IF((SELECT AUTH_STATUS FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID= @p_REQ_PAY_ID) = 'A')
--BEGIN
-- ROLLBACK TRANSACTION
-- SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID, N'Phiếu đề nghị thanh toán số: ' +(SELECT REQ_PAY_CODE FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+ N' đã được trưởng đơn vị phê duyệt, bạn không được phép xóa!' ErrorDesc
-- RETURN '-1'
--END
SET @BRANCH_ID =(SELECT BRANCH_CREATE FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
SET @MAKER_ID =(SELECT MAKER_ID FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
IF(EXISTS(SELECT * FROM TL_USER WHERE TLNANME =@MAKER_ID AND (RoleName ='DISABLE' OR AUTH_STATUS ='U')))
BEGIN
IF(NOT EXISTS(SELECT AUTH_STATUS_KT FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID= @p_REQ_PAY_ID AND ISNULL(AUTH_STATUS_KT,'') ='A'))
BEGIN
IF(NOT EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_REQ_PAY_ID AND STATUS_JOB ='C'))
BEGIN
UPDATE TR_REQ_PAYMENT SET AUTH_STATUS ='D' WHERE REQ_PAY_ID= @p_REQ_PAY_ID
UPDATE TR_REQ_PAYMENT_DT SET AUTH_STATUS ='D' WHERE PAY_ID= @p_REQ_PAY_ID
UPDATE TR_REQ_PAY_INVOICE SET AUTH_STATUS ='D', AUTH_STATUS_KT ='D' WHERE REQ_PAY_ID= @p_REQ_PAY_ID
UPDATE TR_REQ_PAY_SCHEDULE SET AUTH_STATUS_KT ='D' WHERE REQ_PAY_ID= @p_REQ_PAY_ID
UPDATE TR_REQ_PAY_PERIOD SET AUTH_STATUS_KT ='D' WHERE REQ_PAY_ID= @p_REQ_PAY_ID
COMMIT TRANSACTION
SELECT '0' as Result, @p_REQ_PAY_ID REQ_PAY_ID, N'Phiếu đề nghị thanh toán số: '+@REQ_CODE+ N' đã được hủy thành công.Bạn có thể tra cứu phiếu ở tình trạng Phiếu bị hủy!' AS ErrorDesc
RETURN '0'
--RETURN
END
END
END
IF(NOT EXISTS(SELECT * FROM TL_USER WHERE TLNANME =@MAKER_ID AND TLSUBBRID =@BRANCH_ID))
BEGIN
IF(NOT EXISTS(SELECT AUTH_STATUS_KT FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID= @p_REQ_PAY_ID AND ISNULL(AUTH_STATUS_KT,'') ='A'))
BEGIN
IF(NOT EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_REQ_PAY_ID AND STATUS_JOB ='C'))
BEGIN
UPDATE TR_REQ_PAYMENT SET AUTH_STATUS ='D' WHERE REQ_PAY_ID= @p_REQ_PAY_ID
UPDATE TR_REQ_PAYMENT_DT SET AUTH_STATUS ='D' WHERE PAY_ID= @p_REQ_PAY_ID
UPDATE TR_REQ_PAY_INVOICE SET AUTH_STATUS ='D', AUTH_STATUS_KT ='D' WHERE REQ_PAY_ID= @p_REQ_PAY_ID
UPDATE TR_REQ_PAY_SCHEDULE SET AUTH_STATUS_KT ='D' WHERE REQ_PAY_ID= @p_REQ_PAY_ID
UPDATE TR_REQ_PAY_PERIOD SET AUTH_STATUS_KT ='D' WHERE REQ_PAY_ID= @p_REQ_PAY_ID
COMMIT TRANSACTION
SELECT '0' as Result, @p_REQ_PAY_ID REQ_PAY_ID, N'Phiếu đề nghị thanh toán số: '+@REQ_CODE+ N' đã được hủy thành công.Bạn có thể tra cứu phiếu ở tình trạng Phiếu bị hủy!' AS ErrorDesc
RETURN '0'
END
END
END
IF((SELECT AUTH_STATUS_KT FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID= @p_REQ_PAY_ID) = 'A')
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID, N'Phiếu đề nghị thanh toán số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+ N' đã được kiểm soát viên duyệt, bạn không được phép xóa!' ErrorDesc
RETURN '-1'
END
IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_REQ_PAY_ID AND STATUS_JOB ='C'))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID, N'Phiếu đề nghị thanh toán số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+ N' đã được điều phối và xử lý ở phòng kế toán. Bạn không được phép xóa!' ErrorDesc
RETURN '-1'
END
IF((SELECT AUTH_STATUS_KT FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID= @p_REQ_PAY_ID) = 'R')
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID, N'Phiếu đề nghị thanh toán số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+ N' đang bị KSV từ chối, bạn không được phép xóa!' ErrorDesc
RETURN '-1'
END
IF((SELECT AUTH_STATUS FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID= @p_REQ_PAY_ID) = 'R')
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID, N'Phiếu đề nghị thanh toán số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+ N' đang ở tình trạng từ chối, bạn không được phép xóa!' ErrorDesc
RETURN '-1'
END
IF(EXISTS(SELECT * FROM PL_PROCESS WHERE REQ_ID =@p_REQ_PAY_ID AND CHECKER_ID IN ('nghihm','huongvt','chaudtm','hainth')))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID, N'Phiếu đề nghị thanh toán số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+ N' đã có lịch sử xử lý.Vui lòng tiếp tục thao tác trên phiếu này. Bạn không được phép xóa!' ErrorDesc
RETURN '-1'
END
ELSE
BEGIN
Delete FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID= @p_REQ_PAY_ID
Delete FROM TR_REQ_PAYMENT_DT WHERE PAY_ID= @p_REQ_PAY_ID
DELETE FROM TR_REQ_PAY_INVOICE WHERE REQ_PAY_ID= @p_REQ_PAY_ID
DELETE FROM TR_REQ_PAY_BUDGET WHERE REQ_PAY_ID= @p_REQ_PAY_ID
DELETE FROM TR_REQ_PAY_CAT WHERE REQ_PAY_ID= @p_REQ_PAY_ID
DELETE FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID= @p_REQ_PAY_ID
DELETE FROM TR_REQ_PAY_SCHEDULE WHERE REQ_PAY_ID= @p_REQ_PAY_ID
DELETE FROM TR_REQ_PAY_SERVICE WHERE REQ_PAY_ID= @p_REQ_PAY_ID
DELETE FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID= @p_REQ_PAY_ID
DELETE FROM TR_REQ_PAY_PERIOD WHERE REQ_PAY_ID= @p_REQ_PAY_ID
DELETE FROM TR_REQ_PAY_ATTACH WHERE REQ_PAY_ID= @p_REQ_PAY_ID
DELETE FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID= @p_REQ_PAY_ID
IF @@Error <> 0 GOTO ABORT
END
COMMIT TRANSACTION
SELECT '0' as Result, @p_REQ_PAY_ID REQ_PAY_ID, N'Phiếu đề nghị thanh toán số : '+@REQ_CODE+ N' đã được xóa thành công khỏi hệ thống!' AS ErrorDesc
RETURN '0'
ABORT:
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID, '' AS ErrorDesc
RETURN '-1'
End
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Creating [dbo].[BUD_CONTRACT_CUST_MASTER_App]'
GO
CREATE PROCEDURE [dbo].[BUD_CONTRACT_CUST_MASTER_App]
@p_CONTRACT_ID varchar(15),
@p_VERSION_NO varchar(15),
@P_AUTH_STATUS VARCHAR(1),
@P_CHECKER_ID VARCHAR(12),
@P_APPROVE_DT VARCHAR(25),
@P_TYPE_CONTRACT VARCHAR(1),
@P_XML_TEMP XML
AS
BEGIN TRANSACTION
DECLARE @_BUILDING_UTIL_LOG VARCHAR(15)
DECLARE @p_VALUE_ID VARCHAR(15)
DECLARE @p_MONTH DECIMAL(18,0)
DECLARE @VALUE_ERROR DECIMAL(18,0)
DECLARE @p_RENT_PRICE DECIMAL(18,0)
DECLARE @TOATAL_INTERNAL DECIMAL(18,0)
DECLARE @STT INT
SET @STT =0
DECLARE @_BUILDING_ID VARCHAR(15)
DECLARE @_BUILDING_AREA_ID VARCHAR(15)
DECLARE @_RENT_AREA DECIMAL(18,0)
DECLARE @_RENT_PRICE_OLD DECIMAL(18,0)
DECLARE @tmp table(CONTRACT_DTID VARCHAR(15), BUILDING_AREA_ID varchar(15),RENT_AREA DECIMAL(18,2),RENT_PRICE DECIMAL(18,2))
insert into @tmp SELECT CONTRACT_DTID, BUILDING_AREA_ID,RENT_AREA,RENT_PRICE FROM BUD_CONTRACT_CUST_DT
WHERE CONTRACT_ID =@p_CONTRACT_ID AND VERSION_NO =@p_VERSION_NO-1
-----BAODNQ 20/1/2022--------------------
DECLARE @p_VAT_INIT NUMERIC(18,0)
SET @p_VAT_INIT = (SELECT VAT FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_ID = @p_CONTRACT_ID)
-----*** INSERT VERSION -1 VAO TRONG BANG LOG
IF @@Error <> 0 GOTO ABORT
Declare @hdoc1 INT
DECLARE
@d_CONTRACT_DTID VARCHAR(15),
@d_BUILD_ID VARCHAR(15),
@d_VERSION_NO INT,
@d_BUILDING_AREA_ID VARCHAR(15),
@d_RENT_AREA DECIMAL,
@d_RENT_AREA_APP DECIMAL,
@d_AREA_REMAIN DECIMAL,
@d_RENT_PRICE DECIMAL,
@d_NOTES NVARCHAR(MAX),
@d_DIEN_TICH_TANG DECIMAL,
@d_DIEN_TICH_SD_NOI_BO DECIMAL,
@d_DIEN_TICH_DA_CHO_THUE DECIMAL,
@d_DIEN_TICH_CON_LAI DECIMAL,
@d_DIEN_TICH_CAN_CHOTHUE DECIMAL,
@d_PRICE DECIMAL,
@d_TOTAL_AMT DECIMAL,
@d_DIEN_TICH_CON_LAI_FINAL DECIMAL
Exec sp_xml_preparedocument @hdoc1 Output,@p_XML_TEMP
DECLARE XmlDataDoc CURSOR FOR
SELECT *
FROM OPENXML(@hdoc1,'/Root/XmlData1',2)
WITH
(
CONTRACT_DTID VARCHAR(15),
BUILD_ID VARCHAR(15),
VERSION_NO INT,
BUILDING_AREA_ID VARCHAR(15),
RENT_AREA DECIMAL,
RENT_AREA_APP DECIMAL,
AREA_REMAIN DECIMAL,
RENT_PRICE DECIMAL,
NOTES NVARCHAR(MAX),
DIEN_TICH_TANG DECIMAL,
DIEN_TICH_SD_NOI_BO DECIMAL,
DIEN_TICH_DA_CHO_THUE DECIMAL,
DIEN_TICH_CON_LAI DECIMAL,
DIEN_TICH_CAN_CHOTHUE DECIMAL,
PRICE DECIMAL,
TOTAL_AMT DECIMAL,
DIEN_TICH_CON_LAI_FINAL DECIMAL
)
OPEN XmlDataDoc
FETCH NEXT FROM XmlDataDoc INTO
@d_CONTRACT_DTID,
@d_BUILD_ID,
@d_VERSION_NO,
@d_BUILDING_AREA_ID,
@d_RENT_AREA,
@d_RENT_AREA_APP,
@d_AREA_REMAIN,
@d_RENT_PRICE,
@d_NOTES,
@d_DIEN_TICH_TANG,
@d_DIEN_TICH_SD_NOI_BO,
@d_DIEN_TICH_DA_CHO_THUE,
@d_DIEN_TICH_CON_LAI,
@d_DIEN_TICH_CAN_CHOTHUE,
@d_PRICE,
@d_TOTAL_AMT,
@d_DIEN_TICH_CON_LAI_FINAL
WHILE @@FETCH_STATUS = 0
BEGIN
SET @STT= @STT+1
SET @VALUE_ERROR = (SELECT FLOOR_AREA - (UTILZED_AREA + INTERNAL_AREA)
FROM BUD_AREA_DT
WHERE BUILDING_AREA_ID = @d_BUILDING_AREA_ID
)
--+(SELECT SUM(RENT_AREA) FROM BUD_CONTRACT_DT
--WHERE CONTRACT_ID =@p_CONTRACT_ID AND CONTRACT_ID IN(SELECT CONTRACT_ID FROM
--BUD_CONTRACT_MASTER WHERE AUTH_STATUS='A'))
--DIEN TICH CHO THUE PHAI LON HON DIEN TICH CON LAI+ DIEN TICH VERSION CŨ TRONG TRUONG
--HOP TAO PHU LUC HOP DONG --
IF ( @d_DIEN_TICH_CAN_CHOTHUE > (@VALUE_ERROR + @d_RENT_AREA_APP))
BEGIN
DECLARE @ERRORSYS NVARCHAR(200) =''
SET @ERRORSYS = N'Dòng '+ convert(nvarchar(2),@stt) +N': Diện tích cho thuê phải nhỏ hơn hoặc bằng '+ convert(nvarchar(20),@VALUE_ERROR)
END
IF @ERRORSYS <> ''
BEGIN
CLOSE XmlDataDoc
DEALLOCATE XmlDataDoc
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' CONTRACT_ID, @ERRORSYS ErrorDesc
RETURN '-1'
END
----**** INSERT VERSION CURRENT -1-------------------------------------------------------------------------
--IF(@p_VERSION_NO>1)
--BEGIN
-- SET @_BUILDING_AREA_ID= (SELECT TOP(1) BUILDING_AREA_ID FROM @tmp)
-- SET @_RENT_AREA= (SELECT TOP(1) RENT_AREA FROM @tmp)
-- SET @p_RENT_PRICE= (SELECT TOP(1) RENT_PRICE FROM @tmp)
-- EXEC SYS_CodeMasters_Gen 'BUD_UTIL_LOG', @_BUILDING_UTIL_LOG out
-- IF @_BUILDING_UTIL_LOG='' OR @_BUILDING_UTIL_LOG IS NULL GOTO ABORT
-- INSERT INTO BUD_UTIL_LOG([UTIL_ID],[BUILDING_AREA_ID],[UTIL_TYPE],[UTIL_RELEASE],[CONTRACT_ID],[VERSION_NO],[UTIL_DT],[AREA],[RECORD_STATUS],[AUTH_STATUS],[MAKER_ID],[CREATE_DT],[CHECKER_ID],[APPROVE_DT])
-- VALUES(@_BUILDING_UTIL_LOG ,@_BUILDING_AREA_ID ,@P_TYPE_CONTRACT ,'R' ,@p_CONTRACT_ID ,@p_VERSION_NO-1 ,CONVERT(DATETIME, GETDATE(), 103) ,@_RENT_AREA ,'1' ,'A' ,@P_CHECKER_ID ,CONVERT(DATETIME, GETDATE(), 103) ,@p_CHECKER_ID ,CONVERT(DATETIME, GETDATE(), 103) )
-- ------**** INSERT INTO CONTRACT_VALUES ---------------------------------------------------------------
-- EXEC SYS_CodeMasters_Gen 'CONTRACT_VALUES', @p_VALUE_ID out
-- IF @p_VALUE_ID='' OR @p_VALUE_ID IS NULL GOTO ABORT
-- INSERT INTO BUD_CONTRACT_VALUES VALUES (@p_VALUE_ID,@p_CONTRACT_ID,@p_VERSION_NO-1,@_BUILDING_AREA_ID,@P_TYPE_CONTRACT,'R',@p_RENT_PRICE*@_RENT_AREA,NULL,@d_NOTES,
-- '1','A',@P_CHECKER_ID,CONVERT(DATETIME,GETDATE(),103),@P_CHECKER_ID,CONVERT(DATETIME,GETDATE(),103))
-- DELETE @tmp WHERE CONTRACT_DTID = (SELECT TOP(1) CONTRACT_DTID FROM @tmp)
--END
-----***INSERT VERSION CURRENT------------------------------------------------------------------
DECLARE @l_UTIL_ID VARCHAR(15)
EXEC SYS_CodeMasters_Gen 'BUD_UTIL_LOG', @l_UTIL_ID out
IF @l_UTIL_ID='' OR @l_UTIL_ID IS NULL GOTO ABORT
-----BAODNQ 17/1/2022: Thêm cột vào bảng BUD_UTIL_LOG
DECLARE @p_CUSTOMER_ID VARCHAR(15) =
(SELECT CUST_ID FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_ID = @p_CONTRACT_ID)
DECLARE @p_IS_FIRST_TIME VARCHAR(1)
IF(NOT EXISTS
(SELECT * FROM BUD_UTIL_LOG
WHERE CONTRACT_ID = @p_CONTRACT_ID
AND BUILDING_AREA_ID = @d_BUILDING_AREA_ID
AND CUSTOMER_ID = @p_CUSTOMER_ID
AND IS_FIRST_TIME = 'Y'))
BEGIN
SET @p_IS_FIRST_TIME = 'Y'
END
ELSE
BEGIN
SET @p_IS_FIRST_TIME = 'N'
END
INSERT INTO BUD_UTIL_LOG([UTIL_ID],[BUILDING_AREA_ID],[UTIL_TYPE],[UTIL_RELEASE],[CONTRACT_ID],
[VERSION_NO],[UTIL_DT],[AREA],[RECORD_STATUS],[AUTH_STATUS],[MAKER_ID],[CREATE_DT],[CHECKER_ID],
[APPROVE_DT], [TOTAL_AMT_INIT], [VAT_INIT], [IS_FIRST_TIME], [CUSTOMER_ID])
VALUES(@l_UTIL_ID ,@d_BUILDING_AREA_ID ,@P_TYPE_CONTRACT ,'U' ,@p_CONTRACT_ID ,@p_VERSION_NO ,
CONVERT(DATETIME, GETDATE(), 103) ,@d_DIEN_TICH_CAN_CHOTHUE ,'1' ,'A' ,@P_CHECKER_ID ,
CONVERT(DATETIME, GETDATE(), 103) ,@p_CHECKER_ID ,CONVERT(DATETIME, GETDATE(), 103),
@d_TOTAL_AMT, @p_VAT_INIT, @p_IS_FIRST_TIME, @p_CUSTOMER_ID)
---*** UPDATE CONTRACT_VALUES-------------------------------------------------------
EXEC SYS_CodeMasters_Gen 'CONTRACT_VALUES', @p_VALUE_ID out
IF @p_VALUE_ID='' OR @p_VALUE_ID IS NULL GOTO ABORT
INSERT INTO BUD_CONTRACT_VALUES VALUES (@p_VALUE_ID,@p_CONTRACT_ID,@p_VERSION_NO,@d_BUILDING_AREA_ID,@P_TYPE_CONTRACT,'U',@d_PRICE*@d_DIEN_TICH_CAN_CHOTHUE,NULL,@d_NOTES,
'1','A',@P_CHECKER_ID,CONVERT(DATETIME,GETDATE(),103),@P_CHECKER_ID,CONVERT(DATETIME,GETDATE(),103))
---*** UPDATE DIEN TICH CHO KHACH THUE
BEGIN
UPDATE BUD_AREA_DT
--SET UTILZED_AREA =(
-- (SELECT ISNULL(SUM(AREA),0) FROM BUD_UTIL_LOG WHERE BUILDING_AREA_ID=@d_BUILDING_AREA_ID AND UTIL_RELEASE='U' AND UTIL_TYPE=@P_TYPE_CONTRACT)
-- -
-- (SELECT ISNULL(SUM(AREA),0) FROM BUD_UTIL_LOG WHERE BUILDING_AREA_ID=@d_BUILDING_AREA_ID AND UTIL_RELEASE='R' AND UTIL_TYPE =@P_TYPE_CONTRACT)
-- )
SET UTILZED_AREA = UTILZED_AREA + @d_DIEN_TICH_CAN_CHOTHUE
WHERE BUILDING_AREA_ID =@d_BUILDING_AREA_ID
---****** UPDATE BUD_CONTRACT_CUST_DT ******************************************---------
UPDATE BUD_CONTRACT_CUST_DT
SET RENT_AREA_APP = RENT_AREA_APP + @d_DIEN_TICH_CAN_CHOTHUE,
--DIEN_TICH_DA_CHO_THUE = DIEN_TICH_DA_CHO_THUE + @d_DIEN_TICH_CAN_CHOTHUE,
AREA_REMAIN = AREA_REMAIN - @d_DIEN_TICH_CAN_CHOTHUE,
--DIEN_TICH_CON_LAI_FINAL = DIEN_TICH_CON_LAI_FINAL - @d_DIEN_TICH_CAN_CHOTHUE
DIEN_TICH_CON_LAI_FINAL = DIEN_TICH_CON_LAI - @d_DIEN_TICH_CAN_CHOTHUE
WHERE CONTRACT_DTID = @d_CONTRACT_DTID
END
------------------------------------------------------------------------------------------
IF @@Error <> 0 GOTO ABORT
-----BAODNQ 17/1/2022: Insert vào BUD_CONTRACT_LOG khi trưởng dv duyệt thành công
FETCH NEXT FROM XmlDataDoc INTO
@d_CONTRACT_DTID,
@d_BUILD_ID,
@d_VERSION_NO,
@d_BUILDING_AREA_ID,
@d_RENT_AREA,
@d_RENT_AREA_APP,
@d_AREA_REMAIN,
@d_RENT_PRICE,
@d_NOTES,
@d_DIEN_TICH_TANG,
@d_DIEN_TICH_SD_NOI_BO,
@d_DIEN_TICH_DA_CHO_THUE,
@d_DIEN_TICH_CON_LAI,
@d_DIEN_TICH_CAN_CHOTHUE,
@d_PRICE,
@d_TOTAL_AMT,
@d_DIEN_TICH_CON_LAI_FINAL
END
CLOSE XmlDataDoc
DEALLOCATE XmlDataDoc
--**** UPDATE BUD_CONTRACT_CUST_MASTER*************
SET @p_RENT_PRICE = (SELECT SUM(TOTAL_AMT) FROM BUD_CONTRACT_CUST_DT
WHERE CONTRACT_ID =@p_CONTRACT_ID
AND VERSION_NO=@p_VERSION_NO)
SET @p_MONTH= (SELECT MONTHS FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_ID=@p_CONTRACT_ID
AND VERSION_NO=@p_VERSION_NO)
UPDATE BUD_CONTRACT_CUST_MASTER
SET RENT_PRICE=@p_RENT_PRICE *@p_MONTH
WHERE CONTRACT_ID=@p_CONTRACT_ID AND VERSION_NO=@p_VERSION_NO
---*** UPDATE BUD_MASTER-------------------------------
SET @_BUILDING_ID =(SELECT BUILDING_ID FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_ID =@p_CONTRACT_ID AND VERSION_NO =@p_VERSION_NO)
UPDATE BUD_MASTER
SET UTILZED_AREA = (SELECT ISNULL(SUM(UTILZED_AREA),0) FROM BUD_AREA_DT WHERE BUILD_ID =@_BUILDING_ID)
WHERE BUILDING_ID=@_BUILDING_ID
---***UPDATE DIEN TICH CHO THUE TOAN BO TOA NHA
--SET @TOATAL_INTERNAL = (SELECT ISNULL(SUM(INTERNAL_AREA),0) FROM BUD_AREA_DT WHERE BUILD_ID =@_BUILDING_ID)
--UPDATE BUD_MASTER
--SET RENT_TOTAL_AREA = TOTAL_AREA -@TOATAL_INTERNAL
--WHERE BUILDING_ID = @_BUILDING_ID
UPDATE BUD_CONTRACT_CUST_MASTER SET AUTH_STATUS = 'A', CHECKER_ID = @P_CHECKER_ID, APPROVE_DT = CONVERT(DATETIME,@P_APPROVE_DT,103)
WHERE VERSION_NO=@p_VERSION_NO AND CONTRACT_ID =@p_CONTRACT_ID
---BAODNQ 29/12/2021: Insert vào PL_PROCESS lưu lịch sử xử lý
INSERT INTO dbo.PL_PROCESS
(
REQ_ID,
PROCESS_ID,
CHECKER_ID,
APPROVE_DT,
PROCESS_DESC,
NOTES
)
VALUES
( @p_CONTRACT_ID,
'APPROVE',
@P_CHECKER_ID,
GETDATE(),
N'Trưởng đơn vị duyệt hợp đồng khách thuê thành công' ,
N'Trưởng đơn vị duyệt hợp đồng khách thuê'
)
-----BAODNQ 17/1/2022: Insert vào BUD_CONTRACT_LOG khi trưởng dv duyệt thành công
--DECLARE @p_CUSTOMER_ID VARCHAR(15),
-- @p_TOTAL_AMT DECIMAL(18,0),
-- @p_IS_FIRST_TIME VARCHAR(1),
-- @p_VAT DECIMAL(18,0)
--SET @p_CUSTOMER_ID = (SELECT CUST_ID FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_ID = @p_CONTRACT_ID)
--SET @p_TOTAL_AMT = (SELECT VAT_AMT FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_ID = @p_CONTRACT_ID)
--SET @p_VAT = (SELECT VAT FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_ID = @p_CONTRACT_ID)
--IF(NOT EXISTS (SELECT * FROM BUD_CONTRACT_LOG WHERE CONTRACT_ID = @p_CONTRACT_ID AND IS_FIRST_TIME = 'Y'))
--BEGIN
-- SET @p_IS_FIRST_TIME = 'Y'
--END
--ELSE
--BEGIN
-- SET @p_IS_FIRST_TIME = 'N'
--END
--INSERT INTO BUD_CONTRACT_LOG
-- VALUES(@p_CONTRACT_ID, @p_CUSTOMER_ID, @p_TOTAL_AMT, @p_VAT ,@p_IS_FIRST_TIME,
-- CONVERT(DATETIME,@P_APPROVE_DT,103))
--IF @@ERROR <> 0 GOTO ABORT
COMMIT TRANSACTION
SELECT '0' as Result, @p_VERSION_NO VERSION_NO, '' ErrorDesc
RETURN '0'
ABORT:
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' CONTRACT_ID, '' ErrorDesc
RETURN '-1'
End
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Creating [dbo].[BUD_CONTRACT_CUST_MASTER_GetRentAreaInfo]'
GO
CREATE PROCEDURE [dbo].[BUD_CONTRACT_CUST_MASTER_GetRentAreaInfo]
@p_BUIDING_AREA_ID varchar(15) = NULL
AS
BEGIN -- PAGING
-- PAGING BEGIN
SELECT B.CONTRACT_ID, B.CONTRACT_NO, E.CONTRACT_NAME,
G.BUILDING_NAME, C.FLOOR_NO, D.CUSTOMER_NAME,
ISNULL(A.DIEN_TICH_CAN_CHOTHUE,0) AS DIEN_TICH_DA_CHO_THUE,
B.INPUT_DT,
B.FROM_DT,
B.TO_DATE,
ISNULL(A.TOTAL_AMT,0) AS THANH_TIEN,
B.CREATE_DT, B.MAKER_ID, B.APPROVE_DT, B.CHECKER_ID, F.AUTH_STATUS_NAME
-- SELECT END
FROM BUD_CONTRACT_CUST_DT A
LEFT JOIN BUD_CONTRACT_CUST_MASTER B ON A.CONTRACT_ID = B.CONTRACT_ID
LEFT JOIN BUD_AREA_DT C ON A.BUILDING_AREA_ID = C.BUILDING_AREA_ID
LEFT JOIN LS_CUSTOMER D ON B.CUST_ID = D.CUSTOMER_ID
LEFT JOIN TR_CONTRACT E ON B.TR_CONTRACT_ID = E.CONTRACT_ID
LEFT JOIN CM_AUTH_STATUS F ON B.AUTH_STATUS = F.AUTH_STATUS
LEFT JOIN BUD_MASTER G ON A.BUILD_ID = G.BUILDING_ID
WHERE 1 = 1
AND C.BUILDING_AREA_ID = @p_BUIDING_AREA_ID
AND B.AUTH_STATUS = 'A'
-- PAGING END
END -- PAGING
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Altering [dbo].[TR_REQ_PAYMENT_Ins]'
GO
ALTER PROCEDURE [dbo].[TR_REQ_PAYMENT_Ins]
@p_REQ_PAY_ID varchar(15)= NULL,
@p_REQ_PAY_CODE varchar(50) = NULL,
@p_REQ_DT VARCHAR(20)= NULL,
@p_BRANCH_ID varchar(15) = NULL,
@p_DEP_ID varchar(15) = NULL,
@p_REQ_REASON nvarchar(MAX) = NULL,
@p_REQ_TYPE varchar(15) = NULL,
@P_REQ_ENTRIES nvarchar(MAX) = NULL,
@p_REQ_DESCRIPTION nvarchar(MAX) = NULL,
@p_REF_ID varchar(15) = NULL,
@p_RECEIVER_PO nvarchar(250) = NULL,
@p_REQ_PAY_TYPE varchar(15) = NULL,
@p_REQ_TYPE_CURRENCY nvarchar(50) = NULL,
@p_REQ_AMT decimal(18, 0) = NULL,
@p_REQ_TEMP_AMT decimal(18, 0) = NULL,
@p_MAKER_ID varchar(15) = NULL,
@p_CREATE_DT varchar(25) = NULL,
@p_EDITOR_ID varchar(15) = NULL,
@p_AUTH_STATUS varchar(1) = NULL,
@p_CHECKER_ID varchar(15) = NULL,
@p_APPROVE_DT varchar(25) = NULL,
@p_CREATE_DT_KT varchar(25) = NULL,
@p_MAKER_ID_KT varchar(15) = NULL,
@p_AUTH_STATUS_KT varchar(1) = NULL,
@p_CHECKER_ID_KT varchar(1) = NULL,
@p_APPROVE_DT_KT varchar(25)= null,
@p_CONFIRM_NOTE nvarchar(500) = NULL,
@p_BRANCH_CREATE varchar(15) = NULL,
@p_NOTES varchar(15) = NULL,
@p_RECORD_STATUS varchar(1) = NULL,
@p_TRANSFER_MAKER nvarchar(50) = NULL,
@p_TRANSFER_DT varchar(25) = NULL,
@p_TRASFER_USER_RECIVE varchar(15) = NULL,
@p_PROCESS varchar(15) = NULL,
@p_PAY_PHASE VARCHAR(15) = NULL,
@p_RATE DECIMAL(18,2) = 0,
@p_IS_PERIOD VARCHAR(5) = NULL,
@p_TYPE_FUNCTION VARCHAR(15) = NULL,
@p_AMT_PAY decimal(18, 0) = NULL,
@p_XMP_TEMP XML = NULL,
@p_XMP_TEMP_2 XML = NULL,
@p_XMP_TEMP_METHOD XML = NULL,
@p_XMP_TEMP_BUDGET XML = NULL,
@p_XMP_TEMP_SERVICE XML = NULL,
@p_XMP_TEMP_ATTACH XML = NULL,
@p_XMP_TEMP_INVOICE XML = NULL,
@p_XMP_TEMP_PO XML = NULL,
@p_XMP_TEMP_SCHEDULE XML = NULL,
@p_XMP_TEMP_PERIOD XML = NULL,
@p_XMP_ADVANCE_DT XML = NULL
AS
BEGIN TRANSACTION
DECLARE @ROLE_KI_NHAY VARCHAR(50)
SET @ROLE_KI_NHAY =(SELECT RoleName FROM TL_USER_V2 WHERE TLNANME =@p_TRASFER_USER_RECIVE)
IF(@ROLE_KI_NHAY IS NOT NULL AND @ROLE_KI_NHAY <> '' AND @ROLE_KI_NHAY IN ('TP','GDDV','KTT','TPTC','TC'))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' Result, '' REQ_PAY_ID, @p_REQ_PAY_CODE AS REQ_PAY_CODE, N'Bạn không được phép chọn cấp trưởng đơn vị làm cấp phê duyệt trung gian. Vui lòng bỏ qua hoặc chọn cấp phó phòng, trưởng bộ phận' ErrorDesc
RETURN '-1'
END
DECLARE @VAT decimal(18, 0) =NULL, @TRANS_NO nvarchar(50)=NULL, @TRANS_DT VARCHAR(20)=NULL,@INVOICE_SIGN nvarchar(50) = NULL,@INVOICE_NO_SIGN nvarchar(50)=null,
@INVOICE_NO nvarchar(50) = NULL,@INVOICE_DT VARCHAR(20) = NULL,@SELLER nvarchar(500) = NULL,@TAX_NO nvarchar(15) = NULL,@GOODS_NAME nvarchar(500) = NULL,
@PRICE decimal(18, 0) = NULL,@TAX decimal(18, 0) = NULL,@NOTES NVARCHAR(MAX) = NULL,@VAT_RATE decimal(18,2), @REF_ID VARCHAR(15),@IS_CLOSED VARCHAR(1),
@ACC_NO VARCHAR(25),@ACC_NAME NVARCHAR(250),@ISSUED_BY NVARCHAR(250),@ISSUED_DT VARCHAR(20),@CURRENCY VARCHAR(15)= NULL,@RATE DECIMAL(18,2),@TYPE_TRANSFER VARCHAR(15),
@TYPE_VAT VARCHAR(15),@TYPE_FUNC VARCHAR(15),@REASON NVARCHAR(1000),@REF_TYPE VARCHAR(15), @TRN_DATE VARCHAR(15)
DECLARE @PAY_ADV_ID VARCHAR(15), @REQ_PAY_ADV_CODE VARCHAR(15)
DECLARE @AMT_ADVANCED decimal(18,2),@AMT_DO decimal(18,2),
@AMT_REMAIN decimal(18,2),@AMT_PAY decimal(18,2),@AMT_USE decimal(18,2),@AMT_REVERT DECIMAL(18,2), @AMT_ADD DECIMAL(18,2)
DECLARE @TOTAL_SCHEDULE_AMT decimal(18,2) =0
DECLARE @INDEX_PO INT =0, @INDEX_AD INT =0, @INDEX_IV INT=0,@INDEX_NS INT =0, @INDEX_INVOICE INT = 0
DECLARE @TYPE_COST VARCHAR(15), @FR_LEVEL INT ,@TO_LEVEL INT
DECLARE @hdoc INT, @hDoc2 INT, @hDocMeThod INT, @hdocBudget INT, @hdocService INT, @hdocAttach INT, @hdocInvoice INT, @hdocPO INT,
@hdocSchedule INT, @hdocPeriod INT, @hdocRecurring INT
EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XMP_TEMP;
EXEC sp_xml_preparedocument @hDoc2 OUTPUT, @p_XMP_TEMP_2;
EXEC sp_xml_preparedocument @hDocMeThod OUTPUT, @p_XMP_TEMP_METHOD;
EXEC sp_xml_preparedocument @hdocBudget OUTPUT, @p_XMP_TEMP_BUDGET;
EXEC sp_xml_preparedocument @hdocService OUTPUT, @p_XMP_TEMP_SERVICE;
EXEC sp_xml_preparedocument @hdocAttach OUTPUT, @p_XMP_TEMP_ATTACH;
EXEC sp_xml_preparedocument @hdocInvoice OUTPUT, @p_XMP_TEMP_INVOICE;
EXEC sp_xml_preparedocument @hdocPO OUTPUT, @p_XMP_TEMP_PO;
EXEC sp_xml_preparedocument @hdocSchedule OUTPUT, @p_XMP_TEMP_SCHEDULE;
EXEC sp_xml_preparedocument @hdocPeriod OUTPUT, @p_XMP_TEMP_PERIOD;
EXEC sp_xml_preparedocument @hdocRecurring OUTPUT, @p_XMP_ADVANCE_DT;
DECLARE XmlData CURSOR LOCAL FOR
SELECT *
FROM
OPENXML(@hdocInvoice, '/Root/XmlData', 2)
WITH(TRANS_NO nvarchar(50),TRANS_DT VARCHAR(20),INVOICE_SIGN nvarchar(50),INVOICE_NO_SIGN nvarchar(50),
INVOICE_NO nvarchar(50),INVOICE_DT VARCHAR(20) ,SELLER nvarchar(500),TAX_NO nvarchar(15),GOODS_NAME nvarchar(500) ,
PRICE decimal(18,2),TAX decimal(18, 2),VAT decimal(18,2),NOTE NVARCHAR(MAX),VAT_RATE decimal(18,2),CURRENCY VARCHAR(15), RATE DECIMAL(18,2),TYPE_VAT VARCHAR(15), TYPE_FUNC VARCHAR(15))
OPEN XmlData;
--CURSOR 2
DECLARE XmlDataPay CURSOR LOCAL FOR
SELECT *
FROM
OPENXML(@hDoc2, '/Root/XmlDataPay', 2)
WITH(PAY_ADV_ID nvarchar(50),AMT_ADVANCED decimal(18, 0),AMT_DO decimal(18,2),
AMT_REMAIN decimal(18,2),AMT_PAY decimal(18,2),AMT_USE decimal(18,2),AMT_REVERT DECIMAL(18,2),
AMT_ADD DECIMAL(18,2),CURRENCY VARCHAR(15), RATE DECIMAL(18,2), TRN_DATE VARCHAR(15))
OPEN XmlDataPay;
------------------------
--Luanlt---
--MethodCursor
DECLARE @RECEIVE_ID varchar(15),@RECEIVE_NAME nvarchar(100),@REQ_PAY_REASON nvarchar(MAX),@TOTAL_AMT_METHOD decimal(18,2),
@REQ_PAY_TYPE varchar(1),@REQ_PAY_DESC nvarchar(MAX),@REQ_PAY_ENTRIES nvarchar(MAX),@CHECK_IN VARCHAR(15)
DECLARE XmlDataMethod CURSOR LOCAL FOR
SELECT *
FROM
OPENXML(@hDocMeThod, 'Root/XmlDataMethod',2)
WITH(RECEIVE_ID varchar(15),RECEIVE_NAME nvarchar(100),REQ_PAY_REASON nvarchar(MAX),TOTAL_AMT decimal(18,2),
REQ_PAY_TYPE varchar(1),REQ_PAY_DESC nvarchar(MAX),REQ_PAY_ENTRIES nvarchar(MAX),ACC_NO VARCHAR(25),
ACC_NAME NVARCHAR(250),ISSUED_BY NVARCHAR(250), ISSUED_DT VARCHAR(20),CURRENCY VARCHAR(15), RATE DECIMAL(18,2),CHECK_IN VARCHAR(15),TYPE_TRANSFER VARCHAR(15))
OPEN XmlDataMethod
----------
--CatCursor
DECLARE @REQ_ADV_ID varchar(15),@CAT_NAME nvarchar(100),@TOTAL_AMT_CAT decimal(18,2), @DEPT_ID VARCHAR(15)
DECLARE XmlDataCat CURSOR LOCAL FOR
SELECT *
FROM
OPENXML(@hdoc, 'Root/XmlDataCat',2)
WITH(REQ_ADV_ID VARCHAR(15),CAT_NAME nvarchar(100),TOTAL_AMT decimal(18,2), DEPT_ID VARCHAR(15),CURRENCY VARCHAR(15), RATE DECIMAL(18,2))
OPEN XmlDataCat
---------------
--ServiceCursor
DECLARE @REQ_PAY_SERVICE_NAME nvarchar(100),@RECEIVE_ID_SERVICE varchar(15),@RECEIVE_NAME_SERVICE nvarchar(100),@REQ_PAY_REASON_SERVICE nvarchar(MAX),
@TOTAL_AMT_SERVICE decimal(18,2),
@REQ_PAY_TYPE_SERVICE varchar(1),@REQ_PAY_DESC_SERVICE nvarchar(MAX),@REQ_PAY_ENTRIES_SERVICE nvarchar(MAX),@DEPT_ID_SRV VARCHAR(15)
DECLARE XmlDataService CURSOR LOCAL FOR
SELECT *
FROM
OPENXML(@hdocService, 'Root/XmlDataService',2)
WITH(REQ_PAY_SERVICE_NAME nvarchar(100),RECEIVE_ID_SERVICE varchar(15),RECEIVE_NAME_SERVICE nvarchar(100),REQ_PAY_REASON_SERVICE nvarchar(MAX),
TOTAL_AMT_SERVICE decimal(18,2),REQ_PAY_TYPE_SERVICE varchar(1),REQ_PAY_DESC_SERVICE nvarchar(MAX),REQ_PAY_ENTRIES_SERVICE nvarchar(MAX),
DEPT_ID VARCHAR(15),CURRENCY VARCHAR(15), RATE DECIMAL(18,2))
OPEN XmlDataService
---------------
--ScheduleCursor
DECLARE @PO_ID varchar(15),@TERM_PAY varchar(15),@AMT_PAY_SCHEDULE decimal(18,2),@REQ_ADV_ID_SCHE VARCHAR(15),@AMT_ADVANCE_SCHEDULE decimal(18,2),
@AMT_REMAIN_SCHEDULE decimal(18,2),@REQ_AD_DT varchar(20),@PROCESS varchar(15),@PAY_ID VARCHAR(15),@AMT_PAY_REAL DECIMAL(18,2), @AMT_PAY_DO DECIMAL(18,2)
DECLARE XmlDataSchedule CURSOR LOCAL FOR
SELECT *
FROM
OPENXML(@hdocSchedule, 'Root/XmlDataSchedule',2)
WITH(PO_ID varchar(15),TERM_PAY varchar(15),AMT_PAY_SCHEDULE decimal(18,2),REQ_ADV_ID varchar(15),AMT_ADVANCE_SCHEDULE decimal(18,2),
AMT_REMAIN_SCHEDULE decimal(18,2),REQ_AD_DT varchar(20),PROCESS varchar(15), PAY_ID VARCHAR(15),REF_ID VARCHAR(15),REQ_PAY_DESC NVARCHAR(250),
REQ_PAY_ENTRIES NVARCHAR(250),CURRENCY VARCHAR(15), RATE DECIMAL(18,2),AMT_PAY_DO DECIMAL(18,2),AMT_PAY_REAL DECIMAL(18,2))
OPEN XmlDataSchedule
--END luanlt---
-- DS HANG MUC NGAN SACH
DECLARE @TRADE_ID varchar(15),@GD_ID varchar(15),@AMT_APP decimal(18,2),@AMT_EXE decimal(18,2),
@AMT_REMAIN_GD decimal(18,2), @MONTH_RATE VARCHAR(4), @YEAR_RATE VARCHAR(4)
DECLARE XmlDataGood CURSOR LOCAL FOR
SELECT *
FROM
OPENXML(@hdocBudget, 'Root/XmlDataGood',2)
WITH(TRADE_ID varchar(15),GD_ID varchar(15),AMT_APP decimal(18,2),AMT_DO decimal(18,2),AMT_EXE decimal(18,2),
AMT_REMAIN decimal(18,2),CURRENCY VARCHAR(15), RATE DECIMAL(18,2),REASON NVARCHAR(1000),TYPE_COST VARCHAR(15),
FR_LEVEL INT ,TO_LEVEL INT, MONTH_RATE VARCHAR(4), YEAR_RATE VARCHAR(4))
OPEN XmlDataGood
---- END CURSOR
--CatCursor
DECLARE @ATTACH_ID varchar(15),@CON_ID varchar(100),@CONT_CODE VARCHAR(50), @CON_NOTES VARCHAR(1000),
@CON_DESC NVARCHAR(1000),@CON_TYPE VARCHAR(15),@AMT_ATT DECIMAL(18,2),@REF_DT VARCHAR(20), @LICENSE_DT VARCHAR(15)
DECLARE XmlAttach CURSOR LOCAL FOR
SELECT *
FROM
OPENXML(@hdocAttach, 'Root/XmlAttach',2)
WITH(ATTACH_ID varchar(15),CON_ID varchar(100),CONT_CODE VARCHAR(50), CON_NOTES NVARCHAR(1000),
CON_DESC NVARCHAR(1000),CON_TYPE VARCHAR(15),AMT_ATT DECIMAL(18,2),REF_DT VARCHAR(20), LICENSE_DT VARCHAR(15))
OPEN XmlAttach
--THIEUVQ 281119---
EXEC [dbo].[PAY_CODE_GenKey] 'TR_REQ_PAYMENT', '','', @p_REQ_PAY_CODE out
--END--
DECLARE @INDEX INT =0
IF @p_REQ_PAY_CODE IS NULL OR @p_REQ_PAY_CODE =''
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Mã số phiếu không được để trống' ErrorDesc
RETURN '-1'
END
--IF EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_CODE = @p_REQ_PAY_CODE )
--BEGIN
-- ROLLBACK TRANSACTION
-- SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Số phiếu đề nghị thanh toán đã tồn tại trong hệ thống' ErrorDesc
-- RETURN '-1'
--END
EXEC SYS_CodeMasters_Gen 'TR_REQ_PAYMENT', @p_REQ_PAY_ID out
IF @p_REQ_PAY_ID='' OR @p_REQ_PAY_ID IS NULL GOTO ABORT
INSERT INTO [dbo].[TR_REQ_PAYMENT]
([REQ_PAY_ID]
,[REQ_PAY_CODE],[REQ_DT]
,[BRANCH_ID]
,[DEP_ID]
,[REQ_REASON]
,[REQ_TYPE],REQ_ENTRIES,
[REQ_DESCRIPTION]
,REF_ID,
RECEIVER_PO
,[REQ_PAY_TYPE]
,[REQ_TYPE_CURRENCY]
,[REQ_AMT]
,[REQ_TEMP_AMT]
,[MAKER_ID]
,[CREATE_DT]
,[EDITOR_ID]
,[AUTH_STATUS]
,[CHECKER_ID]
,[APPROVE_DT]
,[CREATE_DT_KT]
,[MAKER_ID_KT]
,[AUTH_STATUS_KT]
,[CHECKER_ID_KT]
,[APPROVE_DT_KT]
,[CONFIRM_NOTE]
,[BRANCH_CREATE]
,[NOTES],RECORD_STATUS,TRANSFER_MAKER,TRANSFER_DT,TRASFER_USER_RECIVE,PROCESS, PAY_PHASE,IS_PERIOD, RATE, AMT_PAY)
VALUES
(@p_REQ_PAY_ID,
@p_REQ_PAY_CODE,CONVERT(DATE,GETDATE(),103),
@p_BRANCH_ID,
@p_DEP_ID,
@p_REQ_REASON,
@p_REQ_TYPE,
@P_REQ_ENTRIES,
@p_REQ_DESCRIPTION,
@p_REF_ID,
@p_RECEIVER_PO,
@p_REQ_PAY_TYPE,
@p_REQ_TYPE_CURRENCY,
@p_REQ_AMT,
@p_REQ_TEMP_AMT,
@p_MAKER_ID,
GETDATE(),
@p_EDITOR_ID,
'E',
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
@p_BRANCH_CREATE,
@p_NOTES,@p_RECORD_STATUS,
@p_TRANSFER_MAKER,
NULL,
@p_TRASFER_USER_RECIVE,
NULL,@p_PAY_PHASE,ISNULL(@p_IS_PERIOD,'N'), @p_RATE, @p_AMT_PAY)
IF @@Error <> 0 GOTO ABORT
--- INSERT LICH THANH TOAN
--INSERT FROM MethodCursor
SET @INDEX = 0
FETCH NEXT FROM XmlDataMethod INTO @RECEIVE_ID,@RECEIVE_NAME,@REQ_PAY_REASON,@TOTAL_AMT_METHOD,@REQ_PAY_TYPE,
@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@ACC_NO, @ACC_NAME,@ISSUED_BY, @ISSUED_DT,@CURRENCY,@RATE,@CHECK_IN,@TYPE_TRANSFER
WHILE @@fetch_status=0
BEGIN
-- KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE
IF(@p_TYPE_FUNCTION ='SEND')
BEGIN
SET @INDEX_INVOICE = @INDEX_INVOICE+1
----------------------- begin validate ------------------------
IF(@ACC_NO IS NULL OR @ACC_NO = '')
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin phương thức thanh toán, dòng ' + CONVERT(VARCHAR(5),@INDEX_INVOICE)+N': số tài khoản '+ N' không được để trống' ErrorDesc
RETURN '-1'
END
IF(@REQ_PAY_TYPE = '1' AND (@ISSUED_DT = '' OR @ISSUED_DT IS NULL))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin phương thức thanh toán, dòng ' + CONVERT(VARCHAR(5),@INDEX_INVOICE)+N': Ngày cấp CMND '+ N' không được để trống' ErrorDesc
RETURN '-1'
END
----------------------- end validate --------------------------
END
IF(@REQ_PAY_TYPE<>'1')
BEGIN
SET @ISSUED_DT = NULL
END
--IF(@p_REQ_TYPE<>'I')
--BEGIN
--SET @TYPE_TRANSFER = ''
--END
IF(@TYPE_TRANSFER IS NULL OR @TYPE_TRANSFER ='')
BEGIN
SET @TYPE_TRANSFER ='A'
END
SET @INDEX = @INDEX +1
DECLARE @p_REQ_PAY_METHOD_ID VARCHAR(15);
EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_METHOD', @p_REQ_PAY_METHOD_ID OUT;
IF @p_REQ_PAY_METHOD_ID='' OR @p_REQ_PAY_METHOD_ID IS NULL GOTO ABORT;
INSERT INTO TR_REQ_PAY_METHOD
VALUES (@p_REQ_PAY_METHOD_ID,@p_REQ_PAY_ID,@RECEIVE_ID,@REQ_PAY_REASON,@TOTAL_AMT_METHOD,@REQ_PAY_TYPE,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,'',@p_MAKER_ID,GETDATE(),@ACC_NO, @ACC_NAME,@ISSUED_BY,CONVERT(DATE,@ISSUED_DT,103),@CURRENCY,@RATE,@CHECK_IN,@TYPE_TRANSFER)
IF @@error<>0 GOTO ABORT;
FETCH NEXT FROM XmlDataMethod INTO @RECEIVE_ID,@RECEIVE_NAME,@REQ_PAY_REASON,@TOTAL_AMT_METHOD,@REQ_PAY_TYPE,@REQ_PAY_DESC,
@REQ_PAY_ENTRIES,@ACC_NO, @ACC_NAME,@ISSUED_BY, @ISSUED_DT,@CURRENCY,@RATE,@CHECK_IN,@TYPE_TRANSFER
END
CLOSE XmlDataMethod;
DEALLOCATE XmlDataMethod;
-------------------------
-- INSERT CHUNG TU DINH KEM
FETCH NEXT FROM XmlAttach INTO @ATTACH_ID,@CON_ID,@CONT_CODE,@NOTES,@CON_DESC,
@CON_TYPE,@AMT_ATT,@REF_DT, @LICENSE_DT
WHILE @@fetch_status=0
BEGIN
IF (@REF_DT='')
BEGIN
SET @REF_DT = NULL
END
EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_ATTACH', @ATTACH_ID OUT;
IF @ATTACH_ID='' OR @ATTACH_ID IS NULL GOTO ABORT;
INSERT INTO TR_REQ_PAY_ATTACH(ATTACH_ID,REQ_PAY_ID,REF_ID,REF_CODE,NOTES,[DESCRIPTION],[TYPE],AMT,REF_DT, LICENSE_DT)
VALUES(@ATTACH_ID,@p_REQ_PAY_ID,@CON_ID,@CONT_CODE,@NOTES,@CON_DESC,@CON_TYPE,@AMT_ATT, CONVERT(DATE, @REF_DT,103), CONVERT(DATE, @LICENSE_DT,103))
IF @@error<>0 GOTO ABORT;
FETCH NEXT FROM XmlAttach INTO @ATTACH_ID,@CON_ID,@CONT_CODE,@NOTES,@CON_DESC,@CON_TYPE,@AMT_ATT,
@REF_DT, @LICENSE_DT
END
CLOSE XmlAttach;
DEALLOCATE XmlAttach;
----END
--Insert XmlData
FETCH NEXT FROM XmlData INTO @TRANS_NO , @TRANS_DT ,@INVOICE_SIGN ,@INVOICE_NO_SIGN,@INVOICE_NO ,@INVOICE_DT ,@SELLER ,
@TAX_NO ,@GOODS_NAME ,@PRICE ,@TAX,@VAT,@NOTES,@VAT_RATE,@CURRENCY,@RATE,@TYPE_VAT,@TYPE_FUNC
WHILE @@fetch_status=0
BEGIN
-- KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE
IF(@p_TYPE_FUNCTION ='SEND')
BEGIN
SET @INDEX_IV = @INDEX_IV+1
IF(LEN(@INVOICE_NO) < 1)
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Hóa đơn đính kèm, dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Số hóa đơn '+ @INVOICE_NO +N' không được để trống' ErrorDesc
RETURN '-1'
END
IF(LEN(@INVOICE_NO) > 8)
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Hóa đơn đính kèm, dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Số hóa đơn '+ @INVOICE_NO +N' phải bé hơn 9 ký tự' ErrorDesc
RETURN '-1'
END
--IF(EXISTS(SELECT * FROM TR_REQ_PAY_INVOICE WHERE INVOICE_NO =@INVOICE_NO AND INVOICE_NO_SIGN = @INVOICE_NO_SIGN AND
--INVOICE_SIGN =@INVOICE_SIGN AND TAX_NO =@TAX_NO AND TAX =@TAX AND AUTH_STATUS <>'A'))
--BEGIN
-- ROLLBACK TRANSACTION
-- SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Số hóa đơn '+ @INVOICE_NO +N' đã tồn tại trong hệ thống' ErrorDesc
-- RETURN '-1'
--END
IF(EXISTS(
SELECT * FROM TR_REQ_PAY_INVOICE WHERE INVOICE_NO =@INVOICE_NO AND INVOICE_NO_SIGN = @INVOICE_NO_SIGN AND INVOICE_SIGN =@INVOICE_SIGN AND TAX_NO =@TAX_NO AND TAX =@TAX AND AUTH_STATUS <>'D'
AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS <> 'E')
))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Số hóa đơn '+ @INVOICE_NO +N' đã tồn tại trong hệ thống' ErrorDesc
RETURN '-1'
END
IF(@GOODS_NAME IS NULL OR @GOODS_NAME ='')
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Tên mặt hàng trong lưới hóa đơn không được để trống' ErrorDesc
RETURN '-1'
END
-- TÊN NGƯỜI BÀN
IF(@SELLER IS NULL OR @SELLER ='')
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Người bán trong lưới hóa đơn không được để trống' ErrorDesc
RETURN '-1'
END
-- MÃ SỐ THUẾ
-- TÊN NGƯỜI BÀN
IF(@TAX_NO IS NULL OR @TAX_NO ='')
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Mã số thuế trong lưới hóa đơn không được để trống' ErrorDesc
RETURN '-1'
END
-- NGÀY HÓA ĐƠN
IF(@INVOICE_DT IS NULL OR @INVOICE_DT ='')
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Ngày hóa đơn trong lưới hóa đơn không được để trống' ErrorDesc
RETURN '-1'
END
-- SỐ HÓA ĐƠN
IF(@INVOICE_NO IS NULL OR @INVOICE_NO ='')
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Số hóa đơn trong lưới hóa đơn không được để trống' ErrorDesc
RETURN '-1'
END
-- KÍ HIỆU HÓA ĐƠN
IF(@INVOICE_NO_SIGN IS NULL OR @INVOICE_NO_SIGN ='')
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Kí hiệu số hóa đơn trong lưới hóa đơn không được để trống' ErrorDesc
RETURN '-1'
END
-- KÍ HIỆU HÓA ĐƠN
IF(@INVOICE_SIGN IS NULL OR @INVOICE_SIGN ='')
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Kí hiệu mẫu hóa đơn trong lưới hóa đơn không được để trống' ErrorDesc
RETURN '-1'
END
-- KÍ HIỆU HÓA ĐƠN
IF(@PRICE IS NULL OR @PRICE =0)
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Số tiền hóa đơn trong lưới hóa đơn không được để trống' ErrorDesc
RETURN '-1'
END
END
SET @INDEX = @INDEX +1
DECLARE @p_REQ_INV_ID VARCHAR(15);
EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_INVOICE', @p_REQ_INV_ID OUT;
IF @p_REQ_INV_ID='' OR @p_REQ_INV_ID IS NULL GOTO ABORT;
INSERT INTO TR_REQ_PAY_INVOICE(REQ_PAYDT_ID,REQ_PAY_ID,TRANS_NO,TRANS_DT,INVOICE_SIGN,INVOICE_NO,INVOICE_DT,SELLER,TAX_NO,GOODS_NAME,PRICE,TAX,VAT,NOTE,
MAKER_ID,CREATE_DT,EDITOR_ID,AUTH_STATUS,CHECKER_ID,APPROVE_DT,
CREATE_DT_KT,MAKER_ID_KT,AUTH_STATUS_KT,CHECKER_ID_KT,APPROVE_DT_KT,RECORD_STATUS,INVOICE_NO_SIGN,VAT_RATE,CURRENCY,RATE,PRICE_KT,VAT_KT,TOTAL_AMT_KT,TYPE_VAT,TYPE_FUNC)
VALUES (@p_REQ_INV_ID,@p_REQ_PAY_ID , @TRANS_NO , NULL ,@INVOICE_SIGN ,@INVOICE_NO ,CONVERT(DATE,@INVOICE_DT,103) ,UPPER(([dbo].[RemoveVietNamese](@SELLER))) ,@TAX_NO ,UPPER(([dbo].[RemoveVietNamese](@GOODS_NAME))) ,@PRICE ,@TAX,@VAT,@NOTES,
@p_MAKER_ID,GETDATE(),NULL,'U',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'1',@INVOICE_NO_SIGN,@VAT_RATE,@CURRENCY,@RATE,@PRICE,@VAT,@PRICE+@VAT,@TYPE_VAT,@TYPE_FUNC)
IF @@error<>0 GOTO ABORT;
FETCH NEXT FROM XmlData
INTO @TRANS_NO , @TRANS_DT,@INVOICE_SIGN,@INVOICE_NO_SIGN,@INVOICE_NO ,@INVOICE_DT ,@SELLER ,@TAX_NO ,@GOODS_NAME ,@PRICE ,@TAX,@VAT,@NOTES,@VAT_RATE,@CURRENCY,@RATE,@TYPE_VAT,@TYPE_FUNC
END;
CLOSE XmlData;
DEALLOCATE XmlData;
--- INSERT CAC HANG MUC NGAN SACH
FETCH NEXT FROM XmlDataGood INTO @TRADE_ID,@GD_ID ,@AMT_APP ,@AMT_DO,@AMT_EXE ,@AMT_REMAIN_GD,@CURRENCY,@RATE,@REASON,@TYPE_COST, @FR_LEVEL,@TO_LEVEL, @MONTH_RATE, @YEAR_RATE
WHILE @@fetch_status=0 BEGIN
--- KIEM TRA NEU NGAN SACH SU DUNG THUC THE LON HON NGAN SACH CON LAI
SET @INDEX_NS = @INDEX_NS +1
--KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE
IF(@p_TYPE_FUNCTION ='SEND')
BEGIN
IF(ISNULL(@AMT_EXE,0) =0)
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Số tiền sử dụng thực tế phải lớn hơn không.' ErrorDesc
RETURN '-1'
END
IF((@AMT_EXE > @AMT_REMAIN_GD) AND ((SELECT GD_TYPE_ID FROM CM_GOODS WHERE GD_ID =@GD_ID) ='NS'))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng thực tế không được vượt quá ngân sách còn lại.' ErrorDesc
RETURN '-1'
END
END
IF(NOT EXISTS(SELECT * FROM PL_IMPORT_DT WHERE TRADE_ID =@TRADE_ID AND IMP_YEAR =YEAR(GETDATE()))
AND NOT EXISTS (SELECT * FROM PL_MASTER WHERE PLAN_ID =(SELECT TOP 1 PLAN_ID FROM PL_TRADEDETAIL WHERE TRADE_ID =@TRADE_ID) AND YEAR =YEAR(GETDATE())))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng phải chọn lại ngân sách của năm hiện tại. Không được phép sử dụng ngân sách năm cũ.' ErrorDesc
RETURN '-1'
END
DECLARE @p_BUDGET_ID VARCHAR(15);
EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_BUDGET', @p_BUDGET_ID OUT;
IF @p_BUDGET_ID='' OR @p_BUDGET_ID IS NULL GOTO ABORT;
INSERT INTO TR_REQ_PAY_BUDGET(BUDG_ID,GD_ID,REQ_PAY_ID,TRADE_ID,AMT_APP,AMT_DO,AMT_EXE,AMT_REMAIN,MAKER_ID,CREATE_DT,CURRENCY,RATE,REASON,TYPE_COST , FR_LEVEL ,TO_LEVEL, MONTH_RATE, YEAR_RATE )
VALUES (@p_BUDGET_ID,@GD_ID,@p_REQ_PAY_ID,@TRADE_ID,@AMT_APP,@AMT_DO,@AMT_EXE,@AMT_REMAIN_GD,@p_MAKER_ID, GETDATE(),@CURRENCY,@RATE,@REASON,@TYPE_COST , @FR_LEVEL ,@TO_LEVEL, @MONTH_RATE, @YEAR_RATE)
IF @@error<>0 GOTO ABORT;
FETCH NEXT FROM XmlDataGood INTO @TRADE_ID,@GD_ID ,@AMT_APP ,@AMT_DO,@AMT_EXE ,@AMT_REMAIN_GD,@CURRENCY,@RATE,@REASON,@TYPE_COST, @FR_LEVEL,@TO_LEVEL, @MONTH_RATE, @YEAR_RATE
END;
CLOSE XmlDataGood;
DEALLOCATE XmlDataGood;
--- END INSERT NGAN SACH
---------------------------
--Luanlt--
------------------------
IF(@p_REQ_TYPE = 'I')
BEGIN
DECLARE @SUM_TTCT_LINK DECIMAL(18,0), @SUM_TT_CT DECIMAL(18,0), @SUM_KUY_KE_TT DECIMAL(18,0),@SUM_PYCMS_LINK DECIMAL(18,0), @PYCMS_CODE_LIST VARCHAR(250),
@PDNTT_CODE_LIST VARCHAR(250)
FETCH NEXT FROM XmlDataPay INTO @PAY_ADV_ID, @AMT_ADVANCED ,@AMT_DO,@AMT_REMAIN,@AMT_PAY ,@AMT_USE ,@AMT_REVERT,@AMT_ADD,@CURRENCY,@RATE, @TRN_DATE
WHILE @@fetch_status=0
BEGIN
SET @REQ_PAY_ADV_CODE = (SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@PAY_ADV_ID)
SET @INDEX_AD = @INDEX_AD +1
SET @SUM_PYCMS_LINK =ISNULL((SELECT SUM(TOTAL_AMT) FROM TR_REQUEST_DOC WHERE PL_REQ_ID =@RECEIVE_ID_SERVICE AND AUTH_STATUS IN ('U','A')),0)
SET @SUM_TT_CT =(SELECT ISNULL(TOTAL_AMT,0) FROM PL_REQUEST_DOC WHERE REQ_ID =@RECEIVE_ID_SERVICE)
SET @PYCMS_CODE_LIST = (select STUFF( (select '; ' + DTA.REQ_CODE FROM TR_REQUEST_DOC DTA WHERE PL_REQ_ID =@RECEIVE_ID_SERVICE
FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, ''))
SET @PDNTT_CODE_LIST = (select STUFF( (select '; ' + DTA.REQ_PAY_CODE FROM TR_REQ_PAYMENT DTA WHERE REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAY_SERVICE WHERE EMP_ID =@RECEIVE_ID_SERVICE)
FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, ''))
--IF(@RECEIVE_ID_SERVICE IS NOT NULL AND @RECEIVE_ID_SERVICE <> '')
--BEGIN
-- SET @SUM_PYCMS_LINK = @SUM_PYCMS_LINK +@TOTAL_AMT_SERVICE
--END
--SET @SUM_KUY_KE_TT = @SUM_KUY_KE_TT + @TOTAL_AMT_SERVICE
SET @SUM_TTCT_LINK =(SELECT SUM(TOTAL_AMT*ISNULL(RATE,1)) FROM TR_REQ_PAY_SERVICE WHERE REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT) AND REQ_PAY_ID <> @p_REQ_PAY_ID AND EMP_ID =@RECEIVE_ID_SERVICE)
IF(@p_TYPE_FUNCTION ='SEND')
BEGIN
IF(((ISNULL(@SUM_TTCT_LINK,0) +ISNULL(@SUM_PYCMS_LINK,0) + ISNULL(@TOTAL_AMT_SERVICE,0)) > ISNULL(@SUM_TT_CT,0)) AND @RECEIVE_ID_SERVICE IS NOT NULL AND @RECEIVE_ID_SERVICE <> '')
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID,'' AS REQ_PAY_CODE,
N'Dòng '+ CONVERT(VARCHAR(5),@INDEX)+N': Thông tin chi tiết về hạn mức sử dụng của tờ trình số: '+(SELECT TOP 1 ISNULL(REQ_CODE,'') FROM PL_REQUEST_DOC WHERE REQ_ID =@RECEIVE_ID_SERVICE)+N' như sau:'
+ CHAR(10) + N'* Số tiền các phiếu yêu cầu mua sắm số:'+ISNULL(@PYCMS_CODE_LIST,'')+N' đã sử dụng: '+FORMAT(ISNULL(@SUM_PYCMS_LINK,0),'#,#', 'vi-VN') +' VND'+
+ CHAR(10) +N'* Số tiền ở các phiếu thanh toán số: '+ISNULL(@PDNTT_CODE_LIST,'')+N' đã sử dụng: '+ FORMAT(ISNULL(@SUM_TTCT_LINK,0),'#,#', 'vi-VN') +' VND'+
+ CHAR(10) +N'* Số tiền còn lại được phép thanh toán là: '+FORMAT(ISNULL(@SUM_TT_CT,0) -ISNULL(@SUM_TTCT_LINK,0) -ISNULL(@SUM_PYCMS_LINK,0),'#,#', 'vi-VN') +' VND' ErrorDesc
RETURN '-1'
END
END
-- KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE
IF(@p_TYPE_FUNCTION ='SEND')
BEGIN
-- KIEM TRA XEM CO PHIEU NAO DANG DUOC THANH TOAN HOAN TAM UNG MA CHUA DUYET HAY CHUA
--IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_DT WHERE (PAY_ADV_ID =@PAY_ADV_ID AND (AUTH_STATUS_KT <>'A' OR AUTH_STATUS_KT IS NULL)) AND PAY_ID <>@p_REQ_PAY_ID))
IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_DT WHERE (PAY_ADV_ID =@PAY_ADV_ID AND (AUTH_STATUS ='A' AND ISNULL(AUTH_STATUS_KT,'') <> 'A')) AND PAY_ID <>@p_REQ_PAY_ID))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_AD)+ N': Phiếu tạm ứng số '+@REQ_PAY_ADV_CODE+ N' đang được thanh toán hoàn tạm ứng. Vui lòng đợi giao dịch hoàn tất' ErrorDesc
RETURN '-1'
END
-- KIEM TRA NEU SO TIEN DE NGHI HOAN TAM ƯNG LON HON SO TIEN CON LAI CAN PHAI TAM UNG
IF(@AMT_REVERT>(@AMT_REMAIN -@AMT_USE) AND @AMT_REVERT >0)
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_AD)+ N': Số tiền hoàn ứng không được vượt quá '+FORMAT((@AMT_REMAIN -@AMT_USE),'#,#', 'vi-VN') ErrorDesc
RETURN '-1'
END
END
DECLARE @p_REQ_PAYDT_ID VARCHAR(15);
EXEC SYS_CodeMasters_Gen 'TR_REQ_PAYMENT_DT', @p_REQ_PAYDT_ID OUT;
IF @p_REQ_PAYDT_ID='' OR @p_REQ_PAYDT_ID IS NULL GOTO ABORT;
INSERT INTO TR_REQ_PAYMENT_DT
VALUES (@p_REQ_PAYDT_ID,@PAY_ADV_ID,@p_REQ_PAY_ID , ISNULL(@AMT_ADVANCED,0) ,ISNULL(@AMT_DO,0),ISNULL(@AMT_REMAIN,0),
ISNULL(@AMT_PAY,0) ,ISNULL(@AMT_USE,0) ,ISNULL(@AMT_REVERT,0), ISNULL(@AMT_ADD,0), CONVERT(DATE,@TRN_DATE,103) ,@p_MAKER_ID ,GETDATE() ,NULL ,NULL,'U' ,NULL ,NULL ,NULL ,NULL,NULL,@CURRENCY,@RATE)
IF @@error<>0 GOTO ABORT;
FETCH NEXT FROM XmlDataPay INTO @PAY_ADV_ID, @AMT_ADVANCED ,@AMT_DO,@AMT_REMAIN,@AMT_PAY ,@AMT_USE ,@AMT_REVERT,@AMT_ADD,@CURRENCY,@RATE, @TRN_DATE
END
CLOSE XmlDataPay;
DEALLOCATE XmlDataPay;
--INSERT FROM CatCursor
SET @INDEX = 0
FETCH NEXT FROM XmlDataCat INTO @REQ_ADV_ID,@CAT_NAME,@TOTAL_AMT_CAT,@DEPT_ID,@CURRENCY,@RATE
WHILE @@fetch_status=0
BEGIN
SET @INDEX = @INDEX +1
DECLARE @p_REQ_PAY_CAT_ID VARCHAR(15);
EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_CAT', @p_REQ_PAY_CAT_ID OUT;
IF @p_REQ_PAY_CAT_ID='' OR @p_REQ_PAY_CAT_ID IS NULL GOTO ABORT;
INSERT INTO TR_REQ_PAY_CAT
VALUES (@p_REQ_PAY_CAT_ID,@p_REQ_PAY_ID,@REQ_ADV_ID,@CAT_NAME,@TOTAL_AMT_CAT,@DEPT_ID,@p_MAKER_ID,GETDATE(),@CURRENCY,@RATE)
IF @@error<>0 GOTO ABORT;
FETCH NEXT FROM XmlDataCat INTO @REQ_ADV_ID,@CAT_NAME,@TOTAL_AMT_CAT,@DEPT_ID,@CURRENCY,@RATE
END
CLOSE XmlDataCat;
DEALLOCATE XmlDataCat;
END
IF(@p_REQ_TYPE = 'D' OR @p_REQ_TYPE='I')
BEGIN
----------------------------
--INSERT FROM ServiceCursor
SET @INDEX = 0
FETCH NEXT FROM XmlDataService INTO @REQ_PAY_SERVICE_NAME,@RECEIVE_ID_SERVICE,@RECEIVE_NAME_SERVICE,@REQ_PAY_REASON_SERVICE,@TOTAL_AMT_SERVICE,
@REQ_PAY_TYPE_SERVICE,@REQ_PAY_DESC_SERVICE,@REQ_PAY_ENTRIES_SERVICE,@DEPT_ID_SRV,@CURRENCY,@RATE
WHILE @@fetch_status=0
BEGIN
-- KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE
IF(@p_TYPE_FUNCTION ='SEND')
BEGIN
SET @INDEX = @INDEX +1
--------------- begin validate--------------
--IF(@p_TYPE_FUNCTION ='SEND' AND @p_REQ_TYPE ='D')
--BEGIN
IF(@DEPT_ID_SRV IS NULL OR @DEPT_ID_SRV ='')
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin các dịch vụ thanh toán, dòng '+ CONVERT(VARCHAR(5),@INDEX)+ N': Phòng ban chịu chi phí không được để trống' ErrorDesc
RETURN '-1'
END
IF(@TOTAL_AMT_SERVICE IS NULL)
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin các dịch vụ thanh toán, dòng '+ CONVERT(VARCHAR(5),@INDEX)+ N': Số tiền thanh toán không được để trống' ErrorDesc
RETURN '-1'
END
IF(@TOTAL_AMT_SERVICE < 0)
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin các dịch vụ thanh toán, dòng '+ CONVERT(VARCHAR(5),@INDEX)+ N': Số tiền thanh toán không thể nhỏ hơn 0' ErrorDesc
RETURN '-1'
END
--END
--------------- end validate ----------------
END
DECLARE @p_REQ_PAY_SERVICE_ID VARCHAR(15);
EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_SERVICE', @p_REQ_PAY_SERVICE_ID OUT;
IF @p_REQ_PAY_SERVICE_ID='' OR @p_REQ_PAY_SERVICE_ID IS NULL GOTO ABORT;
INSERT INTO TR_REQ_PAY_SERVICE(SERVICE_ID,REQ_PAY_ID,[SERVICE_NAME],EMP_ID,REQ_PAY_REASON,TOTAL_AMT,REQ_PAY_TYPE,REQ_PAY_DESC,REQ_PAY_ENTRIES,MAKER_ID,CREATE_DT,DEPT_ID,CURRENCY,RATE)
VALUES (@p_REQ_PAY_SERVICE_ID,@p_REQ_PAY_ID,@REQ_PAY_SERVICE_NAME,@RECEIVE_ID_SERVICE,@REQ_PAY_REASON_SERVICE,@TOTAL_AMT_SERVICE,
@REQ_PAY_TYPE_SERVICE,@REQ_PAY_DESC_SERVICE,@REQ_PAY_ENTRIES_SERVICE,@p_MAKER_ID,GETDATE(),@DEPT_ID_SRV,@CURRENCY,@RATE)
IF @@error<>0 GOTO ABORT;
FETCH NEXT FROM XmlDataService INTO @REQ_PAY_SERVICE_NAME,@RECEIVE_ID_SERVICE,@RECEIVE_NAME_SERVICE,@REQ_PAY_REASON_SERVICE,@TOTAL_AMT_SERVICE,@REQ_PAY_TYPE_SERVICE,
@REQ_PAY_DESC_SERVICE,@REQ_PAY_ENTRIES_SERVICE,@DEPT_ID_SRV,@CURRENCY,@RATE
END
CLOSE XmlDataService;
DEALLOCATE XmlDataService;
END
-- INSERT PO/ HỢP ĐỒNG
IF((@p_REQ_TYPE = 'P' AND (@p_IS_PERIOD <>'Y' OR @p_IS_PERIOD IS NULL)) OR @p_REQ_TYPE ='I')
BEGIN
DECLARE XmlDataPO CURSOR LOCAL FOR
SELECT *
FROM
OPENXML(@hdocPO, '/Root/XmlDataPO', 2)
WITH(REF_ID varchar(15),IS_CLOSED VARCHAR(1),REF_TYPE VARCHAR(15))
OPEN XmlDataPO;
SET @INDEX_PO = 0
FETCH NEXT FROM XmlDataPO INTO @REF_ID,@IS_CLOSED,@REF_TYPE
WHILE @@fetch_status=0
BEGIN
SET @INDEX_PO = @INDEX_PO +1
---- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
--IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL)))
--BEGIN
-- ROLLBACK TRANSACTION
-- SELECT '-1' as Result, '' REQ_PAY_ID, '' AS REQ_PAY_CODE,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO/ hợp đồng số '+(SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' đang được tạm ứng. Vui lòng đợi giao dịch hoàn tất' ErrorDesc
-- RETURN '-1'
--END
---- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
--IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL)))
--BEGIN
-- ROLLBACK TRANSACTION
-- SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO/ hợp đồng số '+(SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' đang được thanh toán. Vui lòng đợi giao dịch hoàn tất' ErrorDesc
-- RETURN '-1'
--END
-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
-- KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE
IF(@p_TYPE_FUNCTION ='SEND')
BEGIN
IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REF_TYPE ='C' AND REQ_PAY_ID
IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT NOT IN ('A','E','R') OR AUTH_STATUS_KT IS NULL)))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID, '' AS REQ_PAY_CODE,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': Hợp đồng số '+
(SELECT CONTRACT_ID FROM TR_CONTRACT WHERE CONTRACT_ID = @REF_ID)+N' đang được tạm ứng. Vui lòng đợi giao dịch hoàn tất' ErrorDesc
RETURN '-1'
END
-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REF_TYPE ='C' AND REQ_PAY_ID IN
(SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS_KT NOT IN ('A','E','R') OR AUTH_STATUS_KT IS NULL) AND REQ_PAY_ID <>@p_REQ_PAY_ID))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': Hợp đồng số '+
(SELECT CONTRACT_ID FROM TR_CONTRACT WHERE CONTRACT_ID = @REF_ID)+N' đang được thanh toán. Vui lòng đợi giao dịch hoàn tất' ErrorDesc
RETURN '-1'
END
-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REF_TYPE ='P' AND REQ_PAY_ID
IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT NOT IN ('A','E','R') OR AUTH_STATUS_KT IS NULL)))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID, '' AS REQ_PAY_CODE,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO số '+
(SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' đang được tạm ứng. Vui lòng đợi giao dịch hoàn tất' ErrorDesc
RETURN '-1'
END
-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REF_TYPE ='P' AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS_KT NOT IN ('A','E','R') OR AUTH_STATUS_KT IS NULL) AND REQ_PAY_ID <>@p_REQ_PAY_ID))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO số '+
(SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' đang được thanh toán. Vui lòng đợi giao dịch hoàn tất' ErrorDesc
RETURN '-1'
END
--- KIEM TRA XEM PO NAY DUOC THANH TOAN HAY CHUA
IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REF_TYPE ='P' AND REF_ID IN (SELECT PO_ID FROM TR_PO_MASTER WHERE IS_CLOSED ='Y' )))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO số '+
(SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' đã được thanh toán xong. Vui lòng chọn PO khác để thanh toán hoặc xóa bản nháp này!' ErrorDesc
RETURN '-1'
END
END
DECLARE @REQ_PAYDTID VARCHAR(15);
EXEC SYS_CodeMasters_Gen 'TR_REQ_ADVANCE_DT', @REQ_PAYDTID OUT;
IF @REQ_PAYDTID='' OR @REQ_PAYDTID IS NULL GOTO ABORT;
INSERT INTO TR_REQ_ADVANCE_DT (REQ_PAYDTID,REQ_PAY_ID,REF_ID,TYPE,MAKER_ID,CREATE_DT,IS_CLOSED,REF_TYPE) VALUES
(@REQ_PAYDTID,@p_REQ_PAY_ID,@REF_ID,'PAY',@p_MAKER_ID,GETDATE(),@IS_CLOSED,@REF_TYPE)
IF @@error<>0 GOTO ABORT;
FETCH NEXT FROM XmlDataPO INTO @REF_ID,@IS_CLOSED,@REF_TYPE
END
CLOSE XmlDataPO;
DEALLOCATE XmlDataPO;
--- CUSOR DANH SACH LICH THANH TOAN PO - HD
----------------------------
--INSERT FROM ScheduleCursor
SET @INDEX_PO = 0
FETCH NEXT FROM XmlDataSchedule INTO @PO_ID,@TERM_PAY,@AMT_PAY_SCHEDULE,@REQ_ADV_ID_SCHE,@AMT_ADVANCE_SCHEDULE,@AMT_REMAIN_SCHEDULE,@REQ_AD_DT,
@PROCESS,@PAY_ID,@REF_ID,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@CURRENCY,@RATE,@AMT_PAY_DO,@AMT_PAY_REAL
WHILE @@fetch_status=0
BEGIN
--IF(@AMT_REMAIN_SCHEDULE =0)
--BEGIN
-- SET @PROCESS ='3'
--END
--IF(@PROCESS <>'2')
--BEGIN
-- SET @TOTAL_SCHEDULE_AMT = @TOTAL_SCHEDULE_AMT +@AMT_REMAIN_SCHEDULE
--END
----
SET @INDEX_PO = @INDEX_PO +1
--IF(@p_TYPE_FUNCTION ='SEND')
--BEGIN
-- IF(ISNULL(@AMT_PAY_REAL,0) >ISNULL(@AMT_REMAIN_SCHEDULE,1))
-- BEGIN
-- SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': Số tiền thanh toán không được vượt quá số tiền còn lại của kì thanh toán' ErrorDesc
-- RETURN '-1'
-- END
--END
SET @TOTAL_SCHEDULE_AMT =@TOTAL_SCHEDULE_AMT+(@AMT_PAY_SCHEDULE -@AMT_ADVANCE_SCHEDULE-@AMT_PAY_DO)
DECLARE @p_REQ_PAY_SCHEDULE_ID VARCHAR(15);
EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_SCHEDULE', @p_REQ_PAY_SCHEDULE_ID OUT;
IF @p_REQ_PAY_SCHEDULE_ID='' OR @p_REQ_PAY_SCHEDULE_ID IS NULL GOTO ABORT;
INSERT INTO TR_REQ_PAY_SCHEDULE (SCHEDULE_ID,REQ_PAY_ID,PAY_ID,AMT_PAY,PAY_PHASE,REQ_ADV_ID,AMT_ADVANCE,AMT_PAY_DO,AMT_REMAIN,REQ_PAY_DT,REQ_AD_DT,PROCESS,MAKER_ID,
CREATE_DT,AUTH_STATUS_KT,PAYMENT_STATUS,TRN_TYPE,REF_ID,REQ_PAY_DESC,REQ_PAY_ENTRIES,CURRENCY,RATE, AMT_PAY_REAL)
VALUES (@p_REQ_PAY_SCHEDULE_ID,@p_REQ_PAY_ID,@PAY_ID,@AMT_PAY_SCHEDULE,@TERM_PAY,@REQ_ADV_ID_SCHE,@AMT_ADVANCE_SCHEDULE,
--IIF(@PROCESS<>'2',(@AMT_PAY_SCHEDULE-@AMT_ADVANCE_SCHEDULE),0),
@AMT_PAY_DO,
@AMT_REMAIN_SCHEDULE,GETDATE(),CONVERT(DATETIME,@REQ_AD_DT,103),@PROCESS,@p_MAKER_ID,GETDATE(),'U','','PAY',
@REF_ID,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@CURRENCY,@RATE,@AMT_PAY_REAL)
IF @@error<>0 GOTO ABORT;
FETCH NEXT FROM XmlDataSchedule INTO @PO_ID,@TERM_PAY,@AMT_PAY_SCHEDULE,@REQ_ADV_ID_SCHE,@AMT_ADVANCE_SCHEDULE,@AMT_REMAIN_SCHEDULE,@REQ_AD_DT,
@PROCESS,@PAY_ID,@REF_ID,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@CURRENCY,@RATE,@AMT_PAY_DO,@AMT_PAY_REAL
END
CLOSE XmlDataSchedule;
DEALLOCATE XmlDataSchedule;
-- VALIDATE DANH SACH HOAN UNG -- LUCTV BO SUNG 19-11-2019. CHUA BIET CO VALIDATE HAY KHONG NEN VALIDATE DUOI STORE
--IF(@INDEX_PO =0)
--BEGIN
-- ROLLBACK TRANSACTION
-- SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Danh sách các khoản hoàn tạm ứng không được phép trống' ErrorDesc
-- RETURN '-1'
--END
-- VALIDATE SO TIEN
--IF(@p_REQ_AMT >= @TOTAL_SCHEDULE_AMT)
--BEGIN
-- ROLLBACK TRANSACTION
-- SELECT '-1' as Result, '' REQ_PAY_ID, N'Số tiền thanh toán phải nhỏ hơn hoặc bằng tổng số tiền còn lại cần thanh toán: '+FORMAT(SUM(@TOTAL_SCHEDULE_AMT),'#,#', 'vi-VN') ErrorDesc
-- RETURN '-1'
--END
----
END
-- THANH TOAN HOP DONG DINH KY
IF((@p_REQ_TYPE = 'P' AND @p_IS_PERIOD='Y') OR @p_REQ_TYPE ='I')
BEGIN
/*DECLARE XmlDataPO CURSOR LOCAL FOR
SELECT *
FROM
OPENXML(@hdocPO, '/Root/XmlDataPO', 2)
WITH(REF_ID varchar(15),IS_CLOSED VARCHAR(1),REF_TYPE VARCHAR(15))
OPEN XmlDataPO;
SET @INDEX_PO = 0
FETCH NEXT FROM XmlDataPO INTO @REF_ID,@IS_CLOSED,@REF_TYPE
WHILE @@fetch_status=0
BEGIN
SET @INDEX_PO = @INDEX_PO +1
DECLARE @REQ_PAYDTID_C VARCHAR(15);
EXEC SYS_CodeMasters_Gen 'TR_REQ_ADVANCE_DT', @REQ_PAYDTID_C OUT;
IF @REQ_PAYDTID_C='' OR @REQ_PAYDTID_C IS NULL GOTO ABORT;
INSERT INTO TR_REQ_ADVANCE_DT (REQ_PAYDTID,REQ_PAY_ID,REF_ID,TYPE,MAKER_ID,CREATE_DT,IS_CLOSED,REF_TYPE) VALUES
(@REQ_PAYDTID_C,@p_REQ_PAY_ID,@REF_ID,'PAY',@p_MAKER_ID,GETDATE(),@IS_CLOSED,@REF_TYPE)
IF @@error<>0 GOTO ABORT;
FETCH NEXT FROM XmlDataPO INTO @REF_ID,@IS_CLOSED,@REF_TYPE
END
CLOSE XmlDataPO;
DEALLOCATE XmlDataPO;
--- CUSOR DANH SACH LICH THANH TOAN PO - HD */
----------------------------
-- INSERT PRIOD
DECLARE @INDEX_PERIOD INT, @CONTRACT_PERIOD_ID VARCHAR(15),@IS_PERIOD_CLOSED VARCHAR(1)
DECLARE XmlDataRecurring CURSOR FOR
SELECT *
FROM
OPENXML(@hdocRecurring, '/Root/XmlDataRecurring', 2)
WITH(CONTRACT_ID varchar(15),IS_CLOSED VARCHAR(1),REF_TYPE VARCHAR(15))
OPEN XmlDataRecurring;
SET @INDEX_PERIOD = 0
FETCH NEXT FROM XmlDataRecurring INTO @CONTRACT_PERIOD_ID,@IS_PERIOD_CLOSED,@REF_TYPE
WHILE @@fetch_status=0
BEGIN
DECLARE @REQ_PAYDTID_PERIOD VARCHAR(15);
EXEC SYS_CodeMasters_Gen 'TR_REQ_ADVANCE_DT', @REQ_PAYDTID_PERIOD OUT;
IF @REQ_PAYDTID_PERIOD='' OR @REQ_PAYDTID_PERIOD IS NULL GOTO ABORT;
INSERT INTO TR_REQ_ADVANCE_DT (REQ_PAYDTID,REQ_PAY_ID,REF_ID,TYPE,MAKER_ID,CREATE_DT,IS_CLOSED,REF_TYPE)
VALUES(@REQ_PAYDTID_PERIOD,@p_REQ_PAY_ID,@CONTRACT_PERIOD_ID,'PAY',@p_MAKER_ID,GETDATE(),@IS_PERIOD_CLOSED,@REF_TYPE)
IF @@error<>0 GOTO ABORT;
FETCH NEXT FROM XmlDataRecurring INTO @CONTRACT_PERIOD_ID,@IS_PERIOD_CLOSED,@REF_TYPE
END
CLOSE XmlDataRecurring;
DEALLOCATE XmlDataRecurring;
--INSERT DETAIL PERIOD
DECLARE XmlDataPeriod CURSOR LOCAL FOR
SELECT *
FROM
OPENXML(@hdocPeriod, '/Root/XmlDataPeriod', 2)
WITH(CONTRACT_ID varchar(15),PAY_DT_REAL VARCHAR(20),PAY_TYPE VARCHAR(5),
OLD_INDEX DECIMAL(18,0),NEW_INDEX DECIMAL(18,0),AMT_PAY DECIMAL(18,2),CURRENCY VARCHAR(5), RATE DECIMAL(18,0), FROM_DATE VARCHAR(20), TO_DATE VARCHAR(20),AD_PAY_ID VARCHAR(15), PROCESS VARCHAR(5), PARENT_ID VARCHAR(15), PAY_PHASE NVARCHAR(250),REASON NVARCHAR(2000),TYPE_COST VARCHAR(15), FR_LEVEL INT,TO_LEVEL INT)
OPEN XmlDataPeriod;
DECLARE @CONTRACT_ID varchar(15),@PAY_DT_REAL VARCHAR(20),@PAY_TYPE VARCHAR(5),
@OLD_INDEX DECIMAL(18,0),@NEW_INDEX DECIMAL(18,0),@AMT_PAY_PERIOD DECIMAL(18,2),@FROM_DATE VARCHAR(20),@TO_DATE VARCHAR(20),@AD_PAY_ID VARCHAR(15), @_PROCESS VARCHAR(5),@PARENT_ID VARCHAR(15),@PAY_PHASE NVARCHAR(250),@REASON_TTDK NVARCHAR(2000)
FETCH NEXT FROM XmlDataPeriod INTO @CONTRACT_ID ,@PAY_DT_REAL ,@PAY_TYPE ,
@OLD_INDEX ,@NEW_INDEX ,@AMT_PAY_PERIOD,@CURRENCY, @RATE,@FROM_DATE,@TO_DATE,@AD_PAY_ID, @_PROCESS,@PARENT_ID,@PAY_PHASE,@REASON_TTDK,@TYPE_COST, @FR_LEVEL ,@TO_LEVEL
WHILE @@fetch_status=0
BEGIN
-- KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE
IF(@p_TYPE_FUNCTION ='SEND')
BEGIN
IF(@NEW_INDEX <=@OLD_INDEX AND (@NEW_INDEX >0 AND @OLD_INDEX >0) )
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin thanh toán hợp đồng định kì: Chỉ số mới phải lớn hơn chỉ số cũ' ErrorDesc
RETURN '-1'
END
IF(@PROCESS ='2' AND (@AD_PAY_ID IS NULL OR @AD_PAY_ID =''))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' Result,'' REQ_PAY_ID,N'Lưới chi tiết thanh toán định kì: Tại hình thức thanh toán Hoàn ứng, số phiếu tạm ứng không được phép để trống' ErrorDesc
RETURN '-1'
END
IF( @PAY_ADV_ID IS NOT NULL AND @PAY_ADV_ID <> '' AND (SELECT ISNULL(REQ_AMT,0.00) - ISNULL(PAY_AMT,0.00) FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@PAY_ADV_ID) <=0)
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Bạn không được phép hoàn tạm ứng cho phiếu đã được hoàn ứng xong! Vui lòng gỡ khỏi danh sách kì thanh toán & hoàn ứng' ErrorDesc
RETURN '-1'
END
-- NEU LÀ DINH KI THI HD PHAI KHAC NULL
IF(@CONTRACT_ID IS NULL OR @CONTRACT_ID ='' )
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin thanh toán hợp đồng định kì: Cột Số hợp đồng không được phép để trống' ErrorDesc
RETURN '-1'
END
-- KIEM TRA CHI TIET HOP DONG PHAI NAM TRONG DANH SACH CAC HOP DONG
IF(@CONTRACT_ID IS NOT NULL AND @CONTRACT_ID <> '' )
BEGIN
IF(NOT EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND REF_ID =@CONTRACT_ID))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin thanh toán hợp đồng định kì - Số hợp đồng phải nằm trong danh sách các hợp đồng được chọn trên lưới Hợp đồng định kì' ErrorDesc
RETURN '-1'
END
END
END
IF(@PROCESS ='2' AND (@AD_PAY_ID IS NULL OR @AD_PAY_ID =''))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' Result,'' REQ_PAY_ID,N'Lưới chi tiết thanh toán định kì: Tại hình thức thanh toán Hoàn ứng, số phiếu tạm ứng không được phép để trống' ErrorDesc
RETURN '-1'
END
IF( @PAY_ADV_ID IS NOT NULL AND @PAY_ADV_ID <> '' AND (SELECT ISNULL(REQ_AMT,0.00) - ISNULL(PAY_AMT,0.00) FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@PAY_ADV_ID) <=0)
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Bạn không được phép hoàn tạm ứng cho phiếu đã được hoàn ứng xong! Vui lòng gỡ khỏi danh sách kì thanh toán & hoàn ứng' ErrorDesc
RETURN '-1'
END
DECLARE @PERIOD_ID VARCHAR(15);
EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_PERIOD', @PERIOD_ID OUT;
IF @PERIOD_ID='' OR @PERIOD_ID IS NULL GOTO ABORT;
INSERT INTO TR_REQ_PAY_PERIOD(PERIOD_ID,REQ_PAY_ID,PAY_TYPE, CONTRACT_ID,PAY_DT_REAL,OLD_INDEX,NEW_INDEX,AMT_PAY,AUTH_STATUS_KT,CURRENCY,RATE,FROM_DATE,
TO_DATE,AD_PAY_ID,PROCESS,PARENT_ID,PAY_PHASE,REASON,TYPE_COST, FR_LEVEL ,TO_LEVEL)
VALUES (@PERIOD_ID,@p_REQ_PAY_ID,'PAY',@CONTRACT_ID,CONVERT(DATE,@PAY_DT_REAL,103),@OLD_INDEX ,@NEW_INDEX ,@AMT_PAY_PERIOD,'U',@CURRENCY, @RATE,CONVERT(DATE,@FROM_DATE,103),
CONVERT(DATE,@TO_DATE,103),@AD_PAY_ID, @_PROCESS,@PARENT_ID,@PAY_PHASE,@REASON_TTDK,@TYPE_COST, @FR_LEVEL ,@TO_LEVEL)
-- LUCTV 16 03 2021 BO SUNG BANG LOG DE FIX LOI HOÀN TẠM ỨNG ĐỊNH KỲ NHƯNG SỐ PHIẾU BỊ TRỐNG
INSERT INTO TR_REQ_PAY_PER_LOG VALUES (@p_REQ_PAY_ID, @PAY_ADV_ID)
IF @@error<>0 GOTO ABORT;
FETCH NEXT FROM XmlDataPeriod INTO @CONTRACT_ID ,@PAY_DT_REAL ,@PAY_TYPE ,
@OLD_INDEX ,@NEW_INDEX ,@AMT_PAY_PERIOD,@CURRENCY, @RATE,@FROM_DATE,@TO_DATE,@AD_PAY_ID, @_PROCESS,@PARENT_ID,@PAY_PHASE,@REASON_TTDK,@TYPE_COST, @FR_LEVEL ,@TO_LEVEL
END
CLOSE XmlDataPeriod;
DEALLOCATE XmlDataPeriod
;
END
--IF(1=1)
--GOTO ABORT
COMMIT TRANSACTION
IF(@p_TYPE_FUNCTION ='SEND') -- KIEM TRA NEU 2 BIEN XML KHAC NULL TUC LA DANG TRONG QUA TRINH LUU NHAP
BEGIN
DECLARE @BRANCH_TYPE_CR VARCHAR(15)
SET @BRANCH_TYPE_CR =(SELECT TOP 1 BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@p_BRANCH_CREATE)
DECLARE @SUM_THANH_TOAN DECIMAL(18,0) =0, @SUM_PHUONG_THUC DECIMAL(18,0) =0, @SUM_NGAN_SACH DECIMAL(18,2) =0, @SUM_USE_REAL DECIMAL(18,2), @SUM_SERVICE DECIMAL(18,0),
@SUM_SCHEDULE DECIMAL(18,0), @SUM_PERIOD DECIMAL(18,0), @SUM_PAY_BACK DECIMAL(18,0) =0, @SUM_ADD DECIMAL(18,0)
SET @SUM_THANH_TOAN =(SELECT ISNULL(SUM(REQ_AMT * ISNULL(RATE,1)),0) FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
SET @SUM_PHUONG_THUC =ABS((SELECT ISNULL(SUM(TOTAL_AMT * ISNULL(RATE,1)),0) FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID
AND (TYPE_TRANSFER ='A' OR TYPE_TRANSFER IS NULL OR TYPE_TRANSFER ='')) - (SELECT ISNULL(SUM(TOTAL_AMT * ISNULL(RATE,1)),0) FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID
AND TYPE_TRANSFER ='R'))
SET @SUM_NGAN_SACH =(SELECT ISNULL(SUM(AMT_EXE * ISNULL(RATE,1)),0) FROM TR_REQ_PAY_BUDGET WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
SET @SUM_SERVICE =(SELECT ISNULL(SUM(TOTAL_AMT * ISNULL(RATE,1)),0) FROM TR_REQ_PAY_SERVICE WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
SET @SUM_PERIOD =(SELECT ISNULL(SUM(AMT_PAY * ISNULL(RATE,1)),0) FROM TR_REQ_PAY_PERIOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
SET @SUM_SCHEDULE =(SELECT ISNULL(SUM(AMT_PAY_REAL * ISNULL(RATE,1)),0) FROM TR_REQ_PAY_SCHEDULE WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
IF(@p_REQ_TYPE ='I')
BEGIN
SET @SUM_USE_REAL =(SELECT ISNULL(SUM(AMT_USE*ISNULL(RATE,1)),0) FROM TR_REQ_PAYMENT_DT WHERE PAY_ID =@p_REQ_PAY_ID)
SET @SUM_PAY_BACK =(SELECT ISNULL(SUM(AMT_REVERT*ISNULL(RATE,1)),0) FROM TR_REQ_PAYMENT_DT WHERE PAY_ID =@p_REQ_PAY_ID)
SET @SUM_ADD =(SELECT ISNULL(SUM(AMT_ADD*ISNULL(RATE,1)),0) FROM TR_REQ_PAYMENT_DT WHERE PAY_ID =@p_REQ_PAY_ID)
SET @SUM_PHUONG_THUC =(SELECT ISNULL(SUM(TOTAL_AMT * ISNULL(RATE,1)),0) FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND TYPE_TRANSFER ='A') -
(SELECT ISNULL(SUM(TOTAL_AMT * ISNULL(RATE,1)),0) FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND TYPE_TRANSFER ='R')
END
IF(@p_REQ_TYPE ='P' AND @p_IS_PERIOD ='Y' AND @p_IS_PERIOD <>'' AND @p_IS_PERIOD IS NOT NULL)
BEGIN
SET @SUM_USE_REAL =(SELECT ISNULL(SUM(AMT_PAY*ISNULL(RATE,1)),0) FROM TR_REQ_PAY_PERIOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
--SET @SUM_PAY_BACK =(SELECT ISNULL(SUM(AMT_PAY*ISNULL(RATE,1)),0) FROM TR_REQ_PAY_PERIOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND PROCESS <> '0')
END
IF(@p_REQ_TYPE ='P' AND (@p_IS_PERIOD ='N' OR (@p_IS_PERIOD ='' OR @p_IS_PERIOD IS NULL)))
BEGIN
SET @SUM_USE_REAL =(SELECT ISNULL(SUM(AMT_PAY_REAL*ISNULL(RATE,1)),0) FROM TR_REQ_PAY_SCHEDULE WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
SET @SUM_PAY_BACK =(SELECT ISNULL(SUM(AMT_ADVANCE*ISNULL(RATE,1)),0) FROM TR_REQ_PAY_SCHEDULE WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
END
IF(@p_REQ_TYPE ='D')
BEGIN
SET @SUM_USE_REAL =(SELECT ISNULL(SUM(TOTAL_AMT*ISNULL(RATE,1)),0) FROM TR_REQ_PAY_SERVICE WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
END
IF(@p_REQ_TYPE = 'D' AND ROUND(@SUM_NGAN_SACH,0) <> ROUND(@SUM_THANH_TOAN,0))
BEGIN
SELECT '-1' as Result, '' REQ_PAY_ID, N'Số tiền sử dụng ngân sách và chi phí phải bằng số tiền bạn cần thanh toán là: ' + FORMAT(SUM(@SUM_THANH_TOAN),'#,#', 'vi-VN') ErrorDesc
RETURN '-1'
END
IF(@p_REQ_TYPE <> 'D' AND ROUND(@SUM_NGAN_SACH,0) <> ROUND(@SUM_USE_REAL,0))
BEGIN
SELECT '-1' as Result, '' REQ_PAY_ID, N'Số tiền sử dụng ngân sách và chi phí phải bằng số tiền bạn sử dụng thực tế là: ' + FORMAT(SUM(@SUM_USE_REAL),'#,#', 'vi-VN') ErrorDesc
RETURN '-1'
END
IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE TRASFER_USER_RECIVE <> '' AND TRASFER_USER_RECIVE IS NOT NULL AND REQ_PAY_ID =@p_REQ_PAY_ID) AND @BRANCH_TYPE_CR ='PGD')
BEGIN
SELECT '-1' as Result, '' REQ_PAY_ID, N'Cấp độ phòng giao dịch vui lòng không được chọn cấp phê duyệt trung gian' ErrorDesc
RETURN '-1'
END
IF(@p_REQ_TYPE <> 'I')
BEGIN
IF(NOT EXISTS(SELECT * FROM TR_REQ_PAY_BUDGET WHERE REQ_PAY_ID =@p_REQ_PAY_ID))
BEGIN
SELECT '-1' as Result, '' REQ_PAY_ID, N'Thông tin hạng mục ngân sách và chi phí không được để trống. Vui lòng chọn ngân sách và chi phí' ErrorDesc
RETURN '-1'
END
IF(ROUND(@SUM_THANH_TOAN,0) <> ROUND(@SUM_PHUONG_THUC,0))
BEGIN
SELECT '-1' as Result, '' REQ_PAY_ID, N'Số tiền phương thức thanh toán phải bằng số tiền bạn cần thanh toán là: ' + FORMAT(SUM(@SUM_THANH_TOAN),'#,#', 'vi-VN') ErrorDesc
RETURN '-1'
END
END
ELSE
BEGIN
IF(ISNULL(@SUM_USE_REAL,0) >0)
BEGIN
IF(NOT EXISTS(SELECT * FROM TR_REQ_PAY_BUDGET WHERE REQ_PAY_ID =@p_REQ_PAY_ID))
BEGIN
SELECT '-1' as Result, '' REQ_PAY_ID, N'Thông tin hạng mục ngân sách và chi phí không được để trống. Vui lòng chọn ngân sách và chi phí' ErrorDesc
RETURN '-1'
END
IF(ROUND(@SUM_NGAN_SACH,0) <> ROUND(@SUM_USE_REAL,0))
BEGIN
SELECT '-1' as Result, '' REQ_PAY_ID, N'Số tiền sử dụng ngân sách và chi phí phải bằng số tiền sử dụng thực tế trên lưới hoàn tạm ứng: ' + FORMAT(SUM(@SUM_USE_REAL),'#,#', 'vi-VN') ErrorDesc
RETURN '-1'
END
IF(ISNULL(@SUM_USE_REAL,0) <> (ISNULL(@SUM_SERVICE,0) + ISNULL(@SUM_PERIOD,0) + ISNULL(@SUM_SCHEDULE,0)))
BEGIN
SELECT '-1' as Result, '' REQ_PAY_ID, N'Tổng số tiền thanh toán dịch vụ, thanh toán nhà cung cấp, thanh toán định kì phải bằng số tiền sử dụng thực tế trên lưới hoàn tạm ứng: ' + FORMAT(SUM(@SUM_USE_REAL),'#,#', 'vi-VN')
+ ' ' + FORMAT(SUM(@SUM_SERVICE),'#,#', 'vi-VN') + ' ' + FORMAT(SUM(@SUM_PERIOD),'#,#', 'vi-VN') + ' ' + FORMAT(SUM(@SUM_SCHEDULE),'#,#', 'vi-VN') ErrorDesc
RETURN '-1'
END
END
--IF(ABS((ISNULL(@SUM_ADD,0) - ISNULL(@SUM_PAY_BACK,0))) <> @SUM_PHUONG_THUC)
IF(((ISNULL(@SUM_ADD,0) - ISNULL(@SUM_PAY_BACK,0))) <> @SUM_PHUONG_THUC)
BEGIN
SELECT '-1' as Result, '' REQ_PAY_ID, N'Số tiền phương thức thanh toán (hiệu số thanh toán và trích từ tai khoản) tương ứng với số tiền chi bổ sung trừ số tiền hoàn tạm ứng: ' + FORMAT(ABS((ISNULL(@SUM_ADD,0) - ISNULL(@SUM_PAY_BACK,0))),'#,#', 'vi-VN') ErrorDesc
RETURN '-1'
END
END
IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS='U'))
BEGIN
SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đã được gửi phê duyệt trước đó! Vui lòng đợi các cấp phê duyệt' ErrorDesc
RETURN '-1'
END
-- CAP NHAT TINH TRANG DUYET KE TOAN LA DANG XU LY
UPDATE TR_REQ_PAYMENT SET AUTH_STATUS ='U', PROCESS = NULL,CREATE_DT = GETDATE() WHERE REQ_PAY_ID =@p_REQ_PAY_ID
INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
VALUES(@p_REQ_PAY_ID,'SEND',@p_MAKER_ID,GETDATE(), N'Đơn vị gửi phê duyệt',N'Đơn vị tạo phiếu thanh toán và gửi phê duyệt')
--- Luu log chinh sua
INSERT INTO TR_REQ_PAY_INVOICE_LOG SELECT * FROM TR_REQ_PAY_INVOICE WHERE REQ_PAY_ID =@p_REQ_PAY_ID
-----
UPDATE TR_REQ_PAY_SCHEDULE SET AMT_REMAIN =0.00 WHERE AMT_REMAIN <0
UPDATE TR_REQ_PAY_BUDGET SET AMT_APP= ROUND(AMT_APP,0), AMT_REMAIN = ROUND(AMT_REMAIN,0)
IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE (TRASFER_USER_RECIVE <> '' AND TRASFER_USER_RECIVE IS NOT NULL) AND REQ_PAY_ID =@p_REQ_PAY_ID))
BEGIN
SELECT '4' as Result, @p_REQ_PAY_ID REQ_PAY_ID, N'Đơn vị gửi phiếu phê duyệt phiếu đề nghị thanh toán số: ' + ISNULL(@p_REQ_PAY_CODE,'') + N' thành công. Vui lòng đợi cấp phê duyệt trung gian xác nhận phiếu' ErrorDesc
RETURN '4'
END
ELSE
BEGIN
SELECT '4' as Result, @p_REQ_PAY_ID REQ_PAY_ID, N'Đơn vị gửi phiếu phê duyệt phiếu đề nghị thanh toán số: ' + ISNULL(@p_REQ_PAY_CODE,'') + N' thành công. Vui lòng đợi trưởng đơn vị phê duyệt phiếu' ErrorDesc
RETURN '4'
END
END
SELECT '0' as Result, @p_REQ_PAY_ID REQ_PAY_ID, @p_REQ_PAY_CODE AS REQ_PAY_CODE, N'Thêm mới thành công' ErrorDesc
RETURN '0'
ABORT:
BEGIN
ROLLBACK TRANSACTION
CLOSE XmlData;
DEALLOCATE XmlData;
CLOSE XmlDataPay;
DEALLOCATE XmlDataPay;
Close XmlDataMethod;
Close XmlDataCat;
CLOSE XmlDataService;
CLOSE XmlDataSchedule;
Deallocate XmlDataMethod;
Deallocate XmlDataCat;
DEALLOCATE XmlDataService;
DEALLOCATE XmlDataSchedule;
--SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, '' ErrorDesc
RETURN '-1'
End
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Creating [dbo].[BUD_CONTRACT_MASTER_GetInternalArea]'
GO
CREATE PROCEDURE [dbo].[BUD_CONTRACT_MASTER_GetInternalArea]
@p_BUIDING_AREA_ID varchar(15) = NULL
AS
BEGIN -- PAGING
-- PAGING BEGIN
SELECT B.CONTRACT_ID,G.BUILDING_NAME ,C.FLOOR_NO, ISNULL(A.DIEN_TICH_CAN_SD,0) AS DIEN_TICH_SD_NOI_BO,
B.INPUT_DT,
D.BRANCH_NAME, E.DEP_NAME,
A.REASON,
ISNULL(A.TOTAL_AMT,0) AS THANH_TIEN,
B.CREATE_DT, B.MAKER_ID, B.APPROVE_DT, B.CHECKER_ID, F.AUTH_STATUS_NAME
-- SELECT END
FROM BUD_CONTRACT_DT A
LEFT JOIN BUD_CONTRACT_MASTER B ON A.CONTRACT_ID = B.CONTRACT_ID
LEFT JOIN BUD_AREA_DT C ON A.BUILDING_AREA_ID = C.BUILDING_AREA_ID
LEFT JOIN CM_BRANCH D ON A.BRANCH_ID = D.BRANCH_ID
LEFT JOIN CM_DEPARTMENT E ON A.DEP_ID = E.DEP_ID
LEFT JOIN CM_AUTH_STATUS F ON B.AUTH_STATUS = F.AUTH_STATUS
LEFT JOIN BUD_MASTER G ON A.BUILD_ID = G.BUILDING_ID
WHERE 1 = 1
AND C.BUILDING_AREA_ID = @p_BUIDING_AREA_ID
AND B.AUTH_STATUS = 'A'
-- PAGING END
END -- PAGING
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Altering [dbo].[TR_REQ_PAY_ATTACH_BYID]'
GO
ALTER PROC [dbo].[TR_REQ_PAY_ATTACH_BYID]
@p_REQ_PAY_ID VARCHAR(15)= NULL,
@p_TYPE VARCHAR(15)= NULL
AS
BEGIN
SELECT A.ATTACH_ID, A.REQ_PAY_ID, A.REF_ID, A.NOTES, A.REF_DT, A.LICENSE_DT,
A.REF_CODE as CONT_CODE, A.[DESCRIPTION] AS CON_DESC, A.AMT AS AMT_ATT, A.[TYPE] AS CON_TYPE
FROM TR_REQ_PAY_ATTACH A
WHERE A.REQ_PAY_ID = @p_REQ_PAY_ID OR @p_REQ_PAY_ID IS NULL OR @p_REQ_PAY_ID =''
END
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Altering [dbo].[CON_REQUEST_DOC_UpdXml]'
GO
ALTER PROCEDURE [dbo].[CON_REQUEST_DOC_UpdXml]
@p_CONSTRUCT_ID varchar(15) = NULL,
@p_CONSTRUCT_CODE varchar(15) = NULL,
@p_CONSTRUCT_NAME nvarchar(100) = NULL,
@p_PLAN_ID varchar(15) = NULL,
@p_CONST_ID varchar(15) = NULL,
@p_DIVI_ID varchar(15) = NULL,
@p_CONSTRUCT_ADDR nvarchar(200) = NULL,
@p_LENGTH decimal(18, 2) = NULL,
@p_WIDTH decimal(18, 2) = NULL,
@p_CONSTRUCT_AREA decimal(18) = NULL,
@p_FLOORS int = NULL,
@p_FLOORS_AREA decimal(18, 2) = NULL,
@p_TOTAL_AREA_USE decimal(18, 2) = NULL, -- GIANT
@p_TOTAL_COST decimal(18, 2) = NULL,-- GIANT
@p_UNIT_PRICE decimal(18, 2) = NULL,-- GIANT
@p_YEAR_EXE varchar(4) = NULL,
@p_CONST_TYPE varchar(15) = NULL,
@p_HQ_TYPE varchar(15) = NULL,
@p_TOTAL_AMT decimal(18) = NULL,
@p_COST_ESTIMATE decimal(18) = NULL,
@p_COST_EXE decimal(18) = NULL,
@p_COST_INCURRED decimal(18) = NULL,
@p_CONST_PURPOSE varchar(15) = NULL,
@p_DESCRIPTION nvarchar(2000) = NULL,
@p_START_DT VARCHAR(20) = NULL,
@p_END_DT VARCHAR(20) = NULL,
@p_DATE_EXE VARCHAR(20) = NULL,
@p_COMPLETION_DT VARCHAR(20) = NULL,
@p_CONSTRUCT_PROGRESS decimal(18) = NULL,
@p_RECORD_STATUS varchar(1) = '1',
@p_MAKER_ID varchar(15) = NULL,
@p_CREATE_DT VARCHAR(20) = NULL,
@p_AUTH_STATUS varchar(1) = 'N',
@p_CHECKER_ID varchar(15) = NULL,
@p_APPROVE_DT VARCHAR(20) = NULL,
@p_REQUEST_ID VARCHAR(15) = NULL,
@p_BRANCH_ID VARCHAR(15) = NULL,
@p_STREET NVARCHAR(200) = NULL,
@p_LOCATION VARCHAR(15) = NULL,
@p_UPD_DT varchar(20) = NULL,
@p_SCALE NVARCHAR(1000) = NULL,
@p_ENGINEER nvarchar(500) = NULL,
@p_APPROVE_VALUE decimal(18) = NULL,
@p_BRANCH_NAME_ETX nvarchar(500) = NULL,
@P_ListRequestDoc XML = NULL, -- THONG TIN VE TO TRINH
@P_ListBid XML = NULL, -- CHI PHI SUA CHUA
@P_ListContract_DT XML = NULL, -- DANH SACH HO SO THI CONG
@P_ListPayment XML = NULL, -- CAC DOT THANH TOAN
@P_ListBid_DT XML = NULL, -- DANH SACH CHI TIET DON VI THAM GIA THAU
@P_ListContractorArise XML = NULL, -- DANH SACH CHI TIET PHAT SINH TANG GIAM
@P_ListReviewXML XML = NULL, -- ĐÁNH GIÁ NCC
@P_ListConsProcessXML XML = NULL, -- TIẾN ĐỘ CÔNG TRÌNH
@P_ListConsHHXML XML = NULL -- DANH SÁCH HÀNG HÓA
AS
--Validation is here
/*
DECLARE @ERRORSYS NVARCHAR(15) = ''
IF ( NOT EXISTS ( SELECT * FROM CON_REQUEST_DOC WHERE ))
SET @ERRORSYS = ''
IF @ERRORSYS <> ''
BEGIN
SELECT ErrorCode Result, '' CAR_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS
RETURN '0'
END
*/
DECLARE @OLD_REQUEST_ID VARCHAR(15) = @P_REQUEST_ID
DECLARE @sErrorCode VARCHAR(20)
Declare @hdoc INT
-- THONG TIN VE TO TRINH
Exec sp_xml_preparedocument @hdoc Output,@P_ListRequestDoc
DECLARE ListRequestDoc CURSOR FOR
SELECT *
FROM OPENXML(@hDoc,'/Root/ListRequestDoc',2)
WITH
(
CON_REQUEST_DOC_ID varchar(15),
REQ_ID varchar(15),
REQ_CODE nvarchar(100),
REQ_NAME nvarchar(200),
REQ_DT VARCHAR(20),
REQ_CONTENT nvarchar(1000),
CONSTRUCT_ID varchar(15),
TOTAL_AMT decimal(18),
BRANCH_ID varchar(15),
PLAN_TYPE VARCHAR(1),
IS_PARENT VARCHAR(1),
IS_ARISE VARCHAR(1),
BUDGET VARCHAR(15),
YEAR_BUDGET INT,
REQUEST_PARENT VARCHAR(15),
APPROVE_DT VARCHAR(20)
)
OPEN ListRequestDoc
-- CHI PHI SUA CHUA
Exec sp_xml_preparedocument @hdoc Output,@P_ListBid
DECLARE ListBid CURSOR FOR
SELECT *
FROM OPENXML(@hDoc,'/Root/ListBid',2)
WITH
(
BID_ID varchar(15),
BID_CODE varchar(15),
BID_TYPE varchar(1),
PROJECT_ID varchar(15),
TERM_BID nvarchar(200),
FORM varchar(4),
INPUT_DT VARCHAR(20),
EXP_DT VARCHAR(20),
OPEN_DT VARCHAR(20),
BUDGET decimal(18),
TOTAL_AMT decimal(18),
GUARANTEE_AMT decimal(18),
GUARANTEE_PER decimal(18),
GUARANTEE_EXP VARCHAR(20),
REQUEST_ID varchar(15),
BID_WIN nvarchar(200),
SETTLE_AMT decimal(18),
CONTRACT_CODE varchar(15),
NOTES nvarchar(1000),
TOTAL_AMT_KT decimal(18),
CONTRACT_VALUE decimal(18,2),
[PERCENT] decimal(18,2),
OUTSTANDINGVALUE decimal(18,2),
ARISE_VALUE decimal(18,2),
PAID_VALUE decimal(18,2),
[DESC] nvarchar(1000)
)
OPEN ListBid
-- DANH SACH HO SO THI CONG (HOP DONG)
Exec sp_xml_preparedocument @hdoc Output,@P_ListContract_DT
DECLARE ListContract_DT CURSOR FOR
SELECT *
FROM OPENXML(@hDoc,'/Root/ListContract_DT',2)
WITH
(
CONTRACT_ID varchar(15),
CONTRACT_CODE varchar(15),
[CONTRACT_NAME] nvarchar(200),
CONTRACT_TYPE varchar(15),
BID_ID nvarchar(200),
TOTAL_AMT DECIMAL(18),
IS_PARENT varchar(1),
REQUEST_ID varchar(15)
)
OPEN ListContract_DT
-- CAC DOT THANH TOAN
Exec sp_xml_preparedocument @hdoc Output,@P_ListPayment
DECLARE PaymentDetail CURSOR FOR
SELECT *
FROM OPENXML(@hDoc,'/Root/PaymentDetail',2)
WITH
(
PAY_ID VARCHAR(15),
[PERCENT] decimal(18,2),
AMOUNT decimal(18),
BID_ID varchar(15),
PAY_DT varchar(20),
PAY_STATUS varchar(1),
NOTES nvarchar(1000),
CONTRACT_CODE varchar(15)
)
OPEN PaymentDetail
-- CHI TIET DON VI THAM GIA THAU
Exec sp_xml_preparedocument @hdoc Output,@P_ListBid_DT
DECLARE ContractorDetail CURSOR FOR
SELECT *
FROM OPENXML(@hDoc,'/Root/ContractorDetail',2)
WITH
(
ID VARCHAR(15),
BID_ID varchar(15),
BID_CODE varchar(15),
IS_BID_WIN varchar(1),
SUPPLIER nvarchar(200),
OFFERING_VALUE decimal(18),
CHECK_VALUE decimal(18)
)
OPEN ContractorDetail
-- CHI TIET PHAT SINH TANG GIAM
Exec sp_xml_preparedocument @hdoc Output,@P_ListContractorArise
DECLARE ListContractorArise CURSOR FOR
SELECT *
FROM OPENXML(@hDoc,'/Root/ListContractorArise',2)
WITH
(
ARISE_ID VARCHAR(15),
BID_ID varchar(15),
BID_CODE varchar(15),
SUPPLIER nvarchar(200),
IS_BID_WIN varchar(1),
BEGIN_VALUE decimal(18,2),
CHECKED_VALUE decimal(18,2)
)
OPEN ListContractorArise
-- DANH SÁCH HÀNG HÓA
Exec sp_xml_preparedocument @hdoc Output,@P_ListConsHHXML
DECLARE ListHH CURSOR FOR
SELECT *
FROM OPENXML(@hDoc,'/Root/ListHH',2)
WITH
(
CON_REQ_HH_ID VARCHAR(15),
REQ_CODE VARCHAR(50),
REQ_ID VARCHAR(15),
SUP_ID VARCHAR(15),
SELLTEMENT_AMT DECIMAL(18,2),
[DESCRIPTION] NVARCHAR(4000), -- KHOONG SU DUNG
HH_ID VARCHAR(15),
ESTIMATES_AMT DECIMAL(18,2),
BRANCH_DO VARCHAR(15),
CONS_DOCUMENT_ID VARCHAR(15),
BID_ID VARCHAR(15),
BID_CODE VARCHAR(50),
REQDT_ID VARCHAR(15)
)
OPEN ListHH
-- ĐÁNH GIÁ NCC
Exec sp_xml_preparedocument @hdoc Output,@P_ListReviewXML
DECLARE ListReview CURSOR FOR
SELECT *
FROM OPENXML(@hDoc,'/Root/ListReview',2)
WITH
(
CON_REQ_REVIEW_ID VARCHAR(15),
SUP_ID VARCHAR(15),
QCKT_REVIEW NVARCHAR(4000),
CONS_PROCESS VARCHAR(15),
MAINTENANCE VARCHAR(15),
REPORT_PLAN_EDIT VARCHAR(15),
CONS_QUALITY VARCHAR(15),
BEAUTY_IMAGE VARCHAR(15),
REQ_ID VARCHAR(15),
REQ_CODE VARCHAR(50),
SUP_NAME NVARCHAR(1000)
)
OPEN ListReview
-- TIẾN ĐỘ CÔNG TRÌNH
Exec sp_xml_preparedocument @hdoc Output,@P_ListConsProcessXML
DECLARE ListConsProcess CURSOR FOR
SELECT *
FROM OPENXML(@hDoc,'/Root/ListConsProcess',2)
WITH
(
CON_REQ_PROCESS_ID VARCHAR(15),
DATE_REPORT VARCHAR(15),
PERCENT_COMPLETED DECIMAL(18,2),
PERCENT_REMAIN DECIMAL(18,2),
DEADLINE VARCHAR(15)
)
OPEN ListConsProcess
BEGIN TRANSACTION
-- insert zô bảng tài liệu
---TAO BANG TAM
DECLARE @TEMP TABLE
(
[KEY] varchar(15),
[REF_ID] varchar(15),
[TYPE] varchar(50)
)
-- THEM THONG TIN CONG TRINH
DECLARE @IS_FINISH VARCHAR(1) = 'N'
UPDATE CON_MASTER SET [IS_FINISH] = @IS_FINISH, [CONSTRUCT_CODE] = @p_CONSTRUCT_CODE,[CONSTRUCT_NAME] = @p_CONSTRUCT_NAME,[PLAN_ID] = @p_PLAN_ID,[DIVI_ID] = @p_DIVI_ID,[CONSTRUCT_ADDR] = @p_CONSTRUCT_ADDR,[LENGTH] = @p_LENGTH,[WIDTH] = @p_WIDTH,
[CONSTRUCT_AREA] = @p_CONSTRUCT_AREA, [FLOORS] = @p_FLOORS, [FLOORS_AREA] = @p_FLOORS_AREA, [YEAR_EXE] = @p_YEAR_EXE,[CONST_TYPE] = @p_CONST_TYPE, [HQ_TYPE] = @p_HQ_TYPE,[TOTAL_AMT] = @p_TOTAL_AMT,[COST_ESTIMATE] = @p_COST_ESTIMATE,[COST_EXE] = @p_COST_EXE,
[COST_INCURRED] = @p_COST_INCURRED, [CONST_PURPOSE] = @p_CONST_PURPOSE, [DESCRIPTION] = @p_DESCRIPTION,[START_DT] = CONVERT(DATETIME, @p_START_DT, 103),[END_DT] = CONVERT(DATETIME, @p_END_DT, 103),[DATE_EXE] = CONVERT(DATETIME, @p_DATE_EXE, 103),[COMPLETION_DT] = CONVERT(DATETIME,
@p_COMPLETION_DT, 103),[CONSTRUCT_PROGRESS] = @p_CONSTRUCT_PROGRESS,[RECORD_STATUS] = @p_RECORD_STATUS,[MAKER_ID] = @p_MAKER_ID,[CREATE_DT] = CONVERT(DATETIME, @p_CREATE_DT, 103),[AUTH_STATUS] = @p_AUTH_STATUS,[CHECKER_ID] = @p_CHECKER_ID,[APPROVE_DT] = CONVERT(DATETIME,
@p_APPROVE_DT, 103),[CONST_ID] = @p_CONST_ID, [REQUEST_ID] = @p_REQUEST_ID, [BRANCH_ID] = @P_BRANCH_ID,
[STREET] = @P_STREET, [LOCATION] = @P_LOCATION, [SCALE] = @P_SCALE, [ENGINEER] = @p_ENGINEER, [BRANCH_NAME_ETX] = @p_BRANCH_NAME_ETX, UPD_DT = CONVERT(DATETIME, @p_UPD_DT, 103), APPROVE_VALUE = @p_APPROVE_VALUE,
TOTAL_AREA_USE = @p_TOTAL_AREA_USE,TOTAL_COST = @p_TOTAL_COST,UNIT_PRICE= @p_UNIT_PRICE
WHERE CONSTRUCT_ID = @p_CONSTRUCT_ID
INSERT INTO @TEMP([REF_ID],[TYPE]) VALUES (@p_CONSTRUCT_ID, 'CON_MASTER')
IF @@Error <> 0 GOTO ABORT
-- UPDATE BANG THONG TIN VE TO TRINH
DELETE CON_REQUEST_DOC WHERE REQUEST_PARENT = @p_REQUEST_ID
DECLARE
@INDEX int = 0,
@CON_REQUEST_DOC_ID varchar(15),
@REQ_ID varchar(15),
@REQ_CODE nvarchar(100),
@REQ_NAME nvarchar(200),
@REQ_DT VARCHAR(20),
@REQ_CONTENT nvarchar(1000),
@CONSTRUCT_ID varchar(15),
@TOTAL_AMT decimal(18),
@BRANCH_ID varchar(15),
@PLAN_TYPE VARCHAR(1),
@IS_PARENT VARCHAR(1),
@IS_ARISE VARCHAR(1),
@REQ_BUDGET VARCHAR(15),
@REQ_YEAR_BUDGET int,
@REQUEST_PARENT VARCHAR(15),
@APPROVE_DT VARCHAR(20)
--INSERT ListBid DETAIL
FETCH NEXT FROM ListRequestDoc INTO @CON_REQUEST_DOC_ID, @REQ_ID, @REQ_CODE, @REQ_NAME, @REQ_DT, @REQ_CONTENT,
@CONSTRUCT_ID, @TOTAL_AMT, @BRANCH_ID, @PLAN_TYPE, @IS_PARENT,@IS_ARISE, @REQ_BUDGET, @REQ_YEAR_BUDGET, @REQUEST_PARENT, @APPROVE_DT
WHILE @@FETCH_STATUS = 0
BEGIN
--25/12/2014 Anh Ai yeu cau khong kiem tra trung to trinh - mot to trinh dung cho nhieu cong trinh
---- KIEM TRA SO TO TRINH CO TRUNG HAY KHONG
--IF EXISTS(SELECT * FROM CON_REQUEST_DOC WHERE [REQ_CODE]= @REQ_CODE)
--BEGIN
-- SELECT ErrorCode Result, '' REQ_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = 'CON-0001'
-- GOTO ABORT
--END
IF(@CON_REQUEST_DOC_ID IS NULL OR @CON_REQUEST_DOC_ID = '')
BEGIN
EXEC SYS_CodeMasters_Gen 'CON_REQUEST_DOC', @CON_REQUEST_DOC_ID out
END
IF @CON_REQUEST_DOC_ID='' OR @CON_REQUEST_DOC_ID IS NULL GOTO ABORT
SET @INDEX = @INDEX + 1
IF (@INDEX = 1) -- TRA VE SO TO TRINH DAU TIEN
BEGIN
SET @P_REQUEST_ID = @CON_REQUEST_DOC_ID
END
SET @REQUEST_PARENT = @P_REQUEST_ID
PRINT @REQUEST_PARENT
INSERT INTO CON_REQUEST_DOC([CON_REQUEST_DOC_ID],[REQ_ID], [REQ_CODE], [REQ_NAME], [REQ_DT], [REQ_CONTENT], [CONSTRUCT_ID],
[TOTAL_AMT], [NOTES], [RECORD_STATUS], [MAKER_ID], [CREATE_DT], [AUTH_STATUS], [CHECKER_ID],
[APPROVE_DT], [BRANCH_ID], [PLAN_TYPE], [IS_PARENT] , [BUDGET], [YEAR_BUDGET], [REQUEST_PARENT], [IS_ARISE])
VALUES(@CON_REQUEST_DOC_ID,@REQ_ID, @REQ_CODE, @REQ_NAME, CONVERT(DATETIME, @REQ_DT, 103), @REQ_CONTENT, @CONSTRUCT_ID,
@TOTAL_AMT, '', @p_RECORD_STATUS, @P_MAKER_ID, CONVERT(DATETIME, @P_CREATE_DT , 103), @P_AUTH_STATUS, @P_CHECKER_ID,
CONVERT(DATETIME, @APPROVE_DT, 103), @BRANCH_ID, @PLAN_TYPE, @IS_PARENT, @REQ_BUDGET, @REQ_YEAR_BUDGET, @REQUEST_PARENT, @IS_ARISE)
INSERT INTO @TEMP([REF_ID],[TYPE]) VALUES (@CON_REQUEST_DOC_ID, 'CON_REQUEST_DOC')
PRINT @@ERROR
IF @@ERROR <> 0 GOTO ABORT
FETCH NEXT FROM ListRequestDoc INTO @CON_REQUEST_DOC_ID, @REQ_ID, @REQ_CODE, @REQ_NAME, @REQ_DT, @REQ_CONTENT,
@CONSTRUCT_ID, @TOTAL_AMT, @BRANCH_ID, @PLAN_TYPE, @IS_PARENT,@IS_ARISE, @REQ_BUDGET, @REQ_YEAR_BUDGET, @REQUEST_PARENT, @APPROVE_DT
END
CLOSE ListRequestDoc
DEALLOCATE ListRequestDoc
-- CAP NHAT PARENT TRADE_REQUEST_DOC
DECLARE @OLD_REQUEST_PARENT VARCHAR(15) = @REQUEST_PARENT
SET @REQUEST_PARENT = (SELECT TOP(1) CON_REQUEST_DOC_ID FROM CON_REQUEST_DOC WHERE REQUEST_PARENT = @OLD_REQUEST_PARENT ORDER BY TOTAL_AMT DESC)
UPDATE CON_REQUEST_DOC
SET IS_PARENT = (CASE WHEN CON_REQUEST_DOC_ID = @REQUEST_PARENT THEN '1' ELSE '0' END),
REQUEST_PARENT = @REQUEST_PARENT
WHERE REQUEST_PARENT = @OLD_REQUEST_PARENT
update CON_MASTER
set REQUEST_ID = @REQUEST_PARENT
where CONSTRUCT_ID = @p_CONSTRUCT_ID
SET @P_REQUEST_ID = @REQUEST_PARENT
-- UPDATE CHI PHI SUA CHUA
DELETE BID_MASTER WHERE REQUEST_ID = @OLD_REQUEST_ID
DECLARE
@BID_ID varchar(15),
@BID_CODE varchar(15),
@BID_TYPE varchar(1),
@PROJECT_ID varchar(15),
@TERM_BID nvarchar(200),
@FORM varchar(4),
@INPUT_DT VARCHAR(20),
@EXP_DT VARCHAR(20),
@OPEN_DT VARCHAR(20),
@BUDGET decimal(18),
@_TOTAL_AMT decimal(18), -- CHI PHI
@GUARANTEE_AMT decimal(18),
@GUARANTEE_PER decimal(18),
@GUARANTEE_EXP VARCHAR(20),
@REQUEST_ID varchar(15),
@BID_WIN nvarchar(200),
@SETTLE_AMT decimal(18),
@NOTES nvarchar(1000),
@_CONTRACT_CODE varchar(15),
@TOTAL_AMT_KT decimal(18),
@CONTRACT_VALUE decimal(18,2),
@PERCENT decimal(18,2),
@OUTSTANDINGVALUE decimal(18,2),
@ARISE_VALUE decimal(18,2),
@PAID_VALUE decimal(18,2),
@DESC nvarchar(1000)
--INSERT ListBid DETAIL
FETCH NEXT FROM ListBid INTO @BID_ID, @BID_CODE, @BID_TYPE, @PROJECT_ID, @TERM_BID,
@FORM, @INPUT_DT, @EXP_DT, @OPEN_DT, @BUDGET, @_TOTAL_AMT, @GUARANTEE_AMT, @GUARANTEE_PER, @GUARANTEE_EXP, @REQUEST_ID,
@BID_WIN, @SETTLE_AMT, @_CONTRACT_CODE, @NOTES,@TOTAL_AMT_KT,@CONTRACT_VALUE,@PERCENT,@OUTSTANDINGVALUE,@ARISE_VALUE,@PAID_VALUE,@DESC
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE @l_BID_ID VARCHAR(15) = @BID_ID, @l_PREFIX varchar(100)
SELECT @l_PREFIX = Prefix FROM SYS_PREFIX WHERE ID = 'BID_MASTER'
IF(@l_BID_ID IS NULL OR @l_BID_ID not like @l_PREFIX + '%')
BEGIN
EXEC SYS_CodeMasters_Gen 'BID_MASTER', @l_BID_ID out
END
IF @l_BID_ID='' OR @l_BID_ID not like @l_PREFIX + '%' GOTO ABORT
print @l_BID_ID
--INSERT INTO BID_MASTER([BID_ID],[BID_CODE],[BID_TYPE],[PROJECT_ID],[TERM_BID],[FORM],[INPUT_DT],[EXP_DT],
--[OPEN_DT],[BUDGET],[TOTAL_AMT],[GUARANTEE_AMT],[GUARANTEE_PER],[GUARANTEE_EXP],[NOTES],
--[RECORD_STATUS],[MAKER_ID],[CREATE_DT],[AUTH_STATUS],[CHECKER_ID],[APPROVE_DT],[REQUEST_ID],
--[BID_WIN], [SETTLE_AMT],[CONTRACT_CODE],[TOTAL_AMT_KT],CONTRACT_VALUE,[PERCENT],OUTSTANDINGVALUE,ARISE_VALUE,PAID_VALUE,[DESC])
--VALUES(@l_BID_ID ,@BID_CODE , @BID_TYPE,@PROJECT_ID ,@TERM_BID ,@FORM ,
--CONVERT(DATETIME, @INPUT_DT, 103) ,CONVERT(DATETIME, @EXP_DT, 103) ,
--CONVERT(DATETIME, @OPEN_DT, 103) ,@BUDGET ,@_TOTAL_AMT ,@GUARANTEE_AMT ,
--@GUARANTEE_PER ,CONVERT(DATETIME, @GUARANTEE_EXP, 103) ,@NOTES ,@p_RECORD_STATUS ,
--@p_MAKER_ID ,CONVERT(DATETIME, @p_CREATE_DT, 103) ,@p_AUTH_STATUS ,@p_CHECKER_ID ,
--CONVERT(DATETIME, @p_APPROVE_DT, 103), @p_REQUEST_ID, @BID_WIN, @SETTLE_AMT, @_CONTRACT_CODE,@TOTAL_AMT_KT ,@CONTRACT_VALUE,@PERCENT,@OUTSTANDINGVALUE,@ARISE_VALUE,@PAID_VALUE,@DESC)
--IF @@ERROR <> 0 GOTO ABORT
INSERT INTO @TEMP([KEY],[REF_ID],[TYPE]) VALUES (@BID_ID, @l_BID_ID, 'BID_MASTER')
FETCH NEXT FROM ListBid INTO @BID_ID, @BID_CODE, @BID_TYPE, @PROJECT_ID, @TERM_BID,
@FORM, @INPUT_DT, @EXP_DT, @OPEN_DT, @BUDGET, @_TOTAL_AMT, @GUARANTEE_AMT, @GUARANTEE_PER, @GUARANTEE_EXP, @REQUEST_ID,
@BID_WIN, @SETTLE_AMT, @_CONTRACT_CODE, @NOTES,@TOTAL_AMT_KT,@CONTRACT_VALUE,@PERCENT,@OUTSTANDINGVALUE,@ARISE_VALUE,@PAID_VALUE,@DESC
END
CLOSE ListBid
DEALLOCATE ListBid
-- UPDATE DANH SÁCH HỒ SƠ THI CÔNG
-- HOP DONG & PHU LUC HOP DONG
DELETE TR_CONTRACT WHERE REQUEST_ID = @OLD_REQUEST_ID
DECLARE
@CDT_INDEX int = 0,
@CDT_CONTRACT_ID varchar(15),
@CONTRACT_CODE varchar(15),
@CONTRACT_NAME nvarchar(200),
@CONTRACT_TYPE varchar(1),
@CDT_BID_ID nvarchar(200),
@CDT_TOTAL_AMT decimal(18),
@CDT_IS_PARENT varchar(1),
@CDT_REQUEST_ID varchar(15),
@CDT_CONTRACT_PARENT varchar(15)
--INSERT ListContract_DT DETAIL
FETCH NEXT FROM ListContract_DT INTO @CDT_CONTRACT_ID, @CONTRACT_CODE, @CONTRACT_NAME, @CONTRACT_TYPE,
@CDT_BID_ID, @CDT_TOTAL_AMT, @CDT_IS_PARENT, @CDT_REQUEST_ID
WHILE @@FETCH_STATUS = 0
BEGIN
-- KIEM TRA SO HOP DONG CO TRUNG HAY KHONG
IF EXISTS(SELECT * FROM TR_CONTRACT WHERE REQUEST_ID = @P_REQUEST_ID AND [CONTRACT_CODE]= @CONTRACT_CODE AND @CONTRACT_CODE<>'' AND @CONTRACT_CODE IS NOT NULL)
BEGIN
CLOSE ListContract_DT
DEALLOCATE ListContract_DT
SELECT ErrorCode Result, @p_REQUEST_ID REQ_ID, '' REF_ID, '' [TYPE], ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = 'CTRC-0001'
ROLLBACK TRANSACTION
RETURN '-1'
END
SELECT @BID_ID = REF_ID FROM @TEMP where [TYPE]='BID_MASTER' AND [KEY] = @CDT_BID_ID
DECLARE @l_CONTRACT_ID VARCHAR(15) = @CDT_CONTRACT_ID
IF(@l_CONTRACT_ID IS NULL OR @l_CONTRACT_ID = '')
BEGIN
EXEC SYS_CodeMasters_Gen 'TR_CONTRACT', @l_CONTRACT_ID out
END
IF @l_CONTRACT_ID='' OR @l_CONTRACT_ID IS NULL GOTO ABORT
--SET @CDT_INDEX = @CDT_INDEX + 1
IF (@CDT_IS_PARENT = '1') -- TRA VE SO TO TRINH DAU TIEN
SET @CDT_CONTRACT_PARENT = @l_CONTRACT_ID
INSERT INTO TR_CONTRACT([CONTRACT_ID],[CONTRACT_CODE],[CONTRACT_NAME],[CONTRACT_TYPE],[BID_ID],[SUP_ID],
[TOTAL_AMT],[DELIVERY_DT],[FORM1],[VOUCHER_ID1],[BANK1],[AMOUNT1],
[EXP_DT1],[RATE1],[FORM2],[VOUCHER_ID2],[BANK2],[AMOUNT2],[EXP_DT2],
[RATE2],[REQ_DOC_ID],[REQ_DOC_CONTENT],[APPROVE_VALUE],[SIGN_DT],[CONSTRUCT_PROGRESS],
[NOTES],[RECORD_STATUS],[MAKER_ID],[CREATE_DT],[AUTH_STATUS],[CHECKER_ID],[APPROVE_DT],[START_DT],[END_DT], [IS_PARENT], [REQUEST_ID], [CONTRACT_PARENT])
VALUES(@l_CONTRACT_ID ,@CONTRACT_CODE ,@CONTRACT_NAME, @CONTRACT_TYPE ,@BID_ID ,NULL,
@CDT_TOTAL_AMT,NULL , NULL ,NULL ,NULL ,NULL ,NULL ,NULL ,NULL ,NULL ,NULL ,NULL,
NULL ,NULL ,NULL ,NULL, NULL,NULL,NULL ,
NULL ,@p_RECORD_STATUS ,@p_MAKER_ID ,CONVERT(DATETIME, @p_CREATE_DT, 103) ,@p_AUTH_STATUS,
@p_CHECKER_ID ,(CASE WHEN @p_APPROVE_DT IS NOT NULL AND @p_APPROVE_DT <> '' then CONVERT(DATETIME, @p_APPROVE_DT, 103) ELSE NULL END),
CONVERT(DATETIME,@P_START_DT,103),CONVERT(DATETIME,@P_END_DT,103), @CDT_IS_PARENT, @p_REQUEST_ID, case when @CDT_IS_PARENT = '1' then null else @CDT_CONTRACT_PARENT end)
IF @@Error <> 0 GOTO ABORT
INSERT INTO @TEMP([KEY],[REF_ID],[TYPE]) VALUES (@CONTRACT_CODE, @l_CONTRACT_ID, 'TR_CONTRACT')
FETCH NEXT FROM ListContract_DT INTO @CDT_CONTRACT_ID, @CONTRACT_CODE, @CONTRACT_NAME, @CONTRACT_TYPE,
@CDT_BID_ID, @CDT_TOTAL_AMT, @CDT_IS_PARENT, @CDT_REQUEST_ID
END
CLOSE ListContract_DT
DEALLOCATE ListContract_DT
-- UPDATE CAC DOT THANH TOAN
DELETE TR_CONTRACT_PAYMENT WHERE REQUEST_ID = @OLD_REQUEST_ID
DECLARE
@PAY_ID VARCHAR(15),
@AMOUNT decimal(18),
@PAY_DT varchar(20),
@PAY_STATUS varchar(1),
@CONTRACT_ID varchar(15),
@P_CONTRACT_CODE varchar(15)
DECLARE @l_PAY_ID VARCHAR(15), @l_PAY_BID_ID varchar(15)
FETCH NEXT FROM PaymentDetail INTO @PAY_ID,@PERCENT, @AMOUNT, @BID_CODE, @PAY_DT, @PAY_STATUS, @NOTES, @P_CONTRACT_CODE
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @l_PAY_BID_ID = BID_ID FROM TR_CONTRACT WHERE CONTRACT_CODE = @P_CONTRACT_CODE AND REQUEST_ID = @p_REQUEST_ID
set @BID_ID = ''
set @CONTRACT_ID = ''
SELECT @BID_ID = REF_ID FROM @TEMP where [TYPE]='BID_MASTER' AND [KEY] = @BID_CODE
SELECT @CONTRACT_ID = REF_ID FROM @TEMP where [TYPE]='TR_CONTRACT' AND [KEY] = @P_CONTRACT_CODE
SET @l_PAY_ID = @PAY_ID
IF(@l_PAY_ID IS NULL OR @l_PAY_ID = '')
BEGIN
EXEC SYS_CodeMasters_Gen 'TR_CONTRACT_PAYMENT', @l_PAY_ID out
END
IF @l_PAY_ID='' OR @l_PAY_ID IS NULL GOTO ABORT
INSERT INTO TR_CONTRACT_PAYMENT([PAY_AMOUNT],[PAY_DT], [PAY_ID],[CONTRACT_ID], [CONTRACT_CODE], [PAY_PHASE],[EXPECTED_DT],
[PERCENT],[AMOUNT],[PAY_STATUS],[NOTES],[RECORD_STATUS],[MAKER_ID],[CREATE_DT],[AUTH_STATUS],[CHECKER_ID],[APPROVE_DT], [REQUEST_ID], BID_ID)
VALUES(@AMOUNT,(CASE WHEN @PAY_DT IS NOT NULL AND @PAY_DT <> '' then CONVERT(DATETIME, @PAY_DT, 103) ELSE NULL END),
@l_PAY_ID ,@CONTRACT_ID, @P_CONTRACT_CODE, NULL ,CONVERT(DATETIME, NULL, 103) ,@PERCENT,@AMOUNT,@PAY_STATUS ,@NOTES ,
@p_RECORD_STATUS ,@p_MAKER_ID ,CONVERT(DATETIME, @p_CREATE_DT, 103) ,@p_AUTH_STATUS ,@p_CHECKER_ID ,
(CASE WHEN @p_APPROVE_DT IS NOT NULL AND @p_APPROVE_DT <> '' then CONVERT(DATETIME, @p_APPROVE_DT, 103) ELSE NULL END), @p_REQUEST_ID, @BID_ID)
IF @@Error <> 0 GOTO ABORT
FETCH NEXT FROM PaymentDetail INTO @PAY_ID, @PERCENT, @AMOUNT, @BID_CODE, @PAY_DT, @PAY_STATUS, @NOTES, @P_CONTRACT_CODE
END
CLOSE PaymentDetail
DEALLOCATE PaymentDetail
-- UPDATE BANG CON CHI TIET DON VI THAM GIA THAU
DELETE BID_CONTRACTOR_DT WHERE REQUEST_ID = @OLD_REQUEST_ID
DECLARE
@ID VARCHAR(15),
@DT_BID_ID varchar(15),
@DT_BID_CODE varchar(15),
@SUPPLIER nvarchar(200),
@IS_BID_WIN varchar(1),
@OFFERING_VALUE decimal(18),
@CHECK_VALUE decimal(18)
FETCH NEXT FROM ContractorDetail INTO @ID, @DT_BID_ID, @DT_BID_CODE, @IS_BID_WIN, @SUPPLIER, @OFFERING_VALUE, @CHECK_VALUE
WHILE @@FETCH_STATUS = 0
BEGIN
-- LAY MA HO SO THAU O BANG MASTER
SELECT @DT_BID_ID = REF_ID FROM @TEMP where [TYPE]='BID_MASTER' AND [KEY] = @DT_BID_ID
IF(@ID IS NULL OR @ID = '')
BEGIN
EXEC SYS_CodeMasters_Gen 'BID_CONTRACTOR_DT', @ID out
END
IF @ID='' OR @ID IS NULL GOTO ABORT
IF @EXP_DT = '' SET @EXP_DT = NULL
INSERT INTO BID_CONTRACTOR_DT([ID],[SUP_ID],[BID_ID], [BID_CODE], [SEND_DT],[OFFERING_VALUE],[FORM],[EXP_DT],
[BANK],[VOUCHER],[ISVALID],[IS_BID_WIN],[NOTES],[RECORD_STATUS],[MAKER_ID],[CREATE_DT],[AUTH_STATUS],
[CHECKER_ID],[APPROVE_DT],[PROGRESS_TIME], [SUPPLIER], [CHECK_VALUE], [REQUEST_ID])
VALUES(@ID , NULL ,@DT_BID_ID ,@DT_BID_CODE, NULL ,@OFFERING_VALUE ,NULL, NULL ,NULL ,NULL ,NULL,@IS_BID_WIN ,
@NOTES ,@p_RECORD_STATUS ,@p_MAKER_ID ,CONVERT(DATETIME, @p_CREATE_DT, 103) ,@p_AUTH_STATUS ,@p_CHECKER_ID ,
CONVERT(DATETIME, @p_APPROVE_DT, 103), NULL, @SUPPLIER, @CHECK_VALUE, @P_REQUEST_ID)
IF @@ERROR <> 0 GOTO ABORT
INSERT INTO @TEMP([REF_ID],[TYPE]) VALUES (@ID, 'BID_CONTRACTOR_DT')
FETCH NEXT FROM ContractorDetail INTO @ID, @DT_BID_ID, @DT_BID_CODE, @IS_BID_WIN, @SUPPLIER, @OFFERING_VALUE, @CHECK_VALUE
END
CLOSE ContractorDetail
DEALLOCATE ContractorDetail
-- CHI PHI PHAT SINH TANG GIAM
DELETE CON_BID_CONTRACTOR_DT_ARISE WHERE REQ_ID = @OLD_REQUEST_ID
DECLARE
@ARISE_ID VARCHAR(15),
@BEGIN_VALUE decimal(18,2),
@CHECKED_VALUE decimal(18,2)
FETCH NEXT FROM ListContractorArise into @ARISE_ID, @DT_BID_ID, @DT_BID_CODE, @SUPPLIER, @IS_BID_WIN, @BEGIN_VALUE, @CHECKED_VALUE
WHILE @@FETCH_STATUS = 0
BEGIN
-- LAY MA HO SO THAU O BANG MASTER
SELECT @DT_BID_ID = REF_ID FROM @TEMP where [TYPE]='BID_MASTER' AND [KEY] = @DT_BID_CODE
IF(@ARISE_ID IS NULL OR @ARISE_ID = '')
BEGIN
EXEC SYS_CodeMasters_Gen 'CON_BID_CONTRACTOR_DT_ARISE', @ARISE_ID out
IF @ARISE_ID='' OR @ARISE_ID IS NULL GOTO ABORT
END
INSERT INTO CON_BID_CONTRACTOR_DT_ARISE(ARISE_ID,REQ_ID, SUPPLIER, IS_BID_WIN, BEGIN_VALUE, CHECKED_VALUE, BID_ID, BID_CODE)
VALUES (@ARISE_ID, @P_REQUEST_ID, @SUPPLIER, @IS_BID_WIN, @BEGIN_VALUE, @CHECKED_VALUE, @DT_BID_ID ,@DT_BID_CODE)
INSERT INTO @TEMP([REF_ID],[TYPE]) VALUES (@ARISE_ID, 'CON_BID_CONTRACTOR_DT_ARISE')
FETCH NEXT FROM ListContractorArise into @ARISE_ID, @DT_BID_ID, @DT_BID_CODE, @SUPPLIER, @IS_BID_WIN, @BEGIN_VALUE, @CHECKED_VALUE
END
CLOSE ListContractorArise
DEALLOCATE ListContractorArise
-- DANH SÁCH HÀNG HÓA
DELETE CON_REQUEST_HH_DT WHERE CONSTRUCT_ID = @p_CONSTRUCT_ID
DECLARE
@CON_REQ_HH_ID VARCHAR(15),
@SUP_ID VARCHAR(15),
@SELLTEMENT_AMT DECIMAL(18,2),
@DESCRIPTION NVARCHAR(4000),
@HH_ID VARCHAR(15),
@ESTIMATES_AMT DECIMAL(18,2),
@BRANCH_DO VARCHAR(15),
@CONS_DOCUMENT_ID VARCHAR(15),
@REQDT_ID VARCHAR(15)
FETCH NEXT FROM ListHH INTO @CON_REQ_HH_ID,@REQ_CODE, @REQ_ID, @SUP_ID, @SELLTEMENT_AMT, @DESCRIPTION, @HH_ID, @ESTIMATES_AMT,@BRANCH_DO,@CONS_DOCUMENT_ID,@BID_ID,@BID_CODE,@REQDT_ID
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC SYS_CodeMasters_Gen 'CON_REQUEST_HH_DT', @CON_REQ_HH_ID out
IF @CON_REQ_HH_ID='' OR @CON_REQ_HH_ID IS NULL GOTO ABORT
SET @DESCRIPTION = (SELECT [DESCRIPTION] FROM PL_REQUEST_DOC_DT WHERE REQDT_ID = @REQDT_ID)
print @BID_CODE
print @REQDT_ID
INSERT INTO [dbo].[CON_REQUEST_HH_DT]
(
[CON_REQ_HH_ID],
[SUP_ID],
[SELLTEMENT_AMT],
[DESCRIPTION],
[HH_ID],
[REQ_ID],
[ESTIMATES_AMT],
[BRANCH_DO],
[CONS_DOCUMENT_ID],
[BID_ID],
[REQ_CODE],
[CONSTRUCT_ID],
[REQDT_ID],
[BID_CODE]
)
VALUES
(
@CON_REQ_HH_ID,
@SUP_ID,
@SELLTEMENT_AMT,
@DESCRIPTION,
@HH_ID,
@REQ_ID,
@ESTIMATES_AMT,
@BRANCH_DO,
@CONS_DOCUMENT_ID,
@BID_ID,
@REQ_CODE,
@p_CONSTRUCT_ID,
@REQDT_ID,
@BID_CODE
)
FETCH NEXT FROM ListHH INTO @CON_REQ_HH_ID,@REQ_CODE, @REQ_ID, @SUP_ID, @SELLTEMENT_AMT, @DESCRIPTION, @HH_ID, @ESTIMATES_AMT,@BRANCH_DO,@CONS_DOCUMENT_ID,@BID_ID,@BID_CODE,@REQDT_ID
END
CLOSE ListHH
DEALLOCATE ListHH
-- ĐÁNH GIÁ NCC
DELETE CON_REQUEST_REVIEW_DT WHERE CONSTRUCT_ID = @p_CONSTRUCT_ID
DECLARE
@CON_REQ_REVIEW_ID VARCHAR(15),
@QCKT_REVIEW NVARCHAR(4000),
@CONS_PROCESS VARCHAR(15),
@MAINTENANCE VARCHAR(15),
@REPORT_PLAN_EDIT VARCHAR(15),
@CONS_QUALITY VARCHAR(15),
@BEAUTY_IMAGE VARCHAR(15),
@SUP_NAME NVARCHAR(1000)
FETCH NEXT FROM ListReview into @CON_REQ_REVIEW_ID,@SUP_ID, @QCKT_REVIEW, @CONS_PROCESS, @MAINTENANCE, @REPORT_PLAN_EDIT, @CONS_QUALITY, @BEAUTY_IMAGE,@REQ_ID,@REQ_CODE,@SUP_NAME
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC SYS_CodeMasters_Gen 'CON_REQUEST_REVIEW_DT', @CON_REQ_REVIEW_ID out
IF @CON_REQ_REVIEW_ID='' OR @CON_REQ_REVIEW_ID IS NULL GOTO ABORT
INSERT INTO [dbo].[CON_REQUEST_REVIEW_DT]
(
[CON_REQ_REVIEW_ID],
[SUP_ID],
[CONS_PROCESS],
[MAINTENANCE],
[REPORT_PLAN_EDIT],
[CONS_QUALITY],
[BEAUTY_IMAGE],
[CONSTRUCT_ID],
[QCKT_REVIEW],
[SUP_NAME],
[REQ_CODE],
[REQ_ID]
)
VALUES
(
@CON_REQ_REVIEW_ID,
@SUP_ID,
@CONS_PROCESS,
@MAINTENANCE,
@REPORT_PLAN_EDIT,
@CONS_QUALITY,
@BEAUTY_IMAGE,
@p_CONSTRUCT_ID,
@QCKT_REVIEW,
@SUP_NAME,
@REQ_CODE,
@REQ_ID
)
FETCH NEXT FROM ListReview INTO @CON_REQ_REVIEW_ID,@SUP_ID, @QCKT_REVIEW, @CONS_PROCESS, @MAINTENANCE, @REPORT_PLAN_EDIT, @CONS_QUALITY, @BEAUTY_IMAGE,@REQ_ID,@REQ_CODE,@SUP_NAME
END
CLOSE ListReview
DEALLOCATE ListReview
-- TIẾN ĐỘ CÔNG TRÌNH
DELETE CON_REQUEST_PROCESS_DT WHERE CONSTRUCT_ID = @p_CONSTRUCT_ID
DECLARE
@CON_REQ_PROCESS_ID VARCHAR(15),
@DATE_REPORT VARCHAR(50),
@PERCENT_COMPLETED DECIMAL(18,2),
@PERCENT_REMAIN DECIMAL(18,2),
@DEADLINE VARCHAR(50)
FETCH NEXT FROM ListConsProcess into @CON_REQ_PROCESS_ID,@DATE_REPORT, @PERCENT_COMPLETED, @PERCENT_REMAIN, @DEADLINE
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC SYS_CodeMasters_Gen 'CON_REQUEST_PROCESS_DT', @CON_REQ_PROCESS_ID out
IF @CON_REQ_PROCESS_ID='' OR @CON_REQ_PROCESS_ID IS NULL GOTO ABORT
INSERT INTO [dbo].[CON_REQUEST_PROCESS_DT]
(
[CON_REQ_PROCESS_ID],
[DATE_REPORT],
[PERCENT_COMPLETED],
[PERCENT_REMAIN],
[DEADLINE],
[CONSTRUCT_ID]
)
VALUES
(
@CON_REQ_PROCESS_ID,
@DATE_REPORT,
@PERCENT_COMPLETED,
@PERCENT_REMAIN,
@DEADLINE,
@p_CONSTRUCT_ID
)
FETCH NEXT FROM ListConsProcess INTO @CON_REQ_PROCESS_ID,@DATE_REPORT, @PERCENT_COMPLETED, @PERCENT_REMAIN, @DEADLINE
END
CLOSE ListConsProcess
DEALLOCATE ListConsProcess
COMMIT TRANSACTION
SELECT '0' as Result, @p_REQUEST_ID REQ_ID, [REF_ID], [TYPE], '' ErrorDesc FROM @TEMP
RETURN '0'
ABORT:
BEGIN
ROLLBACK TRANSACTION
CLOSE ListRequestDoc
DEALLOCATE ListRequestDoc
CLOSE ListBid
DEALLOCATE ListBid
CLOSE ListContract_DT
DEALLOCATE ListContract_DT
CLOSE PaymentDetail
DEALLOCATE PaymentDetail
CLOSE ContractorDetail
DEALLOCATE ContractorDetail
SELECT ErrorCode Result, @p_REQUEST_ID REQ_ID, '' [REF_ID], '' [TYPE], ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @sErrorCode
RETURN '-1'
End
ABORT1:
BEGIN
ROLLBACK TRANSACTION
CLOSE ListRequestDoc
DEALLOCATE ListRequestDoc
SELECT ErrorCode Result, @p_REQUEST_ID REQ_ID, '' [REF_ID], '' [TYPE],ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @sErrorCode
RETURN '-1'
End
ABORT2:
BEGIN
ROLLBACK TRANSACTION
CLOSE ListContract_DT
DEALLOCATE ListContract_DT
CLOSE PaymentDetail
DEALLOCATE PaymentDetail
CLOSE ContractorDetail
DEALLOCATE ContractorDetail
SELECT ErrorCode Result, @p_REQUEST_ID REQ_ID, '' [REF_ID], '' [TYPE], ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @sErrorCode
RETURN '-1'
End
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Altering [dbo].[TR_REQ_ADVANCE_PAYMENT_Search]'
GO
ALTER PROCEDURE [dbo].[TR_REQ_ADVANCE_PAYMENT_Search]
@p_REQ_PAY_ID varchar(15)= NULL,
@p_REQ_PAY_CODE varchar(50) = NULL,
@p_REQ_DT VARCHAR(20)= NULL,
@p_BRANCH_ID varchar(15) = NULL,
@p_DEP_ID varchar(15) = NULL,
@p_REQ_REASON nvarchar(MAX) = NULL,
@p_REQ_TYPE varchar(15) = NULL,
@P_REQ_ENTRIES nvarchar(MAX) = NULL,
@p_REQ_DESCRIPTION nvarchar(MAX) = NULL,
@p_REF_ID varchar(15) = NULL,
@p_RECEIVER_PO nvarchar(250) = NULL,
@p_RECEIVER_DEBIT nvarchar(250) = NULL,
@p_REQ_PAY_TYPE varchar(15) = NULL,
@p_REQ_TYPE_CURRENCY nvarchar(50) = NULL,
@p_REQ_AMT decimal(18, 0) = NULL,
@p_REQ_TEMP_AMT decimal(18, 0) = NULL,
@p_MAKER_ID varchar(15) = NULL,
@p_CREATE_DT varchar(25) = NULL,
@p_EDITOR_ID varchar(15) = NULL,
@p_AUTH_STATUS varchar(1) = NULL,
@p_CHECKER_ID varchar(15) = NULL,
@p_APPROVE_DT varchar(25) = NULL,
@p_CREATE_DT_KT varchar(25) = NULL,
@p_MAKER_ID_KT varchar(15) = NULL,
@p_AUTH_STATUS_KT varchar(1) = NULL,
@p_CHECKER_ID_KT varchar(1) = NULL,
@p_APPROVE_DT_KT varchar(25)= null,
@p_CORE_NOTE nvarchar(500) = NULL,
@p_BRANCH_CREATE varchar(15) = NULL,
@p_NOTES varchar(15) = NULL,
@p_RECORD_STATUS varchar(1) = NULL,
@p_TRANSFER_MAKER nvarchar(50) = NULL,
@p_TRANSFER_DT varchar(25) = NULL,
@p_TRASFER_USER_RECIVE varchar(15) = NULL,
@p_PROCESS varchar(15) = NULL,
@p_PAY_PHASE VARCHAR(15)= NULL,
@p_XMP_TEMP XML = NULL,
@p_TOP INT = 10,
@p_LEVEL varchar(10) = NULL,
@p_FRMDATE VARCHAR(20)= NULL,
@p_TODATE VARCHAR(20) = NULL,
@p_BRANCH_LOGIN VARCHAR(15) = NULL,
@p_IS_UPDATE_KT VARCHAR(15) = NULL,
@p_IS_TRANSFER VARCHAR(15)= NULL,
@p_DVDM_ID VARCHAR(15)= NULL,
@p_USER_LOGIN VARCHAR(15) = NULL,
@p_RATE DECIMAL(18,0) =0,
@p_FUNCTION VARCHAR(15) = NULL,
@p_TYPE_SEARCH VARCHAR(15) = NULL,
@p_TEMP_PAY_STATUS VARCHAR(10) = NULL
--select * from CM_ALLCODE where CDTYPE = 'TEMPPAYSTATUS'
--HT Hoàn tất
--DCHU Đang chờ hoàn ứng
--DHU Đã hoàn ứng
--'' tất cả
AS
BEGIN -- PAGING
SET @p_TOP = NULL
DECLARE @TB_TYPE TABLE (BRANCH_TYPE VARCHAR(15))
IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID= @p_BRANCH_LOGIN)='HS')
BEGIN
INSERT INTO @TB_TYPE VALUES('HS')
END
ELSE
BEGIN
INSERT INTO @TB_TYPE VALUES('PGD')
INSERT INTO @TB_TYPE VALUES('CN')
END
declare @tmp table(BRANCH_ID varchar(15))
insert into @tmp SELECT BRANCH_ID FROM [dbo].[CM_BRANCH_GETCHILDID](@p_BRANCH_ID)
declare @tmp_Login table(BRANCH_ID varchar(15))
insert into @tmp_Login SELECT BRANCH_ID FROM [dbo].[CM_BRANCH_GETCHILDID](@p_BRANCH_LOGIN)
DECLARE @ROLE_ID VARCHAR(20) , @DEP_ID_LG VARCHAR(15) = NULL, @COST_LG VARCHAR(15), @DVDM_ID VARCHAR(15)
DECLARE @BRANCH_TYPE VARCHAR(15)
SET @BRANCH_TYPE =(SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID=(SELECT BRANCH_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID))
SET @ROLE_ID = (SELECT ROLENAME FROM TL_USER WHERE TLNANME=@p_USER_LOGIN)
-- KHAI BAO UY QUYEN KIEM NHIEM
DECLARE @TABLE_ROLE TABLE (ROLE_AUTH VARCHAR(50))
INSERT INTO @TABLE_ROLE VALUES (@ROLE_ID)
INSERT INTO @TABLE_ROLE SELECT ROLE_NEW FROM TL_SYS_ROLE_MAPPING WHERE ROLE_OLD =@ROLE_ID
AND (CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) OR EFF_DATE IS NULL OR EFF_DATE ='')
AND (CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103) OR EXP_DATE IS NULL OR EXP_DATE ='') AND TLNAME =@p_USER_LOGIN
--AND CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) AND CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103)
SET @DEP_ID_LG =(SELECT SECUR_CODE FROM TL_USER WHERE TLNANME=@p_USER_LOGIN)
DECLARE @TMP_DEP TABLE(DEP_ID VARCHAR(15))
SET @COST_LG =(SELECT TOP 1 COST_ID FROM PL_COSTCENTER_DT WHERE DEP_ID =@DEP_ID_LG)
SET @DVDM_ID =(SELECT TOP 1 DVDM_ID FROM PL_COSTCENTER WHERE COST_ID =@COST_LG)
INSERT INTO @TMP_DEP SELECT B.DEP_ID FROM PL_COSTCENTER_DT B WHERE COST_ID =@COST_LG
DECLARE @BRANCH_TYPE_LG VARCHAR(15)
SET @BRANCH_TYPE_LG = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID=@p_BRANCH_LOGIN)
-- KHAI BAO NHUNG PHONG BAN MA 1 USER KIEM NHIEM
DECLARE @DEP_AUTH TABLE (DEP_AUTH VARCHAR(15))
INSERT INTO @DEP_AUTH VALUES (@DEP_ID_LG)
INSERT INTO @DEP_AUTH SELECT DEP_ID FROM TL_SYS_ROLE_MAPPING WHERE TLNAME =@P_USER_LOGIN
AND (CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) OR EFF_DATE IS NULL OR EFF_DATE ='')
AND (CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103) OR EXP_DATE IS NULL OR EXP_DATE ='')
DECLARE @BRANCH_AUTH TABLE (BRN_AUTH VARCHAR(15))
INSERT INTO @BRANCH_AUTH VALUES (@BRANCH_TYPE_LG)
INSERT INTO @BRANCH_AUTH SELECT BRANCH_ID FROM TL_SYS_ROLE_MAPPING WHERE TLNAME =@P_USER_LOGIN AND
CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) AND CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103)
--END
--IF(EXISTS(SELECT * FROM dbo.TL_SYS_ROLE_MAPPING WHERE ROLE_OLD=@ROLE_ID))
-- SET @ROLE_ID=(SELECT ROLE_NEW FROM dbo.TL_SYS_ROLE_MAPPING WHERE ROLE_OLD=@ROLE_ID)
SET @ROLE_ID =(SELECT TOP 1 RoleName FROM TL_USER WHERE TLNANME =@p_USER_LOGIN)
IF(@ROLE_ID IS NOT NULL AND @ROLE_ID <>'' AND @ROLE_ID IN ('TPGD','GDDV','PGD','PTGD','TGD','HDQT','TP','PP','TBP','KTT','GDK','KSV','TC','NVTC','TPTC','PPGD','TKTGD','TKHDQT'))
BEGIN
PRINT @ROLE_ID
END
ELSE
BEGIN
--SET @ROLE_ID =(SELECT TOP 1 RoleName FROM TL_USER_V2 WHERE TLNANME =@p_USER_LOGIN)
SET @ROLE_ID =(SELECT TOP 1 RoleName FROM TL_USER_V2 WHERE TLNANME =@p_USER_LOGIN)
IF(@ROLE_ID IS NULL OR @ROLE_ID ='')
BEGIN
SET @ROLE_ID =(SELECT TOP 1 ROLE_NEW FROM TL_SYS_ROLE_MAPPING WHERE ROLE_OLD =(SELECT TOP 1 ROLENAME FROM TL_USER WHERE TLNANME=@p_USER_LOGIN))
END
END
IF(@p_TOP IS NULL OR @p_TOP=0)
BEGIN
-- PAGING BEGIN
SELECT A.*,'' as TEMP_PAY_STATUS ,B.AUTH_STATUS_NAME AS AUTH_STATUS_NAME, C.AUTH_STATUS_NAME AUTH_STATUS_NAME_KT, TL.TLFullName CREATE_FULLNAME,
TL1.TLFullName APPROVE_FULLNAME,TL2.TLFullName CREATE_FULLNAME_KT,TL3.TLFullName APPROVE_FULLNAME_KT,
BR.BRANCH_NAME BRANCH_NAME, BR1.BRANCH_NAME BRANCH_NAME_CRE, DP.DEP_NAME AS DEP_NAME, DP.DEP_CODE AS DEP_CODE, BR.BRANCH_CODE BRANCH_CODE_REQ,
--Luanlt--2019/10/15-Sửa AL,AL1
BR1.BRANCH_CODE BRANCH_CODE_CRE, AL.CONTENT REQ_TYPE_NAME,AL1.CONTENT REQ_PAY_TYPE_NAME,
A.REQ_AMT AS TOTAL_AMT_TEMP,CASE WHEN H.SOTIEN_TT IS NULL THEN ISNULL(A.PAY_AMT,0) ELSE ISNULL(A.PAY_AMT,0) END AS TOTAL_AMT_PAY_HIS,
TL4.TLFullName AS TRANSFER_FULLNAME,TL5.TLFullName AS TRANSFER_RECIEVER_FULLNAME,
TL6.TLFullName AS REC_DEBIT_NAME, TL6.TLNANME AS REC_DEBIT_CODE, TL7.TLFullName AS EMP_NAME, TL7.TLNANME AS EMP_CODE,
PO.PO_CODE, PO.PO_NAME,SUP.SUP_NAME,SUP.TAX_NO AS SUP_TAX_NO,CUS.CUSTOMER_CODE AS CUST_CODE, CUS.CUSTOMER_NAME AS CUST_NAME,PM.PAY_PHASE AS KY_TAM_UNG,
DV.DVDM_CODE, DV.DVDM_NAME, CASE WHEN PC.ROLE_USER ='GDDV' THEN (SELECT RoleName FROM TL_USER WHERE TLNANME =@p_USER_LOGIN) ELSE PC.ROLE_USER END AS ROLE_CONF,
--PR.PROCESS_DESC +N' vào lúc '+ CONVERT(VARCHAR(30), CONVERT(DATETIME, PR.APP_DT,103)) AS CONF_STATUS,
PR.PROCESS_DESC +N' vào lúc '+ ISNULL(FORMAT(PR.APP_DT,'dd/MM/yyyy H:mm:ss'),'') AS CONF_STATUS,
--PC1.NOTES AS NEXT_STEP,
---2021112 CAU HINH BUOC XU LY TIEP THEO PDN TAM UNG NOI BO
CASE WHEN A.REQ_TYPE='I' AND A.AUTH_STATUS ='E' THEN N'Phiếu đang chờ gửi phê duyệt'
WHEN A.REQ_TYPE='I' AND A.AUTH_STATUS_KT ='R' THEN N'Phiếu đang chờ GDV xử lý'
WHEN A.REQ_TYPE='I' AND A.AUTH_STATUS_KT ='P' THEN N'Phiếu đang chờ KSV xử lý'
WHEN A.REQ_TYPE='I' AND A.AUTH_STATUS ='R' THEN N'Phiếu bị trả về đơn vị'
WHEN A.REQ_TYPE='I' AND A.BRANCH_CREATE='DV0001' AND (A.PROCESS IS NULL OR A.PROCESS ='') AND ISNULL(A.TRASFER_USER_RECIVE,'') <> '' AND ISNULL(A.NOTES,'')='' THEN N'Chờ cấp duyệt trung gian xác nhận'
WHEN A.REQ_TYPE='I' AND A.BRANCH_CREATE='DV0001' AND (A.PROCESS IS NULL OR A.PROCESS ='') AND ISNULL(A.TRASFER_USER_RECIVE,'') <> '' AND ISNULL(A.NOTES,'') <> '' THEN N'Chờ trưởng đơn vị xác nhận'
WHEN A.REQ_TYPE='I' AND A.BRANCH_CREATE='DV0001' AND ISNULL(A.TRASFER_USER_RECIVE,'') = '' AND ISNULL(A.PROCESS,'') = '' THEN N'Chờ trưởng đơn vị xác nhận'
WHEN A.REQ_TYPE='I' AND A.BRANCH_CREATE='DV0001' AND (A.PROCESS IS NOT NULL OR A.PROCESS ='0') THEN PC1.NOTES
WHEN A.REQ_TYPE='I' AND A.BRANCH_CREATE <> 'DV0001' AND ISNULL(A.TRASFER_USER_RECIVE,'') <> '' AND (A.PROCESS IS NULL OR A.PROCESS ='') THEN N'Chờ cấp duyệt trung gian xác nhận'
WHEN A.REQ_TYPE='I' AND A.BRANCH_CREATE<>'DV0001' AND (ISNULL(A.TRASFER_USER_RECIVE,'') ='' OR A.PROCESS ='0') THEN PC1.NOTES END AS NEXT_STEP,
PC3.LEVEL_JOB, PC3.STATUS_JOB,PC3.TYPE_JOB,CASE WHEN PC3.TLNAME IS NOT NULL AND PC3.TLNAME <>'' THEN @P_USER_LOGIN ELSE PC3.TLNAME END AS EXEC_USER,TL8.TLFullName AS RECIVER_MONEY_FULLNAME, CASE WHEN BR1.BRANCH_TYPE <> 'PGD'THEN BR1.BRANCH_TYPE ELSE 'CN' END AS BRANCH_TYPE_CR, BR.BRANCH_TYPE,@p_TYPE_SEARCH AS TYPE_SEARCH,
SR.ROLE_ID AS ROLE_ID_CRE, ISNULL(H.SOTIEN_TT,0) AS STTT, A.REQ_AMT - ISNULL(H.SOTIEN_TT,0) AS SL_CL,BR_CORE.BRANCH_CODE AS BRANCH_CODE_CORE, BR_CORE.BRANCH_NAME AS BRANCH_NAME_CORE, '' AS BRANCH_CODE_CONTRACT, '' AS BRANCH_NAME_CONTRACT
-- SELECT END
FROM TR_REQ_ADVANCE_PAYMENT A
LEFT JOIN CM_AUTH_STATUS B ON A.AUTH_STATUS=B.AUTH_STATUS
LEFT JOIN CM_AUTH_STATUS C ON A.AUTH_STATUS_KT=C.AUTH_STATUS
LEFT JOIN TL_USER TL ON A.MAKER_ID=TL.TLNANME
LEFT JOIN TL_USER TL1 ON A.CHECKER_ID=TL1.TLNANME
LEFT JOIN TL_USER TL2 ON A.MAKER_ID_KT=TL2.TLNANME
LEFT JOIN TL_USER TL3 ON A.CHECKER_ID_KT=TL3.TLNANME
LEFT JOIN dbo.CM_BRANCH BR ON A.BRANCH_ID=BR.BRANCH_ID
LEFT JOIN dbo.CM_BRANCH BR1 ON A.BRANCH_CREATE=BR1.BRANCH_ID
LEFT JOIN dbo.CM_DEPARTMENT DP ON A.DEP_ID= DP.DEP_ID
--Luanlt--2019/10/15-Sửa AL,AL1
LEFT JOIN CM_ALLCODE AL ON A.REQ_TYPE = AL.CDVAL AND AL.CDNAME='REQ_TYPE' AND AL.CDTYPE = 'REQ_PAY_ADVANCE'
LEFT JOIN CM_ALLCODE AL1 ON A.REQ_PAY_TYPE = AL1.CDVAL AND AL1.CDNAME='REQ_PAY_TYPE' AND AL.CDTYPE = 'REQ_PAY_METHOD'
LEFT JOIN TL_USER TL4 ON A.TRANSFER_MAKER = TL4.TLNANME
LEFT JOIN TL_USER TL5 ON A.TRASFER_USER_RECIVE = TL5.TLNANME
LEFT JOIN TL_USER TL6 ON A.RECEIVER_DEBIT = TL6.TLNANME AND A.REQ_TYPE='D'
LEFT JOIN
(
SELECT PAY_ADV_ID,(ISNULL(SUM(AMT_USE),0) - ISNULL(SUM(AMT_ADD),0) + ISNULL(SUM(AMT_REVERT),0)) AS SOTIEN_TT FROM TR_REQ_PAYMENT_DT WHERE AUTH_STATUS_KT ='A' GROUP BY PAY_ADV_ID
) H ON A.REQ_PAY_ID = H.PAY_ADV_ID
LEFT JOIN TL_USER TL7 ON TL7.TLNANME = A.REF_ID AND A.REQ_TYPE='I'
LEFT JOIN TR_PO_MASTER PO ON A.REF_ID = PO.PO_ID AND A.REQ_TYPE='P'
LEFT JOIN CM_SUPPLIER SUP ON PO.SUP_ID = SUP.SUP_ID AND A.REQ_TYPE='P'
LEFT JOIN LS_CUSTOMER CUS ON A.REF_ID = CUS.CUSTOMER_ID AND A.REQ_TYPE='D'
LEFT JOIN TR_PO_PAYMENT PM ON A.PAY_PHASE = PM.PAY_ID AND A.REQ_TYPE='P'
LEFT JOIN CM_DVDM DV ON A.DVDM_ID = DV.DVDM_ID
--LEFT JOIN PL_PROCESS PR ON A.PROCESS = PR.PROCESS_ID AND A.REQ_PAY_ID = PR.REQ_ID
LEFT JOIN
(
SELECT P.REQ_ID, P.PROCESS_DESC, P.APPROVE_DT AS APP_DT FROM PL_PROCESS P
INNER JOIN
(
SELECT MAX (PR.ID) AS ID, MAX(PR.REQ_ID) AS REQ_ID FROM PL_PROCESS PR
GROUP BY PR.REQ_ID
) PR ON PR.REQ_ID = P.REQ_ID AND P.ID = PR.ID
--WHERE P.REQ_ID =@p_REQ_PAY_ID
) AS PR ON A.REQ_PAY_ID = PR.REQ_ID
LEFT JOIN PL_REQUEST_PROCESS PC ON PC.REQ_ID= A.REQ_PAY_ID AND
(PC.ROLE_USER = @ROLE_ID OR EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =A.REQ_PAY_ID AND STATUS_JOB ='C' AND TLNAME =@p_USER_LOGIN))
AND PC.STATUS='C'
--LEFT JOIN PL_REQUEST_PROCESS PC ON PC.REQ_ID= A.REQ_PAY_ID AND PC.ROLE_USER IN (SELECT * FROM @TABLE_ROLE) AND PC.STATUS='C'
LEFT JOIN PL_REQUEST_PROCESS PC1 ON PC1.REQ_ID= A.REQ_PAY_ID AND PC1.STATUS='C'
LEFT JOIN PL_REQUEST_PROCESS_CHILD PC3 ON PC3.REQ_ID = A.REQ_PAY_ID AND PC3.STATUS_JOB ='C'
LEFT JOIN PL_REQUEST_PROCESS_CHILD PC4 ON PC4.REQ_ID = A.REQ_PAY_ID AND PC4.STATUS_JOB ='C'
LEFT JOIN TL_USER TL8 ON A.RECIVER_MONEY = TL8.TLNANME
LEFT JOIN TL_SYSROLE SR ON TL.RoleName = SR.ROLE_ID
LEFT JOIN CM_BRANCH BR_CORE ON TL2.TLSUBBRID = BR_CORE.BRANCH_ID
WHERE 1=1
AND (A.REQ_PAY_ID =@p_REQ_PAY_ID OR @p_REQ_PAY_ID IS NULL OR @p_REQ_PAY_ID ='')
AND(A.REQ_PAY_CODE LIKE N'%'+@p_REQ_PAY_CODE+'%' OR @p_REQ_PAY_CODE='' OR @p_REQ_PAY_CODE IS NULL)
AND(A.REQ_REASON LIKE N'%'+@p_REQ_REASON+'%' OR @p_REQ_REASON='' OR @p_REQ_REASON IS NULL)
AND(A.AUTH_STATUS=@p_AUTH_STATUS OR @p_AUTH_STATUS='' OR @p_AUTH_STATUS IS NULL OR
(A.REQ_TYPE ='I' AND A.AUTH_STATUS <>'A' AND EXISTS(SELECT * FROM @TABLE_ROLE WHERE ROLE_AUTH IN ('GDDV','PP','GDK','KTT','PTGD','TGD','HDQT','TKTGD','TKHDQT'))))
AND((A.MAKER_ID_KT IS NOT NULL AND @p_IS_UPDATE_KT='Y') --Lay danh sach chua duoc phong KT cap nhat va duoc cap nhat
OR((A.MAKER_ID_KT IS NULL AND @p_IS_UPDATE_KT='N'))OR @p_IS_UPDATE_KT IS NULL OR @p_IS_UPDATE_KT='')
AND(A.NOTES LIKE N'%'+@p_NOTES+'%' OR @p_NOTES='' OR @p_NOTES IS NULL)
--Luanlt-2019/10/14-Thêm Filter REQ_TYPE,FROMDATE TODATE REF_ID
AND(A.REQ_TYPE LIKE N'%'+@p_REQ_TYPE+'%' OR @p_REQ_TYPE = '' OR @p_REQ_TYPE IS NULL)
AND(CONVERT(DATE, A.CREATE_DT)>=CONVERT(DATE, @p_FRMDATE, 103)OR @p_FRMDATE IS NULL OR @p_FRMDATE='' OR A.CREATE_DT IS NULL OR A.REQ_DT IS NULL)
AND(CONVERT(DATE, A.CREATE_DT)<=CONVERT(DATE, @p_TODATE, 103)OR @p_TODATE IS NULL OR @p_TODATE='' OR A.CREATE_DT IS NULL OR A.REQ_DT IS NULL)
--Luanlt-2019/10/17-Thêm Filter REQ_PAY_CODE REQ_PAY_NAME BRANCH_ID DEP_ID KT_AUTH
AND(A.REQ_PAY_CODE LIKE N'%'+@p_REQ_PAY_CODE+'%' or @p_REQ_PAY_CODE='' OR @p_REQ_PAY_CODE IS NULL)
--AND(A.TRASFER_USER_RECIVE =@p_TRASFER_USER_RECIVE or @p_TRASFER_USER_RECIVE='' OR @p_TRASFER_USER_RECIVE IS NULL OR A.MAKER_ID_KT IS NOT NULL OR A.MAKER_ID_KT <>'')
AND(A.DEP_ID = @p_DEP_ID or @p_DEP_ID='' OR @p_DEP_ID IS NULL)
AND((A.AUTH_STATUS_KT=@p_AUTH_STATUS_KT OR @p_AUTH_STATUS_KT='' OR @p_AUTH_STATUS_KT IS NULL) OR (@p_AUTH_STATUS_KT ='P' AND A.AUTH_STATUS_KT IN ('P','S')))
AND(A.REF_ID =@p_REF_ID OR @p_REF_ID='' OR @p_REF_ID IS NULL)
---AND(( @p_IS_TRANSFER='Y' AND (EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = A.REQ_PAY_ID) OR ISNULL(A.AUTH_STATUS_KT,'') ='A')) --Lay danh sach chua duoc phong KT cap nhat va duoc cap nhat
--OR((@p_IS_TRANSFER='N' AND NOT EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = A.REQ_PAY_ID) AND ISNULL(A.AUTH_STATUS_KT,'') <>'A' ))OR @p_IS_TRANSFER IS NULL OR @p_IS_TRANSFER='')
AND(( @p_IS_TRANSFER='Y' AND
(@p_TYPE_SEARCH ='TKTGD' AND EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = A.REQ_PAY_ID AND PROCESS_ID ='1'))
OR(@p_TYPE_SEARCH ='TKHDQT' AND EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = A.REQ_PAY_ID AND PROCESS_ID ='2'))
OR (@p_TYPE_SEARCH ='KT' AND (EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = A.REQ_PAY_ID AND (PROCESS_ID IS NULL OR PROCESS_ID ='' OR PROCESS_ID ='3')) OR ISNULL(A.AUTH_STATUS_KT,'') ='A'))
) --Lay danh sach chua duoc phong KT cap nhat va duoc cap nhat
OR((@p_IS_TRANSFER='N' AND
(@p_TYPE_SEARCH ='TKTGD' AND NOT EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = A.REQ_PAY_ID AND PROCESS_ID ='1') AND ISNULL(A.AUTH_STATUS_KT,'') <>'A' )
OR (@p_TYPE_SEARCH ='TKHDQT' AND NOT EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = A.REQ_PAY_ID AND PROCESS_ID ='2') AND ISNULL(A.AUTH_STATUS_KT,'') <>'A' )
OR (@p_TYPE_SEARCH ='KT' AND NOT EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = A.REQ_PAY_ID AND (PROCESS_ID IS NULL OR PROCESS_ID ='' OR PROCESS_ID ='3')) AND ISNULL(A.AUTH_STATUS_KT,'') <>'A' ))
OR @p_IS_TRANSFER IS NULL OR @p_IS_TRANSFER=''))
AND(((@p_PROCESS='PM' AND (A.REQ_AMT- ISNULL(A.PAY_AMT,0.00)) >0)
AND (A.REQ_TYPE IN('I','D','P') OR (@DEP_ID_LG ='DEP000000000014' AND A.REQ_TYPE IN ('I','P','D'))) AND
((A.DEP_ID =@DEP_ID_LG OR A.MAKER_ID =@p_USER_LOGIN OR A.MAKER_ID IS NULL) OR(@BRANCH_TYPE_LG <>'HS' AND A.BRANCH_ID =@p_BRANCH_LOGIN) OR (@p_REQ_PAY_CODE IS NOT NULL AND @p_REQ_PAY_CODE <> '' AND A.REQ_PAY_CODE =@p_REQ_PAY_CODE)))
OR @p_PROCESS IS NULL OR @p_PROCESS ='')
AND((@p_LEVEL='ALL' AND A.BRANCH_ID IN(SELECT BRANCH_ID FROM @tmp))
OR((@p_LEVEL='UNIT' AND A.BRANCH_ID=@p_BRANCH_ID)OR(@p_BRANCH_ID='' OR @p_BRANCH_ID IS NULL) OR (@p_REQ_PAY_CODE IS NOT NULL AND @p_REQ_PAY_CODE <> '' AND A.REQ_PAY_CODE =@p_REQ_PAY_CODE)))
AND ((@p_FUNCTION ='KT' AND (EXISTS(SELECT TOP 1 * FROM PL_REQUEST_PROCESS_CHILD X WHERE X.REQ_ID = A.REQ_PAY_ID AND (X.TLNAME= @p_USER_LOGIN OR X.TLNAME =@p_TRASFER_USER_RECIVE))) OR A.CHECKER_ID_KT ='admin' OR A.AUTH_STATUS_KT ='A')
OR @p_FUNCTION IS NULL OR @p_FUNCTION ='' OR (@p_FUNCTION ='TF' AND A.AUTH_STATUS='A') OR @p_FUNCTION ='SIGN')
AND(A.MAKER_ID LIKE '%'+@p_MAKER_ID+'%' OR @p_MAKER_ID IS NULL OR @p_MAKER_ID ='')
AND(EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE TLNAME =@p_TRASFER_USER_RECIVE AND TYPE_JOB IN ('XL','KS','TP') AND REQ_ID = A.REQ_PAY_ID) OR @p_TRASFER_USER_RECIVE IS NULL OR @p_TRASFER_USER_RECIVE='')
AND
(
A.MAKER_ID =@p_USER_LOGIN OR (A.TRASFER_USER_RECIVE = @p_USER_LOGIN AND A.AUTH_STATUS NOT IN ('E','R'))
OR(
A.AUTH_STATUS <>'E' AND(
(@p_TYPE_SEARCH ='HC' AND @BRANCH_TYPE_LG ='HS' AND A.REQ_TYPE ='I'
AND (
(EXISTS(SELECT * FROM @TABLE_ROLE WHERE ROLE_AUTH IN ('GDDV','TP','KTT','TC')) AND (A.BRANCH_ID =@p_BRANCH_LOGIN OR A.BRANCH_ID IN (SELECT * FROM @BRANCH_AUTH))
AND (A.DEP_ID = @DEP_ID_LG OR A.DEP_ID IN (SELECT * FROM @DEP_AUTH))
AND ((@p_AUTH_STATUS ='A' AND ISNULL(PROCESS,'') ='0' AND
EXISTS(SELECT * FROM PL_PROCESS WHERE REQ_ID =A.REQ_PAY_ID AND PROCESS_DESC IN (N'Trưởng đơn vị xác nhận phiếu',N'Cấp phê duyệt trung gian xác nhận phiếu'))
OR (@p_AUTH_STATUS ='U' AND ISNULL(PROCESS,'')='') OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS =''))
)
OR
(@ROLE_ID IN ('NVMS','NVTT','TBP') AND (A.TRASFER_USER_RECIVE = @p_USER_LOGIN OR A.MAKER_ID =@p_MAKER_ID OR A.DEP_ID=@p_DEP_ID)
AND (A.AUTH_STATUS =@p_AUTH_STATUS OR ISNULL(@p_AUTH_STATUS,'') =''))
OR (EXISTS(SELECT * FROM @TABLE_ROLE WHERE ROLE_AUTH IN ('GDK','PTGD')) AND (A.DVDM_ID =@DVDM_ID OR (A.DVDM_ID IS NULL OR A.DVDM_ID ='')) AND EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID = A.REQ_PAY_ID
AND ROLE_USER IN (SELECT * FROM @TABLE_ROLE) AND A.BRANCH_CREATE ='DV0001' AND A.PROCESS<>'' AND A.PROCESS IS NOT NULL
AND ((@p_AUTH_STATUS ='A' AND STATUS IN ('P','A')) OR (@p_AUTH_STATUS = 'U' AND STATUS ='C') OR(ISNULL(@p_AUTH_STATUS,'') ='' AND STATUS IN ('C','P','A')))
))
OR (EXISTS(SELECT * FROM @TABLE_ROLE WHERE ROLE_AUTH IN ('TKTGD', 'TKHDQT','TGD','HDQT')) AND EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID = A.REQ_PAY_ID
AND ROLE_USER IN(SELECT * FROM @TABLE_ROLE) AND A.BRANCH_CREATE ='DV0001' AND A.PROCESS<>'' AND A.PROCESS IS NOT NULL
AND ((@p_AUTH_STATUS ='A' AND STATUS IN ('P','A')) OR
(@p_AUTH_STATUS = 'U' AND STATUS ='C') OR(ISNULL(@p_AUTH_STATUS,'') ='' ))
))
)-- NEU ROLE NAM TRONG DS CAC ROLE WORKFLOW
)
-- NGUOC LAI NEU LA TAM UNG KHAC
OR
(@p_TYPE_SEARCH ='HC' AND @BRANCH_TYPE_LG ='HS' AND A.REQ_TYPE <> 'I' AND
(A.TRASFER_USER_RECIVE = @p_USER_LOGIN OR (@ROLE_ID IN ('GDDV','GDK','KTT','TPTC','PP','TBP','TP','TC') AND (A.BRANCH_ID =@p_BRANCH_LOGIN OR A.BRANCH_ID IN(SELECT * FROM @BRANCH_AUTH)) AND (A.DEP_ID =@DEP_ID_LG OR A.DEP_ID IN (SELECT * FROM @DEP_AUTH))
AND( A.TRASFER_USER_RECIVE IS NULL OR A.TRASFER_USER_RECIVE ='' OR
(A.TRASFER_USER_RECIVE IS NOT NULL AND A.TRASFER_USER_RECIVE <>'' AND A.PROCESS IS NOT NULL AND A.PROCESS <>'')))
OR (@ROLE_ID NOT IN ('GDDV','GDK','KTT','TPTC','PP','TBP','TP','TC') AND (A.DEP_ID =@DEP_ID_LG OR A.DEP_ID IN (SELECT * FROM @DEP_AUTH)))
))
-- HẾT KIỂM TRA LIÊN QUAN ĐẾN LOẠI TẠM ỨNG
OR(@p_TYPE_SEARCH ='HC' AND @BRANCH_TYPE_LG = 'CN' AND (@ROLE_ID IN ('GDDV','PGD','TPGD','PPGD') AND
(
(A.TRASFER_USER_RECIVE IS NOT NULL AND A.TRASFER_USER_RECIVE <>'' AND A.PROCESS IS NOT NULL AND A.PROCESS <>'')
OR A.TRASFER_USER_RECIVE ='' OR A.TRASFER_USER_RECIVE IS NULL)
OR ((A.BRANCH_CREATE <> @p_BRANCH_LOGIN AND A.TRASFER_USER_RECIVE IS NOT NULL AND A.TRASFER_USER_RECIVE <>'') OR A.BRANCH_CREATE = @p_BRANCH_LOGIN)
AND A.BRANCH_ID IN (SELECT * FROM @tmp)))
OR (@p_TYPE_SEARCH ='HC' AND @BRANCH_TYPE_LG = 'CN' AND A.BRANCH_ID IN (SELECT * FROM @tmp))
OR(@p_TYPE_SEARCH ='HC' AND @BRANCH_TYPE_LG = 'PGD' AND (@ROLE_ID IN ('GDDV','TPGD','PPGD','PGD') AND A.BRANCH_ID =@p_BRANCH_LOGIN))
OR(@p_TYPE_SEARCH ='HC' AND (A.DVDM_ID IS NOT NULL AND A.DVDM_ID <>'' AND A.DVDM_ID =@DVDM_ID AND A.PROCESS IS NOT NULL AND A.PROCESS <>'' AND
@ROLE_ID IN (SELECT ROLE_USER FROM PL_REQUEST_PROCESS WHERE REQ_ID =A.REQ_PAY_ID))
OR(A.DEP_ID IN (SELECT * FROM @TMP_DEP) AND A.PROCESS IS NOT NULL AND A.PROCESS <>'' AND @ROLE_ID <> 'TKTGD'
AND @ROLE_ID IN (SELECT ROLE_USER FROM PL_REQUEST_PROCESS WHERE REQ_ID =A.REQ_PAY_ID)))
--OR(@p_TYPE_SEARCH ='HC' AND (@ROLE_ID IN (SELECT ROLE_USER FROM PL_REQUEST_PROCESS WHERE REQ_ID= A.REQ_PAY_ID AND ROLE_USER IN ('TGD','HDQT','TKTGD','TKHDQT') AND STATUS ='C')))
OR(@p_TYPE_SEARCH='KT' AND A.BRANCH_ID IN (SELECT BRANCH_ID from @tmp_Login))
OR(@p_TYPE_SEARCH='HC' AND (@ROLE_ID IN ('KSV','GDV') OR @DEP_ID_LG ='DEP000000000022') AND A.BRANCH_ID IN (SELECT BRANCH_ID from @tmp_Login))
OR(@p_TYPE_SEARCH='HC' AND EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = A.REQ_PAY_ID AND TLNAME =@p_USER_LOGIN AND TYPE_JOB ='XL'))
OR(@p_TYPE_SEARCH IN ('TK','TKTGD','TKHDQT') AND A.PROCESS<>'' AND A.PROCESS IS NOT NULL
AND ( (@p_FUNCTION ='TF' AND EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID = A.REQ_PAY_ID AND ROLE_USER =@ROLE_ID AND STATUS ='C'))
OR (ISNULL(@p_FUNCTION,'') <> 'TF' AND EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID = A.REQ_PAY_ID AND ROLE_USER =@ROLE_ID AND
((@p_IS_TRANSFER ='N' AND STATUS ='C') OR (@p_IS_TRANSFER <>'N' AND STATUS IN ('C','P'))))))
)
OR(@p_TYPE_SEARCH='PAY' AND (A.REQ_AMT -ISNULL(A.PAY_AMT,0)) >0 AND (
(@BRANCH_TYPE_LG ='HS' AND (A.DEP_ID =@DEP_ID_LG OR A.MAKER_ID =@p_USER_LOGIN OR A.MAKER_ID IS NULL OR 1=1))
OR (@BRANCH_TYPE_LG <> 'HS' AND A.BRANCH_ID = @p_BRANCH_LOGIN)
OR (@p_REQ_PAY_CODE IS NOT NULL AND @p_REQ_PAY_CODE <> '' AND A.REQ_PAY_CODE =@p_REQ_PAY_CODE)))
)
OR(@p_TYPE_SEARCH='HC' AND (@ROLE_ID IN ('KSV','GDV') OR @DEP_ID_LG ='DEP000000000022') AND A.BRANCH_ID IN (SELECT BRANCH_ID from @tmp_Login))
))
AND (
(A.PAY_AMT = A.REQ_AMT AND (@p_TEMP_PAY_STATUS = 'HT'))
OR (A.PAY_AMT = 0 AND (@p_TEMP_PAY_STATUS = 'DCHU') )
OR (A.PAY_AMT <> 0 and A.PAY_AMT < A.REQ_AMT AND (@p_TEMP_PAY_STATUS = 'DHU'))
OR @p_TEMP_PAY_STATUS IS NULL OR @p_TEMP_PAY_STATUS = ''
)
AND (A.RECORD_STATUS ='1' AND A.AUTH_STATUS <>'X')
ORDER BY A.CREATE_DT DESC
-- PAGING END
END;
ELSE
BEGIN
-- PAGING BEGIN
SELECT A.*,'' as TEMP_PAY_STATUS ,B.AUTH_STATUS_NAME AS AUTH_STATUS_NAME, C.AUTH_STATUS_NAME AUTH_STATUS_NAME_KT, TL.TLFullName CREATE_FULLNAME,
TL1.TLFullName APPROVE_FULLNAME,TL2.TLFullName CREATE_FULLNAME_KT,TL3.TLFullName APPROVE_FULLNAME_KT,
BR.BRANCH_NAME BRANCH_NAME, BR1.BRANCH_NAME BRANCH_NAME_CRE, DP.DEP_NAME AS DEP_NAME, DP.DEP_CODE AS DEP_CODE, BR.BRANCH_CODE BRANCH_CODE_REQ,
--Luanlt--2019/10/15-Sửa AL,AL1
BR1.BRANCH_CODE BRANCH_CODE_CRE, AL.CONTENT REQ_TYPE_NAME,AL1.CONTENT REQ_PAY_TYPE_NAME,
A.REQ_AMT AS TOTAL_AMT_TEMP,CASE WHEN H.SOTIEN_TT IS NULL THEN ISNULL(A.PAY_AMT,0) ELSE ISNULL(A.PAY_AMT,0) END AS TOTAL_AMT_PAY_HIS,
TL4.TLFullName AS TRANSFER_FULLNAME,TL5.TLFullName AS TRANSFER_RECIEVER_FULLNAME,
TL6.TLFullName AS REC_DEBIT_NAME, TL6.TLNANME AS REC_DEBIT_CODE, TL7.TLFullName AS EMP_NAME, TL7.TLNANME AS EMP_CODE,
PO.PO_CODE, PO.PO_NAME,SUP.SUP_NAME,SUP.TAX_NO AS SUP_TAX_NO,CUS.CUSTOMER_CODE AS CUST_CODE, CUS.CUSTOMER_NAME AS CUST_NAME,PM.PAY_PHASE AS KY_TAM_UNG,
DV.DVDM_CODE, DV.DVDM_NAME, CASE WHEN PC.ROLE_USER ='GDDV' THEN (SELECT RoleName FROM TL_USER WHERE TLNANME =@p_USER_LOGIN) ELSE PC.ROLE_USER END AS ROLE_CONF,
--PR.PROCESS_DESC +N' vào lúc '+ CONVERT(VARCHAR(30), CONVERT(DATETIME, PR.APP_DT,103)) AS CONF_STATUS,
PR.PROCESS_DESC +N' vào lúc '+ ISNULL(FORMAT(PR.APP_DT,'dd/MM/yyyy H:mm:ss'),'') AS CONF_STATUS,
--PC1.NOTES AS NEXT_STEP,
---2021112 CAU HINH BUOC XU LY TIEP THEO PDN TAM UNG NOI BO
CASE WHEN A.REQ_TYPE='I' AND A.AUTH_STATUS ='E' THEN N'Phiếu đang chờ gửi phê duyệt'
WHEN A.REQ_TYPE='I' AND A.AUTH_STATUS_KT ='R' THEN N'Phiếu đang chờ GDV xử lý'
WHEN A.REQ_TYPE='I' AND A.AUTH_STATUS_KT ='P' THEN N'Phiếu đang chờ KSV xử lý'
WHEN A.REQ_TYPE='I' AND A.AUTH_STATUS ='R' THEN N'Phiếu bị trả về đơn vị'
WHEN A.REQ_TYPE='I' AND A.BRANCH_CREATE='DV0001' AND (A.PROCESS IS NULL OR A.PROCESS ='') AND ISNULL(A.TRASFER_USER_RECIVE,'') <> '' AND ISNULL(A.NOTES,'')='' THEN N'Chờ cấp duyệt trung gian xác nhận'
WHEN A.REQ_TYPE='I' AND A.BRANCH_CREATE='DV0001' AND (A.PROCESS IS NULL OR A.PROCESS ='') AND ISNULL(A.TRASFER_USER_RECIVE,'') <> '' AND ISNULL(A.NOTES,'') <> '' THEN N'Chờ trưởng đơn vị xác nhận'
WHEN A.REQ_TYPE='I' AND A.BRANCH_CREATE='DV0001' AND ISNULL(A.TRASFER_USER_RECIVE,'') = '' AND ISNULL(A.PROCESS,'') = '' THEN N'Chờ trưởng đơn vị xác nhận'
WHEN A.REQ_TYPE='I' AND A.BRANCH_CREATE='DV0001' AND (A.PROCESS IS NOT NULL OR A.PROCESS ='0') THEN PC1.NOTES
WHEN A.REQ_TYPE='I' AND A.BRANCH_CREATE <> 'DV0001' AND ISNULL(A.TRASFER_USER_RECIVE,'') <> '' AND (A.PROCESS IS NULL OR A.PROCESS ='') THEN N'Chờ cấp duyệt trung gian xác nhận'
WHEN A.REQ_TYPE='I' AND A.BRANCH_CREATE<>'DV0001' AND (ISNULL(A.TRASFER_USER_RECIVE,'') ='' OR A.PROCESS ='0') THEN PC1.NOTES END AS NEXT_STEP,
PC3.LEVEL_JOB, PC3.STATUS_JOB,PC3.TYPE_JOB,CASE WHEN PC3.TLNAME IS NOT NULL AND PC3.TLNAME <>'' THEN @P_USER_LOGIN ELSE PC3.TLNAME END AS EXEC_USER,TL8.TLFullName AS RECIVER_MONEY_FULLNAME, CASE WHEN BR1.BRANCH_TYPE <> 'PGD'THEN BR1.BRANCH_TYPE ELSE 'CN' END AS BRANCH_TYPE_CR, BR.BRANCH_TYPE,@p_TYPE_SEARCH AS TYPE_SEARCH,
SR.ROLE_ID AS ROLE_ID_CRE, ISNULL(H.SOTIEN_TT,0) AS STTT, A.REQ_AMT - ISNULL(H.SOTIEN_TT,0) AS SL_CL,BR_CORE.BRANCH_CODE AS BRANCH_CODE_CORE, BR_CORE.BRANCH_NAME AS BRANCH_NAME_CORE, '' AS BRANCH_CODE_CONTRACT, '' AS BRANCH_NAME_CONTRACT
-- SELECT END
FROM TR_REQ_ADVANCE_PAYMENT A
LEFT JOIN CM_AUTH_STATUS B ON A.AUTH_STATUS=B.AUTH_STATUS
LEFT JOIN CM_AUTH_STATUS C ON A.AUTH_STATUS_KT=C.AUTH_STATUS
LEFT JOIN TL_USER TL ON A.MAKER_ID=TL.TLNANME
LEFT JOIN TL_USER TL1 ON A.CHECKER_ID=TL1.TLNANME
LEFT JOIN TL_USER TL2 ON A.MAKER_ID_KT=TL2.TLNANME
LEFT JOIN TL_USER TL3 ON A.CHECKER_ID_KT=TL3.TLNANME
LEFT JOIN dbo.CM_BRANCH BR ON A.BRANCH_ID=BR.BRANCH_ID
LEFT JOIN dbo.CM_BRANCH BR1 ON A.BRANCH_CREATE=BR1.BRANCH_ID
LEFT JOIN dbo.CM_DEPARTMENT DP ON A.DEP_ID= DP.DEP_ID
--Luanlt--2019/10/15-Sửa AL,AL1
LEFT JOIN CM_ALLCODE AL ON A.REQ_TYPE = AL.CDVAL AND AL.CDNAME='REQ_TYPE' AND AL.CDTYPE = 'REQ_PAY_ADVANCE'
LEFT JOIN CM_ALLCODE AL1 ON A.REQ_PAY_TYPE = AL1.CDVAL AND AL1.CDNAME='REQ_PAY_TYPE' AND AL.CDTYPE = 'REQ_PAY_METHOD'
LEFT JOIN TL_USER TL4 ON A.TRANSFER_MAKER = TL4.TLNANME
LEFT JOIN TL_USER TL5 ON A.TRASFER_USER_RECIVE = TL5.TLNANME
LEFT JOIN TL_USER TL6 ON A.RECEIVER_DEBIT = TL6.TLNANME AND A.REQ_TYPE='D'
LEFT JOIN
(
SELECT PAY_ADV_ID,(ISNULL(SUM(AMT_USE),0) - ISNULL(SUM(AMT_ADD),0) + ISNULL(SUM(AMT_REVERT),0)) AS SOTIEN_TT FROM TR_REQ_PAYMENT_DT WHERE AUTH_STATUS_KT ='A' GROUP BY PAY_ADV_ID
) H ON A.REQ_PAY_ID = H.PAY_ADV_ID
LEFT JOIN TL_USER TL7 ON TL7.TLNANME = A.REF_ID AND A.REQ_TYPE='I'
LEFT JOIN TR_PO_MASTER PO ON A.REF_ID = PO.PO_ID AND A.REQ_TYPE='P'
LEFT JOIN CM_SUPPLIER SUP ON PO.SUP_ID = SUP.SUP_ID AND A.REQ_TYPE='P'
LEFT JOIN LS_CUSTOMER CUS ON A.REF_ID = CUS.CUSTOMER_ID AND A.REQ_TYPE='D'
LEFT JOIN TR_PO_PAYMENT PM ON A.PAY_PHASE = PM.PAY_ID AND A.REQ_TYPE='P'
LEFT JOIN CM_DVDM DV ON A.DVDM_ID = DV.DVDM_ID
--LEFT JOIN PL_PROCESS PR ON A.PROCESS = PR.PROCESS_ID AND A.REQ_PAY_ID = PR.REQ_ID
LEFT JOIN
(
SELECT P.REQ_ID, P.PROCESS_DESC, P.APPROVE_DT AS APP_DT FROM PL_PROCESS P
INNER JOIN
(
SELECT MAX (PR.ID) AS ID, MAX(PR.REQ_ID) AS REQ_ID FROM PL_PROCESS PR
GROUP BY PR.REQ_ID
) PR ON PR.REQ_ID = P.REQ_ID AND P.ID = PR.ID
--WHERE P.REQ_ID =@p_REQ_PAY_ID
) AS PR ON A.REQ_PAY_ID = PR.REQ_ID
LEFT JOIN PL_REQUEST_PROCESS PC ON PC.REQ_ID= A.REQ_PAY_ID AND
(PC.ROLE_USER = @ROLE_ID OR EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =A.REQ_PAY_ID AND STATUS_JOB ='C' AND TLNAME =@p_USER_LOGIN))
AND PC.STATUS='C'
--LEFT JOIN PL_REQUEST_PROCESS PC ON PC.REQ_ID= A.REQ_PAY_ID AND PC.ROLE_USER IN (SELECT * FROM @TABLE_ROLE) AND PC.STATUS='C'
LEFT JOIN PL_REQUEST_PROCESS PC1 ON PC1.REQ_ID= A.REQ_PAY_ID AND PC1.STATUS='C'
LEFT JOIN PL_REQUEST_PROCESS_CHILD PC3 ON PC3.REQ_ID = A.REQ_PAY_ID AND PC3.STATUS_JOB ='C'
LEFT JOIN PL_REQUEST_PROCESS_CHILD PC4 ON PC4.REQ_ID = A.REQ_PAY_ID AND PC4.STATUS_JOB ='C'
LEFT JOIN TL_USER TL8 ON A.RECIVER_MONEY = TL8.TLNANME
LEFT JOIN TL_SYSROLE SR ON TL.RoleName = SR.ROLE_ID
LEFT JOIN CM_BRANCH BR_CORE ON TL2.TLSUBBRID = BR_CORE.BRANCH_ID
WHERE 1=1
AND (A.REQ_PAY_ID =@p_REQ_PAY_ID OR @p_REQ_PAY_ID IS NULL OR @p_REQ_PAY_ID ='')
AND(A.REQ_PAY_CODE LIKE N'%'+@p_REQ_PAY_CODE+'%' OR @p_REQ_PAY_CODE='' OR @p_REQ_PAY_CODE IS NULL)
AND(A.REQ_REASON LIKE N'%'+@p_REQ_REASON+'%' OR @p_REQ_REASON='' OR @p_REQ_REASON IS NULL)
AND(A.AUTH_STATUS=@p_AUTH_STATUS OR @p_AUTH_STATUS='' OR @p_AUTH_STATUS IS NULL OR
(A.REQ_TYPE ='I' AND A.AUTH_STATUS <>'A' AND EXISTS(SELECT * FROM @TABLE_ROLE WHERE ROLE_AUTH IN ('GDDV','PP','GDK','KTT','PTGD','TGD','HDQT','TKTGD','TKHDQT'))))
AND((A.MAKER_ID_KT IS NOT NULL AND @p_IS_UPDATE_KT='Y') --Lay danh sach chua duoc phong KT cap nhat va duoc cap nhat
OR((A.MAKER_ID_KT IS NULL AND @p_IS_UPDATE_KT='N'))OR @p_IS_UPDATE_KT IS NULL OR @p_IS_UPDATE_KT='')
AND(A.NOTES LIKE N'%'+@p_NOTES+'%' OR @p_NOTES='' OR @p_NOTES IS NULL)
--Luanlt-2019/10/14-Thêm Filter REQ_TYPE,FROMDATE TODATE REF_ID
AND(A.REQ_TYPE LIKE N'%'+@p_REQ_TYPE+'%' OR @p_REQ_TYPE = '' OR @p_REQ_TYPE IS NULL)
AND(CONVERT(DATE, A.CREATE_DT)>=CONVERT(DATE, @p_FRMDATE, 103)OR @p_FRMDATE IS NULL OR @p_FRMDATE='' OR A.CREATE_DT IS NULL OR A.REQ_DT IS NULL)
AND(CONVERT(DATE, A.CREATE_DT)<=CONVERT(DATE, @p_TODATE, 103)OR @p_TODATE IS NULL OR @p_TODATE='' OR A.CREATE_DT IS NULL OR A.REQ_DT IS NULL)
--Luanlt-2019/10/17-Thêm Filter REQ_PAY_CODE REQ_PAY_NAME BRANCH_ID DEP_ID KT_AUTH
AND(A.REQ_PAY_CODE LIKE N'%'+@p_REQ_PAY_CODE+'%' or @p_REQ_PAY_CODE='' OR @p_REQ_PAY_CODE IS NULL)
--AND(A.TRASFER_USER_RECIVE =@p_TRASFER_USER_RECIVE or @p_TRASFER_USER_RECIVE='' OR @p_TRASFER_USER_RECIVE IS NULL OR A.MAKER_ID_KT IS NOT NULL OR A.MAKER_ID_KT <>'')
AND(A.DEP_ID = @p_DEP_ID or @p_DEP_ID='' OR @p_DEP_ID IS NULL)
AND((A.AUTH_STATUS_KT=@p_AUTH_STATUS_KT OR @p_AUTH_STATUS_KT='' OR @p_AUTH_STATUS_KT IS NULL) OR (@p_AUTH_STATUS_KT ='P' AND A.AUTH_STATUS_KT IN ('P','S')))
AND(A.REF_ID =@p_REF_ID OR @p_REF_ID='' OR @p_REF_ID IS NULL)
---AND(( @p_IS_TRANSFER='Y' AND (EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = A.REQ_PAY_ID) OR ISNULL(A.AUTH_STATUS_KT,'') ='A')) --Lay danh sach chua duoc phong KT cap nhat va duoc cap nhat
--OR((@p_IS_TRANSFER='N' AND NOT EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = A.REQ_PAY_ID) AND ISNULL(A.AUTH_STATUS_KT,'') <>'A' ))OR @p_IS_TRANSFER IS NULL OR @p_IS_TRANSFER='')
AND(( @p_IS_TRANSFER='Y' AND
(@p_TYPE_SEARCH ='TKTGD' AND EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = A.REQ_PAY_ID AND PROCESS_ID ='1'))
OR(@p_TYPE_SEARCH ='TKHDQT' AND EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = A.REQ_PAY_ID AND PROCESS_ID ='2'))
OR (@p_TYPE_SEARCH ='KT' AND (EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = A.REQ_PAY_ID AND (PROCESS_ID IS NULL OR PROCESS_ID ='' OR PROCESS_ID ='3')) OR ISNULL(A.AUTH_STATUS_KT,'') ='A'))
) --Lay danh sach chua duoc phong KT cap nhat va duoc cap nhat
OR((@p_IS_TRANSFER='N' AND
(@p_TYPE_SEARCH ='TKTGD' AND NOT EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = A.REQ_PAY_ID AND PROCESS_ID ='1') AND ISNULL(A.AUTH_STATUS_KT,'') <>'A' )
OR (@p_TYPE_SEARCH ='TKHDQT' AND NOT EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = A.REQ_PAY_ID AND PROCESS_ID ='2') AND ISNULL(A.AUTH_STATUS_KT,'') <>'A' )
OR (@p_TYPE_SEARCH ='KT' AND NOT EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = A.REQ_PAY_ID AND (PROCESS_ID IS NULL OR PROCESS_ID ='' OR PROCESS_ID ='3')) AND ISNULL(A.AUTH_STATUS_KT,'') <>'A' ))
OR @p_IS_TRANSFER IS NULL OR @p_IS_TRANSFER=''))
AND(((@p_PROCESS='PM' AND (A.REQ_AMT- ISNULL(A.PAY_AMT,0.00)) >0)
AND (A.REQ_TYPE IN('I','D','P') OR (@DEP_ID_LG ='DEP000000000014' AND A.REQ_TYPE IN ('I','P','D'))) AND
((A.DEP_ID =@DEP_ID_LG OR A.MAKER_ID =@p_USER_LOGIN OR A.MAKER_ID IS NULL) OR(@BRANCH_TYPE_LG <>'HS' AND A.BRANCH_ID =@p_BRANCH_LOGIN) OR (@p_REQ_PAY_CODE IS NOT NULL AND @p_REQ_PAY_CODE <> '' AND A.REQ_PAY_CODE =@p_REQ_PAY_CODE)))
OR @p_PROCESS IS NULL OR @p_PROCESS ='')
AND((@p_LEVEL='ALL' AND A.BRANCH_ID IN(SELECT BRANCH_ID FROM @tmp))
OR((@p_LEVEL='UNIT' AND A.BRANCH_ID=@p_BRANCH_ID)OR(@p_BRANCH_ID='' OR @p_BRANCH_ID IS NULL) OR (@p_REQ_PAY_CODE IS NOT NULL AND @p_REQ_PAY_CODE <> '' AND A.REQ_PAY_CODE =@p_REQ_PAY_CODE)))
AND ((@p_FUNCTION ='KT' AND (EXISTS(SELECT TOP 1 * FROM PL_REQUEST_PROCESS_CHILD X WHERE X.REQ_ID = A.REQ_PAY_ID AND (X.TLNAME= @p_USER_LOGIN OR X.TLNAME =@p_TRASFER_USER_RECIVE))) OR A.CHECKER_ID_KT ='admin' OR A.AUTH_STATUS_KT ='A')
OR @p_FUNCTION IS NULL OR @p_FUNCTION ='' OR (@p_FUNCTION ='TF' AND A.AUTH_STATUS='A') OR @p_FUNCTION ='SIGN')
AND(A.MAKER_ID LIKE '%'+@p_MAKER_ID+'%' OR @p_MAKER_ID IS NULL OR @p_MAKER_ID ='')
AND(EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE TLNAME =@p_TRASFER_USER_RECIVE AND TYPE_JOB IN ('XL','KS','TP') AND REQ_ID = A.REQ_PAY_ID) OR @p_TRASFER_USER_RECIVE IS NULL OR @p_TRASFER_USER_RECIVE='')
AND
(
A.MAKER_ID =@p_USER_LOGIN OR (A.TRASFER_USER_RECIVE = @p_USER_LOGIN AND A.AUTH_STATUS NOT IN ('E','R'))
OR(
A.AUTH_STATUS <>'E' AND(
(@p_TYPE_SEARCH ='HC' AND @BRANCH_TYPE_LG ='HS' AND A.REQ_TYPE ='I'
AND (
(EXISTS(SELECT * FROM @TABLE_ROLE WHERE ROLE_AUTH IN ('GDDV','TP','KTT','TC')) AND (A.BRANCH_ID =@p_BRANCH_LOGIN OR A.BRANCH_ID IN (SELECT * FROM @BRANCH_AUTH))
AND (A.DEP_ID = @DEP_ID_LG OR A.DEP_ID IN (SELECT * FROM @DEP_AUTH))
AND ((@p_AUTH_STATUS ='A' AND ISNULL(PROCESS,'') ='0' AND
EXISTS(SELECT * FROM PL_PROCESS WHERE REQ_ID =A.REQ_PAY_ID AND PROCESS_DESC IN (N'Trưởng đơn vị xác nhận phiếu',N'Cấp phê duyệt trung gian xác nhận phiếu'))
OR (@p_AUTH_STATUS ='U' AND ISNULL(PROCESS,'')='') OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS =''))
)
OR
(@ROLE_ID IN ('NVMS','NVTT','TBP') AND (A.TRASFER_USER_RECIVE = @p_USER_LOGIN OR A.MAKER_ID =@p_MAKER_ID OR A.DEP_ID=@p_DEP_ID)
AND (A.AUTH_STATUS =@p_AUTH_STATUS OR ISNULL(@p_AUTH_STATUS,'') =''))
OR (EXISTS(SELECT * FROM @TABLE_ROLE WHERE ROLE_AUTH IN ('GDK','PTGD')) AND (A.DVDM_ID =@DVDM_ID OR (A.DVDM_ID IS NULL OR A.DVDM_ID ='')) AND EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID = A.REQ_PAY_ID
AND ROLE_USER IN (SELECT * FROM @TABLE_ROLE) AND A.BRANCH_CREATE ='DV0001' AND A.PROCESS<>'' AND A.PROCESS IS NOT NULL
AND ((@p_AUTH_STATUS ='A' AND STATUS IN ('P','A')) OR (@p_AUTH_STATUS = 'U' AND STATUS ='C') OR(ISNULL(@p_AUTH_STATUS,'') ='' AND STATUS IN ('C','P','A')))
))
OR (EXISTS(SELECT * FROM @TABLE_ROLE WHERE ROLE_AUTH IN ('TKTGD', 'TKHDQT','TGD','HDQT')) AND EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID = A.REQ_PAY_ID
AND ROLE_USER IN(SELECT * FROM @TABLE_ROLE) AND A.BRANCH_CREATE ='DV0001' AND A.PROCESS<>'' AND A.PROCESS IS NOT NULL
AND ((@p_AUTH_STATUS ='A' AND STATUS IN ('P','A')) OR
(@p_AUTH_STATUS = 'U' AND STATUS ='C') OR(ISNULL(@p_AUTH_STATUS,'') ='' ))
))
)-- NEU ROLE NAM TRONG DS CAC ROLE WORKFLOW
)
-- NGUOC LAI NEU LA TAM UNG KHAC
OR
(@p_TYPE_SEARCH ='HC' AND @BRANCH_TYPE_LG ='HS' AND A.REQ_TYPE <> 'I' AND
(A.TRASFER_USER_RECIVE = @p_USER_LOGIN OR (@ROLE_ID IN ('GDDV','GDK','KTT','TPTC','PP','TBP','TP','TC') AND (A.BRANCH_ID =@p_BRANCH_LOGIN OR A.BRANCH_ID IN(SELECT * FROM @BRANCH_AUTH)) AND (A.DEP_ID =@DEP_ID_LG OR A.DEP_ID IN (SELECT * FROM @DEP_AUTH))
AND( A.TRASFER_USER_RECIVE IS NULL OR A.TRASFER_USER_RECIVE ='' OR
(A.TRASFER_USER_RECIVE IS NOT NULL AND A.TRASFER_USER_RECIVE <>'' AND A.PROCESS IS NOT NULL AND A.PROCESS <>'')))
OR (@ROLE_ID NOT IN ('GDDV','GDK','KTT','TPTC','PP','TBP','TP','TC') AND (A.DEP_ID =@DEP_ID_LG OR A.DEP_ID IN (SELECT * FROM @DEP_AUTH)))
))
-- HẾT KIỂM TRA LIÊN QUAN ĐẾN LOẠI TẠM ỨNG
OR(@p_TYPE_SEARCH ='HC' AND @BRANCH_TYPE_LG = 'CN' AND (@ROLE_ID IN ('GDDV','PGD','TPGD','PPGD') AND
(
(A.TRASFER_USER_RECIVE IS NOT NULL AND A.TRASFER_USER_RECIVE <>'' AND A.PROCESS IS NOT NULL AND A.PROCESS <>'')
OR A.TRASFER_USER_RECIVE ='' OR A.TRASFER_USER_RECIVE IS NULL)
OR ((A.BRANCH_CREATE <> @p_BRANCH_LOGIN AND A.TRASFER_USER_RECIVE IS NOT NULL AND A.TRASFER_USER_RECIVE <>'') OR A.BRANCH_CREATE = @p_BRANCH_LOGIN)
AND A.BRANCH_ID IN (SELECT * FROM @tmp)))
OR (@p_TYPE_SEARCH ='HC' AND @BRANCH_TYPE_LG = 'CN' AND A.BRANCH_ID IN (SELECT * FROM @tmp))
OR(@p_TYPE_SEARCH ='HC' AND @BRANCH_TYPE_LG = 'PGD' AND (@ROLE_ID IN ('GDDV','TPGD','PPGD','PGD') AND A.BRANCH_ID =@p_BRANCH_LOGIN))
OR(@p_TYPE_SEARCH ='HC' AND (A.DVDM_ID IS NOT NULL AND A.DVDM_ID <>'' AND A.DVDM_ID =@DVDM_ID AND A.PROCESS IS NOT NULL AND A.PROCESS <>'' AND
@ROLE_ID IN (SELECT ROLE_USER FROM PL_REQUEST_PROCESS WHERE REQ_ID =A.REQ_PAY_ID))
OR(A.DEP_ID IN (SELECT * FROM @TMP_DEP) AND A.PROCESS IS NOT NULL AND A.PROCESS <>'' AND @ROLE_ID <> 'TKTGD'
AND @ROLE_ID IN (SELECT ROLE_USER FROM PL_REQUEST_PROCESS WHERE REQ_ID =A.REQ_PAY_ID)))
--OR(@p_TYPE_SEARCH ='HC' AND (@ROLE_ID IN (SELECT ROLE_USER FROM PL_REQUEST_PROCESS WHERE REQ_ID= A.REQ_PAY_ID AND ROLE_USER IN ('TGD','HDQT','TKTGD','TKHDQT') AND STATUS ='C')))
OR(@p_TYPE_SEARCH='KT' AND A.BRANCH_ID IN (SELECT BRANCH_ID from @tmp_Login))
OR(@p_TYPE_SEARCH='HC' AND (@ROLE_ID IN ('KSV','GDV') OR @DEP_ID_LG ='DEP000000000022') AND A.BRANCH_ID IN (SELECT BRANCH_ID from @tmp_Login))
OR(@p_TYPE_SEARCH='HC' AND EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = A.REQ_PAY_ID AND TLNAME =@p_USER_LOGIN AND TYPE_JOB ='XL'))
OR(@p_TYPE_SEARCH IN ('TK','TKTGD','TKHDQT') AND A.PROCESS<>'' AND A.PROCESS IS NOT NULL
AND ( (@p_FUNCTION ='TF' AND EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID = A.REQ_PAY_ID AND ROLE_USER =@ROLE_ID AND STATUS ='C'))
OR (ISNULL(@p_FUNCTION,'') <> 'TF' AND EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID = A.REQ_PAY_ID AND ROLE_USER =@ROLE_ID AND
((@p_IS_TRANSFER ='N' AND STATUS ='C') OR (@p_IS_TRANSFER <>'N' AND STATUS IN ('C','P'))))))
)
OR(@p_TYPE_SEARCH='PAY' AND (A.REQ_AMT -ISNULL(A.PAY_AMT,0)) >0 AND (
(@BRANCH_TYPE_LG ='HS' AND (A.DEP_ID =@DEP_ID_LG OR A.MAKER_ID =@p_USER_LOGIN OR A.MAKER_ID IS NULL OR 1=1))
OR (@BRANCH_TYPE_LG <> 'HS' AND A.BRANCH_ID = @p_BRANCH_LOGIN)
OR (@p_REQ_PAY_CODE IS NOT NULL AND @p_REQ_PAY_CODE <> '' AND A.REQ_PAY_CODE =@p_REQ_PAY_CODE)))
)
OR(@p_TYPE_SEARCH='HC' AND (@ROLE_ID IN ('KSV','GDV') OR @DEP_ID_LG ='DEP000000000022') AND A.BRANCH_ID IN (SELECT BRANCH_ID from @tmp_Login))
))
AND (
(A.PAY_AMT = A.REQ_AMT AND (@p_TEMP_PAY_STATUS = 'HT'))
OR (A.PAY_AMT = 0 AND (@p_TEMP_PAY_STATUS = 'DCHU') )
OR (A.PAY_AMT <> 0 and A.PAY_AMT < A.REQ_AMT AND (@p_TEMP_PAY_STATUS = 'DHU'))
OR @p_TEMP_PAY_STATUS IS NULL OR @p_TEMP_PAY_STATUS = ''
)
AND (A.RECORD_STATUS ='1' AND A.AUTH_STATUS <>'X')
ORDER BY A.CREATE_DT DESC
-- PAGING END
END;
END -- PAGING
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Altering [dbo].[BUD_CONTRACT_MASTER_Ins]'
GO
/*
INSERT INTO SYS_PREFIX(ID,Prefix,[Description]) VALUES('BUD_CONTRACT_MASTER','UMA','')
INSERT INTO SYS_CODEMASTERS(Prefix,CurValue,Active) VALUES('UMA','1','1')
INSERT INTO SYS_PREFIX(ID,Prefix,[Description]) VALUES('BUD_CONTRACT_DT','UDT','')
INSERT INTO SYS_CODEMASTERS(Prefix,CurValue,Active) VALUES('UDT','1','1')
INSERT INTO SYS_PREFIX(ID,Prefix,[Description]) VALUES('BUD_CONTACT','UCO','')
INSERT INTO SYS_CODEMASTERS(Prefix,CurValue,Active) VALUES('UCO','1','1')
INSERT INTO SYS_PREFIX(ID,Prefix,[Description]) VALUES('BUD_UTIL_LOG','ULO','')
INSERT INTO SYS_CODEMASTERS(Prefix,CurValue,Active) VALUES('ULO','1','1')
*/
ALTER PROCEDURE [dbo].[BUD_CONTRACT_MASTER_Ins]
@p_CONTRACT_ID varchar(15) = NULL,
@p_BUILDING_ID varchar(15) = NULL,
@p_CONTRACT_NO nvarchar(100) = NULL,
@p_VERSION_NO int = NULL,
@p_CUST_ID varchar(15) = NULL,
@p_INPUT_DT VARCHAR(20) = NULL,
@p_AMEND_DT VARCHAR(20) = NULL,
@p_FROM_DT VARCHAR(20) = NULL,
@p_TO_DATE VARCHAR(20) = NULL,
@p_CLOSE_DT VARCHAR(20) = NULL,
@p_MONTHS int=0,
@p_RENT_PRICE numeric(18) = NULL,
@p_NOTES NVARCHAR(MAX)= NULL,
@p_BRANCH_ID VARCHAR(15) = NULL,
@p_RECORD_STATUS varchar(1) = NULL,
@p_AUTH_STATUS varchar(1) = NULL,
@p_STATUS VARCHAR(1) = NULL,
@p_MAKER_ID varchar(15) = NULL,
@p_CREATE_DT VARCHAR(20) = NULL,
@p_CHECKER_ID varchar(15) = NULL,
@p_APPROVE_DT VARCHAR(20) = NULL,
@p_XML_TEMP xml = NULL,
@p_VAT DECIMAL(18,0),
@p_VAT_AMT DECIMAL(18,0),
@p_DEPOSITS_AMT DECIMAL(18,0),
@p_PAYMENT_SHEDULE NVARCHAR(500),
@p_IS_SEND_APPR VARCHAR(15),
@p_SEND_APPR_DT VARCHAR(20),
@p_SIGN_USER VARCHAR(15),
@p_SIGN_DT VARCHAR(15)
AS
---BAODNQ 30/12/2021:Thêm cột vào bảng BUD_CONTRACT_MASTER-------
IF (EXISTS ( SELECT * FROM BUD_CONTRACT_MASTER WHERE CONTRACT_NO=@p_CONTRACT_NO AND VERSION_NO=@p_VERSION_NO))
BEGIN
SELECT '-1' Result, '' CONTRACT_ID, N'Số hợp đồng này đã tồn tại' ErrorDesc
RETURN '0'
END
BEGIN TRANSACTION
DECLARE @l_CONTRACT_ID VARCHAR(15)
IF(LEN( @p_CONTRACT_ID)=0 OR @p_CONTRACT_ID IS NULL)
EXEC SYS_CodeMasters_Gen 'BUD_CONTRACT_MASTER', @p_CONTRACT_ID out
IF @p_CONTRACT_ID='' OR @p_CONTRACT_ID IS NULL GOTO ABORT
INSERT INTO BUD_CONTRACT_MASTER([CONTRACT_ID],[BUILDING_ID],[CONTRACT_NO],[VERSION_NO],[CUST_ID],
[INPUT_DT],[AMEND_DT],[FROM_DT],[TO_DATE],[CLOSE_DT],[MONTHS],[RENT_PRICE],[NOTES],
[BRANCH_ID],[RECORD_STATUS],[AUTH_STATUS],[STATUS],[MAKER_ID],[CREATE_DT],[CHECKER_ID],
[APPROVE_DT],[XML_TEMP],[VAT],[VAT_AMT],[DEPOSITS_AMT],[PAYMENT_SHEDULE],[IS_SEND_APPR],[SEND_APPR_DT],
[SIGN_USER], [SIGN_DT])
VALUES(@p_CONTRACT_ID ,@p_BUILDING_ID ,@p_CONTRACT_NO ,@p_VERSION_NO ,@p_CUST_ID ,CONVERT(DATE, @p_INPUT_DT, 103) ,
CONVERT(DATE, @p_AMEND_DT, 103) ,CONVERT(DATE, @p_FROM_DT, 103) ,CONVERT(DATE, @p_TO_DATE, 103) ,
CONVERT(DATE, @p_CLOSE_DT, 103) ,@p_MONTHS ,@p_RENT_PRICE ,@p_NOTES,@p_BRANCH_ID,
'1' ,'U','N',@p_MAKER_ID ,CONVERT(DATETIME, @p_CREATE_DT, 103) ,@p_CHECKER_ID ,NULL ,@p_XML_TEMP,@p_VAT,
(@p_VAT*@p_RENT_PRICE)/100,@p_DEPOSITS_AMT,@p_PAYMENT_SHEDULE,@p_IS_SEND_APPR,
@p_SEND_APPR_DT,@p_SIGN_USER,@p_SIGN_DT)
-----------------------------------------------------------------------------------------------------
----INSERT VAO BANG BUD_CONTACT
DELETE FROM BUD_CONTACT WHERE CONTRACT_ID = @p_CONTRACT_ID
INSERT INTO BUD_CONTACT VALUES(@p_CONTRACT_ID,@p_VERSION_NO,@p_BUILDING_ID,@p_CONTRACT_NO,@p_CUST_ID,CONVERT(DATE, @p_CREATE_DT, 103))
IF @@Error <> 0 GOTO ABORT
Declare @hdoc1 INT
----BAODNQ : Thêm các cột vào bảng BUD_CONTRACT_DT---
DECLARE
@d_CONTRACT_DTID VARCHAR(15),
@d_BUILD_ID VARCHAR(15),
@d_VERSION_NO INT,
@d_BUILDING_AREA_ID VARCHAR(15),
@d_RENT_AREA DECIMAL,
@d_RENT_AREA_APP DECIMAL,
@d_AREA_REMAIN DECIMAL,
@d_RENT_PRICE DECIMAL,
@d_NOTES NVARCHAR(MAX),
@d_DIEN_TICH_TANG DECIMAL,
@d_DIEN_TICH_SD_NOI_BO DECIMAL,
@d_DIEN_TICH_DA_CHO_THUE DECIMAL,
@d_DIEN_TICH_CON_LAI DECIMAL,
@d_DIEN_TICH_CAN_SD DECIMAL,
@d_REASON NVARCHAR(MAX),
@d_PRICE DECIMAL,
@d_TOTAL_AMT DECIMAL,
@d_DIEN_TICH_CON_LAI_FINAL DECIMAL,
@d_BRANCH_ID NVARCHAR(15),
@d_DEP_ID NVARCHAR(15)
Exec sp_xml_preparedocument @hdoc1 Output,@p_XML_TEMP
DECLARE XmlDataDoc CURSOR FOR
SELECT *
FROM OPENXML(@hdoc1,'/Root/XmlData1',2)
WITH
(
----BAODNQ : Thêm các cột vào bảng BUD_CONTRACT_DT---
CONTRACT_DTID VARCHAR(15),
BUILD_ID VARCHAR(15),
VERSION_NO INT,
BUILDING_AREA_ID VARCHAR(15),
RENT_AREA DECIMAL,
RENT_AREA_APP DECIMAL,
AREA_REMAIN DECIMAL,
RENT_PRICE DECIMAL,
NOTES NVARCHAR(MAX),
DIEN_TICH_TANG DECIMAL,
DIEN_TICH_SD_NOI_BO DECIMAL,
DIEN_TICH_DA_CHO_THUE DECIMAL,
DIEN_TICH_CON_LAI DECIMAL,
DIEN_TICH_CAN_SD DECIMAL,
REASON NVARCHAR(MAX),
PRICE DECIMAL,
TOTAL_AMT DECIMAL,
DIEN_TICH_CON_LAI_FINAL DECIMAL,
BRANCH_ID NVARCHAR(15),
DEP_ID NVARCHAR(15)
)
OPEN XmlDataDoc
----BAODNQ : Thêm các cột vào bảng BUD_CONTRACT_DT---
FETCH NEXT FROM XmlDataDoc INTO
@d_CONTRACT_DTID,
@d_BUILD_ID,
@d_VERSION_NO,
@d_BUILDING_AREA_ID,
@d_RENT_AREA,
@d_RENT_AREA_APP,
@d_AREA_REMAIN,
@d_RENT_PRICE,
@d_NOTES,
@d_DIEN_TICH_TANG,
@d_DIEN_TICH_SD_NOI_BO,
@d_DIEN_TICH_DA_CHO_THUE,
@d_DIEN_TICH_CON_LAI,
@d_DIEN_TICH_CAN_SD,
@d_REASON,
@d_PRICE,
@d_TOTAL_AMT,
@d_DIEN_TICH_CON_LAI_FINAL,
@d_BRANCH_ID,
@d_DEP_ID
WHILE @@FETCH_STATUS = 0
BEGIN
---BAODNQ: insert thêm vào các cột trong bảng BUD_CONTRACT_DT---
EXEC SYS_CodeMasters_Gen 'BUD_CONTRACT_DT', @d_CONTRACT_DTID out
IF @d_CONTRACT_DTID='' OR @d_CONTRACT_DTID IS NULL GOTO ABORT
INSERT INTO BUD_CONTRACT_DT([CONTRACT_DTID],[BUILD_ID],[CONTRACT_ID],[VERSION_NO],[BUILDING_AREA_ID],[RENT_AREA],[RENT_AREA_APP],
[AREA_REMAIN],[RENT_PRICE],[NOTES], [DIEN_TICH_TANG], [DIEN_TICH_SD_NOI_BO],[DIEN_TICH_DA_CHO_THUE],[DIEN_TICH_CON_LAI],
[DIEN_TICH_CAN_SD],[REASON],[PRICE],[TOTAL_AMT],[DIEN_TICH_CON_LAI_FINAL],[BRANCH_ID],[DEP_ID])
VALUES(@d_CONTRACT_DTID ,@d_BUILD_ID ,@p_CONTRACT_ID ,@d_VERSION_NO ,@d_BUILDING_AREA_ID ,@d_RENT_AREA,0,@d_AREA_REMAIN,@d_RENT_PRICE,@d_NOTES,
@d_DIEN_TICH_TANG,@d_DIEN_TICH_SD_NOI_BO,@d_DIEN_TICH_DA_CHO_THUE,@d_DIEN_TICH_CON_LAI,@d_DIEN_TICH_CAN_SD,@d_REASON,
@d_PRICE,@d_TOTAL_AMT,@d_DIEN_TICH_CON_LAI_FINAL,@d_BRANCH_ID,@d_DEP_ID)
IF @@Error <> 0 GOTO ABORT
FETCH NEXT FROM XmlDataDoc INTO
@d_CONTRACT_DTID,
@d_BUILD_ID,
@d_VERSION_NO,
@d_BUILDING_AREA_ID,
@d_RENT_AREA,
@d_RENT_AREA_APP,
@d_AREA_REMAIN,
@d_RENT_PRICE,
@d_NOTES,
@d_DIEN_TICH_TANG,
@d_DIEN_TICH_SD_NOI_BO,
@d_DIEN_TICH_DA_CHO_THUE,
@d_DIEN_TICH_CON_LAI,
@d_DIEN_TICH_CAN_SD,
@d_REASON,
@d_PRICE,
@d_TOTAL_AMT,
@d_DIEN_TICH_CON_LAI_FINAL,
@d_BRANCH_ID,
@d_DEP_ID
END
CLOSE XmlDataDoc
DEALLOCATE XmlDataDoc
---BAODNQ: sửa lấy tổng thành TOTAL_AMT---
SET @p_RENT_PRICE = (SELECT SUM(TOTAL_AMT) FROM BUD_CONTRACT_DT
WHERE CONTRACT_ID =@p_CONTRACT_ID
AND VERSION_NO=@p_VERSION_NO)
UPDATE BUD_CONTRACT_MASTER
--SET RENT_PRICE=@p_RENT_PRICE*MONTHS
SET RENT_PRICE = @p_RENT_PRICE
WHERE CONTRACT_ID=@p_CONTRACT_ID AND VERSION_NO=@p_VERSION_NO
---BAODNQ 29/12/2021: Insert vào PL_PROCESS lưu lịch sử xử lý
INSERT INTO dbo.PL_PROCESS
(
REQ_ID,
PROCESS_ID,
CHECKER_ID,
APPROVE_DT,
PROCESS_DESC,
NOTES
)
VALUES
( @p_CONTRACT_ID,
'INSERT',
@p_MAKER_ID,
GETDATE(),
N'Thêm mới thông tin khai báo DTSD nội bộ thành công' ,
N'Thêm mới thông tin khai báo DTSD nội bộ'
)
COMMIT TRANSACTION
SELECT '0' as Result, @p_CONTRACT_ID CONTRACT_ID, '' ErrorDesc
RETURN '0'
ABORT:
BEGIN
--CLOSE XmlDataDoc
--DEALLOCATE XmlDataDoc
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' CONTRACT_ID, '' ErrorDesc
RETURN '-1'
End
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Altering [dbo].[BUD_MASTER_Search]'
GO
ALTER PROCEDURE [dbo].[BUD_MASTER_Search]
@p_BUILDING_ID varchar(15) = NULL,
@p_ASSET_ID varchar(15) = NULL,
@p_BUILDING_NAME nvarchar(1000) = NULL,
@p_BRANCH_ID varchar(15) = NULL,
@p_ADDRESS nvarchar(800) = NULL,
@p_OWNER_OR_RENT varchar(1) = NULL,
@p_NUM_FLOOR int = NULL,
@p_AREA numeric(18) = NULL,
@p_TOTAL_AREA numeric(18) = NULL,
@p_RENT_TOTAL_AREA numeric(18) = NULL,
@p_UTILZED_AREA numeric(18) = NULL,
@p_NOTES nvarchar(MAX) = NULL,
@p_RECORD_STATUS varchar(1) = NULL,
@p_AUTH_STATUS varchar(1) = NULL,
@p_MAKER_ID varchar(15) = NULL,
@p_CREATE_DT VARCHAR(20) = NULL,
@p_CHECKER_ID varchar(15) = NULL,
@p_APPROVE_DT VARCHAR(20) = NULL,
@p_XML_TEMP xml = NULL,
@p_RENT_AMT DECIMAL(18,0) =NULL,
@p_DEPOSITS_AMT DECIMAL(18,0) =NULL,
@p_RENT_TIME int = NULL,
@p_TOP INT = 10,
@p_FROM_FLOOR int= NULL,
@p_TO_FLOOR int = NULL,
@p_FROMDATE VARCHAR(20) = NULL,
@p_TODATE VARCHAR(20)= NULL,
@p_LEVEL VARCHAR(15)='ALL',
@p_CUSTOMER_ID VARCHAR(15) = NULL,
@p_USER_LOGIN VARCHAR(15)
AS
--datmq:Thêm cấu trúc phân trang---
---BAODNQ: Thêm tham số tìm kiếm theo CUSTOMER_ID + kết bảng TR_CONTRACT, LS_CUSTOMER--
BEGIN -- PAGING
declare @p_BRANCH_LOGIN VARCHAR(15)
set @p_BRANCH_LOGIN = (select TLSUBBRID from TL_USER where TLNANME=@p_USER_LOGIN)
IF @p_BRANCH_ID IS NOT NULL AND @p_BRANCH_ID <> ''
SET @p_BRANCH_LOGIN = @p_BRANCH_ID
DECLARE @p_USER_LOGIN_ROLE VARCHAR(50)
SET @p_USER_LOGIN_ROLE = (SELECT RoleName FROM TL_USER WHERE TLNANME = @p_USER_LOGIN)
DECLARE @tmp table(BRANCH_ID varchar(15))
insert into @tmp SELECT BRANCH_ID FROM [dbo].[CM_BRANCH_GETCHILDID](@p_BRANCH_LOGIN)
IF(@p_TOP IS NULL OR @P_TOP = '' OR @P_TOP = 0)
-- PAGING BEGIN
SELECT A.*,B.AUTH_STATUS_NAME,C.BRANCH_NAME,''HINHTHUC_SOHUU,
(SELECT SUM(DT.INTERNAL_AREA) FROM BUD_AREA_DT DT WHERE A.BUILDING_ID= DT.BUILD_ID) INTERNAL_ARE,
D.CONTRACT_CODE, D.CONTRACT_NAME, E.CUSTOMER_NAME,F.TLFullName AS SIGN_USER_FULLNAME
-- SELECT END
FROM BUD_MASTER A
LEFT JOIN CM_AUTH_STATUS B ON A.AUTH_STATUS=B.AUTH_STATUS
LEFT JOIN CM_BRANCH C ON A.BRANCH_ID = C.BRANCH_ID
LEFT JOIN TR_CONTRACT D ON A.CONTRACT_ID = D.CONTRACT_ID
LEFT JOIN LS_CUSTOMER E ON D.CUST_ID = E.CUSTOMER_ID
LEFT JOIN TL_USER F ON A.SIGN_USER = F.TLNANME
WHERE 1 = 1
AND (A.BUILDING_ID LIKE '%' + @p_BUILDING_ID + '%' OR @p_BUILDING_ID IS NULL OR @p_BUILDING_ID = '')
AND (A.ASSET_ID LIKE '%' + @p_ASSET_ID + '%' OR @p_ASSET_ID IS NULL OR @p_ASSET_ID = '')
AND (A.BUILDING_NAME LIKE '%' + @p_BUILDING_NAME + '%' OR @p_BUILDING_NAME IS NULL OR @p_BUILDING_NAME = '')
AND (A.BRANCH_ID LIKE '%' + @p_BRANCH_ID + '%' OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '')
AND (A.ADDRESS LIKE '%' + @p_ADDRESS + '%' OR @p_ADDRESS IS NULL OR @p_ADDRESS = '')
AND (A.OWNER_OR_RENT LIKE '%' + @p_OWNER_OR_RENT + '%' OR @p_OWNER_OR_RENT IS NULL OR @p_OWNER_OR_RENT = '')
AND (A.NUM_FLOOR >= @p_FROM_FLOOR OR @p_FROM_FLOOR IS NULL OR @p_FROM_FLOOR = 0)
AND (A.NUM_FLOOR <= @p_TO_FLOOR OR @p_TO_FLOOR IS NULL OR @p_TO_FLOOR = 0)
AND (A.AREA = @p_AREA OR @p_AREA IS NULL OR @p_AREA = '')
AND (A.TOTAL_AREA = @p_TOTAL_AREA OR @p_TOTAL_AREA IS NULL OR @p_TOTAL_AREA = '')
AND (A.RENT_TOTAL_AREA = @p_RENT_TOTAL_AREA OR @p_RENT_TOTAL_AREA IS NULL OR @p_RENT_TOTAL_AREA = '')
AND (A.UTILZED_AREA = @p_UTILZED_AREA OR @p_UTILZED_AREA IS NULL OR @p_UTILZED_AREA = '')
AND (A.NOTES LIKE '%' + @p_NOTES + '%' OR @p_NOTES IS NULL OR @p_NOTES = '')
AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '')
AND (A.AUTH_STATUS LIKE '%' + @p_AUTH_STATUS + '%' OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '')
AND (A.CREATE_DT =CONVERT(DATETIME, @p_CREATE_DT, 103) OR @p_CREATE_DT IS NULL OR @p_CREATE_DT = '')
AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '')
AND (A.APPROVE_DT =CONVERT(DATETIME, @p_APPROVE_DT, 103) OR @p_APPROVE_DT IS NULL OR @p_APPROVE_DT = '')
AND (A.BRANCH_ID IN (SELECT BRANCH_ID FROM @tmp))
AND (D.CUST_ID LIKE '%' + @p_CUSTOMER_ID + '%' OR @p_CUSTOMER_ID IS NULL OR @p_CUSTOMER_ID = '')
AND (A.MAKER_ID = @p_USER_LOGIN
OR (A.SIGN_USER = @p_USER_LOGIN AND A.IS_SEND_APPR = 'Y')
OR ((@p_USER_LOGIN_ROLE IN ('GDDV','PGD', 'TP', 'PP','TPGD','PPGD'))
AND A.IS_SEND_APPR = 'Y'
AND (
(ISNULL(A.SIGN_USER,'') ='' OR ((ISNULL(A.SIGN_USER,'') <>'' AND A.SIGN_DT IS NOT NULL )))
)
)
)
-- PAGING END
ELSE
-- PAGING BEGIN
SELECT TOP(CONVERT(INT,@P_TOP))A.*,B.AUTH_STATUS_NAME,C.BRANCH_NAME,''HINHTHUC_SOHUU,
(SELECT SUM(DT.INTERNAL_AREA) FROM BUD_AREA_DT DT WHERE A.BUILDING_ID= DT.BUILD_ID) INTERNAL_ARE,
D.CONTRACT_CODE, D.CONTRACT_NAME, E.CUSTOMER_NAME,F.TLFullName AS SIGN_USER_FULLNAME
-- SELECT END
FROM BUD_MASTER A
LEFT JOIN CM_AUTH_STATUS B ON A.AUTH_STATUS=B.AUTH_STATUS
LEFT JOIN CM_BRANCH C ON A.BRANCH_ID = C.BRANCH_ID
LEFT JOIN TR_CONTRACT D ON A.CONTRACT_ID = D.CONTRACT_ID
LEFT JOIN LS_CUSTOMER E ON D.CUST_ID = E.CUSTOMER_ID
LEFT JOIN TL_USER F ON A.SIGN_USER = F.TLNANME
WHERE 1 = 1
AND (A.BUILDING_ID LIKE '%' + @p_BUILDING_ID + '%' OR @p_BUILDING_ID IS NULL OR @p_BUILDING_ID = '')
AND (A.ASSET_ID LIKE '%' + @p_ASSET_ID + '%' OR @p_ASSET_ID IS NULL OR @p_ASSET_ID = '')
AND (A.BUILDING_NAME LIKE N'%' + @p_BUILDING_NAME + '%' OR @p_BUILDING_NAME IS NULL OR @p_BUILDING_NAME = '')
AND (A.BRANCH_ID LIKE '%' + @p_BRANCH_ID + '%' OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '')
AND (A.ADDRESS LIKE '%' + @p_ADDRESS + '%' OR @p_ADDRESS IS NULL OR @p_ADDRESS = '')
AND (A.OWNER_OR_RENT LIKE '%' + @p_OWNER_OR_RENT + '%' OR @p_OWNER_OR_RENT IS NULL OR @p_OWNER_OR_RENT = '')
AND (A.NUM_FLOOR >= @p_FROM_FLOOR OR @p_FROM_FLOOR IS NULL OR @p_FROM_FLOOR = 0)
AND (A.NUM_FLOOR <= @p_TO_FLOOR OR @p_TO_FLOOR IS NULL OR @p_TO_FLOOR = 0)
AND (A.AREA = @p_AREA OR @p_AREA IS NULL OR @p_AREA = 0)
AND (A.TOTAL_AREA = @p_TOTAL_AREA OR @p_TOTAL_AREA IS NULL OR @p_TOTAL_AREA = 0)
AND (A.RENT_TOTAL_AREA = @p_RENT_TOTAL_AREA OR @p_RENT_TOTAL_AREA IS NULL OR @p_RENT_TOTAL_AREA = 0)
AND (A.UTILZED_AREA = @p_UTILZED_AREA OR @p_UTILZED_AREA IS NULL OR @p_UTILZED_AREA = 0)
AND (A.NOTES LIKE '%' + @p_NOTES + '%' OR @p_NOTES IS NULL OR @p_NOTES = '')
AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '')
AND (A.AUTH_STATUS LIKE '%' + @p_AUTH_STATUS + '%' OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '')
AND (A.CREATE_DT =CONVERT(DATETIME, @p_CREATE_DT, 103) OR @p_CREATE_DT IS NULL OR @p_CREATE_DT = '')
AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '')
AND (A.APPROVE_DT >=CONVERT(DATE, @p_FROMDATE, 103) OR @p_FROMDATE IS NULL OR @p_FROMDATE = '')
AND (A.APPROVE_DT <=CONVERT(DATE, @p_TODATE, 103) OR @p_TODATE IS NULL OR @p_TODATE = '')
--AND (A.BRANCH_ID IN (SELECT BRANCH_ID FROM @tmp) OR @p_MAKER_ID IS NULL OR @p_MAKER_ID ='')
AND (D.CUST_ID LIKE '%' + @p_CUSTOMER_ID + '%' OR @p_CUSTOMER_ID IS NULL OR @p_CUSTOMER_ID = '')
AND (A.MAKER_ID = @p_USER_LOGIN
OR (A.SIGN_USER = @p_USER_LOGIN AND A.IS_SEND_APPR = 'Y')
OR ((@p_USER_LOGIN_ROLE IN ('GDDV','PGD', 'TP', 'PP','TPGD','PPGD'))
AND A.IS_SEND_APPR = 'Y'
AND (
(ISNULL(A.SIGN_USER,'') ='' OR ((ISNULL(A.SIGN_USER,'') <>'' AND A.SIGN_DT IS NOT NULL )))
)
)
)
ORDER BY A.CREATE_DT DESC
-- PAGING END
END -- PAGING
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Altering [dbo].[BUD_CONTRACT_MASTER_Upd]'
GO
/*INSERT INTO SYS_PREFIX(ID,Prefix,[Description]) VALUES('BUD_CONTRACT_MASTER','UMA','')
INSERT INTO SYS_CODEMASTERS(Prefix,CurValue,Active) VALUES('UMA','1','1')
INSERT INTO SYS_PREFIX(ID,Prefix,[Description]) VALUES('BUD_CONTRACT_DT','UDT','')
INSERT INTO SYS_CODEMASTERS(Prefix,CurValue,Active) VALUES('UDT','1','1')
*/
ALTER PROCEDURE [dbo].[BUD_CONTRACT_MASTER_Upd]
@p_CONTRACT_ID varchar(15) = NULL,
@p_BUILDING_ID varchar(15) = NULL,
@p_CONTRACT_NO nvarchar(100) = NULL,
@p_VERSION_NO int = NULL,
@p_CUST_ID varchar(15) = NULL,
@p_INPUT_DT VARCHAR(20) = NULL,
@p_AMEND_DT VARCHAR(20) = NULL,
@p_FROM_DT VARCHAR(20) = NULL,
@p_TO_DATE VARCHAR(20) = NULL,
@p_CLOSE_DT VARCHAR(20) = NULL,
@p_MONTHS int = NULL,
@p_RENT_PRICE numeric(18) = NULL,
@p_NOTES NVARCHAR(MAX)= NULL,
@p_BRANCH_ID VARCHAR(15) = NULL,
@p_RECORD_STATUS varchar(1) = NULL,
@p_AUTH_STATUS varchar(1) = NULL,
@p_STATUS VARCHAR(1) = NULL,
@p_MAKER_ID varchar(15) = NULL,
@p_CREATE_DT VARCHAR(20) = NULL,
@p_CHECKER_ID varchar(15) = NULL,
@p_APPROVE_DT VARCHAR(20) = NULL,
@p_XML_TEMP xml = NULL,
@p_VAT DECIMAL(18,0),
@p_VAT_AMT DECIMAL(18,0),
@p_DEPOSITS_AMT DECIMAL(18,0),
@p_PAYMENT_SHEDULE NVARCHAR(500),
@p_IS_SEND_APPR VARCHAR(15),
@p_SEND_APPR_DT VARCHAR(20),
@p_SIGN_USER VARCHAR(15),
@p_SIGN_DT VARCHAR(15)
AS
/*
--Validation is here
DECLARE @ERRORSYS NVARCHAR(15) = ''
IF ( NOT EXISTS ( SELECT * FROM BUD_CONTRACT_MASTER WHERE VERSION_NO=@p_VERSION_NO
SET @ERRORSYS = ''
IF @ERRORSYS <> ''
BEGIN
SELECT ErrorCode Result, '' VERSION_NO, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS
RETURN '0'
END
*/
BEGIN TRANSACTION
IF (@p_STATUS = 'C')
BEGIN
UPDATE BUD_CONTRACT_MASTER SET
STATUS= @p_STATUS,
AUTH_STATUS='U',
APPROVE_DT=NULL,
CHECKER_ID=NULL
WHERE CONTRACT_ID=@p_CONTRACT_ID AND VERSION_NO=@p_VERSION_NO
END
ELSE
BEGIN
DELETE FROM BUD_CONTRACT_DT WHERE CONTRACT_ID=@p_CONTRACT_ID AND VERSION_NO= @p_VERSION_NO
Declare @hdoc1 INT
---BAODNQ: thêm các cột trong bảng BUD_CONTRACT_DT vào XML---
DECLARE
@d_CONTRACT_DTID VARCHAR(15),
@d_BUILD_ID VARCHAR(15),
@d_VERSION_NO INT,
@d_BUILDING_AREA_ID VARCHAR(15),
@d_RENT_AREA DECIMAL,
@d_RENT_AREA_APP DECIMAL,
@d_AREA_REMAIN DECIMAL,
@d_RENT_PRICE DECIMAL,
@d_NOTES NVARCHAR(MAX),
@d_DIEN_TICH_TANG DECIMAL,
@d_DIEN_TICH_SD_NOI_BO DECIMAL,
@d_DIEN_TICH_DA_CHO_THUE DECIMAL,
@d_DIEN_TICH_CON_LAI DECIMAL,
@d_DIEN_TICH_CAN_SD DECIMAL,
@d_REASON NVARCHAR(MAX),
@d_PRICE DECIMAL,
@d_TOTAL_AMT DECIMAL,
@d_DIEN_TICH_CON_LAI_FINAL DECIMAL,
@d_BRANCH_ID NVARCHAR(15),
@d_DEP_ID NVARCHAR(15)
Exec sp_xml_preparedocument @hdoc1 Output,@p_XML_TEMP
DECLARE XmlDataDoc CURSOR FOR
SELECT *
FROM OPENXML(@hdoc1,'/Root/XmlData1',2)
WITH
(
---BAODNQ: thêm các cột trong bảng BUD_CONTRACT_DT vào XML---
CONTRACT_DTID VARCHAR(15),
BUILD_ID VARCHAR(15),
VERSION_NO INT,
BUILDING_AREA_ID VARCHAR(15),
RENT_AREA DECIMAL,
RENT_AREA_APP DECIMAL,
AREA_REMAIN DECIMAL,
RENT_PRICE DECIMAL,
NOTES NVARCHAR(MAX),
DIEN_TICH_TANG DECIMAL,
DIEN_TICH_SD_NOI_BO DECIMAL,
DIEN_TICH_DA_CHO_THUE DECIMAL,
DIEN_TICH_CON_LAI DECIMAL,
DIEN_TICH_CAN_SD DECIMAL,
REASON NVARCHAR(MAX),
PRICE DECIMAL,
TOTAL_AMT DECIMAL,
DIEN_TICH_CON_LAI_FINAL DECIMAL,
BRANCH_ID NVARCHAR(15),
DEP_ID NVARCHAR(15)
)
OPEN XmlDataDoc
---BAODNQ: thêm các cột trong bảng BUD_CONTRACT_DT vào XML---
FETCH NEXT FROM XmlDataDoc INTO
@d_CONTRACT_DTID,
@d_BUILD_ID,
@d_VERSION_NO,
@d_BUILDING_AREA_ID,
@d_RENT_AREA,
@d_RENT_AREA_APP,
@d_AREA_REMAIN,
@d_RENT_PRICE,
@d_NOTES,
@d_DIEN_TICH_TANG,
@d_DIEN_TICH_SD_NOI_BO,
@d_DIEN_TICH_DA_CHO_THUE,
@d_DIEN_TICH_CON_LAI,
@d_DIEN_TICH_CAN_SD,
@d_REASON,
@d_PRICE,
@d_TOTAL_AMT,
@d_DIEN_TICH_CON_LAI_FINAL,
@d_BRANCH_ID,
@d_DEP_ID
WHILE @@FETCH_STATUS = 0
BEGIN
---BAODNQ: insert thêm vào các cột trong bảng BUD_CONTRACT_DT---
IF(LEN( @d_CONTRACT_DTID)=0)
EXEC SYS_CodeMasters_Gen 'BUD_CONTRACT_DT', @d_CONTRACT_DTID out
IF @d_CONTRACT_DTID='' OR @d_CONTRACT_DTID IS NULL GOTO ABORT
INSERT INTO BUD_CONTRACT_DT([CONTRACT_DTID],[BUILD_ID],[CONTRACT_ID],[VERSION_NO],[BUILDING_AREA_ID],[RENT_AREA],[RENT_AREA_APP],[AREA_REMAIN],[RENT_PRICE],[NOTES],
[DIEN_TICH_TANG],[DIEN_TICH_SD_NOI_BO],[DIEN_TICH_DA_CHO_THUE],[DIEN_TICH_CON_LAI],[DIEN_TICH_CAN_SD],[REASON],[PRICE],[TOTAL_AMT],
[DIEN_TICH_CON_LAI_FINAL],[BRANCH_ID], [DEP_ID])
VALUES(@d_CONTRACT_DTID ,@d_BUILD_ID ,@p_CONTRACT_ID ,@d_VERSION_NO ,@d_BUILDING_AREA_ID ,@d_RENT_AREA,@d_RENT_AREA_APP,@d_AREA_REMAIN,@d_RENT_PRICE,@d_NOTES,
@d_DIEN_TICH_TANG,@d_DIEN_TICH_SD_NOI_BO,@d_DIEN_TICH_DA_CHO_THUE,@d_DIEN_TICH_CON_LAI,@d_DIEN_TICH_CAN_SD,@d_REASON,@d_PRICE,@d_TOTAL_AMT,@d_DIEN_TICH_CON_LAI_FINAL,
@d_BRANCH_ID,@d_DEP_ID)
IF @@Error <> 0 GOTO ABORT
---BAODNQ: thêm các cột trong bảng BUD_CONTRACT_DT vào XML---
FETCH NEXT FROM XmlDataDoc INTO
@d_CONTRACT_DTID,
@d_BUILD_ID,
@d_VERSION_NO,
@d_BUILDING_AREA_ID,
@d_RENT_AREA,
@d_RENT_AREA_APP,
@d_AREA_REMAIN ,
@d_RENT_PRICE,
@d_NOTES,
@d_DIEN_TICH_TANG,
@d_DIEN_TICH_SD_NOI_BO,
@d_DIEN_TICH_DA_CHO_THUE,
@d_DIEN_TICH_CON_LAI,
@d_DIEN_TICH_CAN_SD,
@d_REASON,
@d_PRICE,
@d_TOTAL_AMT,
@d_DIEN_TICH_CON_LAI_FINAL,
@d_BRANCH_ID,
@d_DEP_ID
END
CLOSE XmlDataDoc
DEALLOCATE XmlDataDoc
IF @@Error <> 0 GOTO ABORT
---BAODNQ: sửa lấy tổng thành TOTAL_AMT---
SET @p_RENT_PRICE = (SELECT SUM(TOTAL_AMT) FROM BUD_CONTRACT_DT
WHERE CONTRACT_ID =@p_CONTRACT_ID
AND VERSION_NO=@p_VERSION_NO)
---BAODNQ 30/12/2021:Thêm cột vào bảng BUD_CONTRACT_MASTER-------
UPDATE BUD_CONTRACT_MASTER
SET BUILDING_ID =@p_BUILDING_ID,
CONTRACT_NO =@p_CONTRACT_NO,
--VERSION_NO=@p_VERSION_NO,
CUST_ID=@p_CUST_ID,
INPUT_DT = CONVERT(DATE,@p_INPUT_DT,103),
AMEND_DT = CONVERT(DATE,@p_AMEND_DT,103),
FROM_DT = CONVERT(DATE,@p_FROM_DT,103),
TO_DATE = CONVERT(DATE,@p_TO_DATE,103),
CLOSE_DT = CONVERT(DATE,@p_CLOSE_DT,103),
AUTH_STATUS = @p_AUTH_STATUS,
STATUS= @p_STATUS,
MONTHS = @p_MONTHS,
--RENT_PRICE=@p_RENT_PRICE*@p_MONTHS,
RENT_PRICE = @p_RENT_PRICE,
[NOTES] = @p_NOTES,
VAT =@p_VAT,
VAT_AMT =(@p_VAT*@p_RENT_PRICE)/100,
DEPOSITS_AMT =@p_DEPOSITS_AMT,
PAYMENT_SHEDULE =@p_PAYMENT_SHEDULE
--IS_SEND_APPR = @p_IS_SEND_APPR,
--SEND_APPR_DT = @p_SEND_APPR_DT,
--SIGN_USER = @p_SIGN_USER,
--SIGN_DT = @p_SIGN_DT
WHERE CONTRACT_ID=@p_CONTRACT_ID AND VERSION_NO=@p_VERSION_NO
END
---BAODNQ 29/12/2021: Insert vào PL_PROCESS lưu lịch sử xử lý
INSERT INTO dbo.PL_PROCESS
(
REQ_ID,
PROCESS_ID,
CHECKER_ID,
APPROVE_DT,
PROCESS_DESC,
NOTES
)
VALUES
( @p_CONTRACT_ID,
'UPDATE',
@p_MAKER_ID,
GETDATE(),
N'Cập nhật thông tin khai báo DTSD nội bộ thành công' ,
N'Cập nhật thông tin khai báo DTSD nội bộ'
)
COMMIT TRANSACTION
SELECT '0' as Result, @p_CONTRACT_ID CONTRACT_ID, '' ErrorDesc
RETURN '0'
ABORT:
BEGIN
CLOSE XmlDataDoc
DEALLOCATE XmlDataDoc
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' CONTRACT_ID, '' ErrorDesc
RETURN '-1'
End
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Altering [dbo].[TR_PO_DETAIL_ById]'
GO
-- Stored Procedure
/*
[TR_PO_DETAIL_ById] 'TRPM00000000016'
*/
ALTER PROCEDURE [dbo].[TR_PO_DETAIL_ById]
@PO_ID varchar(500),
@BRANCH_LOGIN varchar(15) = NULL,
@ASSET_TYPE varchar(15) = NULL
AS
DECLARE @l_CCLD_VALUE decimal(18,0) = 0
DECLARE @l_PAY_ID VARCHAR(15) = ''
DECLARE @l_PAY_TYPE VARCHAR(100) = ''
DECLARE @l_PAY_ACC VARCHAR(100) = ''
DECLARE @l_PAY_DATE Datetime
DECLARE @l_BRANCH_TYPE VARCHAR(15)
SET @l_CCLD_VALUE = (SELECT ParaValue FROM SYS_PARAMETERS WHERE ParaKey = 'ASSET_VALUE')
IF @@ERROR <> 0 SET @l_CCLD_VALUE = 0
SELECT @l_BRANCH_TYPE = BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_LOGIN
IF @@ERROR <> 0 SET @l_BRANCH_TYPE =''
--THIEUVQ 21092016 - THEM TIM KIEM TU NHIEU PO
DECLARE @LSTPO TABLE (POID VARCHAR(15))
INSERT INTO @LSTPO SELECT * FROM wsiSplit(@PO_ID,';')
SELECT A.PD_ID, A.PO_ID, A.PLAN_ID, A.TRADE_ID, A.REQ_DT_ID, A.GOODS_ID, A.[DESCRIPTION], A.UNIT_ID, A.QUANTITY, A.PRICE, A.TOTAL_AMT, A.IS_DELIVERY, A.DELIVERY_DT,
A.PAYMENT_STATUS, A.AMOUNT_PAID, A.PAID_DT, A.INVOICENO, A.NOTES, A.RECEIVE_BRANCH, A.RECEIVE_ADDR, A.RECEIVE_PERSON, A.RECEIVE_TEL, A.RECORD_STATUS,
A.MAKER_ID, A.CREATE_DT, A.AUTH_STATUS, A.CHECKER_ID, A.APPROVE_DT, A.EXP_DELIVERY_DT, A.GOODS_NAME, A.INVOICE_DT, A.GOODSTYPE_REAL, A.VAT, A.PRICE_VAT, A.CONTRACT_DT,
A.PRICE AS PRICE_D, E.BRANCH_CODE, E.BRANCH_ID,E.BRANCH_NAME, B.HH_CODE AS GD_CODE, B.GD_ID,
ISNULL(CTDT.GD_NAME_REAL, B.HH_NAME) AS GD_NAME, --THIEUVQ LAY TEN TRONG HOP DONG NEU LINK DEN HOP DONG
C.UNIT_CODE, C.UNIT_ID, C.UNIT_NAME, F.PLAN_CODE, F.PLAN_NAME, ISNULL((A.TOTAL_AMT - A.AMOUNT_PAID),0) AS REMAIN_AMOUNT,
G.BRANCH_CODE AS R_BRANCH_CODE, G.BRANCH_NAME AS R_BRANCH_NAME, @l_PAY_ID AS PAY_ID, @l_PAY_TYPE AS PAY_TYPE, @l_PAY_ACC AS ACC,
( SELECT SUM(PAID_AMT) FROM ASS_PAYMENT_DT H WHERE H.REF_DETAIL_ID = A.PD_ID AND H.REF_MASTER_ID = A.PO_ID) AS AMT, @l_PAY_DATE AS PAY_DATE,
GR.GD_RETYPE_ID, GR.GD_RETYPE_CODE, GR.TYPE_NAME AS GDREAL_TYPE_NAME,
POUP_DT.SERIAL_NO, POUP_DT.GUARANTEE, TY.HH_TYPE_CODE, TY.HH_TYPE_NAME, A.CURRENCY, A.RATE,A.TOTAL_AMT_FN
FROM TR_PO_DETAIL A
--LEFT JOIN CM_GOODS B On A.GOODS_ID=B.GD_ID
LEFT JOIN CM_HANGHOA B ON A.GOODS_ID= B.HH_ID
LEFT JOIN CM_UNIT C On A.UNIT_ID=C.UNIT_ID
LEFT JOIN PL_MASTER F ON F.PLAN_ID = A.PLAN_ID
LEFT JOIN CM_BRANCH E ON E.BRANCH_ID = F.BRANCH_ID
LEFT JOIN CM_BRANCH G ON G.BRANCH_ID = A.RECEIVE_BRANCH
LEFT JOIN CM_GOODSTYPE_REAL GR ON GR.GD_RETYPE_ID = A.GOODSTYPE_REAL
LEFT JOIN TR_CONTRACT_DT CTDT ON CTDT.CD_ID = A.CONTRACT_DT
LEFT JOIN TR_PO_UP_DETAIL POUP_DT ON POUP_DT.PD_UP_ID = A.PD_ID
LEFT JOIN CM_HANGHOA_TYPE TY ON B.HH_TYPE_ID = TY.HH_TYPE_ID
--LEFT JOIN ASS_PAYMENT_DT H ON H.REF_DETAIL_ID = A.PD_ID AND H.REF_MASTER_ID = A.PO_ID
WHERE --A.PO_ID IN (SELECT * FROM @LSTPO)
--AND
(A.RECEIVE_BRANCH = @BRANCH_LOGIN OR @BRANCH_LOGIN IS NULL OR @BRANCH_LOGIN = '' OR (@l_BRANCH_TYPE = 'HS' AND A.PRICE > @l_CCLD_VALUE))
AND ((@ASSET_TYPE = 'TSCD' AND A.PRICE >= @l_CCLD_VALUE) OR (@ASSET_TYPE = 'CCLD' AND A.PRICE < @l_CCLD_VALUE) OR @ASSET_TYPE IS NULL OR @ASSET_TYPE = '')
--EXEC TR_PO_DETAIL_ById 'TRPM00000000001', 'DV0001'
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Creating [dbo].[PL_REQUEST_DOC_CHECK_YEAR]'
GO
CREATE PROC [dbo].[PL_REQUEST_DOC_CHECK_YEAR]
@p_REQ_ID VARCHAR(15) NULL
AS
BEGIN
SELECT TOP 1 A.*,B.YEAR AS NAMNGANSACH FROM PL_REQUEST_DOC_DT A
LEFT JOIN PL_MASTER B ON A.PLAN_ID = B.PLAN_ID
WHERE A.REQ_ID = @p_REQ_ID
END
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Creating [dbo].[BUD_CONTRACT_MASTER_SendAppr]'
GO
CREATE PROCEDURE [dbo].[BUD_CONTRACT_MASTER_SendAppr]
@p_CONTRACT_ID VARCHAR(15) = NULL,
@p_USER_LOGIN VARCHAR(15) = NULL,
@p_SEND_APPR_DT VARCHAR(20) = NULL
AS
BEGIN TRANSACTION
UPDATE BUD_CONTRACT_MASTER SET IS_SEND_APPR = 'Y', SEND_APPR_DT = CONVERT(DATETIME, @p_SEND_APPR_DT, 103)
WHERE CONTRACT_ID = @p_CONTRACT_ID
IF @@ERROR <> 0 GOTO ABORT
DECLARE @l_IS_SEND_APPR VARCHAR(15)
SET @l_IS_SEND_APPR = (SELECT IS_SEND_APPR FROM BUD_CONTRACT_MASTER WHERE CONTRACT_ID = @p_CONTRACT_ID)
INSERT INTO dbo.PL_PROCESS(REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES)
VALUES(@p_CONTRACT_ID, 'SEND', @p_USER_LOGIN, GETDATE(),
N'Người tạo gửi phê duyệt thành công', N' Người tạo gửi phê duyệt')
IF @@ERROR <> 0 GOTO ABORT
COMMIT TRANSACTION
SELECT '0' as Result, '' CONTRACT_ID, @l_IS_SEND_APPR IS_SEND_APPR,
N'Hồ sơ số: '+@p_CONTRACT_ID+
N' đã được gửi phê duyệt thành công. Vui lòng đợi cấp phê duyệt trung gian xác nhận.' ErrorDesc
RETURN '0'
ABORT:
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' CONTRACT_ID, '' ErrorDesc
RETURN '-1'
END
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Creating [dbo].[BUD_CONTRACT_CUST_MASTER_SendAppr]'
GO
CREATE PROCEDURE [dbo].[BUD_CONTRACT_CUST_MASTER_SendAppr]
@p_CONTRACT_ID VARCHAR(15) = NULL,
@p_USER_LOGIN VARCHAR(15) = NULL,
@p_SEND_APPR_DT VARCHAR(20) = NULL
AS
BEGIN TRANSACTION
UPDATE BUD_CONTRACT_CUST_MASTER SET IS_SEND_APPR = 'Y', SEND_APPR_DT = CONVERT(DATETIME, @p_SEND_APPR_DT, 103)
WHERE CONTRACT_ID = @p_CONTRACT_ID
IF @@ERROR <> 0 GOTO ABORT
DECLARE @l_IS_SEND_APPR VARCHAR(15)
SET @l_IS_SEND_APPR = (SELECT IS_SEND_APPR FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_ID = @p_CONTRACT_ID)
INSERT INTO dbo.PL_PROCESS(REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES)
VALUES(@p_CONTRACT_ID, 'SEND', @p_USER_LOGIN, GETDATE(),
N'Người tạo gửi phê duyệt thành công', N'Người tạo gửi phê duyệt')
IF @@ERROR <> 0 GOTO ABORT
COMMIT TRANSACTION
SELECT '0' as Result, '' CONTRACT_ID, @l_IS_SEND_APPR IS_SEND_APPR,
N'Hợp đồng: '+ (SELECT CONTRACT_NO FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_ID = @p_CONTRACT_ID)+
N' đã được gửi phê duyệt thành công. Vui lòng đợi cấp phê duyệt trung gian xác nhận.' ErrorDesc
RETURN '0'
ABORT:
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' CONTRACT_ID, '' ErrorDesc
RETURN '-1'
END
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Creating [dbo].[fChuyenCoDauThanhKhongDau]'
GO
CREATE FUNCTION [dbo].[fChuyenCoDauThanhKhongDau](@inputVar NVARCHAR(MAX) )
RETURNS NVARCHAR(MAX)
AS
BEGIN
IF (@inputVar IS NULL OR @inputVar = '') RETURN ''
DECLARE @RT NVARCHAR(MAX)
DECLARE @SIGN_CHARS NCHAR(256)
DECLARE @UNSIGN_CHARS NCHAR (256)
SET @SIGN_CHARS = N'ăâđêôơưàảãạáằẳẵặắầẩẫậấèẻẽẹéềểễệếìỉĩịíòỏõọóồổỗộốờởỡợớùủũụúừửữựứỳỷỹỵýĂÂĐÊÔƠƯÀẢÃẠÁẰẲẴẶẮẦẨẪẬẤÈẺẼẸÉỀỂỄỆẾÌỈĨỊÍÒỎÕỌÓỒỔỖỘỐỜỞỠỢỚÙỦŨỤÚỪỬỮỰỨỲỶỸỴÝ' + NCHAR(272) + NCHAR(208)
SET @UNSIGN_CHARS = N'aadeoouaaaaaaaaaaaaaaaeeeeeeeeeeiiiiiooooooooooooooouuuuuuuuuuyyyyyAADEOOUAAAAAAAAAAAAAAAEEEEEEEEEEIIIIIOOOOOOOOOOOOOOOUUUUUUUUUUYYYYYDD'
DECLARE @COUNTER int
DECLARE @COUNTER1 int
SET @COUNTER = 1
WHILE (@COUNTER <= LEN(@inputVar))
BEGIN
SET @COUNTER1 = 1
WHILE (@COUNTER1 <= LEN(@SIGN_CHARS) + 1)
BEGIN
IF UNICODE(SUBSTRING(@SIGN_CHARS, @COUNTER1,1)) = UNICODE(SUBSTRING(@inputVar,@COUNTER ,1))
BEGIN
IF @COUNTER = 1
SET @inputVar = SUBSTRING(@UNSIGN_CHARS, @COUNTER1,1) + SUBSTRING(@inputVar, @COUNTER+1,LEN(@inputVar)-1)
ELSE
SET @inputVar = SUBSTRING(@inputVar, 1, @COUNTER-1) +SUBSTRING(@UNSIGN_CHARS, @COUNTER1,1) + SUBSTRING(@inputVar, @COUNTER+1,LEN(@inputVar)- @COUNTER)
BREAK
END
SET @COUNTER1 = @COUNTER1 +1
END
SET @COUNTER = @COUNTER +1
END
SET @inputVar = replace(@inputVar,'','')
RETURN @inputVar
END
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Creating [dbo].[TR_REQ_PAY_METHOD_Search]'
GO
CREATE PROC [dbo].[TR_REQ_PAY_METHOD_Search]
@p_ACC_NO varchar(15),
@p_ACC_NAME varchar(15),
@p_ISSUED_BY varchar(250),
@p_ISSUED_DT VARCHAR(20),
@p_TOP INT = 10
AS
BEGIN -- PAGING
SET @p_TOP = NULL
DECLARE @DEP_CODE VARCHAR(15)
SET @DEP_CODE =(SELECT DEP_CODE FROM CM_DEPARTMENT WHERE DEP_ID =(SELECT TOP 1 SECUR_CODE FROM TL_USER WHERE TLNANME =@p_ISSUED_BY))
IF(@p_TOP IS NULL OR @p_TOP='' OR @p_TOP=0)
BEGIN
-- PAGING BEGIN
SELECT MAX(A.ACC_NO) AS ACC_NO,
CASE WHEN B.ACC_NAME IS NOT NULL AND B.ACC_NAME <> '' THEN UPPER(B.ACC_NAME) ELSE dbo.fChuyenCoDauThanhKhongDau(MAX(A.ACC_NAME)) END AS ACC_NAME,
MAX(A.ISSUED_BY) AS ISSUED_BY , MAX(A.ISSUED_DT) AS ISSUED_DT
-- SELECT END
FROM TR_REQ_PAY_METHOD A
LEFT JOIN CM_ACCOUNT B ON A.ACC_NO = B.ACC_NO
WHERE (A.ACC_NO <> NULL OR A.ACC_NO <> '') AND (A.ACC_NAME <> NULL OR A.ACC_NAME <> '')
AND (A.ACC_NO LIKE '%' + @p_ACC_NO + '%' OR @p_ACC_NO IS NULL OR @p_ACC_NO = '')
AND (A.ACC_NAME LIKE '%' + @p_ACC_NAME + '%' OR @p_ACC_NAME IS NULL OR @p_ACC_NAME = '')
--AND (A.ISSUED_BY LIKE '%' + @p_ISSUED_BY + '%' OR @p_ISSUED_BY IS NULL OR @p_ISSUED_BY = '')
AND (A.MAKER_ID =@p_ISSUED_BY OR @p_ISSUED_BY ='' OR @p_ISSUED_BY IS NULL OR @DEP_CODE ='0690604')
AND (A.ISSUED_DT LIKE '%' + @p_ISSUED_DT + '%' OR @p_ISSUED_DT IS NULL OR @p_ISSUED_DT = '')
GROUP BY A.ACC_NO, A.CHECK_IN,B.ACC_NAME
-- PAGING END
END
ELSE
BEGIN
-- PAGING BEGIN
SELECT TOP (CONVERT(INT, @P_TOP)) MAX(A.ACC_NO) AS ACC_NO,
CASE WHEN B.ACC_NAME IS NOT NULL AND B.ACC_NAME <> '' THEN UPPER(B.ACC_NAME) ELSE dbo.fChuyenCoDauThanhKhongDau(MAX(A.ACC_NAME)) END AS ACC_NAME,
MAX(A.ISSUED_BY) AS ISSUED_BY , MAX(A.ISSUED_DT) AS ISSUED_DT
-- SELECT END
FROM TR_REQ_PAY_METHOD A
LEFT JOIN CM_ACCOUNT B ON A.ACC_NO = B.ACC_NO
WHERE (A.ACC_NO <> NULL OR A.ACC_NO <> '') AND (A.ACC_NAME <> NULL OR A.ACC_NAME <> '')
AND (A.ACC_NO LIKE '%' + @p_ACC_NO + '%' OR @p_ACC_NO IS NULL OR @p_ACC_NO = '')
AND (A.ACC_NAME LIKE '%' + @p_ACC_NAME + '%' OR @p_ACC_NAME IS NULL OR @p_ACC_NAME = '')
--AND (A.ISSUED_BY LIKE '%' + @p_ISSUED_BY + '%' OR @p_ISSUED_BY IS NULL OR @p_ISSUED_BY = '')
AND (A.MAKER_ID =@p_ISSUED_BY OR @p_ISSUED_BY ='' OR @p_ISSUED_BY IS NULL OR @DEP_CODE ='0690604')
AND (A.ISSUED_DT LIKE '%' + @p_ISSUED_DT + '%' OR @p_ISSUED_DT IS NULL OR @p_ISSUED_DT = '')
GROUP BY A.ACC_NO, A.CHECK_IN,B.ACC_NAME
-- PAGING END
END
END -- PAGING
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Creating [dbo].[CM_DEPARTMENT_ByCode]'
GO
CREATE PROCEDURE [dbo].[CM_DEPARTMENT_ByCode]
@DEP_CODE varchar(15)
AS
SELECT TOP 1 D.*, b.BRANCH_NAME AS BRANCH_NAME, FD.DEP_ID AS FATHER_ID, FD.DEP_NAME AS FATHER_NAME
FROM CM_DEPARTMENT d
LEFT JOIN CM_BRANCH b ON d.BRANCH_ID = b.BRANCH_ID
LEFT JOIN CM_DEPARTMENT FD ON d.FATHER_ID = FD.DEP_ID
WHERE d.DEP_CODE= @DEP_CODE
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Altering [dbo].[TR_CHECK_ROLE_APPROVE]'
GO
ALTER PROCEDURE [dbo].[TR_CHECK_ROLE_APPROVE]
@TYPE VARCHAR(15) = NULL,
@p_REQ_ID varchar(15) = NULL,
@p_USER_LOGIN varchar(15) = NULL
AS
BEGIN TRANSACTION
IF(@TYPE <> 'ADV_PAY')
BEGIN
IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_REQ_ID AND STATUS_JOB ='C' AND TLNAME =@p_USER_LOGIN AND TYPE_JOB IN ('TP','KS')))
BEGIN
ROLLBACK TRANSACTION
SELECT '0' as Result, '' ErrorDesc
RETURN '0'
END
END
-- KHAI BAO THEM ROLE NHAN UY QUYEN
DECLARE @TABLE_ROLE TABLE (ROLE_AUTH VARCHAR(50))
DECLARE @ROLE_ID VARCHAR(50)
SET @ROLE_ID = (SELECT ROLENAME FROM TL_USER WHERE TLNANME =@p_USER_LOGIN)
INSERT INTO @TABLE_ROLE SELECT @ROLE_ID
INSERT INTO @TABLE_ROLE SELECT ROLE_NEW FROM TL_SYS_ROLE_MAPPING WHERE ROLE_OLD =@ROLE_ID AND TLNAME =@p_USER_LOGIN AND
(CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) AND CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103) OR (EFF_DATE IS NULL OR EXP_DATE IS NULL))
DECLARE @AUTHOR TABLE
(
ROLE_ID VARCHAR(20),
BRANCH_ID VARCHAR(20),
DEP_ID VARCHAR(20),
BRANCH_TYPE VARCHAR(20)
)
DECLARE @AUTHOR_DVDM TABLE
(
ROLE_ID VARCHAR(20),
BRANCH_ID VARCHAR(20),
DEP_ID VARCHAR(20),
DVDM_ID VARCHAR(20)
)
DECLARE @AUTHOR_DMMS TABLE
(
ROLE_ID VARCHAR(20),
BRANCH_ID VARCHAR(20),
DEP_ID VARCHAR(20),
DMMS_ID VARCHAR(20)
)
INSERT INTO @AUTHOR
(
ROLE_ID,
BRANCH_ID,
DEP_ID,
BRANCH_TYPE
)
SELECT RoleName,TLSUBBRID,SECUR_CODE,CB.BRANCH_TYPE FROM dbo.TL_USER TU
LEFT JOIN dbo.CM_BRANCH CB ON CB.BRANCH_ID=TU.TLSUBBRID
WHERE TLNANME=@p_USER_LOGIN
UNION ALL
SELECT TM.ROLE_NEW RoleName,TLSUBBRID,SECUR_CODE,CB.BRANCH_TYPE FROM dbo.TL_USER TU
LEFT JOIN dbo.TL_SYS_ROLE_MAPPING TM ON TM.ROLE_OLD=TU.RoleName AND( TM.TLNAME IS NULL OR TM.TLNAME='')
LEFT JOIN dbo.CM_BRANCH CB ON CB.BRANCH_ID=TU.TLSUBBRID
WHERE TLNANME=@p_USER_LOGIN
UNION ALL
SELECT TM1.ROLE_NEW RoleName,TM1.BRANCH_ID TLSUBBRID,TM1.DEP_ID SECUR_CODE,CB.BRANCH_TYPE FROM dbo.TL_SYS_ROLE_MAPPING TM1
LEFT JOIN dbo.CM_BRANCH CB ON CB.BRANCH_ID=TM1.BRANCH_ID
WHERE TM1.TLNAME=@p_USER_LOGIN AND CAST(TM1.EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE)
UNION ALL
SELECT TM.ROLE_NEW RoleName,TM1.BRANCH_ID TLSUBBRID,TM1.DEP_ID SECUR_CODE,CB.BRANCH_TYPE FROM dbo.TL_SYS_ROLE_MAPPING TM1
LEFT JOIN dbo.TL_SYS_ROLE_MAPPING TM ON TM.ROLE_OLD=TM1.ROLE_NEW AND( TM.TLNAME IS NULL OR TM.TLNAME='')
LEFT JOIN dbo.CM_BRANCH CB ON CB.BRANCH_ID=TM1.BRANCH_ID
WHERE TM1.TLNAME=@p_USER_LOGIN AND CAST(TM1.EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE)
INSERT INTO @AUTHOR_DVDM
(
ROLE_ID,
BRANCH_ID,
DEP_ID,
DVDM_ID
)
SELECT TU.RoleName,TU.TLSUBBRID,TU.SECUR_CODE,PC.DVDM_ID FROM dbo.TL_USER TU
LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.BRANCH_ID=TU.TLSUBBRID AND DT.DEP_ID=TU.SECUR_CODE
LEFT JOIN dbo.PL_COSTCENTER PC ON PC.COST_ID=DT.COST_ID
WHERE TU.TLNANME=@p_USER_LOGIN
UNION ALL
SELECT TM.ROLE_NEW RoleName,TU.TLSUBBRID,TU.SECUR_CODE,PC.DVDM_ID FROM dbo.TL_USER TU
LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.BRANCH_ID=TU.TLSUBBRID AND DT.DEP_ID=TU.SECUR_CODE
LEFT JOIN dbo.PL_COSTCENTER PC ON PC.COST_ID=DT.COST_ID
LEFT JOIN dbo.TL_SYS_ROLE_MAPPING TM ON TM.ROLE_OLD=TU.RoleName AND( TM.TLNAME IS NULL OR TM.TLNAME='')
WHERE TU.TLNANME=@p_USER_LOGIN
UNION ALL
SELECT TU.ROLE_NEW RoleName,TU.BRANCH_ID TLSUBBRID,TU.DEP_ID SECUR_CODE,PC.DVDM_ID FROM dbo.TL_SYS_ROLE_MAPPING TU
LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.BRANCH_ID=TU.BRANCH_ID AND DT.DEP_ID=TU.DEP_ID
LEFT JOIN dbo.PL_COSTCENTER PC ON PC.COST_ID=DT.COST_ID
WHERE TU.TLNAME=@p_USER_LOGIN AND CAST(EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE)
UNION ALL
SELECT TM.ROLE_NEW RoleName,TU.BRANCH_ID TLSUBBRID,TU.DEP_ID SECUR_CODE,PC.DVDM_ID FROM dbo.TL_SYS_ROLE_MAPPING TU
LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.BRANCH_ID=TU.BRANCH_ID AND DT.DEP_ID=TU.DEP_ID
LEFT JOIN dbo.PL_COSTCENTER PC ON PC.COST_ID=DT.COST_ID
LEFT JOIN dbo.TL_SYS_ROLE_MAPPING TM ON TM.ROLE_OLD=TU.ROLE_NEW AND( TM.TLNAME IS NULL OR TM.TLNAME='')
WHERE TU.TLNAME=@p_USER_LOGIN AND CAST(TU.EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE)
INSERT INTO @AUTHOR_DMMS
(
ROLE_ID,
BRANCH_ID,
DEP_ID,
DMMS_ID
)
SELECT RoleName,TLSUBBRID,SECUR_CODE,MS.DMMS_ID FROM dbo.TL_USER TU
LEFT JOIN dbo.CM_BRANCH CB ON CB.BRANCH_ID=TU.TLSUBBRID
LEFT JOIN dbo.CM_DMMS MS ON MS.BRANCH_ID = CB.BRANCH_ID AND (TU.SECUR_CODE=MS.DEP_ID OR CB.BRANCH_TYPE <>'HS')
WHERE TLNANME=@p_USER_LOGIN
UNION ALL
SELECT TM.ROLE_NEW RoleName,TLSUBBRID,SECUR_CODE,MS.DMMS_ID FROM dbo.TL_USER TU
LEFT JOIN dbo.TL_SYS_ROLE_MAPPING TM ON TM.ROLE_OLD=TU.RoleName AND( TM.TLNAME IS NULL OR TM.TLNAME='')
LEFT JOIN dbo.CM_BRANCH CB ON CB.BRANCH_ID=TU.TLSUBBRID
LEFT JOIN dbo.CM_DMMS MS ON MS.BRANCH_ID = CB.BRANCH_ID AND (TU.SECUR_CODE=MS.DEP_ID OR CB.BRANCH_TYPE <>'HS')
WHERE TLNANME=@p_USER_LOGIN
UNION ALL
SELECT TM1.ROLE_NEW RoleName,TM1.BRANCH_ID TLSUBBRID,TM1.DEP_ID SECUR_CODE,MS.DMMS_ID FROM dbo.TL_SYS_ROLE_MAPPING TM1
LEFT JOIN dbo.CM_BRANCH CB ON CB.BRANCH_ID=TM1.BRANCH_ID
LEFT JOIN dbo.CM_DMMS MS ON MS.BRANCH_ID = CB.BRANCH_ID AND (TM1.DEP_ID=MS.DEP_ID OR CB.BRANCH_TYPE <>'HS')
WHERE TM1.TLNAME=@p_USER_LOGIN AND CAST(TM1.EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE)
UNION ALL
SELECT TM.ROLE_NEW RoleName,TM1.BRANCH_ID TLSUBBRID,TM1.DEP_ID SECUR_CODE,MS.DMMS_ID FROM dbo.TL_SYS_ROLE_MAPPING TM1
LEFT JOIN dbo.TL_SYS_ROLE_MAPPING TM ON TM.ROLE_OLD=TM1.ROLE_NEW AND( TM.TLNAME IS NULL OR TM.TLNAME='')
LEFT JOIN dbo.CM_BRANCH CB ON CB.BRANCH_ID=TM1.BRANCH_ID
LEFT JOIN dbo.CM_DMMS MS ON MS.BRANCH_ID = CB.BRANCH_ID AND (TM1.DEP_ID=MS.DEP_ID OR CB.BRANCH_TYPE <>'HS')
WHERE TM1.TLNAME=@p_USER_LOGIN AND CAST(TM1.EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE)
IF(@TYPE='ADV_PAY')
BEGIN
IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS ='A' AND REQ_PAY_ID =@p_REQ_ID))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, N'Phiếu đã duyệt xong. Vui lòng chờ các giao dịch tiếp theo để thực hiện phê duyệt' ErrorDesc
RETURN '-1'
END
IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND ROLE_USER IN (SELECT * FROM @TABLE_ROLE)) )
BEGIN
IF(NOT EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND STATUS ='C' AND ROLE_USER IN (SELECT * FROM @TABLE_ROLE)))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, N'Bạn không có quyền phê duyệt' ErrorDesc
RETURN '-1'
END
END
--IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_ID AND BRANCH_CREATE ='DV0001')
--BEGIN
-- IF(EXISTS(SELECT * FROM PL_PROCESS WHERE CHEC))
--END
--ELSE
--BEGIN
-- ROLLBACK TRANSACTION
-- SELECT '-1' as Result, '' ErrorDesc
-- RETURN '-1'
--END
END
ELSE IF (@TYPE ='CORE')
BEGIN
IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_ID AND AUTH_STATUS_KT ='A') OR EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_ID AND AUTH_STATUS_KT ='A'))
BEGIN
IF(EXISTS(SELECT * FROM PAY_ENTRIES_POST WHERE TRN_ID =@p_REQ_ID AND ISNULL(REF_NO,'') <> ''))
BEGIN
ROLLBACK TRANSACTION
SELECT '6' as Result, N'Giao dịch được phê duyệt thành công trên AMS và hạch toán thành công vào hệ thống Core FC' ErrorDesc
RETURN '6'
END
ELSE
BEGIN
ROLLBACK TRANSACTION
SELECT '5' as Result, N'Giao dịch được phê duyệt thành công nhưng bắn vào Core FC thất bại. Vui lòng rà soát lại nội dung hạch toán (không được phép chứa kí tự & hoặc kí tự <)' ErrorDesc
RETURN '5'
END
END
ELSE
BEGIN
IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_ID AND AUTH_STATUS_KT <> 'A') AND EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_ID AND AUTH_STATUS_KT <>'A'))
BEGIN
ROLLBACK TRANSACTION
SELECT '7' as Result, '' ErrorDesc
RETURN '7'
END
END
END
ELSE IF(@TYPE ='CON_LAYOUT')
BEGIN
-- NEU CAP DUYET LA VAN PHONG THU KI TGD THI CO THE DUYET LUON
IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND STATUS ='C' AND PROCESS_ID ='TKTGD' AND
(@ROLE_ID ='TKTGD' OR EXISTS(SELECT * FROM @TABLE_ROLE WHERE ROLE_AUTH ='TKTGD'))))
BEGIN
ROLLBACK TRANSACTION
SELECT '0' as Result, '' ErrorDesc
RETURN '0'
END
-- NEU CAP DUYET LA VAN PHONG THU KI HDQT THI CO THE DUYET LUON
IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND STATUS ='C' AND PROCESS_ID ='TKHDQT' AND (@ROLE_ID ='TKHDQT' OR EXISTS(SELECT * FROM @TABLE_ROLE WHERE ROLE_AUTH ='TKHDQT'))))
BEGIN
ROLLBACK TRANSACTION
SELECT '0' as Result, '' ErrorDesc
RETURN '0'
END
IF(EXISTS(SELECT * FROM CON_LAYOUT_BLUEPRINT WHERE CON_LAYOUT_BLUEPRINT_ID = @p_REQ_ID AND PROCESS_ID ='APPROVE'))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' ErrorDesc
RETURN '-1'
END
IF(NOT EXISTS(SELECT * FROM PL_REQUEST_PROCESS PR WHERE PR.REQ_ID =@p_REQ_ID AND STATUS ='C' AND (
EXISTS(SELECT * FROM @AUTHOR AUTH WHERE AUTH.ROLE_ID=PR.ROLE_USER AND AUTH.BRANCH_ID=PR.BRANCH_ID AND (AUTH.DEP_ID=PR.DEP_ID OR AUTH.BRANCH_TYPE<>'HS'))
OR EXISTS(SELECT AUTH.ROLE_ID FROM @AUTHOR_DVDM AUTH WHERE AUTH.ROLE_ID=PR.ROLE_USER AND PR.DVDM_ID=AUTH.DVDM_ID)
OR ( (PR.BRANCH_ID IS NULL OR PR.BRANCH_ID='') AND (PR.DVDM_ID ='' OR PR.DVDM_ID IS NULL) )
)))
BEGIN
print 'haha'
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' ErrorDesc
RETURN '-1'
END
END
ELSE
BEGIN
-- NEU CAP DUYET LA VAN PHONG THU KI TGD THI CO THE DUYET LUON
IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND STATUS ='C' AND PROCESS_ID ='TKTGD' AND
(@ROLE_ID ='TKTGD' OR EXISTS(SELECT * FROM @TABLE_ROLE WHERE ROLE_AUTH ='TKTGD'))))
BEGIN
ROLLBACK TRANSACTION
SELECT '0' as Result, '' ErrorDesc
RETURN '0'
END
-- NEU CAP DUYET LA VAN PHONG THU KI HDQT THI CO THE DUYET LUON
IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND STATUS ='C' AND PROCESS_ID ='TKHDQT' AND (@ROLE_ID ='TKHDQT' OR EXISTS(SELECT * FROM @TABLE_ROLE WHERE ROLE_AUTH ='TKHDQT'))))
BEGIN
ROLLBACK TRANSACTION
SELECT '0' as Result, '' ErrorDesc
RETURN '0'
END
IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_REQ_ID AND STATUS_JOB ='C' AND TLNAME =@p_USER_LOGIN))
BEGIN
ROLLBACK TRANSACTION
SELECT '0' as Result, '' ErrorDesc
RETURN '0'
END
IF(NOT EXISTS(SELECT * FROM PL_REQUEST_PROCESS PR WHERE PR.REQ_ID =@p_REQ_ID AND STATUS ='C' AND (
EXISTS(SELECT * FROM @AUTHOR AUTH WHERE AUTH.ROLE_ID=PR.ROLE_USER AND AUTH.BRANCH_ID=PR.BRANCH_ID AND (AUTH.DEP_ID=PR.DEP_ID OR AUTH.BRANCH_TYPE<>'HS'))
OR EXISTS(SELECT AUTH.ROLE_ID FROM @AUTHOR_DVDM AUTH WHERE AUTH.ROLE_ID=PR.ROLE_USER AND PR.DVDM_ID=AUTH.DVDM_ID)
OR EXISTS(SELECT AUTH.ROLE_ID FROM @AUTHOR_DMMS AUTH WHERE AUTH.ROLE_ID=PR.ROLE_USER AND EXISTS (SELECT * FROM dbo.TR_REQUEST_DOC A WHERE A.REQ_ID=@p_REQ_ID AND A.DMMS_ID=AUTH.DMMS_ID AND A.PROCESS_ID='DMMS'))
OR EXISTS(SELECT AUTH.ROLE_ID FROM @AUTHOR_DVDM AUTH WHERE AUTH.ROLE_ID=PR.ROLE_USER AND EXISTS (SELECT * FROM dbo.TR_REQUEST_DOC A WHERE A.REQ_ID=@p_REQ_ID AND A.DMMS_ID=AUTH.DVDM_ID AND A.PROCESS_ID='DMMS'))
OR EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS_CHILD WHERE PL_REQUEST_PROCESS_CHILD.PROCESS_ID=PR.ID AND TLNAME=@p_USER_LOGIN AND TYPE_JOB='KS' AND STATUS_JOB='C')
OR ( (PR.BRANCH_ID IS NULL OR PR.BRANCH_ID='') AND (PR.DVDM_ID ='' OR PR.DVDM_ID IS NULL) )
)))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' ErrorDesc
RETURN '-1'
END
IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID AND PROCESS_ID ='APPROVE'))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' ErrorDesc
RETURN '-1'
END
IF(EXISTS(SELECT * FROM TR_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID AND PROCESS_ID ='APPROVE'))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' ErrorDesc
RETURN '-1'
END
-- GiaNT
IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND STATUS ='P' AND PROCESS_ID ='KT' AND
(@ROLE_ID ='KSV' OR EXISTS(SELECT * FROM @TABLE_ROLE WHERE ROLE_AUTH ='KSV'))))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' ErrorDesc
RETURN '-1'
END
END
COMMIT TRANSACTION
print 'haha'
SELECT '0' as Result, '' ErrorDesc
RETURN '0'
ABORT:
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' ErrorDesc
RETURN '-1'
End
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Creating [dbo].[BUD_CONTRACT_MASTER_Confirm]'
GO
CREATE PROCEDURE [dbo].[BUD_CONTRACT_MASTER_Confirm]
------STORE duyệt cấp phê duyệt trung gian-----------
@p_CONTRACT_ID varchar(15),
@p_SIGN_USER VARCHAR(12),
@p_SIGN_DT VARCHAR(20)
AS
BEGIN TRANSACTION
-------Trường hợp người duyệt là cấp phê duyệt trung gian, update SIGN_DT---------
UPDATE BUD_CONTRACT_MASTER
SET SIGN_DT = CONVERT(DATETIME, @p_SIGN_DT, 103),
AUTH_STATUS = 'U'
WHERE CONTRACT_ID = @p_CONTRACT_ID
IF @@ERROR <> 0 GOTO ABORT
INSERT INTO dbo.PL_PROCESS
(
REQ_ID,
PROCESS_ID,
CHECKER_ID,
APPROVE_DT,
PROCESS_DESC,
NOTES
)
VALUES
( @p_CONTRACT_ID,
'APPROVE',
@p_SIGN_USER,
GETDATE(),
N'Cấp trung gian xác nhận thông tin khai báo DTSD nội bộ thành công' ,
N'Cấp trung gian xác nhận thông tin khai báo DTSD nội bộ'
)
IF @@ERROR <> 0 GOTO ABORT
COMMIT TRANSACTION
SELECT '0' as Result, '' CONTRACT_ID,
N'Hồ sơ số: ' +@p_CONTRACT_ID+
N' đã được xác nhận thành công! Vui lòng đợi trưởng đơn vị phê duyệt.' ErrorDesc
RETURN '0'
ABORT:
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' CONTRACT_ID, '' ErrorDesc
RETURN '-1'
END
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Altering [dbo].[REAL_ESTATE_R_H_Upd]'
GO
ALTER PROCEDURE [dbo].[REAL_ESTATE_R_H_Upd]
@p_RET_R_H_ID varchar(15) = NULL,
@p_BRANCH_MANAGE Nvarchar(500) = NULL,
@p_BRANCH_USE Nvarchar(500) = NULL,
@p_BRANCH_CREATE Nvarchar(15) = NULL,
@p_RET_ADDR nvarchar(MAX) = NULL,
@p_RET_R_H_TIME DECIMAL = NULL,
@p_START_DT VARCHAR(20) = NULL,
@p_END_DT VARCHAR(20) = NULL,
@p_R_LAND_SQUARE DECIMAL = NULL,
@p_SCALE nvarchar(500) = NULL,
@p_CONSTRUCT_SQUARE DECIMAL = NULL,
@p_PRICE_DETAIL XML = NULL,
@p_DEPOSIT varchar(1) = NULL,
@p_DEPOSIT_PRICE DECIMAL = NULL,
@p_DEPOSIT_RETURN_DT NVARCHAR(500) = NULL,
@p_PURCHASE_EACH_TERM decimal = NULL,
@p_PAY_AMT decimal = NULL,
@p_NOTES nvarchar(1000) = NULL,
@p_RECORD_STATUS varchar(1) = NULL,
@p_AUTH_STATUS varchar(1) = NULL,
@p_MAKER_ID varchar(15) = NULL,
@p_CREATE_DT VARCHAR(20) = NULL,
@p_CHECKER_ID varchar(15) = NULL,
@p_APPROVE_DT VARCHAR(20) = NULL,
@p_PAY_PAY_AMT decimal = NULL,
@p_PAY_MONTH_TIMES INT = NULL,
@p_MONTH_TIMES INT = NULL,
----BAODNQ 7/2/2022: Thêm cột TR_CONTRACT_ID, EXTEND_DT, STRUCTURE------
@p_TR_CONTRACT_ID varchar(15) = NULL,
@p_EXTEND_DT VARCHAR(20) = NULL,
@p_STRUCTURE NVARCHAR(500) = NULL
AS
DECLARE @l_ERROR_MESSAGE VARCHAR(1000)
BEGIN TRANSACTION
IF(@p_RET_R_H_ID IS NULL)
BEGIN
SET @l_ERROR_MESSAGE = 'ID IS NULL'
GOTO ABORT
END
Declare @hdoc INT
Exec sp_xml_preparedocument @hdoc Output,@p_PRICE_DETAIL
DECLARE PriceDetail CURSOR FOR
SELECT *
FROM OPENXML(@hDoc,'/Root/RetPriceDetail',2)
WITH
(
RET_PRICE_ID varchar(15),
RET_R_H_ID varchar(15),
PRICE decimal(18,0),
PRICE_DT VARCHAR(20),
PRICE_END_DT VARCHAR(20)
)
OPEN PriceDetail
-- UPDATE
----BAODNQ 7/2/2022: Thêm cột TR_CONTRACT_ID, EXTEND_DT,STRUCTURE------
UPDATE REAL_ESTATE_R_H
SET
BRANCH_MANAGE=@p_BRANCH_MANAGE,
BRANCH_USE=@p_BRANCH_USE,
BRANCH_CREATE=@p_BRANCH_CREATE,
RET_ADDR=@p_RET_ADDR,
RET_R_H_TIME=@p_RET_R_H_TIME,
START_DT=CONVERT(DATETIME, @p_START_DT, 103),
END_DT=CONVERT(DATETIME, @p_END_DT, 103),
R_LAND_SQUARE=@p_R_LAND_SQUARE,
SCALE=@p_SCALE,
CONSTRUCT_SQUARE=@p_CONSTRUCT_SQUARE,
DEPOSIT=@p_DEPOSIT,
DEPOSIT_PRICE=@p_DEPOSIT_PRICE,
DEPOSIT_RETURN_DT=@p_DEPOSIT_RETURN_DT,
PURCHASE_EACH_TERM=@p_PURCHASE_EACH_TERM,
NOTES=@p_NOTES,
RECORD_STATUS=@p_RECORD_STATUS,
AUTH_STATUS=@p_AUTH_STATUS,
MAKER_ID=@p_MAKER_ID,
CREATE_DT=CONVERT(DATETIME, @p_CREATE_DT, 103),
CHECKER_ID=@p_CHECKER_ID,
APPROVE_DT=CONVERT(DATETIME, @p_APPROVE_DT, 103),
MONTH_TIMES = @p_MONTH_TIMES,
PAY_AMT = @p_PAY_AMT,
PAY_MONTH_TIMES= @p_PAY_MONTH_TIMES,
PAY_PAY_AMT = @p_PAY_PAY_AMT,
TR_CONTRACT_ID = @p_TR_CONTRACT_ID,
EXTEND_DT = CONVERT(DATETIME, @p_EXTEND_DT, 103),
STRUCTURE = @p_STRUCTURE
WHERE RET_R_H_ID = @p_RET_R_H_ID
IF @@Error <> 0 GOTO ABORT
DECLARE @RET_PRICE_ID varchar(15), @RET_R_H_ID varchar(15), @PRICE decimal(18,0), @PRICE_DT VARCHAR(20),
@PRICE_END_DT VARCHAR(20)
FETCH NEXT FROM PriceDetail INTO @RET_PRICE_ID, @RET_R_H_ID, @PRICE, @PRICE_DT,@PRICE_END_DT
DELETE FROM RET_PRICE WHERE RET_R_H_ID = @p_RET_R_H_ID
WHILE @@FETCH_STATUS = 0
BEGIN
IF @RET_PRICE_ID ='' OR @RET_PRICE_ID IS NULL -- INSERT PRICE DETAIL
BEGIN
EXEC SYS_CodeMasters_Gen 'RET_PRICE', @RET_PRICE_ID out
IF @RET_PRICE_ID ='' OR @RET_PRICE_ID IS NULL GOTO ABORT
END
INSERT INTO RET_PRICE(RET_PRICE_ID, RET_R_H_ID, PRICE, PRICE_DT, PRICE_END_DT)
VALUES(@RET_PRICE_ID, @p_RET_R_H_ID, @PRICE, CONVERT(DATETIME, @PRICE_DT, 103), CONVERT(DATETIME, @PRICE_END_DT, 103))
IF @@ERROR <> 0 GOTO ABORT
FETCH NEXT FROM PriceDetail INTO @RET_PRICE_ID, @p_RET_R_H_ID, @PRICE, @PRICE_DT, @PRICE_END_DT
END
CLOSE PriceDetail
DEALLOCATE PriceDetail
COMMIT TRANSACTION
SELECT '0' as Result, @p_RET_R_H_ID RET_R_H_ID, '' ErrorDesc
RETURN '0'
ABORT:
BEGIN
SELECT '-1' as Result, '' RET_R_H_ID, @l_ERROR_MESSAGE ErrorDesc
RETURN '-1'
END
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Creating [dbo].[BUD_CONTRACT_CUST_MASTER_Confirm]'
GO
CREATE PROCEDURE [dbo].[BUD_CONTRACT_CUST_MASTER_Confirm]
------STORE duyệt cấp phê duyệt trung gian-----------
@p_CONTRACT_ID varchar(15),
@p_SIGN_USER VARCHAR(12),
@p_SIGN_DT VARCHAR(20)
AS
BEGIN TRANSACTION
-------Trường hợp người duyệt là cấp phê duyệt trung gian, update SIGN_DT---------
DECLARE @p_CONTRACT_NO VARCHAR(15)
SET @p_CONTRACT_NO = (SELECT CONTRACT_NO FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_ID = @p_CONTRACT_ID)
UPDATE BUD_CONTRACT_CUST_MASTER
SET SIGN_DT = CONVERT(DATETIME, @p_SIGN_DT, 103),
AUTH_STATUS = 'U'
WHERE CONTRACT_ID = @p_CONTRACT_ID
IF @@ERROR <> 0 GOTO ABORT
INSERT INTO dbo.PL_PROCESS
(
REQ_ID,
PROCESS_ID,
CHECKER_ID,
APPROVE_DT,
PROCESS_DESC,
NOTES
)
VALUES
( @p_CONTRACT_ID,
'APPROVE',
@p_SIGN_USER,
GETDATE(),
N'Cấp trung gian xác nhận hợp đồng khách thuê thành công' ,
N'Cấp trung gian xác nhận hợp đồng khách thuê'
)
IF @@ERROR <> 0 GOTO ABORT
COMMIT TRANSACTION
SELECT '0' as Result, '' CONTRACT_ID,
N'Hợp đồng khách thuê số: ' +@p_CONTRACT_NO+ N' đã được xác nhận thành công! Vui lòng đợi trưởng đơn vị phê duyệt.' ErrorDesc
RETURN '0'
ABORT:
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' CONTRACT_ID, '' ErrorDesc
RETURN '-1'
END
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Creating [dbo].[BUD_CONTRACT_CUST_MASTER_SendEmail]'
GO
CREATE PROC [dbo].[BUD_CONTRACT_CUST_MASTER_SendEmail]
AS
BEGIN
-----Gửi mail thông báo khi còn 10 ngày nữa là đến ngày thanh toán định kỳ------
DECLARE @p_TITLE_MAIL NVARCHAR(MAX)
SET @p_TITLE_MAIL = ISNULL((SELECT TOP 1 TITLE FROM TL_MESSAGE WHERE PROCESS_ID ='TIL'),N'[PHẦN MỀM QUẢN LÝ TÀI SẢN - AMS]')
DECLARE @footer NVARCHAR(4000) = N'
P/s: Vui lòng không phản hồi email này. Đây là email được tạo ra bởi hệ thống tự động.
Thanks and Best Regards'
DECLARE @p_URL VARCHAR(MAX)
SET @p_URL ='http://localhost:4200/app/admin/'
DECLARE @p_CURRENT_DATE DATETIME
SET @p_CURRENT_DATE = GETDATE()
SELECT
A.TLFullName AS HO_TEN,
A.EMAIL AS EMAIL,
@p_TITLE_MAIL + N'Thông báo ngày định kỳ thanh toán hợp đồng khách thuê' AS TITLE,
N'Kính gửi: '+A.TLFullName
+N',
Còn '+ CONVERT(VARCHAR,DATEDIFF(DAY, DAY(@p_CURRENT_DATE), DAY(B.PAYMENT_DT))) + N' ngày nữa là đến hạn thanh toán định kỳ của hợp đồng khách thuê trụ sở số: ' + B.CONTRACT_NO
+ N'. Ngày thanh toán định kỳ :' +CONVERT(VARCHAR,B.PAYMENT_DT, 103)+
--+
--N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.'
N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết.'
+
@footer
AS MESSAGE_CONTENT
FROM TL_USER A
INNER JOIN BUD_CONTRACT_CUST_MASTER B ON A.TLNANME = B.MAKER_ID
WHERE
(DATEDIFF(DAY, DAY(@p_CURRENT_DATE), DAY(B.PAYMENT_DT)) > 0)
AND
(DATEDIFF(DAY, DAY(@p_CURRENT_DATE), DAY(B.PAYMENT_DT)) <= 10)
AND B.AUTH_STATUS ='A'
END
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Creating [dbo].[rpt_BUD_CONTRACT_Excel]'
GO
CREATE PROC [dbo].[rpt_BUD_CONTRACT_Excel]
@p_BUILDING_ID VARCHAR(15) = NULL,
@p_BRANCH_ID VARCHAR(15) = NULL,
@p_DEP_ID VARCHAR(15) = NULL,
@p_FROM_DT VARCHAR(20) = NULL,
@p_TO_DT VARCHAR(20) = NULL,
@p_LEVEL VARCHAR(15) = 'ALL'
AS
BEGIN
DECLARE @BRANCH_TABLE TABLE(BRANCH_ID VARCHAR(15))
IF(@p_LEVEL = 'ALL')
BEGIN
INSERT INTO @BRANCH_TABLE SELECT BRANCH_ID FROM [dbo].[CM_BRANCH_GETCHILDID](@p_BRANCH_ID)
END
IF(@p_LEVEL = 'UNIT')
BEGIN
INSERT INTO @BRANCH_TABLE SELECT @p_BRANCH_ID
END
SELECT
ROW_NUMBER() OVER(ORDER BY A.CONTRACT_ID) AS STT,
C.BRANCH_NAME AS CUSTOMER_NAME,
--(
-- CASE
-- WHEN C.BRANCH_TYPE = 'HS' OR C.BRANCH_TYPE = 'CN' THEN C.BRANCH_NAME
-- ELSE (SELECT BRANCH_NAME FROM CM_BRANCH WHERE BRANCH_ID = C.FATHER_ID)
-- END
--) AS CUSTOMER_NAME,
C.ADDR AS ADDRESS,
A.CONTRACT_ID AS CONTRACT_NO,
CONVERT(VARCHAR(20),A.INPUT_DT,103) AS START_DT,
CONVERT(VARCHAR(20),A.AMEND_DT,103) AS END_DT,
--------GIA THUE BAN DAU----------
ISNULL((
SELECT TOTAL_AMT_INIT FROM BUD_UTIL_LOG
WHERE CONTRACT_ID = A.CONTRACT_ID
AND BUILDING_AREA_ID = F.BUILDING_AREA_ID
AND IS_FIRST_TIME = 'Y'
AND CUSTOMER_ID = B.BRANCH_ID
),0) AS PRICE_VAT_INIT,
ISNULL((
SELECT VAT_INIT FROM BUD_UTIL_LOG
WHERE CONTRACT_ID = A.CONTRACT_ID
AND BUILDING_AREA_ID = F.BUILDING_AREA_ID
AND IS_FIRST_TIME = 'Y'
AND CUSTOMER_ID = B.BRANCH_ID
),0) AS VAT_INIT,
--------GIA THUE HIEN TAI---------
ISNULL(B.TOTAL_AMT,0) AS PRICE_VAT_CURRENT,
0 AS VAT_CURRENT,
'' AS PAYMENT_DT,
'' AS TOTAL_AMT_PAYMENT,
'' AS TOTAL_AMT_NEXT_PAYMENT,
--------TONG DT TOA NHA---------
ISNULL(B.DIEN_TICH_CAN_SD,0) AS DT_CHO_THUE,
ISNULL(B.DIEN_TICH_TANG - B.DIEN_TICH_CAN_SD,0) AS DT_CON_LAI,
CASE
WHEN D.OWNER_OR_RENT = 'O' THEN 'Mua'
WHEN D.OWNER_OR_RENT = 'U' THEN 'Thuê'
ELSE ''
END
AS OWNER_OR_RENT,
H.CURRENT_STATE,
F.FLOOR_NO
FROM BUD_CONTRACT_MASTER A
LEFT JOIN BUD_CONTRACT_DT B ON A.CONTRACT_ID = B.CONTRACT_ID
LEFT JOIN CM_BRANCH C ON B.BRANCH_ID = C.BRANCH_ID
LEFT JOIN BUD_MASTER D ON A.BUILDING_ID = D.BUILDING_ID
LEFT JOIN BUD_AREA_DT F ON B.BUILDING_AREA_ID = F.BUILDING_AREA_ID
LEFT JOIN CM_DEPARTMENT G ON B.DEP_ID = G.DEP_ID
LEFT JOIN RET_MASTER H ON D.ASSET_ID = H.ASSET_ID
WHERE 1=1
AND (A.BUILDING_ID = @p_BUILDING_ID OR @p_BUILDING_ID IS NULL OR @p_BUILDING_ID = '')
--AND (CONVERT(DATE,A.CREATE_DT,103) >=CONVERT(DATE, @p_FROM_DT, 103) OR @p_FROM_DT IS NULL OR @p_FROM_DT = '')
--AND (CONVERT(DATE,A.CREATE_DT,103) <=CONVERT(DATE, @p_TO_DT, 103) OR @p_TO_DT IS NULL OR @p_TO_DT = '')
AND (A.INPUT_DT >=CONVERT(DATE, @p_FROM_DT, 103) OR @p_FROM_DT IS NULL OR @p_FROM_DT = '')
AND (A.AMEND_DT <=CONVERT(DATE, @p_TO_DT, 103) OR @p_TO_DT IS NULL OR @p_TO_DT = '')
AND A.AUTH_STATUS = 'A'
AND (A.BRANCH_ID IN(SELECT BRANCH_ID FROM @BRANCH_TABLE))
END
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Creating [dbo].[rpt_BUD_CONTRACT_CUST_Excel]'
GO
CREATE PROC [dbo].[rpt_BUD_CONTRACT_CUST_Excel]
@p_BUILDING_ID VARCHAR(15) = NULL,
@p_BRANCH_ID VARCHAR(15) = NULL,
@p_DEP_ID VARCHAR(15) = NULL,
@p_FROM_DT VARCHAR(20) = NULL,
@p_TO_DT VARCHAR(20) = NULL,
@p_LEVEL VARCHAR(15) = 'ALL'
AS
BEGIN
DECLARE @BRANCH_TABLE TABLE(BRANCH_ID VARCHAR(15))
IF(@p_LEVEL = 'ALL')
BEGIN
INSERT INTO @BRANCH_TABLE SELECT BRANCH_ID FROM [dbo].[CM_BRANCH_GETCHILDID](@p_BRANCH_ID)
END
IF(@p_LEVEL = 'UNIT')
BEGIN
INSERT INTO @BRANCH_TABLE SELECT @p_BRANCH_ID
END
SELECT
ROW_NUMBER() OVER(ORDER BY A.CONTRACT_ID) AS STT,
B.CUSTOMER_NAME AS CUSTOMER_NAME,
B.ADDR AS ADDRESS,
D.CONTRACT_CODE AS CONTRACT_NO,
CONVERT(VARCHAR(20),D.START_DT,103) AS START_DT,
CONVERT(VARCHAR(20),D.END_DT,103) AS END_DT,
--------GIA THUE BAN DAU----------
ISNULL((
SELECT A1.TOTAL_AMT_INIT FROM BUD_UTIL_LOG A1
WHERE A1.CONTRACT_ID = A.CONTRACT_ID
AND A1.BUILDING_AREA_ID = G.BUILDING_AREA_ID
AND A1.CUSTOMER_ID = A.CUST_ID
AND IS_FIRST_TIME = 'Y'
),0) AS PRICE_VAT_INIT,
ISNULL((
SELECT A1.VAT_INIT FROM BUD_UTIL_LOG A1
WHERE A1.CONTRACT_ID = A.CONTRACT_ID
AND A1.BUILDING_AREA_ID = G.BUILDING_AREA_ID
AND A1.CUSTOMER_ID = A.CUST_ID
AND A1.IS_FIRST_TIME = 'Y'
),0) AS VAT_INIT,
--------GIA THUE HIEN TAI---------
--ISNULL((
-- SELECT TOTAL_AMT FROM BUD_CONTRACT_CUST_DT WHERE CONTRACT_ID = A.CONTRACT_ID
--),0) AS PRICE_VAT_CURRENT,
ISNULL(F.TOTAL_AMT, 0) AS PRICE_VAT_CURRENT,
ISNULL(A.VAT,0) AS VAT_CURRENT,
CONVERT(VARCHAR(20),A.PAYMENT_DT,103) AS PAYMENT_DT,
'' AS TOTAL_AMT_PAYMENT,
'' AS TOTAL_AMT_NEXT_PAYMENT,
E.BRANCH_NAME AS BRANCH_OR_DEPT,
--------TONG DT TOA NHA---------
--ISNULL((
-- SELECT SUM(DIEN_TICH_CAN_CHOTHUE) FROM BUD_CONTRACT_CUST_DT WHERE CONTRACT_ID = A.CONTRACT_ID
--),0) AS DT_CHO_THUE,
ISNULL(F.DIEN_TICH_CAN_CHOTHUE, 0) AS DT_CHO_THUE,
--ISNULL((
-- C.TOTAL_AREA - (SELECT SUM(DIEN_TICH_CAN_CHOTHUE) FROM BUD_CONTRACT_CUST_DT WHERE CONTRACT_ID = A.CONTRACT_ID)
--),0) AS DT_CON_LAI,
ISNULL(
C.TOTAL_AREA - F.DIEN_TICH_CAN_CHOTHUE
, 0),
CASE
WHEN C.OWNER_OR_RENT = 'O' THEN 'Mua'
WHEN C.OWNER_OR_RENT = 'U' THEN 'Thuê'
ELSE ''
END
AS OWNER_OR_RENT,
H.CURRENT_STATE,
G.FLOOR_NO
FROM BUD_CONTRACT_CUST_MASTER A
LEFT JOIN LS_CUSTOMER B ON A.CUST_ID = B.CUSTOMER_ID
LEFT JOIN BUD_MASTER C ON A.BUILDING_ID = C.BUILDING_ID
LEFT JOIN TR_CONTRACT D ON A.TR_CONTRACT_ID = D.CONTRACT_ID
LEFT JOIN CM_BRANCH E ON C.BRANCH_ID = E.BRANCH_ID
LEFT JOIN BUD_CONTRACT_CUST_DT F ON A.CONTRACT_ID = F.CONTRACT_ID
LEFT JOIN BUD_AREA_DT G ON F.BUILDING_AREA_ID = G.BUILDING_AREA_ID
LEFT JOIN RET_MASTER H ON C.ASSET_ID = H.ASSET_ID
WHERE 1= 1
AND (A.BUILDING_ID = @p_BUILDING_ID OR @p_BUILDING_ID IS NULL OR @p_BUILDING_ID = '')
AND A.AUTH_STATUS = 'A'
--AND (CONVERT(DATE,A.CREATE_DT,103) >=CONVERT(DATE, @p_FROM_DT, 103) OR @p_FROM_DT IS NULL OR @p_FROM_DT = '')
--AND (CONVERT(DATE,A.CREATE_DT,103) <=CONVERT(DATE, @p_TO_DT, 103) OR @p_TO_DT IS NULL OR @p_TO_DT = '')
AND (CONVERT(DATE,D.START_DT,103) >=CONVERT(DATE, @p_FROM_DT, 103) OR @p_FROM_DT IS NULL OR @p_FROM_DT = '')
AND (CONVERT(DATE,D.END_DT,103) <=CONVERT(DATE, @p_TO_DT, 103) OR @p_TO_DT IS NULL OR @p_TO_DT = '')
AND (A.BRANCH_ID IN(SELECT BRANCH_ID FROM @BRANCH_TABLE))
END
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Creating [dbo].[rpt_BUD_CONTRACT_TOTAL_CONTRACT_Excel]'
GO
CREATE PROC [dbo].[rpt_BUD_CONTRACT_TOTAL_CONTRACT_Excel]
@p_BUILDING_ID VARCHAR(20) = NULL,
@p_BRANCH_ID VARCHAR(15) = NULL,
@p_DEP_ID VARCHAR(15) = NULL,
@p_FROM_DT VARCHAR(20) = NULL,
@p_TO_DT VARCHAR(20) = NULL,
@p_LEVEL VARCHAR(15) = 'ALL'
AS
BEGIN
DECLARE @BRANCH_TABLE TABLE(BRANCH_ID VARCHAR(15))
IF(@p_LEVEL = 'ALL')
BEGIN
INSERT INTO @BRANCH_TABLE SELECT BRANCH_ID FROM [dbo].[CM_BRANCH_GETCHILDID](@p_BRANCH_ID)
END
IF(@p_LEVEL = 'UNIT')
BEGIN
INSERT INTO @BRANCH_TABLE SELECT @p_BRANCH_ID
END
SELECT ROW_NUMBER() OVER(ORDER BY CONTRACT_ID) AS STT, TMP.*
FROM
(
---------BUD_CONTRACT_MASTER---------------
SELECT
A.CONTRACT_ID,
CASE
WHEN (B.DEP_ID IS NULL OR B.DEP_ID = '') THEN C.BRANCH_NAME
ELSE F.DEP_NAME
END
AS CUSTOMER_NAME,
C.ADDR AS ADDRESS,
B.CONTRACT_ID AS CONTRACT_NO,
CONVERT(VARCHAR(20),A.INPUT_DT,103) AS START_DT,
CONVERT(VARCHAR(20),A.AMEND_DT,103) AS END_DT,
--------GIA THUE BAN DAU----------
ISNULL((
--SELECT TOTAL_AMT_INIT FROM BUD_CONTRACT_LOG WHERE CONTRACT_ID = B.CONTRACT_DTID AND IS_FIRST_TIME = 'Y'
SELECT TOTAL_AMT_INIT FROM BUD_UTIL_LOG
WHERE CONTRACT_ID = A.CONTRACT_ID
AND BUILDING_AREA_ID = B.BUILDING_AREA_ID
AND CUSTOMER_ID = B.BRANCH_ID
AND IS_FIRST_TIME = 'Y'
),0) AS PRICE_VAT_INIT,
ISNULL((
--SELECT VAT_INIT FROM BUD_CONTRACT_LOG WHERE CONTRACT_ID = B.CONTRACT_DTID AND IS_FIRST_TIME = 'Y'
SELECT VAT_INIT FROM BUD_UTIL_LOG
WHERE CONTRACT_ID = A.CONTRACT_ID
AND BUILDING_AREA_ID = B.BUILDING_AREA_ID
AND CUSTOMER_ID = B.BRANCH_ID
AND IS_FIRST_TIME = 'Y'
),0) AS VAT_INIT,
--------GIA THUE HIEN TAI---------
ISNULL(B.TOTAL_AMT, 0) AS PRICE_VAT_CURRENT,
0 AS VAT_CURRENT,
'' AS PAYMENT_DT,
'' AS TOTAL_AMT_PAYMENT,
'' AS TOTAL_AMT_NEXT_PAYMENT,
G.BRANCH_NAME AS BRANCH_OR_DEPT,
--------TONG DT TOA NHA---------
ISNULL(B.DIEN_TICH_CAN_SD,0) AS DT_CHO_THUE,
ISNULL(B.DIEN_TICH_TANG - B.DIEN_TICH_CAN_SD,0) AS DT_CON_LAI,
CASE
WHEN D.OWNER_OR_RENT = 'O' THEN 'Mua'
WHEN D.OWNER_OR_RENT = 'U' THEN 'Thuê'
ELSE ''
END
AS OWNER_OR_RENT,
H.CURRENT_STATE,
E.FLOOR_NO AS RENT_FLOOR_NO
FROM BUD_CONTRACT_MASTER A
LEFT JOIN BUD_CONTRACT_DT B ON A.CONTRACT_ID = B.CONTRACT_ID
LEFT JOIN CM_BRANCH C ON B.BRANCH_ID = C.BRANCH_ID
LEFT JOIN BUD_MASTER D ON A.BUILDING_ID = D.BUILDING_ID
LEFT JOIN BUD_AREA_DT E ON B.BUILDING_AREA_ID = E.BUILDING_AREA_ID
LEFT JOIN CM_DEPARTMENT F ON B.DEP_ID = F.DEP_ID
LEFT JOIN CM_BRANCH G ON D.BRANCH_ID = G.BRANCH_ID
LEFT JOIN RET_MASTER H ON D.ASSET_ID = H.ASSET_ID
WHERE 1=1
AND A.AUTH_STATUS = 'A'
AND (A.BUILDING_ID = @p_BUILDING_ID OR @p_BUILDING_ID IS NULL OR @p_BUILDING_ID = '')
AND (A.INPUT_DT >=CONVERT(DATE, @p_FROM_DT, 103) OR @p_FROM_DT IS NULL OR @p_FROM_DT = '')
AND (A.AMEND_DT <=CONVERT(DATE, @p_TO_DT, 103) OR @p_TO_DT IS NULL OR @p_TO_DT = '')
AND A.BRANCH_ID IN (SELECT BRANCH_ID FROM @BRANCH_TABLE)
UNION ALL
---------BUD_CONTRACT_CUST_MASTER---------------
SELECT
A.CONTRACT_ID,
B.CUSTOMER_NAME AS CUSTOMER_NAME,
B.ADDR AS ADDRESS,
D.CONTRACT_CODE AS CONTRACT_NO,
CONVERT(VARCHAR(20),D.START_DT,103) AS START_DT,
CONVERT(VARCHAR(20),D.END_DT,103) AS END_DT,
--------GIA THUE BAN DAU----------
ISNULL((
--SELECT TOTAL_AMT_INIT FROM BUD_CONTRACT_LOG WHERE CONTRACT_ID = A.CONTRACT_ID AND IS_FIRST_TIME = 'Y'
SELECT A1.TOTAL_AMT_INIT
FROM BUD_UTIL_LOG A1
WHERE A1.CONTRACT_ID = A.CONTRACT_ID
AND A1.BUILDING_AREA_ID = F.BUILDING_AREA_ID
AND A1.CUSTOMER_ID = A.CUST_ID
AND A1.IS_FIRST_TIME = 'Y'
),0) AS PRICE_VAT_INIT,
ISNULL((
--SELECT VAT_INIT FROM BUD_CONTRACT_LOG WHERE CONTRACT_ID = A.CONTRACT_ID AND IS_FIRST_TIME = 'Y'
SELECT A1.VAT_INIT
FROM BUD_UTIL_LOG A1
WHERE A1.CONTRACT_ID = A.CONTRACT_ID
AND A1.BUILDING_AREA_ID = F.BUILDING_AREA_ID
AND A1.CUSTOMER_ID = A.CUST_ID
AND A1.IS_FIRST_TIME = 'Y'
),0) AS VAT_INIT,
--------GIA THUE HIEN TAI---------
ISNULL(F.TOTAL_AMT,0) AS PRICE_VAT_CURRENT,
ISNULL(A.VAT, 0) AS VAT_CURRENT,
CONVERT(VARCHAR(20),A.PAYMENT_DT,103) AS PAYMENT_DT,
'' AS TOTAL_AMT_PAYMENT,
'' AS TOTAL_AMT_NEXT_PAYMENT,
E.BRANCH_NAME AS BRANCH_OR_DEPT,
--------TONG DT TOA NHA---------
ISNULL(F.DIEN_TICH_CAN_CHOTHUE,0) AS DT_CHO_THUE,
ISNULL(F.DIEN_TICH_TANG - F.DIEN_TICH_CAN_CHOTHUE,0) AS DT_CON_LAI,
CASE
WHEN C.OWNER_OR_RENT = 'O' THEN 'Mua'
WHEN C.OWNER_OR_RENT = 'U' THEN 'Thuê'
ELSE ''
END
AS OWNER_OR_RENT,
H.CURRENT_STATE,
G.FLOOR_NO AS RENT_FLOOR_NO
FROM BUD_CONTRACT_CUST_MASTER A
LEFT JOIN LS_CUSTOMER B ON A.CUST_ID = B.CUSTOMER_ID
LEFT JOIN BUD_MASTER C ON A.BUILDING_ID = C.BUILDING_ID
LEFT JOIN TR_CONTRACT D ON A.TR_CONTRACT_ID = D.CONTRACT_ID
LEFT JOIN CM_BRANCH E ON C.BRANCH_ID = E.BRANCH_ID
LEFT JOIN BUD_CONTRACT_CUST_DT F ON A.CONTRACT_ID = F.CONTRACT_ID
LEFT JOIN BUD_AREA_DT G ON F.BUILDING_AREA_ID = G.BUILDING_AREA_ID
LEFT JOIN RET_MASTER H ON C.ASSET_ID = H.ASSET_ID
WHERE 1=1
AND A.AUTH_STATUS = 'A'
AND (A.BUILDING_ID = @p_BUILDING_ID OR @p_BUILDING_ID IS NULL OR @p_BUILDING_ID = '')
AND (CONVERT(DATE,D.START_DT,103) >=CONVERT(DATE, @p_FROM_DT, 103) OR @p_FROM_DT IS NULL OR @p_FROM_DT = '')
AND (CONVERT(DATE,D.END_DT,103) <=CONVERT(DATE, @p_TO_DT, 103) OR @p_TO_DT IS NULL OR @p_TO_DT = '')
AND A.BRANCH_ID IN (SELECT BRANCH_ID FROM @BRANCH_TABLE)
) TMP
ORDER BY CONTRACT_ID
END
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Altering [dbo].[CON_REQUEST_DOC_InsXml]'
GO
ALTER PROCEDURE [dbo].[CON_REQUEST_DOC_InsXml]
@p_CONSTRUCT_CODE varchar(15) = NULL,
@p_CONSTRUCT_NAME nvarchar(100) = NULL,
@p_PLAN_ID varchar(15) = NULL,
@p_CONST_ID varchar(15) = NULL,
@p_DIVI_ID varchar(15) = NULL,
@p_CONSTRUCT_ADDR nvarchar(200) = NULL,
@p_LENGTH decimal(18, 2) = NULL,
@p_WIDTH decimal(18, 2) = NULL,
@p_CONSTRUCT_AREA decimal(18) = NULL,
@p_FLOORS int = NULL,
@p_FLOORS_AREA decimal(18, 2) = NULL,
@p_TOTAL_AREA_USE decimal(18, 2) = NULL, -- GIANT
@p_TOTAL_COST decimal(18, 2) = NULL,-- GIANT
@p_UNIT_PRICE decimal(18, 2) = NULL,-- GIANT
@p_YEAR_EXE varchar(4) = NULL,
@p_CONST_TYPE varchar(15) = NULL,
@p_HQ_TYPE varchar(15) = NULL,
@p_TOTAL_AMT decimal(18) = NULL,
@p_COST_ESTIMATE decimal(18) = NULL,
@p_COST_EXE decimal(18) = NULL,
@p_COST_INCURRED decimal(18) = NULL,
@p_CONST_PURPOSE varchar(15) = NULL,
@p_ENGINEER nvarchar(500) = NULL,
@p_BRANCH_NAME_ETX nvarchar(500) = NULL,
@p_DESCRIPTION nvarchar(2000) = NULL,
@p_START_DT VARCHAR(20) = NULL,
@p_END_DT VARCHAR(20) = NULL,
@p_DATE_EXE VARCHAR(20) = NULL,
@p_COMPLETION_DT VARCHAR(20) = NULL,
@p_CONSTRUCT_PROGRESS decimal(18) = NULL,
@p_RECORD_STATUS varchar(1) = '1',
@p_MAKER_ID varchar(15) = NULL,
@p_CREATE_DT VARCHAR(20) = NULL,
@p_AUTH_STATUS varchar(1) = 'N',
@p_CHECKER_ID varchar(15) = NULL,
@p_APPROVE_DT VARCHAR(20) = NULL,
@p_REQUEST_ID VARCHAR(15) = NULL,
@p_BRANCH_ID VARCHAR(15) = NULL,
@p_STREET NVARCHAR(200) = NULL,
@p_LOCATION VARCHAR(15) = NULL,
@p_SCALE NVARCHAR(1000) = NULL,
@p_UPD_DT varchar(20) = NULL,
@p_APPROVE_VALUE decimal(18) = NULL,
@P_ListRequestDoc XML = NULL, -- THONG TIN VE TO TRINH
@P_ListBid XML = NULL, -- CHI PHI SUA CHUA
@P_ListContract_DT XML = NULL, -- DANH SACH HO SO THI CONG
@P_ListPayment XML = NULL, -- CAC DOT THANH TOAN
@P_ListBid_DT XML = NULL, -- DANH SACH CHI TIET DON VI THAM GIA THAU
@P_ListContractorArise XML = NULL, -- DANH SACH CHI TIET PHAT SINH TANG GIAM
@P_ListReviewXML XML = NULL, -- ĐÁNH GIÁ NCC
@P_ListConsProcessXML XML = NULL, -- TIẾN ĐỘ CÔNG TRÌNH
@P_ListConsHHXML XML = NULL -- DANH SÁCH HÀNG HÓA
AS
--Validation is here
/*
DECLARE @ERRORSYS NVARCHAR(15) = ''
IF ( NOT EXISTS ( SELECT * FROM CON_REQUEST_DOC WHERE ))
SET @ERRORSYS = ''
IF @ERRORSYS <> ''
BEGIN
SELECT ErrorCode Result, '' CAR_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS
RETURN '0'
END
*/
DECLARE @sErrorCode VARCHAR(20)
Declare @hdoc INT
-- THONG TIN VE TO TRINH
Exec sp_xml_preparedocument @hdoc Output,@P_ListRequestDoc
DECLARE ListRequestDoc CURSOR LOCAL FOR
SELECT *
FROM OPENXML(@hDoc,'/Root/ListRequestDoc',2)
WITH
(
CON_REQUEST_DOC_ID varchar(15),
REQ_ID varchar(15),
REQ_CODE nvarchar(100),
REQ_NAME nvarchar(200),
REQ_DT VARCHAR(20),
REQ_CONTENT nvarchar(1000),
CONSTRUCT_ID varchar(15),
TOTAL_AMT decimal(18),
BRANCH_ID varchar(15),
PLAN_TYPE VARCHAR(1),
IS_PARENT VARCHAR(1),
IS_ARISE VARCHAR(1),
BUDGET varchar(15),
YEAR_BUDGET int,
REQUEST_PARENT VARCHAR(15),
APPROVE_DT VARCHAR(20)
)
OPEN ListRequestDoc
-- CHI PHI SUA CHUA
Exec sp_xml_preparedocument @hdoc Output,@P_ListBid
DECLARE ListBid CURSOR LOCAL FOR
SELECT *
FROM OPENXML(@hDoc,'/Root/ListBid',2)
WITH
(
BID_ID varchar(15),
BID_CODE varchar(15),
BID_TYPE varchar(1),
PROJECT_ID varchar(15),
TERM_BID nvarchar(200),
FORM varchar(4),
INPUT_DT VARCHAR(20),
EXP_DT VARCHAR(20),
OPEN_DT VARCHAR(20),
BUDGET varchar(15),
TOTAL_AMT decimal(18),
GUARANTEE_AMT decimal(18),
GUARANTEE_PER decimal(18),
GUARANTEE_EXP VARCHAR(20),
REQUEST_ID varchar(15),
BID_WIN nvarchar(200),
SETTLE_AMT decimal(18),
CONTRACT_CODE varchar(15),
NOTES nvarchar(1000),
TOTAL_AMT_KT VARCHAR(20),
CONTRACT_VALUE decimal(18,2),
[PERCENT] decimal(18,2),
OUTSTANDINGVALUE decimal(18,2),
ARISE_VALUE decimal(18,2),
PAID_VALUE decimal(18,2),
[DESC] nvarchar(1000)
)
OPEN ListBid
-- DANH SACH HO SO THI CONG (HOP DONG)
Exec sp_xml_preparedocument @hdoc Output,@P_ListContract_DT
DECLARE ListContract_DT CURSOR LOCAL FOR
SELECT *
FROM OPENXML(@hDoc,'/Root/ListContract_DT',2)
WITH
(
CONTRACT_ID varchar(15),
CONTRACT_CODE varchar(15),
[CONTRACT_NAME] nvarchar(200),
CONTRACT_TYPE varchar(15),
BID_ID nvarchar(200),
TOTAL_AMT DECIMAL(18),
IS_PARENT varchar(1),
REQUEST_ID varchar(15)
)
OPEN ListContract_DT
-- CAC DOT THANH TOAN
Exec sp_xml_preparedocument @hdoc Output,@P_ListPayment
DECLARE PaymentDetail CURSOR LOCAL FOR
SELECT *
FROM OPENXML(@hDoc,'/Root/PaymentDetail',2)
WITH
(
[PERCENT] decimal(18,2),
AMOUNT decimal(18),
BID_ID varchar(15),
PAY_DT varchar(20),
PAY_STATUS varchar(1),
NOTES nvarchar(1000),
CONTRACT_CODE varchar(15)
)
OPEN PaymentDetail
-- CHI TIET DON VI THAM GIA THAU
Exec sp_xml_preparedocument @hdoc Output,@P_ListBid_DT
DECLARE ContractorDetail CURSOR LOCAL FOR
SELECT *
FROM OPENXML(@hDoc,'/Root/ContractorDetail',2)
WITH
(
ID VARCHAR(15),
BID_ID varchar(15),
BID_CODE varchar(15),
SUPPLIER nvarchar(200),
IS_BID_WIN varchar(1),
OFFERING_VALUE decimal(18),
CHECK_VALUE decimal(18)
)
OPEN ContractorDetail
-- CHI TIET PHAT SINH TANG GIAM
Exec sp_xml_preparedocument @hdoc Output,@P_ListContractorArise
DECLARE ListContractorArise CURSOR LOCAL FOR
SELECT *
FROM OPENXML(@hDoc,'/Root/ListContractorArise',2)
WITH
(
ARISE_ID VARCHAR(15),
BID_ID varchar(15),
BID_CODE varchar(15),
SUPPLIER nvarchar(200),
IS_BID_WIN varchar(1),
BEGIN_VALUE decimal(18,2),
CHECKED_VALUE decimal(18,2)
)
OPEN ListContractorArise
-- DANH SÁCH HÀNG HÓA
Exec sp_xml_preparedocument @hdoc Output,@P_ListConsHHXML
DECLARE ListHH CURSOR LOCAL FOR
SELECT *
FROM OPENXML(@hDoc,'/Root/ListHH',2)
WITH
(
CON_REQ_HH_ID VARCHAR(15),
REQ_CODE VARCHAR(50),
REQ_ID VARCHAR(15),
SUP_ID VARCHAR(15),
SELLTEMENT_AMT DECIMAL(18,2),
[DESCRIPTION] NVARCHAR(4000), -- KHOONG SU DUNG
HH_ID VARCHAR(15),
ESTIMATES_AMT DECIMAL(18,2),
BRANCH_DO VARCHAR(15),
CONS_DOCUMENT_ID VARCHAR(15),
BID_ID VARCHAR(15),
BID_CODE VARCHAR(50),
REQDT_ID VARCHAR(15)
)
OPEN ListHH
-- ĐÁNH GIÁ NCC
Exec sp_xml_preparedocument @hdoc Output,@P_ListReviewXML
DECLARE ListReview CURSOR LOCAL FOR
SELECT *
FROM OPENXML(@hDoc,'/Root/ListReview',2)
WITH
(
CON_REQ_REVIEW_ID VARCHAR(15),
SUP_ID VARCHAR(15),
QCKT_REVIEW NVARCHAR(4000),
CONS_PROCESS VARCHAR(15),
MAINTENANCE VARCHAR(15),
REPORT_PLAN_EDIT VARCHAR(15),
CONS_QUALITY VARCHAR(15),
BEAUTY_IMAGE VARCHAR(15),
REQ_ID VARCHAR(15),
REQ_CODE VARCHAR(50),
SUP_NAME NVARCHAR(1000)
)
OPEN ListReview
-- TIẾN ĐỘ CÔNG TRÌNH
Exec sp_xml_preparedocument @hdoc Output,@P_ListConsProcessXML
DECLARE ListConsProcess CURSOR LOCAL FOR
SELECT *
FROM OPENXML(@hDoc,'/Root/ListConsProcess',2)
WITH
(
CON_REQ_PROCESS_ID VARCHAR(15),
DATE_REPORT VARCHAR(15),
PERCENT_COMPLETED DECIMAL(18,2),
PERCENT_REMAIN DECIMAL(18,2),
DEADLINE VARCHAR(15)
)
OPEN ListConsProcess
BEGIN TRANSACTION
-- THONG TIN VE TO TRINH
-- insert zô bảng tài liệu
---TAO BANG TAM
DECLARE @TEMP TABLE
(
[KEY] varchar(15),
[REF_ID] varchar(15),
[TYPE] varchar(50)
)
-- THEM THONG TIN TO TRINH
--KHAI BAO TOAN BO BIEN TRUOC KHI FETCH DATA
DECLARE
@INDEX int = 0,
@IS_PARENT VARCHAR(1),
@IS_ARISE VARCHAR(1),
@PLAN_TYPE VARCHAR(1),
@REQ_BUDGET varchar(15),
@REQ_YEAR_BUDGET int,
@REQUEST_PARENT VARCHAR(15),
@APPROVE_DT VARCHAR(20),
@CON_REQUEST_DOC_ID varchar(15),
@REQ_ID varchar(15),
@REQ_CODE nvarchar(100),
@REQ_NAME nvarchar(200),
@REQ_DT VARCHAR(20),
@REQ_CONTENT nvarchar(1000),
@CONSTRUCT_ID varchar(15),
@TOTAL_AMT decimal(18,2),
@BRANCH_ID varchar(15)
--INSERT ListBid DETAIL
FETCH NEXT FROM ListRequestDoc INTO @CON_REQUEST_DOC_ID,@REQ_ID, @REQ_CODE, @REQ_NAME, @REQ_DT, @REQ_CONTENT,
@CONSTRUCT_ID, @TOTAL_AMT, @BRANCH_ID, @PLAN_TYPE, @IS_PARENT,@IS_ARISE, @REQ_BUDGET, @REQ_YEAR_BUDGET, @REQUEST_PARENT, @APPROVE_DT
WHILE @@FETCH_STATUS = 0
BEGIN
--25/12/2014 Anh Ai yeu cau khong kiem tra trung to trinh - mot to trinh dung cho nhieu cong trinh
---- KIEM TRA SO TO TRINH CO TRUNG HAY KHONG
--IF EXISTS(SELECT * FROM CON_REQUEST_DOC WHERE [REQ_CODE]= @REQ_CODE)
--BEGIN
-- SELECT ErrorCode Result, '' REQ_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = 'CON-0001'
-- GOTO ABORT
--END
EXEC SYS_CodeMasters_Gen 'CON_REQUEST_DOC', @CON_REQUEST_DOC_ID out
IF @CON_REQUEST_DOC_ID='' OR @CON_REQUEST_DOC_ID IS NULL GOTO ABORT
SET @INDEX = @INDEX + 1
IF (@INDEX = 1) -- TRA VE SO TO TRINH DAU TIEN
BEGIN
--SET @P_REQUEST_ID = @REQ_ID
SET @P_REQUEST_ID = @CON_REQUEST_DOC_ID
END
SET @REQUEST_PARENT = @P_REQUEST_ID
INSERT INTO CON_REQUEST_DOC([CON_REQUEST_DOC_ID],[REQ_ID], [REQ_CODE], [REQ_NAME], [REQ_DT], [REQ_CONTENT], [CONSTRUCT_ID],
[TOTAL_AMT], [NOTES], [RECORD_STATUS], [MAKER_ID], [CREATE_DT], [AUTH_STATUS], [CHECKER_ID],
[APPROVE_DT], [BRANCH_ID], [PLAN_TYPE], [IS_PARENT] , [BUDGET], [YEAR_BUDGET], [REQUEST_PARENT], [IS_ARISE])
VALUES(@CON_REQUEST_DOC_ID,@REQ_ID, @REQ_CODE, @REQ_NAME, CONVERT(DATETIME, @REQ_DT, 103), @REQ_CONTENT, @CONSTRUCT_ID,
@TOTAL_AMT, '', @p_RECORD_STATUS, @P_MAKER_ID, CONVERT(DATETIME, @P_CREATE_DT , 103), @P_AUTH_STATUS, @P_CHECKER_ID,
CONVERT(DATETIME, @APPROVE_DT, 103), @BRANCH_ID, @PLAN_TYPE, @IS_PARENT, @REQ_BUDGET, @REQ_YEAR_BUDGET, @REQUEST_PARENT, @IS_ARISE)
INSERT INTO @TEMP([REF_ID],[TYPE]) VALUES (@CON_REQUEST_DOC_ID, 'CON_REQUEST_DOC')
PRINT @@ERROR
IF @@ERROR <> 0 GOTO ABORT
FETCH NEXT FROM ListRequestDoc INTO @CON_REQUEST_DOC_ID,@REQ_ID, @REQ_CODE, @REQ_NAME, @REQ_DT, @REQ_CONTENT,
@CONSTRUCT_ID, @TOTAL_AMT, @BRANCH_ID, @PLAN_TYPE, @IS_PARENT,@IS_ARISE, @REQ_BUDGET, @REQ_YEAR_BUDGET, @REQUEST_PARENT, @APPROVE_DT
END
CLOSE ListRequestDoc
DEALLOCATE ListRequestDoc
DECLARE @OLD_REQUEST_PARENT VARCHAR(15) = @REQUEST_PARENT
SET @REQUEST_PARENT = (SELECT TOP(1) CON_REQUEST_DOC_ID FROM CON_REQUEST_DOC WHERE REQUEST_PARENT = @OLD_REQUEST_PARENT ORDER BY TOTAL_AMT DESC)
UPDATE CON_REQUEST_DOC
SET IS_PARENT = (CASE WHEN CON_REQUEST_DOC_ID = @REQUEST_PARENT THEN '1' ELSE '0' END),
REQUEST_PARENT = @REQUEST_PARENT
WHERE REQUEST_PARENT = @OLD_REQUEST_PARENT
SET @p_REQUEST_ID = @REQUEST_PARENT
-- THEM THONG TIN CONG TRINH
DECLARE @l_CONSTRUCT_ID VARCHAR(15)
EXEC SYS_CodeMasters_Gen 'CON_MASTER', @l_CONSTRUCT_ID out
IF @l_CONSTRUCT_ID='' OR @l_CONSTRUCT_ID IS NULL GOTO ABORT
INSERT INTO CON_MASTER([IS_FINISH],[CONSTRUCT_ID],[CONSTRUCT_CODE],[CONSTRUCT_NAME],[PLAN_ID],[DIVI_ID],[CONSTRUCT_ADDR],[LENGTH],[WIDTH], [CONSTRUCT_AREA],
[FLOORS],[FLOORS_AREA],[YEAR_EXE],[HQ_TYPE],[CONST_TYPE],[TOTAL_AMT],[COST_ESTIMATE],[COST_EXE],[COST_INCURRED],[CONST_PURPOSE],
[DESCRIPTION],[START_DT],[END_DT],[DATE_EXE],[COMPLETION_DT],[CONSTRUCT_PROGRESS],[RECORD_STATUS],[MAKER_ID],[CREATE_DT],[AUTH_STATUS],[CHECKER_ID],[APPROVE_DT],[CONST_ID],
[REQUEST_ID], [BRANCH_ID], [STREET], [LOCATION], [SCALE], [ENGINEER], [BRANCH_NAME_ETX],UPD_DT, APPROVE_VALUE,TOTAL_AREA_USE,TOTAL_COST,UNIT_PRICE)
VALUES('N',@l_CONSTRUCT_ID ,@l_CONSTRUCT_ID ,@p_CONSTRUCT_NAME ,@p_PLAN_ID ,@p_DIVI_ID ,@p_CONSTRUCT_ADDR ,@p_LENGTH, @p_WIDTH, @p_CONSTRUCT_AREA ,@p_FLOORS, @p_FLOORS_AREA,
@p_YEAR_EXE ,@p_HQ_TYPE ,@p_CONST_TYPE ,@p_TOTAL_AMT ,@p_COST_ESTIMATE ,@p_COST_EXE ,@p_COST_INCURRED , @p_CONST_PURPOSE, @p_DESCRIPTION ,CONVERT(DATETIME, @p_START_DT, 103) ,
CONVERT(DATETIME, @p_END_DT, 103) ,CONVERT(DATETIME, @p_DATE_EXE, 103) ,CONVERT(DATETIME, @p_COMPLETION_DT, 103),@p_CONSTRUCT_PROGRESS ,@p_RECORD_STATUS ,@p_MAKER_ID ,CONVERT(DATETIME, @p_CREATE_DT, 103) ,@p_AUTH_STATUS ,@p_CHECKER_ID ,
CONVERT(DATETIME, @p_APPROVE_DT, 103) ,@p_CONST_ID, @p_REQUEST_ID, @p_BRANCH_ID, @p_STREET, @p_LOCATION, @p_SCALE, @p_ENGINEER, @p_BRANCH_NAME_ETX , CONVERT(DATETIME, @p_UPD_DT, 103), @p_APPROVE_VALUE,@p_TOTAL_AREA_USE,@p_TOTAL_COST,@p_UNIT_PRICE)
IF @@Error <> 0 GOTO ABORT
-- UPDATE CONSTRUCT ID CON_REQUEST_DOC
UPDATE CON_REQUEST_DOC
SET CONSTRUCT_ID = @l_CONSTRUCT_ID
WHERE REQUEST_PARENT = @p_REQUEST_ID
INSERT INTO @TEMP([REF_ID],[TYPE]) VALUES (@l_CONSTRUCT_ID, 'CON_MASTER')
-- CHI PHI SUA CHUA
--KHAI BAO TOAN BO BIEN TRUOC KHI FETCH DATA
DECLARE
@BID_ID varchar(15),
@BID_CODE varchar(15),
@BID_TYPE varchar(1),
@PROJECT_ID varchar(15),
@TERM_BID nvarchar(200),
@FORM varchar(4),
@INPUT_DT VARCHAR(20),
@EXP_DT VARCHAR(20),
@OPEN_DT VARCHAR(20),
@_TOTAL_AMT decimal(18), -- CHI PHI
@GUARANTEE_AMT decimal(18),
@GUARANTEE_PER decimal(18),
@GUARANTEE_EXP VARCHAR(20),
@REQUEST_ID varchar(15),
@BUDGET DECIMAL(18),
@BID_WIN nvarchar(200),
@SETTLE_AMT decimal(18),
@_CONTRACT_CODE varchar(15),
@NOTES nvarchar(1000),
@TOTAL_AMT_KT decimal(18),
@CONTRACT_VALUE decimal(18,2),
@PERCENT decimal(18,2),
@OUTSTANDINGVALUE decimal(18,2),
@ARISE_VALUE decimal(18,2),
@PAID_VALUE decimal(18,2),
@DESC nvarchar(1000)
--INSERT ListBid DETAIL
FETCH NEXT FROM ListBid INTO @BID_ID, @BID_CODE, @BID_TYPE, @PROJECT_ID, @TERM_BID,
@FORM, @INPUT_DT, @EXP_DT, @OPEN_DT, @BUDGET, @_TOTAL_AMT, @GUARANTEE_AMT, @GUARANTEE_PER, @GUARANTEE_EXP, @REQUEST_ID,
@BID_WIN, @SETTLE_AMT, @_CONTRACT_CODE, @NOTES,@TOTAL_AMT_KT,@CONTRACT_VALUE,@PERCENT,@OUTSTANDINGVALUE,@ARISE_VALUE,@PAID_VALUE,@DESC
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE @l_BID_ID VARCHAR(15)
EXEC SYS_CodeMasters_Gen 'BID_MASTER', @l_BID_ID out
IF @l_BID_ID='' OR @l_BID_ID IS NULL GOTO ABORT
-- GIANT 10/12/2021 terM_BID
SET @TERM_BID = (SELECT [DESCRIPTION] FROM PL_REQUEST_DOC_DT WHERE REQDT_ID = @TERM_BID)
--INSERT INTO BID_MASTER([BID_ID],[BID_CODE],[BID_TYPE],[PROJECT_ID],[TERM_BID],[FORM],[INPUT_DT],[EXP_DT],
--[OPEN_DT],[BUDGET],[TOTAL_AMT],[GUARANTEE_AMT],[GUARANTEE_PER],[GUARANTEE_EXP],[NOTES],
--[RECORD_STATUS],[MAKER_ID],[CREATE_DT],[AUTH_STATUS],[CHECKER_ID],[APPROVE_DT],[REQUEST_ID],
--[BID_WIN], [SETTLE_AMT],[CONTRACT_CODE],[TOTAL_AMT_KT],CONTRACT_VALUE,[PERCENT],OUTSTANDINGVALUE, ARISE_VALUE ,PAID_VALUE,[DESC])
--VALUES(@l_BID_ID ,@BID_CODE , @BID_TYPE,@PROJECT_ID ,@TERM_BID ,@FORM ,
--CONVERT(DATETIME, @INPUT_DT, 103) ,CONVERT(DATETIME, @EXP_DT, 103) ,
--CONVERT(DATETIME, @OPEN_DT, 103) ,@BUDGET ,@_TOTAL_AMT ,@GUARANTEE_AMT ,
--@GUARANTEE_PER ,CONVERT(DATETIME, @GUARANTEE_EXP, 103) ,@NOTES ,@p_RECORD_STATUS ,
--@p_MAKER_ID ,CONVERT(DATETIME, @p_CREATE_DT, 103) ,@p_AUTH_STATUS ,@p_CHECKER_ID ,
--CONVERT(DATETIME, @p_APPROVE_DT, 103), @p_REQUEST_ID, @BID_WIN, @SETTLE_AMT, @_CONTRACT_CODE, @TOTAL_AMT_KT,@CONTRACT_VALUE,@PERCENT,@OUTSTANDINGVALUE,@ARISE_VALUE,@PAID_VALUE,@DESC)
--IF @@ERROR <> 0 GOTO ABORT
INSERT INTO @TEMP([KEY],[REF_ID],[TYPE]) VALUES (@BID_CODE, @l_BID_ID, 'BID_MASTER')
FETCH NEXT FROM ListBid INTO @BID_ID, @BID_CODE, @BID_TYPE, @PROJECT_ID, @TERM_BID,
@FORM, @INPUT_DT, @EXP_DT, @OPEN_DT, @BUDGET, @_TOTAL_AMT, @GUARANTEE_AMT, @GUARANTEE_PER, @GUARANTEE_EXP, @REQUEST_ID,
@BID_WIN, @SETTLE_AMT, @_CONTRACT_CODE, @NOTES,@TOTAL_AMT_KT,@CONTRACT_VALUE,@PERCENT,@OUTSTANDINGVALUE,@ARISE_VALUE,@PAID_VALUE,@DESC
END
CLOSE ListBid
DEALLOCATE ListBid
-- THEM CHI TIET THONG TIN HO SO THI CONG
-- HOP DONG & PHU LUC HOP DONG
DECLARE
@CDT_INDEX int = 0,
@CDT_CONTRACT_ID varchar(15),
@CONTRACT_CODE varchar(15),
@CONTRACT_NAME nvarchar(200),
@CONTRACT_TYPE varchar(1),
@CDT_BID_ID nvarchar(200),
@CDT_TOTAL_AMT decimal(18),
@CDT_IS_PARENT varchar(1),
@CDT_REQUEST_ID varchar(15),
@CDT_CONTRACT_PARENT varchar(15)
-- DANH SACH HO SO THI CONG (HOP DONG)
--INSERT ListContract_DT DETAIL
FETCH NEXT FROM ListContract_DT INTO @CDT_CONTRACT_ID, @CONTRACT_CODE, @CONTRACT_NAME, @CONTRACT_TYPE,
@CDT_BID_ID, @CDT_TOTAL_AMT, @CDT_IS_PARENT, @CDT_REQUEST_ID
WHILE @@FETCH_STATUS = 0
BEGIN
-- KIEM TRA SO HOP DONG CO TRUNG HAY KHONG
IF EXISTS(SELECT * FROM TR_CONTRACT WHERE REQUEST_ID = @P_REQUEST_ID AND [CONTRACT_CODE]= @CONTRACT_CODE AND @CONTRACT_CODE<>'' AND @CONTRACT_CODE IS NOT NULL)
BEGIN
SELECT ErrorCode Result, @l_CONSTRUCT_ID CONSTRUCT_ID, '' REF_ID, '' [TYPE], ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = 'CTRC-0001'
GOTO ABORT
END
SELECT @BID_ID = REF_ID FROM @TEMP where [TYPE]='BID_MASTER' AND [KEY] = @CDT_BID_ID
DECLARE @l_CONTRACT_ID VARCHAR(15)
EXEC SYS_CodeMasters_Gen 'TR_CONTRACT', @l_CONTRACT_ID out
IF @l_CONTRACT_ID='' OR @l_CONTRACT_ID IS NULL GOTO ABORT
--SET @CDT_INDEX = @CDT_INDEX + 1
IF (@CDT_IS_PARENT = '1') -- TRA VE SO TO TRINH DAU TIEN
SET @CDT_CONTRACT_PARENT = @l_CONTRACT_ID
INSERT INTO TR_CONTRACT([CONTRACT_ID],[CONTRACT_CODE],[CONTRACT_NAME],[CONTRACT_TYPE],[BID_ID],[SUP_ID],
[TOTAL_AMT],[DELIVERY_DT],[FORM1],[VOUCHER_ID1],[BANK1],[AMOUNT1],
[EXP_DT1],[RATE1],[FORM2],[VOUCHER_ID2],[BANK2],[AMOUNT2],[EXP_DT2],
[RATE2],[REQ_DOC_ID],[REQ_DOC_CONTENT],[APPROVE_VALUE],[SIGN_DT],[CONSTRUCT_PROGRESS],
[NOTES],[RECORD_STATUS],[MAKER_ID],[CREATE_DT],[AUTH_STATUS],[CHECKER_ID],[APPROVE_DT],[START_DT],[END_DT], [IS_PARENT], [REQUEST_ID], [CONTRACT_PARENT])
VALUES(@l_CONTRACT_ID ,@CONTRACT_CODE ,@CONTRACT_NAME, @CONTRACT_TYPE ,@BID_ID ,NULL,
@CDT_TOTAL_AMT,NULL , NULL ,NULL ,NULL ,NULL ,NULL ,NULL ,NULL ,NULL ,NULL ,NULL,
NULL ,NULL ,NULL ,NULL, NULL,NULL,NULL ,
NULL ,@p_RECORD_STATUS ,@p_MAKER_ID ,CONVERT(DATETIME, @p_CREATE_DT, 103) ,@p_AUTH_STATUS,
@p_CHECKER_ID ,(CASE WHEN @p_APPROVE_DT IS NOT NULL AND @p_APPROVE_DT <> '' then CONVERT(DATETIME, @p_APPROVE_DT, 103) ELSE NULL END),
CONVERT(DATETIME,@P_START_DT,103),CONVERT(DATETIME,@P_END_DT,103), @CDT_IS_PARENT, @p_REQUEST_ID, case when @CDT_IS_PARENT = '1' then null else @CDT_CONTRACT_PARENT end)
IF @@Error <> 0 GOTO ABORT
INSERT INTO @TEMP([KEY],[REF_ID],[TYPE]) VALUES (@CONTRACT_CODE, @l_CONTRACT_ID, 'TR_CONTRACT')
FETCH NEXT FROM ListContract_DT INTO @CDT_CONTRACT_ID, @CONTRACT_CODE, @CONTRACT_NAME, @CONTRACT_TYPE,
@CDT_BID_ID, @CDT_TOTAL_AMT, @CDT_IS_PARENT, @CDT_REQUEST_ID
END
CLOSE ListContract_DT
DEALLOCATE ListContract_DT
-- THEM THANH TOAN HO SO THI CONG
--insert payment detail
DECLARE
@AMOUNT decimal(18),
@PAY_DT varchar(20),
@PAY_STATUS varchar(1),
@CONTRACT_ID varchar(15),
@P_CONTRACT_CODE varchar(15)
DECLARE @l_PAY_ID VARCHAR(15), @l_PAY_BID_ID varchar(15)
FETCH NEXT FROM PaymentDetail INTO @PERCENT, @AMOUNT, @BID_ID, @PAY_DT, @PAY_STATUS, @NOTES, @P_CONTRACT_CODE
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @l_PAY_BID_ID = BID_ID FROM TR_CONTRACT WHERE CONTRACT_CODE = @P_CONTRACT_CODE AND REQUEST_ID = @p_REQUEST_ID
SELECT @BID_ID = REF_ID FROM @TEMP where [TYPE]='BID_MASTER' AND [KEY] = @BID_ID
SELECT @CONTRACT_ID = REF_ID FROM @TEMP where [TYPE]='TR_CONTRACT' AND [KEY] = @P_CONTRACT_CODE
EXEC SYS_CodeMasters_Gen 'TR_CONTRACT_PAYMENT', @l_PAY_ID out
IF @l_PAY_ID='' OR @l_PAY_ID IS NULL GOTO ABORT
INSERT INTO TR_CONTRACT_PAYMENT([PAY_AMOUNT],[PAY_DT], [PAY_ID],[CONTRACT_ID], [CONTRACT_CODE], [PAY_PHASE],[EXPECTED_DT],
[PERCENT],[AMOUNT],[PAY_STATUS],[NOTES],[RECORD_STATUS],[MAKER_ID],[CREATE_DT],[AUTH_STATUS],[CHECKER_ID],[APPROVE_DT], [REQUEST_ID], BID_ID)
VALUES(@AMOUNT,(CASE WHEN @PAY_DT IS NOT NULL AND @PAY_DT <> '' then CONVERT(DATETIME, @PAY_DT, 103) ELSE NULL END),
@l_PAY_ID ,@CONTRACT_ID, @P_CONTRACT_CODE, NULL ,CONVERT(DATETIME, NULL, 103) ,@PERCENT,@AMOUNT,@PAY_STATUS ,@NOTES ,
@p_RECORD_STATUS ,@p_MAKER_ID ,CONVERT(DATETIME, @p_CREATE_DT, 103) ,@p_AUTH_STATUS ,@p_CHECKER_ID ,
(CASE WHEN @p_APPROVE_DT IS NOT NULL AND @p_APPROVE_DT <> '' then CONVERT(DATETIME, @p_APPROVE_DT, 103) ELSE NULL END), @p_REQUEST_ID, @BID_ID)
IF @@Error <> 0 GOTO ABORT
FETCH NEXT FROM PaymentDetail INTO @PERCENT, @AMOUNT, @BID_ID, @PAY_DT, @PAY_STATUS, @NOTES, @P_CONTRACT_CODE
END
CLOSE PaymentDetail
DEALLOCATE PaymentDetail
-- CHI PHI SUA CHUA
DECLARE
@ID VARCHAR(15),
@DT_BID_ID varchar(15),
@DT_BID_CODE varchar(15),
@SUPPLIER nvarchar(200),
@IS_BIDWIN varchar(1),
@OFFERING_VALUE decimal(18),
@CHECK_VALUE decimal(18)
FETCH NEXT FROM ContractorDetail INTO @ID, @DT_BID_ID, @DT_BID_CODE, @SUPPLIER, @IS_BIDWIN, @OFFERING_VALUE, @CHECK_VALUE
WHILE @@FETCH_STATUS = 0
BEGIN
-- LAY MA HO SO THAU O BANG MASTER
SELECT @DT_BID_ID = REF_ID FROM @TEMP where [TYPE]='BID_MASTER' AND [KEY] = @DT_BID_CODE
EXEC SYS_CodeMasters_Gen 'BID_CONTRACTOR_DT', @ID out
IF @ID='' OR @ID IS NULL GOTO ABORT
IF @EXP_DT = '' SET @EXP_DT = NULL
INSERT INTO BID_CONTRACTOR_DT([ID],[SUP_ID],[BID_ID], [BID_CODE], [SEND_DT],[OFFERING_VALUE],[FORM],[EXP_DT],
[BANK],[VOUCHER],[ISVALID],[IS_BID_WIN],[NOTES],[RECORD_STATUS],[MAKER_ID],[CREATE_DT],[AUTH_STATUS],
[CHECKER_ID],[APPROVE_DT],[PROGRESS_TIME], [SUPPLIER], [CHECK_VALUE], [REQUEST_ID])
VALUES(@ID , NULL ,@DT_BID_ID ,@DT_BID_CODE, NULL ,@OFFERING_VALUE ,NULL, NULL ,NULL ,NULL ,NULL,@IS_BIDWIN ,
@NOTES ,@p_RECORD_STATUS ,@p_MAKER_ID ,CONVERT(DATETIME, @p_CREATE_DT, 103) ,@p_AUTH_STATUS ,@p_CHECKER_ID ,
CONVERT(DATETIME, @p_APPROVE_DT, 103), NULL, @SUPPLIER, @CHECK_VALUE, @P_REQUEST_ID)
IF @@ERROR <> 0 GOTO ABORT
INSERT INTO @TEMP([REF_ID],[TYPE]) VALUES (@ID, 'BID_CONTRACTOR_DT')
FETCH NEXT FROM ContractorDetail INTO @ID, @DT_BID_ID, @DT_BID_CODE, @SUPPLIER, @IS_BIDWIN, @OFFERING_VALUE, @CHECK_VALUE
END
CLOSE ContractorDetail
DEALLOCATE ContractorDetail
-- CHI PHI PHAT SINH TANG GIAM
DECLARE
@ARISE_ID VARCHAR(15),
@BEGIN_VALUE decimal(18,2),
@CHECKED_VALUE decimal(18,2)
FETCH NEXT FROM ListContractorArise into @ARISE_ID, @DT_BID_ID, @DT_BID_CODE, @SUPPLIER, @IS_BIDWIN, @BEGIN_VALUE, @CHECKED_VALUE
WHILE @@FETCH_STATUS = 0
BEGIN
-- LAY MA HO SO THAU O BANG MASTER
SELECT @DT_BID_ID = REF_ID FROM @TEMP where [TYPE]='BID_MASTER' AND [KEY] = @DT_BID_CODE
EXEC SYS_CodeMasters_Gen 'CON_BID_CONTRACTOR_DT_ARISE', @ARISE_ID out
IF @ARISE_ID='' OR @ARISE_ID IS NULL GOTO ABORT
INSERT INTO CON_BID_CONTRACTOR_DT_ARISE(ARISE_ID,REQ_ID, SUPPLIER, IS_BID_WIN, BEGIN_VALUE, CHECKED_VALUE, BID_ID, BID_CODE)
VALUES (@ARISE_ID, @P_REQUEST_ID, @SUPPLIER, @IS_BIDWIN, @BEGIN_VALUE, @CHECKED_VALUE, @DT_BID_ID ,@DT_BID_CODE)
INSERT INTO @TEMP([REF_ID],[TYPE]) VALUES (@ARISE_ID, 'CON_BID_CONTRACTOR_DT_ARISE')
FETCH NEXT FROM ListContractorArise into @ARISE_ID, @DT_BID_ID, @DT_BID_CODE, @SUPPLIER, @IS_BIDWIN, @BEGIN_VALUE, @CHECKED_VALUE
END
CLOSE ListContractorArise
DEALLOCATE ListContractorArise
-- DANH SÁCH HÀNG HÓA
DECLARE
@CON_REQ_HH_ID VARCHAR(15),
@SUP_ID VARCHAR(15),
@SELLTEMENT_AMT DECIMAL(18,2),
@DESCRIPTION NVARCHAR(4000),
@HH_ID VARCHAR(15),
@ESTIMATES_AMT DECIMAL(18,2),
@BRANCH_DO VARCHAR(15),
@CONS_DOCUMENT_ID VARCHAR(15),
@REQDT_ID VARCHAR(15)
FETCH NEXT FROM ListHH INTO @CON_REQ_HH_ID,@REQ_CODE, @REQ_ID, @SUP_ID, @SELLTEMENT_AMT, @DESCRIPTION, @HH_ID, @ESTIMATES_AMT,@BRANCH_DO,@CONS_DOCUMENT_ID,@BID_ID,@BID_CODE,@REQDT_ID
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC SYS_CodeMasters_Gen 'CON_REQUEST_HH_DT', @CON_REQ_HH_ID out
IF @CON_REQ_HH_ID='' OR @CON_REQ_HH_ID IS NULL GOTO ABORT
SET @DESCRIPTION = (SELECT [DESCRIPTION] FROM PL_REQUEST_DOC_DT WHERE REQDT_ID = @REQDT_ID)
print @BID_CODE
print @REQDT_ID
INSERT INTO [dbo].[CON_REQUEST_HH_DT]
(
[CON_REQ_HH_ID],
[SUP_ID],
[SELLTEMENT_AMT],
[DESCRIPTION],
[HH_ID],
[REQ_ID],
[ESTIMATES_AMT],
[BRANCH_DO],
[CONS_DOCUMENT_ID],
[BID_ID],
[REQ_CODE],
[CONSTRUCT_ID],
[REQDT_ID],
[BID_CODE]
)
VALUES
(
@CON_REQ_HH_ID,
@SUP_ID,
@SELLTEMENT_AMT,
@DESCRIPTION,
@HH_ID,
@REQ_ID,
@ESTIMATES_AMT,
@BRANCH_DO,
@CONS_DOCUMENT_ID,
@BID_ID,
@REQ_CODE,
@l_CONSTRUCT_ID,
@REQDT_ID,
@BID_CODE
)
FETCH NEXT FROM ListHH INTO @CON_REQ_HH_ID,@REQ_CODE, @REQ_ID, @SUP_ID, @SELLTEMENT_AMT, @DESCRIPTION, @HH_ID, @ESTIMATES_AMT,@BRANCH_DO,@CONS_DOCUMENT_ID,@BID_ID,@BID_CODE,@REQDT_ID
END
CLOSE ListHH
DEALLOCATE ListHH
-- ĐÁNH GIÁ NCC
DECLARE
@CON_REQ_REVIEW_ID VARCHAR(15),
@QCKT_REVIEW NVARCHAR(4000),
@CONS_PROCESS VARCHAR(15),
@MAINTENANCE VARCHAR(15),
@REPORT_PLAN_EDIT VARCHAR(15),
@CONS_QUALITY VARCHAR(15),
@BEAUTY_IMAGE VARCHAR(15),
@SUP_NAME NVARCHAR(1000)
FETCH NEXT FROM ListReview into @CON_REQ_REVIEW_ID,@SUP_ID, @QCKT_REVIEW, @CONS_PROCESS, @MAINTENANCE, @REPORT_PLAN_EDIT, @CONS_QUALITY, @BEAUTY_IMAGE,@REQ_ID,@REQ_CODE,@SUP_NAME
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC SYS_CodeMasters_Gen 'CON_REQUEST_REVIEW_DT', @CON_REQ_REVIEW_ID out
IF @CON_REQ_REVIEW_ID='' OR @CON_REQ_REVIEW_ID IS NULL GOTO ABORT
INSERT INTO [dbo].[CON_REQUEST_REVIEW_DT]
(
[CON_REQ_REVIEW_ID],
[SUP_ID],
[CONS_PROCESS],
[MAINTENANCE],
[REPORT_PLAN_EDIT],
[CONS_QUALITY],
[BEAUTY_IMAGE],
[CONSTRUCT_ID],
[QCKT_REVIEW],
[SUP_NAME],
[REQ_CODE],
[REQ_ID]
)
VALUES
(
@CON_REQ_REVIEW_ID,
@SUP_ID,
@CONS_PROCESS,
@MAINTENANCE,
@REPORT_PLAN_EDIT,
@CONS_QUALITY,
@BEAUTY_IMAGE,
@l_CONSTRUCT_ID,
@QCKT_REVIEW,
@SUP_NAME,
@REQ_CODE,
@REQ_ID
)
FETCH NEXT FROM ListReview INTO @CON_REQ_REVIEW_ID,@SUP_ID, @QCKT_REVIEW, @CONS_PROCESS, @MAINTENANCE, @REPORT_PLAN_EDIT, @CONS_QUALITY, @BEAUTY_IMAGE,@REQ_ID,@REQ_CODE,@SUP_NAME
END
CLOSE ListReview
DEALLOCATE ListReview
-- TIẾN ĐỘ CÔNG TRÌNH
DECLARE
@CON_REQ_PROCESS_ID VARCHAR(15),
@DATE_REPORT VARCHAR(50),
@PERCENT_COMPLETED DECIMAL(18,2),
@PERCENT_REMAIN DECIMAL(18,2),
@DEADLINE VARCHAR(50)
FETCH NEXT FROM ListConsProcess into @CON_REQ_PROCESS_ID,@DATE_REPORT, @PERCENT_COMPLETED, @PERCENT_REMAIN, @DEADLINE
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC SYS_CodeMasters_Gen 'CON_REQUEST_PROCESS_DT', @CON_REQ_PROCESS_ID out
IF @CON_REQ_PROCESS_ID='' OR @CON_REQ_PROCESS_ID IS NULL GOTO ABORT
INSERT INTO [dbo].[CON_REQUEST_PROCESS_DT]
(
[CON_REQ_PROCESS_ID],
[DATE_REPORT],
[PERCENT_COMPLETED],
[PERCENT_REMAIN],
[DEADLINE],
[CONSTRUCT_ID]
)
VALUES
(
@CON_REQ_PROCESS_ID,
@DATE_REPORT,
@PERCENT_COMPLETED,
@PERCENT_REMAIN,
@DEADLINE,
@l_CONSTRUCT_ID
)
FETCH NEXT FROM ListConsProcess INTO @CON_REQ_PROCESS_ID,@DATE_REPORT, @PERCENT_COMPLETED, @PERCENT_REMAIN, @DEADLINE
END
CLOSE ListConsProcess
DEALLOCATE ListConsProcess
COMMIT TRANSACTION
BEGIN
SELECT '0' as Result, @l_CONSTRUCT_ID CONSTRUCT_ID, [REF_ID], [TYPE], '' ErrorDesc FROM @TEMP
RETURN '0'
END
ABORT:
BEGIN
--CLOSE ListRequestDoc
--DEALLOCATE ListRequestDoc
--CLOSE ListBid
--DEALLOCATE ListBid
CLOSE ListContract_DT
DEALLOCATE ListContract_DT
CLOSE PaymentDetail
DEALLOCATE PaymentDetail
CLOSE ContractorDetail
DEALLOCATE ContractorDetail
ROLLBACK TRANSACTION
SELECT '-1' as Result, @l_CONSTRUCT_ID CONSTRUCT_ID, '' [REF_ID], '' [TYPE], @sErrorCode ErrorDesc
RETURN '-1'
End
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Creating [dbo].[rpt_BUD_CONTRACT_TOTAL_CUSTOMER_Excel]'
GO
CREATE PROC [dbo].[rpt_BUD_CONTRACT_TOTAL_CUSTOMER_Excel]
@p_BRANCH_ID VARCHAR(15) = NULL,
@p_DEP_ID VARCHAR(15) = NULL,
@p_FROM_DT VARCHAR(20) = NULL,
@p_TO_DT VARCHAR(20) = NULL,
@p_LEVEL VARCHAR(15) ='ALL'
AS
BEGIN
DECLARE @BRANCH_TABLE TABLE(BRANCH_ID VARCHAR(15))
IF(@p_LEVEL ='ALL')
BEGIN
INSERT INTO @BRANCH_TABLE SELECT BRANCH_ID FROM [dbo].[CM_BRANCH_GETCHILDID](@p_BRANCH_ID)
END
IF(@p_LEVEL='UNIT')
BEGIN
INSERT INTO @BRANCH_TABLE SELECT @p_BRANCH_ID
END
SELECT ROW_NUMBER() OVER (ORDER BY CONTRACT_ID) AS STT, TMP.*
FROM
(
---------BUD_CONTRACT_MASTER---------------
SELECT
A.CONTRACT_ID,
ISNULL(
CASE
WHEN (B.DEP_ID IS NULL OR B.DEP_ID = '') THEN C.BRANCH_NAME
ELSE F.DEP_NAME
END, '')
AS CUSTOMER_NAME,
C.ADDR AS ADDRESS,
B.CONTRACT_ID AS CONTRACT_NO,
CONVERT(VARCHAR(20),A.INPUT_DT,103) AS START_DT,
CONVERT(VARCHAR(20),A.AMEND_DT,103) AS END_DT,
--------GIA THUE BAN DAU----------
ISNULL((
--SELECT TOTAL_AMT_INIT FROM BUD_CONTRACT_LOG WHERE CONTRACT_ID = B.CONTRACT_DTID AND IS_FIRST_TIME = 'Y'
SELECT A1.TOTAL_AMT_INIT FROM BUD_UTIL_LOG A1
WHERE A1.CONTRACT_ID = A.CONTRACT_ID
AND A1.BUILDING_AREA_ID = E.BUILDING_AREA_ID
AND A1.CUSTOMER_ID = B.BRANCH_ID
AND A1.IS_FIRST_TIME = 'Y'
),0) AS PRICE_VAT_INIT,
ISNULL((
--SELECT VAT_INIT FROM BUD_CONTRACT_LOG WHERE CONTRACT_ID = B.CONTRACT_DTID AND IS_FIRST_TIME = 'Y'
SELECT A1.VAT_INIT FROM BUD_UTIL_LOG A1
WHERE A1.CONTRACT_ID = A.CONTRACT_ID
AND A1.BUILDING_AREA_ID = E.BUILDING_AREA_ID
AND A1.CUSTOMER_ID = B.BRANCH_ID
AND A1.IS_FIRST_TIME = 'Y'
),0) AS VAT_INIT,
--------GIA THUE HIEN TAI---------
ISNULL(B.TOTAL_AMT, 0) AS PRICE_VAT_CURRENT,
0 AS VAT_CURRENT,
'' AS PAYMENT_DT,
'' AS TOTAL_AMT_PAYMENT,
'' AS TOTAL_AMT_NEXT_PAYMENT,
G.BRANCH_NAME AS BRANCH_OR_DEPT,
--------TONG DT TOA NHA---------
ISNULL(B.DIEN_TICH_CAN_SD,0) AS DT_CHO_THUE,
ISNULL(B.DIEN_TICH_TANG - B.DIEN_TICH_CAN_SD,0) AS DT_CON_LAI,
CASE
WHEN D.OWNER_OR_RENT = 'O' THEN 'Mua'
WHEN D.OWNER_OR_RENT = 'U' THEN 'Thuê'
ELSE ''
END
AS OWNER_OR_RENT,
H.CURRENT_STATE,
ISNULL(E.FLOOR_NO, 0) AS RENT_FLOOR_NO,
ISNULL(D.ADDRESS,'') AS BUD_ADDRESS
FROM BUD_CONTRACT_MASTER A
LEFT JOIN BUD_CONTRACT_DT B ON A.CONTRACT_ID = B.CONTRACT_ID
LEFT JOIN CM_BRANCH C ON B.BRANCH_ID = C.BRANCH_ID
LEFT JOIN BUD_MASTER D ON A.BUILDING_ID = D.BUILDING_ID
LEFT JOIN BUD_AREA_DT E ON B.BUILDING_AREA_ID = E.BUILDING_AREA_ID
LEFT JOIN CM_DEPARTMENT F ON B.DEP_ID = F.DEP_ID
LEFT JOIN CM_BRANCH G ON D.BRANCH_ID = G.BRANCH_ID
LEFT JOIN RET_MASTER H ON D.ASSET_ID = H.ASSET_ID
WHERE 1=1
AND A.AUTH_STATUS = 'A'
AND (CONVERT(DATE, A.INPUT_DT, 103) >= CONVERT(DATE, @p_FROM_DT, 103) OR @p_FROM_DT IS NULL OR @p_FROM_DT = '')
AND (CONVERT(DATE, A.AMEND_DT, 103 ) <= CONVERT(DATE, @p_TO_DT, 103) OR @p_TO_DT IS NULL OR @p_TO_DT = '')
AND A.BRANCH_ID IN (SELECT BRANCH_ID FROM @BRANCH_TABLE)
UNION ALL
---------BUD_CONTRACT_CUST_MASTER---------------
SELECT
A.CONTRACT_ID,
B.CUSTOMER_NAME AS CUSTOMER_NAME,
B.ADDR AS ADDRESS,
D.CONTRACT_CODE AS CONTRACT_NO,
CONVERT(VARCHAR(20),D.START_DT,103) AS START_DT,
CONVERT(VARCHAR(20),D.END_DT,103) AS END_DT,
--------GIA THUE BAN DAU----------
ISNULL((
--SELECT TOTAL_AMT_INIT FROM BUD_CONTRACT_LOG WHERE CONTRACT_ID = A.CONTRACT_ID AND IS_FIRST_TIME = 'Y'
SELECT A1.TOTAL_AMT_INIT FROM BUD_UTIL_LOG A1
WHERE A1.CONTRACT_ID = A.CONTRACT_ID
AND A1.BUILDING_AREA_ID = F.BUILDING_AREA_ID
AND A1.CUSTOMER_ID = A.CUST_ID
AND A1.IS_FIRST_TIME = 'Y'
),0) AS PRICE_VAT_INIT,
ISNULL((
--SELECT VAT_INIT FROM BUD_CONTRACT_LOG WHERE CONTRACT_ID = A.CONTRACT_ID AND IS_FIRST_TIME = 'Y'
SELECT A1.VAT_INIT FROM BUD_UTIL_LOG A1
WHERE A1.CONTRACT_ID = A.CONTRACT_ID
AND A1.BUILDING_AREA_ID = F.BUILDING_AREA_ID
AND A1.CUSTOMER_ID = A.CUST_ID
AND A1.IS_FIRST_TIME = 'Y'
),0) AS VAT_INIT,
--------GIA THUE HIEN TAI---------
ISNULL(F.TOTAL_AMT,0) AS PRICE_VAT_CURRENT,
ISNULL(A.VAT, 0) AS VAT_CURRENT,
CONVERT(VARCHAR(20),A.PAYMENT_DT,103) AS PAYMENT_DT,
'' AS TOTAL_AMT_PAYMENT,
'' AS TOTAL_AMT_NEXT_PAYMENT,
E.BRANCH_NAME AS BRANCH_OR_DEPT,
--------TONG DT TOA NHA---------
ISNULL(F.DIEN_TICH_CAN_CHOTHUE,0) AS DT_CHO_THUE,
ISNULL(F.DIEN_TICH_TANG - DIEN_TICH_CAN_CHOTHUE,0) AS DT_CON_LAI,
CASE
WHEN C.OWNER_OR_RENT = 'O' THEN 'Mua'
WHEN C.OWNER_OR_RENT = 'U' THEN 'Thuê'
ELSE ''
END
AS OWNER_OR_RENT,
H.CURRENT_STATE,
ISNULL(G.FLOOR_NO,0) AS RENT_FLOOR_NO,
ISNULL(C.ADDRESS,'') AS BUD_ADDRESS
FROM BUD_CONTRACT_CUST_MASTER A
LEFT JOIN LS_CUSTOMER B ON A.CUST_ID = B.CUSTOMER_ID
LEFT JOIN BUD_MASTER C ON A.BUILDING_ID = C.BUILDING_ID
LEFT JOIN TR_CONTRACT D ON A.TR_CONTRACT_ID = D.CONTRACT_ID
LEFT JOIN CM_BRANCH E ON C.BRANCH_ID = E.BRANCH_ID
LEFT JOIN BUD_CONTRACT_CUST_DT F ON A.CONTRACT_ID = F.CONTRACT_ID
LEFT JOIN BUD_AREA_DT G ON F.BUILDING_AREA_ID = G.BUILDING_AREA_ID
LEFT JOIN RET_MASTER H ON C.ASSET_ID = H.ASSET_ID
WHERE 1=1
AND A.AUTH_STATUS = 'A'
AND (CONVERT(DATE, D.START_DT, 103) >= CONVERT(DATE, @p_FROM_DT, 103) OR @p_FROM_DT IS NULL OR @p_FROM_DT = '')
AND (CONVERT(DATE, D.END_DT, 103 ) <= CONVERT(DATE, @p_TO_DT, 103) OR @p_TO_DT IS NULL OR @p_TO_DT = '')
AND A.BRANCH_ID IN (SELECT BRANCH_ID FROM @BRANCH_TABLE)
) TMP
ORDER BY CONTRACT_ID
END
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Creating [dbo].[rpt_BUD_UTILIZED_EFFICIENT_Excel]'
GO
CREATE PROC [dbo].[rpt_BUD_UTILIZED_EFFICIENT_Excel]
@p_BUILDING_ID VARCHAR(15) = NULL,
@p_BRANCH_ID VARCHAR(15) = NULL,
@p_DEP_ID VARCHAR(15) = NULL,
@p_FROM_DT VARCHAR(20) = NULL,
@p_TO_DT VARCHAR(20) = NULL
AS
BEGIN
DECLARE @AUTH_CONTRACT TABLE (
CONTRACT_ID VARCHAR(15))
INSERT INTO @AUTH_CONTRACT
SELECT CONTRACT_ID
FROM BUD_CONTRACT_MASTER
WHERE AUTH_STATUS = 'A'
AND (CONVERT(DATE, INPUT_DT, 103) >= CONVERT(DATE, @p_FROM_DT, 103) OR @p_FROM_DT IS NULL OR @p_FROM_DT = '')
AND (CONVERT(DATE, AMEND_DT, 103 ) <= CONVERT(DATE, @p_TO_DT, 103) OR @p_TO_DT IS NULL OR @p_TO_DT = '')
UNION ALL
SELECT A1.CONTRACT_ID
FROM BUD_CONTRACT_CUST_MASTER A1
INNER JOIN TR_CONTRACT B1 ON A1.TR_CONTRACT_ID = B1.CONTRACT_ID
WHERE A1.AUTH_STATUS = 'A'
AND (CONVERT(DATE, B1.START_DT, 103) >= CONVERT(DATE, @p_FROM_DT, 103) OR @p_FROM_DT IS NULL OR @p_FROM_DT = '')
AND (CONVERT(DATE, B1.END_DT, 103 ) <= CONVERT(DATE, @p_TO_DT, 103) OR @p_TO_DT IS NULL OR @p_TO_DT = '')
SELECT
ROW_NUMBER() OVER(ORDER BY A.BUILDING_ID) AS STT,
C.BRANCH_NAME AS BRANCH,
'' AS KHAU_HAO_TRU_SO,
B.FLOOR_NO AS FLOOR_NO,
B.FLOOR_AREA AS FLOOR_AREA,
(
ISNULL((
SELECT SUM(ISNULL(DIEN_TICH_CAN_SD,0))
FROM BUD_CONTRACT_DT
WHERE CONTRACT_ID IN (SELECT CONTRACT_ID FROM @AUTH_CONTRACT)
AND BUILDING_AREA_ID = B.BUILDING_AREA_ID
AND BUILD_ID = A.BUILDING_ID
),0)
+
ISNULL((
SELECT SUM(ISNULL(DIEN_TICH_CAN_CHOTHUE,0))
FROM BUD_CONTRACT_CUST_DT
WHERE CONTRACT_ID IN (SELECT CONTRACT_ID FROM @AUTH_CONTRACT)
AND BUILDING_AREA_ID = B.BUILDING_AREA_ID
AND BUILD_ID = A.BUILDING_ID
),0)
) AS DT_DA_CHO_THUE,
--(B.INTERNAL_AREA + B.UTILZED_AREA) AS DT_DA_CHO_THUE,
(
B.FLOOR_AREA -
(ISNULL((
SELECT SUM(ISNULL(DIEN_TICH_CAN_SD,0))
FROM BUD_CONTRACT_DT
WHERE CONTRACT_ID IN (SELECT CONTRACT_ID FROM @AUTH_CONTRACT)
AND BUILDING_AREA_ID = B.BUILDING_AREA_ID
AND BUILD_ID = A.BUILDING_ID
),0)
+
ISNULL((
SELECT SUM(ISNULL(DIEN_TICH_CAN_CHOTHUE,0))
FROM BUD_CONTRACT_CUST_DT
WHERE CONTRACT_ID IN (SELECT CONTRACT_ID FROM @AUTH_CONTRACT)
AND BUILDING_AREA_ID = B.BUILDING_AREA_ID
AND BUILD_ID = A.BUILDING_ID
),0))
) AS DT_CON_LAI,
--B.FLOOR_AREA - (B.INTERNAL_AREA + B.UTILZED_AREA) AS DT_CON_LAI,
(
ISNULL((
SELECT SUM(ISNULL(TOTAL_AMT,0))
FROM BUD_CONTRACT_DT
WHERE CONTRACT_ID IN (SELECT CONTRACT_ID FROM @AUTH_CONTRACT)
AND BUILDING_AREA_ID = B.BUILDING_AREA_ID
),0)
+
ISNULL((
SELECT SUM(ISNULL(TOTAL_AMT,0))
FROM BUD_CONTRACT_CUST_DT
WHERE CONTRACT_ID IN (SELECT CONTRACT_ID FROM @AUTH_CONTRACT)
AND BUILDING_AREA_ID = B.BUILDING_AREA_ID
),0)
) / 1000000
AS THU_NHAP
FROM BUD_MASTER A
LEFT JOIN BUD_AREA_DT B ON A.BUILDING_ID = B.BUILD_ID
LEFT JOIN CM_BRANCH C ON A.BRANCH_ID = C.BRANCH_ID
WHERE 1=1
AND A.BUILDING_ID = @p_BUILDING_ID
END
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Altering [dbo].[BUD_CONTRACT_DT_ById]'
GO
ALTER PROCEDURE [dbo].[BUD_CONTRACT_DT_ById]
@CONTRACT_ID varchar(15),
@VERSION_NO int,
@CURRENT_CONTRACT_ID VARCHAR(15),-- = '' KHI VIEW, <> '' KHI TAO PHU LUC HOP DONG, KHONG TINH GIA TRI CUA HOP DONG HIEN TAI
@TO_DATE VARCHAR(18)--NEU '' THI LAY THEO NGAY DUYET HOP DONG - TRUONG HOP VIEW
-- NGUOC LAI NEU <> '': LAY THEO NGAY TU CLIEN - LAY DEN HIEN TAI - TAO PHU LUC HOP DONG
AS
DECLARE @l_TO_DATE DATETIME
IF @TO_DATE = ''
SET @l_TO_DATE = (select TOP 1 CONVERT(DATETIME,APPROVE_DT,103) from
BUD_UTIL_LOG where CONTRACT_ID =@CONTRACT_ID AND VERSION_NO = @VERSION_NO)
ELSE SET @l_TO_DATE = CONVERT(DATETIME, @TO_DATE, 103)
SELECT A.*,B.FLOOR_NO, B.BUILDING_AREA_ID,B.INTERNAL_AREA,B.UTILZED_AREA,B.FLOOR_AREA,
ISNULL(B.UTILZED_AREA,0) DIENTICH_DACHOTHUE,
ISNULL(B.FLOOR_AREA -B.UTILZED_AREA- B.INTERNAL_AREA + A.RENT_AREA_APP,0) DIENTICH_CONLAI,
ISNULL(B.FLOOR_AREA- B.INTERNAL_AREA,0) DIENTICH_CONLAI_CHOTHUE,
------------BAODNQ 27/12/20201:select thêm branch code và dep code---
C.BRANCH_NAME, D.DEP_NAME, C.BRANCH_CODE, D.DEP_CODE,
((select ISNULL(sum(AREA),0) from
BUD_UTIL_LOG
where CONVERT(DATETIME,APPROVE_DT,103) < @l_TO_DATE
AND (CONTRACT_ID <> @CURRENT_CONTRACT_ID OR @CURRENT_CONTRACT_ID = '')
AND UTIL_TYPE ='I' AND UTIL_RELEASE ='U' AND VERSION_NO <=@VERSION_NO
AND BUILDING_AREA_ID = A.BUILDING_AREA_ID)
- (select ISNULL(sum(AREA),0) from
BUD_UTIL_LOG
where CONVERT(DATETIME,APPROVE_DT,103) < @l_TO_DATE
AND (CONTRACT_ID <> @CURRENT_CONTRACT_ID OR @CURRENT_CONTRACT_ID = '')
AND UTIL_TYPE ='I' AND UTIL_RELEASE ='R' AND VERSION_NO <=@VERSION_NO
AND BUILDING_AREA_ID = A.BUILDING_AREA_ID)) AS TONGDIENTICH_NGANHANG_SUDUNG,
((select ISNULL(sum(AREA),0) from
BUD_UTIL_LOG
where CONVERT(DATETIME,APPROVE_DT,103) < @l_TO_DATE
AND (CONTRACT_ID <> @CURRENT_CONTRACT_ID OR @CURRENT_CONTRACT_ID = '')
AND UTIL_TYPE ='C' AND UTIL_RELEASE ='U' AND VERSION_NO <=@VERSION_NO
AND BUILDING_AREA_ID = A.BUILDING_AREA_ID)
- (select ISNULL(sum(AREA),0) from
BUD_UTIL_LOG
where CONVERT(DATETIME,APPROVE_DT,103) < @l_TO_DATE
AND (CONTRACT_ID <> @CURRENT_CONTRACT_ID OR @CURRENT_CONTRACT_ID = '')
AND UTIL_TYPE ='C' AND UTIL_RELEASE ='R' AND VERSION_NO <=@VERSION_NO
AND BUILDING_AREA_ID = A.BUILDING_AREA_ID)) AS TONGDIENTICH_KHACHHANG_SUDUNG
---BAODNQ: Kết thêm bảng CM_BRANCH và CM_DEPARTMENT---
FROM BUD_CONTRACT_DT A
LEFT JOIN BUD_AREA_DT B ON A.BUILDING_AREA_ID = B.BUILDING_AREA_ID
LEFT JOIN CM_BRANCH C ON A.BRANCH_ID = C.BRANCH_ID
LEFT JOIN CM_DEPARTMENT D ON A.DEP_ID = D.DEP_ID
WHERE
A.CONTRACT_ID =@CONTRACT_ID
AND A.VERSION_NO=@VERSION_NO
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Altering [dbo].[TR_REQ_PAY_SERVICE_ById]'
GO
ALTER PROC [dbo].[TR_REQ_PAY_SERVICE_ById]
@p_REQ_PAY_ID varchar(15)
AS
BEGIN
SELECT A.*,P.REQ_CODE AS EMP_NAME, D.DEP_CODE, D.DEP_NAME, A.SERVICE_NAME AS REQ_PAY_SERVICE_NAME
FROM TR_REQ_PAY_SERVICE A
--LEFT JOIN TL_USER T ON A.EMP_ID = T.TLNANME
LEFT JOIN PL_REQUEST_DOC P ON A.EMP_ID = P.REQ_ID
LEFT JOIN CM_DEPARTMENT D ON A.DEPT_ID= D.DEP_ID
WHERE A.REQ_PAY_ID =@p_REQ_PAY_ID
END
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Altering [dbo].[TR_REQ_PAY_PERIOD_LOG]'
GO
ALTER PROC [dbo].[TR_REQ_PAY_PERIOD_LOG]
@p_REQ_PAY_ID VARCHAR(15)= NULL,
@p_CONTRACT_ID VARCHAR(15)= NULL,
@p_TOP VARCHAR(15)= NULL
AS
BEGIN -- PAGING
IF(@p_TOP IS NULL OR @p_TOP='' OR @p_TOP=0)
BEGIN
-- PAGING BEGIN
SELECT A.* , CASE WHEN B.CONTRACT_CODE IS NULL OR B.CONTRACT_CODE ='' THEN B.CONTRACT_ID ELSE B.CONTRACT_CODE END CONTRACT_CODE, B.CONTRACT_NAME, C.REQ_PAY_CODE, A.AMT_PAY AS AMT_ADVANCE, A.AMT_PAY AS AMT_REMAIN, D.REQ_PAY_CODE AS SO_PHIEU_TAM_UNG,D.REQ_DT AS NGAY_TAM_UNG, C.REQ_PAY_CODE
-- SELECT END
FROM TR_REQ_PAY_PERIOD A
INNER JOIN TR_CONTRACT B ON A.CONTRACT_ID = B.CONTRACT_ID
INNER JOIN TR_REQ_PAYMENT C ON A.REQ_PAY_ID = C.REQ_PAY_ID
LEFT JOIN TR_REQ_ADVANCE_PAYMENT D ON A.AD_PAY_ID = D.REQ_PAY_ID
WHERE
(A.REQ_PAY_ID <> @p_REQ_PAY_ID OR @p_REQ_PAY_ID ='' OR @p_REQ_PAY_ID IS NULL)
AND C.AUTH_STATUS_KT='A'
AND A.CONTRACT_ID =@p_CONTRACT_ID
UNION
SELECT A.* , CASE WHEN B.CONTRACT_CODE IS NULL OR B.CONTRACT_CODE ='' THEN B.CONTRACT_ID ELSE B.CONTRACT_CODE END CONTRACT_CODE, B.CONTRACT_NAME, C.REQ_PAY_CODE,A.AMT_PAY AS AMT_ADVANCE, A.AMT_PAY AS AMT_REMAIN, D.REQ_PAY_CODE AS SO_PHIEU_TAM_UNG,D.REQ_DT AS NGAY_TAM_UNG, C.REQ_PAY_CODE
-- SELECT END
FROM TR_REQ_PAY_PERIOD A
INNER JOIN TR_CONTRACT B ON A.CONTRACT_ID = B.CONTRACT_ID
INNER JOIN TR_REQ_ADVANCE_PAYMENT C ON A.REQ_PAY_ID = C.REQ_PAY_ID
LEFT JOIN TR_REQ_ADVANCE_PAYMENT D ON A.AD_PAY_ID = D.REQ_PAY_ID
WHERE
(A.REQ_PAY_ID <> @p_REQ_PAY_ID OR @p_REQ_PAY_ID ='' OR @p_REQ_PAY_ID IS NULL)
AND C.AUTH_STATUS_KT='A'
AND A.CONTRACT_ID =@p_CONTRACT_ID
-- PAGING END
END;
ELSE
BEGIN
-- PAGING BEGIN
SELECT A.* , CASE WHEN B.CONTRACT_CODE IS NULL OR B.CONTRACT_CODE ='' THEN B.CONTRACT_ID ELSE B.CONTRACT_CODE END CONTRACT_CODE, B.CONTRACT_NAME, C.REQ_PAY_CODE, A.AMT_PAY AS AMT_ADVANCE, A.AMT_PAY AS AMT_REMAIN, D.REQ_PAY_CODE AS SO_PHIEU_TAM_UNG,D.REQ_DT AS NGAY_TAM_UNG, C.REQ_PAY_CODE
-- SELECT END
FROM TR_REQ_PAY_PERIOD A
INNER JOIN TR_CONTRACT B ON A.CONTRACT_ID = B.CONTRACT_ID
INNER JOIN TR_REQ_PAYMENT C ON A.REQ_PAY_ID = C.REQ_PAY_ID
LEFT JOIN TR_REQ_ADVANCE_PAYMENT D ON A.AD_PAY_ID = D.REQ_PAY_ID
WHERE
(A.REQ_PAY_ID <> @p_REQ_PAY_ID OR @p_REQ_PAY_ID ='' OR @p_REQ_PAY_ID IS NULL)
AND C.AUTH_STATUS_KT='A'
AND A.CONTRACT_ID =@p_CONTRACT_ID
UNION
SELECT A.* , CASE WHEN B.CONTRACT_CODE IS NULL OR B.CONTRACT_CODE ='' THEN B.CONTRACT_ID ELSE B.CONTRACT_CODE END CONTRACT_CODE, B.CONTRACT_NAME, C.REQ_PAY_CODE,A.AMT_PAY AS AMT_ADVANCE, A.AMT_PAY AS AMT_REMAIN, D.REQ_PAY_CODE AS SO_PHIEU_TAM_UNG,D.REQ_DT AS NGAY_TAM_UNG, C.REQ_PAY_CODE
-- SELECT END
FROM TR_REQ_PAY_PERIOD A
INNER JOIN TR_CONTRACT B ON A.CONTRACT_ID = B.CONTRACT_ID
INNER JOIN TR_REQ_ADVANCE_PAYMENT C ON A.REQ_PAY_ID = C.REQ_PAY_ID
LEFT JOIN TR_REQ_ADVANCE_PAYMENT D ON A.AD_PAY_ID = D.REQ_PAY_ID
WHERE
(A.REQ_PAY_ID <> @p_REQ_PAY_ID OR @p_REQ_PAY_ID ='' OR @p_REQ_PAY_ID IS NULL)
AND C.AUTH_STATUS_KT='A'
AND A.CONTRACT_ID =@p_CONTRACT_ID
-- PAGING END
END;
END -- PAGING
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Creating [dbo].[CON_LAYOUT_BLUEPRINT_SEARCH]'
GO
CREATE PROC [dbo].[CON_LAYOUT_BLUEPRINT_SEARCH]
@p_CON_LAYOUT_BLUEPRINT_ID VARCHAR(15) = NULL,
@p_LAYOUT_NAME NVARCHAR(500) = NULL,
@p_CONSTRUCT_ID VARCHAR(15) = NULL,
@p_CONSTRUCT_NAME NVARCHAR(500) = NULL,
@p_LAYOUT_TYPE VARCHAR(15) = NULL,
@p_NOTES VARCHAR(15) = NULL,
@p_RECORD_STATUS varchar(1) = NULL,
@p_MAKER_ID varchar(12) = NULL,
@p_CREATE_DT VARCHAR(20) = NULL,
@p_AUTH_STATUS varchar(50) = NULL,
@p_CHECKER_ID varchar(12) = NULL,
@p_APPROVE_DT VARCHAR(20) = NULL,
@p_TLNAME_USER VARCHAR(15),
@p_TOP INT = 1000
AS
BEGIN -- PAGING
DECLARE @AUTHOR_DVDM TABLE
(
ROLE_ID VARCHAR(100),
BRANCH_ID VARCHAR(20),
DEP_ID VARCHAR(20),
DVDM_ID VARCHAR(20)
)
-- INSERT LIST DVDM
INSERT INTO @AUTHOR_DVDM
(
ROLE_ID,
BRANCH_ID,
DEP_ID,
DVDM_ID
)
SELECT TU.RoleName,TU.TLSUBBRID,TU.SECUR_CODE,PC.DVDM_ID FROM dbo.TL_USER TU
LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.BRANCH_ID=TU.TLSUBBRID AND DT.DEP_ID=TU.SECUR_CODE
LEFT JOIN dbo.PL_COSTCENTER PC ON PC.COST_ID=DT.COST_ID
WHERE TU.TLNANME=@p_TLNAME_USER
UNION ALL
SELECT TM.ROLE_NEW RoleName,TU.TLSUBBRID,TU.SECUR_CODE,PC.DVDM_ID FROM dbo.TL_USER TU
LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.BRANCH_ID=TU.TLSUBBRID AND DT.DEP_ID=TU.SECUR_CODE
LEFT JOIN dbo.PL_COSTCENTER PC ON PC.COST_ID=DT.COST_ID
LEFT JOIN dbo.TL_SYS_ROLE_MAPPING TM ON TM.ROLE_OLD=TU.RoleName AND( TM.TLNAME IS NULL OR TM.TLNAME='')
WHERE TU.TLNANME=@p_TLNAME_USER AND TM.ROLE_NEW IS NOT NULL
UNION ALL
SELECT TU.ROLE_NEW RoleName,TU.BRANCH_ID TLSUBBRID,TU.DEP_ID SECUR_CODE,PC.DVDM_ID FROM dbo.TL_SYS_ROLE_MAPPING TU
LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.BRANCH_ID=TU.BRANCH_ID AND DT.DEP_ID=TU.DEP_ID
LEFT JOIN dbo.PL_COSTCENTER PC ON PC.COST_ID=DT.COST_ID
WHERE TU.TLNAME=@p_TLNAME_USER AND CAST(EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE)
UNION ALL
SELECT TM.ROLE_NEW RoleName,TU.BRANCH_ID TLSUBBRID,TU.DEP_ID SECUR_CODE,PC.DVDM_ID FROM dbo.TL_SYS_ROLE_MAPPING TU
LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.BRANCH_ID=TU.BRANCH_ID AND DT.DEP_ID=TU.DEP_ID
LEFT JOIN dbo.PL_COSTCENTER PC ON PC.COST_ID=DT.COST_ID
LEFT JOIN dbo.TL_SYS_ROLE_MAPPING TM ON TM.ROLE_OLD=TU.ROLE_NEW AND( TM.TLNAME IS NULL OR TM.TLNAME='')
WHERE TU.TLNAME=@p_TLNAME_USER AND CAST(TU.EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE)
IF(@P_TOP IS NULL OR @P_TOP = '' OR @P_TOP = 0)
-- PAGING BEGIN
SELECT A.*,(CASE WHEN A.RECORD_STATUS = 1 THEN N'Hoạt động' END) AS RECORD_STATUS_NAME, AU.AUTH_STATUS_NAME
-- SELECT END
FROM CON_LAYOUT_BLUEPRINT A
LEFT JOIN CM_AUTH_STATUS AU ON AU.AUTH_STATUS = A.AUTH_STATUS
LEFT JOIN PL_REQUEST_PROCESS PLRP ON PLRP.REQ_ID = A.CON_LAYOUT_BLUEPRINT_ID AND PLRP.STATUS <>'U'
WHERE 1 = 1
AND (A.CON_LAYOUT_BLUEPRINT_ID LIKE '%' + @p_CON_LAYOUT_BLUEPRINT_ID + '%' OR @p_CON_LAYOUT_BLUEPRINT_ID IS NULL OR @p_CON_LAYOUT_BLUEPRINT_ID = '')
AND (A.LAYOUT_NAME LIKE '%' + @p_LAYOUT_NAME + '%' OR @p_LAYOUT_NAME IS NULL OR @p_LAYOUT_NAME = '')
AND (A.CONSTRUCT_ID LIKE '%' + @p_CONSTRUCT_ID + '%' OR @p_CONSTRUCT_ID IS NULL OR @p_CONSTRUCT_ID = '')
AND (A.CONSTRUCT_NAME LIKE '%' + @p_CONSTRUCT_NAME + '%' OR @p_CONSTRUCT_NAME IS NULL OR @p_CONSTRUCT_NAME = '')
AND (A.LAYOUT_TYPE LIKE '%' + @p_LAYOUT_TYPE + '%' OR @p_LAYOUT_TYPE IS NULL OR @p_LAYOUT_TYPE = '')
AND (A.NOTES LIKE '%' + @p_NOTES + '%' OR @p_NOTES IS NULL OR @p_NOTES = '')
AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '')
AND (A.MAKER_ID LIKE '%' + @p_MAKER_ID + '%' OR @p_MAKER_ID IS NULL OR @p_MAKER_ID = '')
AND (DATEDIFF(DAY,A.CREATE_DT ,CONVERT(DATETIME, @p_CREATE_DT, 103)) =0 OR @p_CREATE_DT IS NULL OR @p_CREATE_DT = '')
AND (A.AUTH_STATUS LIKE '%' + @p_AUTH_STATUS + '%' OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '')
AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '')
AND (DATEDIFF(DAY,A.APPROVE_DT ,CONVERT(DATETIME, @p_APPROVE_DT, 103)) = 0 OR @p_APPROVE_DT IS NULL OR @p_APPROVE_DT = '')
AND (EXISTS(SELECT AUTH.ROLE_ID FROM @AUTHOR_DVDM AUTH WHERE AUTH.ROLE_ID=PLRP.ROLE_USER AND (PLRP.DVDM_ID=AUTH.DVDM_ID OR PLRP.DVDM_ID ='' OR PLRP.DVDM_ID IS NULL) OR A.MAKER_ID = @p_TLNAME_USER OR (ISNULL(A.SIGN_USER,'') <> '' AND A.SIGN_USER = @p_TLNAME_USER AND A.AUTH_STATUS NOT IN ('E','R'))))
ORDER BY A.CREATE_DT DESC
-- PAGING END
ELSE
-- PAGING BEGIN
SELECT TOP(@P_TOP) A.*,(CASE WHEN A.RECORD_STATUS = 1 THEN N'Hoạt động' END) AS RECORD_STATUS_NAME, AU.AUTH_STATUS_NAME
-- SELECT END
FROM CON_LAYOUT_BLUEPRINT A
LEFT JOIN CM_AUTH_STATUS AU ON AU.AUTH_STATUS = A.AUTH_STATUS
LEFT JOIN PL_REQUEST_PROCESS PLRP ON PLRP.REQ_ID = A.CON_LAYOUT_BLUEPRINT_ID AND PLRP.STATUS <>'U'
WHERE 1 = 1
AND (A.CON_LAYOUT_BLUEPRINT_ID LIKE '%' + @p_CON_LAYOUT_BLUEPRINT_ID + '%' OR @p_CON_LAYOUT_BLUEPRINT_ID IS NULL OR @p_CON_LAYOUT_BLUEPRINT_ID = '')
AND (A.LAYOUT_NAME LIKE '%' + @p_LAYOUT_NAME + '%' OR @p_LAYOUT_NAME IS NULL OR @p_LAYOUT_NAME = '')
AND (A.CONSTRUCT_ID LIKE '%' + @p_CONSTRUCT_ID + '%' OR @p_CONSTRUCT_ID IS NULL OR @p_CONSTRUCT_ID = '')
AND (A.CONSTRUCT_NAME LIKE '%' + @p_CONSTRUCT_NAME + '%' OR @p_CONSTRUCT_NAME IS NULL OR @p_CONSTRUCT_NAME = '')
AND (A.LAYOUT_TYPE LIKE '%' + @p_LAYOUT_TYPE + '%' OR @p_LAYOUT_TYPE IS NULL OR @p_LAYOUT_TYPE = '')
AND (A.NOTES LIKE '%' + @p_NOTES + '%' OR @p_NOTES IS NULL OR @p_NOTES = '')
AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '')
AND (A.MAKER_ID LIKE '%' + @p_MAKER_ID + '%' OR @p_MAKER_ID IS NULL OR @p_MAKER_ID = '')
AND (DATEDIFF(DAY,A.CREATE_DT ,CONVERT(DATETIME, @p_CREATE_DT, 103)) =0 OR @p_CREATE_DT IS NULL OR @p_CREATE_DT = '')
AND (A.AUTH_STATUS LIKE '%' + @p_AUTH_STATUS + '%' OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '')
AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '')
AND (DATEDIFF(DAY,A.APPROVE_DT ,CONVERT(DATETIME, @p_APPROVE_DT, 103)) = 0 OR @p_APPROVE_DT IS NULL OR @p_APPROVE_DT = '')
AND (EXISTS(SELECT AUTH.ROLE_ID FROM @AUTHOR_DVDM AUTH WHERE AUTH.ROLE_ID=PLRP.ROLE_USER AND (PLRP.DVDM_ID=AUTH.DVDM_ID OR PLRP.DVDM_ID ='' OR PLRP.DVDM_ID IS NULL) OR A.MAKER_ID = @p_TLNAME_USER OR (ISNULL(A.SIGN_USER,'') <> '' AND A.SIGN_USER = @p_TLNAME_USER AND A.AUTH_STATUS NOT IN ('E','R'))))
--AND (A.MAKER_ID = @p_MAKER_ID OR @p_MAKER_ID IS NULL OR @p_MAKER_ID = '')
ORDER BY A.CREATE_DT DESC
-- PAGING END
END -- PAGING
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Altering [dbo].[TR_REQ_PAY_SCHEDULE_ByID]'
GO
ALTER PROC [dbo].[TR_REQ_PAY_SCHEDULE_ByID]
@p_REQ_PAY_ID VARCHAR(15) = NULL
AS
BEGIN
SELECT A.SCHEDULE_ID,A.REQ_PAY_ID, A.PAY_ID,A.PAY_PHASE,A.AMT_PAY,A.REQ_ADV_ID, A.AMT_ADVANCE,A.AMT_PAY_DO AS REQ_ADVANCE_AMT,
--(A.AMT_PAY -A.AMT_ADVANCE- A.AMT_REMAIN) AS AMT_PAY_DO,
A.AMT_PAY_DO,
A.AMT_REMAIN, A.AMT_PAY_REAL, A.AMT_REMAIN + a.AMT_PAY_REAL AS REMAIN_AMT_HIS, A.AMT_REMAIN + a.AMT_PAY_REAL AS REQ_AMT,
A.REQ_PAY_DT,A.REQ_AD_DT,A.PROCESS,A.MAKER_ID,A.CREATE_DT,A.AUTH_STATUS_KT, '' KY_TAM_UNG,
ISNULL(P.PO_CODE, C.CONTRACT_CODE )AS REF_CODE,
ISNULL(P.PO_NAME, C.CONTRACT_NAME ) AS REF_NAME, A.REF_ID,
A.REQ_PAY_DESC, A.REQ_PAY_ENTRIES,A.CURRENCY, A.RATE, AP.REQ_PAY_CODE AS REQ_PAY_AD_CODE, '' RECORD_STATUS, ISNULL(X1.[PERCENT], X2.[PERCENT]) AS TY_LE,
ISNULL(S1.BANK_NAME, S2.BANK_NAME) AS BANK_NAME, ISNULL(S1.ACC_NAME,S2.ACC_NAME) AS ACC_NAME, ISNULL(S1.ACC_NUM, S2.ACC_NUM) AS ACC_NUM,
ISNULL(S1.BANK_NAME_OUT, S2.BANK_NAME_OUT) AS BANK_NAME_OUT, ISNULL(S1.ACC_NAME_OUT,S2.ACC_NAME_OUT) AS ACC_NAME_OUT, ISNULL(S1.ACC_NUM_OUT, S2.ACC_NUM_OUT) AS ACC_NUM_OUT,
'' AS SO_PHIEU_TAM_UNG, '' AS NGAY_TAM_UNG
FROM TR_REQ_PAY_SCHEDULE A
LEFT JOIN TR_PO_MASTER P ON A.REF_ID = P.PO_ID
LEFT JOIN TR_CONTRACT C ON A.REF_ID = C.CONTRACT_ID
LEFT JOIN TR_CONTRACT_PAYMENT X1 ON A.PAY_ID = X1.PAY_ID
LEFT JOIN TR_PO_PAYMENT X2 ON A.PAY_ID = X2.PAY_ID
LEFT JOIN TR_REQ_ADVANCE_PAYMENT AP ON A.REQ_ADV_ID = AP.REQ_PAY_ID
LEFT JOIN CM_SUPPLIER S1 ON P.SUP_ID = S1.SUP_ID
LEFT JOIN CM_SUPPLIER S2 ON C.SUP_ID = S2.SUP_ID
WHERE A.REQ_PAY_ID = @p_REQ_PAY_ID
END
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Creating [dbo].[CON_LAYOUT_BLUEPRINT_INS]'
GO
CREATE PROC [dbo].[CON_LAYOUT_BLUEPRINT_INS]
@p_CON_LAYOUT_BLUEPRINT_ID VARCHAR(15) = NULL,
@p_LAYOUT_NAME NVARCHAR(500) = NULL,
@p_CONSTRUCT_ID VARCHAR(15) = NULL,
@p_CONSTRUCT_NAME VARCHAR(500) = NULL,
@p_LAYOUT_TYPE VARCHAR(15) = NULL,
@p_NOTES NVARCHAR(4000) = NULL,
@p_RECORD_STATUS VARCHAR(1) = NULL,
@p_AUTH_STATUS VARCHAR(1) = NULL,
@p_MAKER_ID VARCHAR(15) = NULL,
@p_CREATE_DT VARCHAR(20) = NULL,
@p_CHECKER_ID VARCHAR(15) = NULL,
@p_APPROVE_DT VARCHAR(20) = NULL,
@p_SIGN_USER VARCHAR(20) = NULL
AS
DECLARE @l_CON_LAYOUT_BLUEPRINT_ID VARCHAR(15)
BEGIN TRANSACTION
EXEC SYS_CodeMasters_Gen 'CON_LAYOUT_BLUEPRINT', @l_CON_LAYOUT_BLUEPRINT_ID out
IF @l_CON_LAYOUT_BLUEPRINT_ID='' OR @l_CON_LAYOUT_BLUEPRINT_ID IS NULL GOTO ABORT
INSERT INTO [dbo].[CON_LAYOUT_BLUEPRINT]
(
[CON_LAYOUT_BLUEPRINT_ID],
[LAYOUT_NAME],
[CONSTRUCT_ID],
[CONSTRUCT_NAME],
[LAYOUT_TYPE],
[NOTES],
[RECORD_STATUS],
[AUTH_STATUS],
[MAKER_ID],
[CREATE_DT],
[CHECKER_ID],
[APPROVE_DT],
[SIGN_USER]
)
VALUES
(
@l_CON_LAYOUT_BLUEPRINT_ID,
@p_LAYOUT_NAME,
@p_CONSTRUCT_ID,
@p_CONSTRUCT_NAME,
@p_LAYOUT_TYPE,
@p_NOTES,
@p_RECORD_STATUS,
@p_AUTH_STATUS,
@p_MAKER_ID,
CONVERT(DATETIME, @p_CREATE_DT, 103),
@p_CHECKER_ID,
CONVERT(DATETIME, @p_APPROVE_DT, 103),
@p_SIGN_USER
)
IF @@Error <> 0 GOTO ABORT
COMMIT TRANSACTION
SELECT 0 as Result, @l_CON_LAYOUT_BLUEPRINT_ID ID, '' ErrorDesc
RETURN 0
ABORT:
BEGIN
ROLLBACK TRANSACTION
SELECT -1 as Result, '' ID, '' ErrorDesc
RETURN -1
End
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Creating [dbo].[CON_LAYOUT_BLUEPRINT_UPD]'
GO
CREATE PROC [dbo].[CON_LAYOUT_BLUEPRINT_UPD]
@p_CON_LAYOUT_BLUEPRINT_ID VARCHAR(15) = NULL,
@p_LAYOUT_NAME NVARCHAR(500) = NULL,
@p_CONSTRUCT_ID VARCHAR(15) = NULL,
@p_CONSTRUCT_NAME VARCHAR(500) = NULL,
@p_LAYOUT_TYPE VARCHAR(15) = NULL,
@p_NOTES NVARCHAR(4000) = NULL,
@p_RECORD_STATUS VARCHAR(1) = NULL,
@p_AUTH_STATUS VARCHAR(1) = NULL,
@p_MAKER_ID VARCHAR(15) = NULL,
@p_CREATE_DT VARCHAR(20) = NULL,
@p_CHECKER_ID VARCHAR(15) = NULL,
@p_APPROVE_DT VARCHAR(20) = NULL
AS
BEGIN TRANSACTION
UPDATE [dbo].[CON_LAYOUT_BLUEPRINT]
SET [LAYOUT_NAME] = @p_LAYOUT_NAME,
[CONSTRUCT_ID] = @p_CONSTRUCT_ID,
[CONSTRUCT_NAME] = @p_CONSTRUCT_NAME,
[LAYOUT_TYPE] = @p_LAYOUT_TYPE,
[NOTES] = @p_NOTES,
[RECORD_STATUS] = @p_RECORD_STATUS,
[AUTH_STATUS] = @p_AUTH_STATUS,
[MAKER_ID] = @p_MAKER_ID,
[CREATE_DT] = CONVERT(DATETIME, @p_CREATE_DT, 103),
[CHECKER_ID] = @p_CHECKER_ID,
[APPROVE_DT] = CONVERT(DATETIME, @p_APPROVE_DT, 103)
WHERE CON_LAYOUT_BLUEPRINT_ID = @p_CON_LAYOUT_BLUEPRINT_ID
IF @@Error <> 0 GOTO ABORT
COMMIT TRANSACTION
SELECT 0 as Result, @p_CON_LAYOUT_BLUEPRINT_ID ID, '' ErrorDesc
RETURN 0
ABORT:
BEGIN
ROLLBACK TRANSACTION
SELECT -1 as Result, '' ID, '' ErrorDesc
RETURN -1
End
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Altering [dbo].[CON_REQUEST_DOC_Search]'
GO
ALTER PROCEDURE [dbo].[CON_REQUEST_DOC_Search]
@p_REQ_ID varchar(15) = NULL,
@p_CON_REQUEST_DOC_ID varchar(15) = NULL,
@p_REQ_CODE nvarchar(100) = NULL,
@p_REQ_NAME nvarchar(200) = NULL,
@p_REQ_DT VARCHAR(20) = NULL,
@p_REQ_CONTENT nvarchar(1000) = NULL,
@p_CONSTRUCT_ID varchar(15) = NULL,
@p_TOTAL_AMT decimal = NULL,
@p_NOTES nvarchar(1000) = NULL,
@p_RECORD_STATUS varchar(1) = NULL,
@p_MAKER_ID varchar(12) = NULL,
@p_CREATE_DT VARCHAR(20) = NULL,
@p_AUTH_STATUS varchar(50) = NULL,
@p_CHECKER_ID varchar(12) = NULL,
@p_APPROVE_DT VARCHAR(20) = NULL,
@p_BRANCH_ID varchar(15) = NULL,
@p_TOP INT = 10,
@p_PLAN_TYPE VARCHAR(1) = NULL,
@p_IS_PARENT VARCHAR(1) = NULL
AS
--Validation is here
/*
DECLARE @ERRORSYS NVARCHAR(15) = ''
IF ( [NOT] EXISTS ( SELECT * FROM [TABLE] WHERE [CONDITION] ))
SET @ERRORSYS = ''
IF @ERRORSYS <> ''
BEGIN
SELECT ErrorCode Result, '' CAR_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS
RETURN '0'
END
[dbo].[CON_REQUEST_DOC_Search] '','','','','','',NULL,'','','','','','','','',100
*/
BEGIN -- PAGING
BEGIN TRANSACTION
IF(@p_TOP IS NULL OR @P_TOP = '' OR @P_TOP = 0)
-- PAGING BEGIN
SELECT A.*,D.AUTH_STATUS_NAME,E.CONSTRUCT_NAME,E.CONSTRUCT_CODE,
dbo.FN_GET_CHINHANH(A.BRANCH_ID,'KV') KHU_VUC,
dbo.FN_GET_CHINHANH(A.BRANCH_ID,'CN') CHI_NHANH,
B.BRANCH_NAME PGD,
B.BRANCH_CODE,
C.CONTENT AS CONS_TYPE_NAME,
ISNULL((SELECT SUM (T.SETTLE_PAYMENT) AS SETTLE_PAYMENT FROM (SELECT A.*, ISNULL((SELECT SUM(Z.AMOUNT)
FROM TR_CONTRACT_PAYMENT Z
INNER JOIN TR_CONTRACT Y ON Z.CONTRACT_CODE = Y.CONTRACT_CODE
INNER JOIN BID_MASTER X ON Y.CONTRACT_CODE = X.CONTRACT_CODE AND B.CONTRACT_CODE = X.CONTRACT_CODE
WHERE Z.PAY_STATUS = '1' ),0) AS SETTLE_PAYMENT FROM BID_MASTER B WHERE A.CON_REQUEST_DOC_ID = B.REQUEST_ID) AS T), 0) AS VALUE_PAYMENT
-- SELECT END
FROM CON_REQUEST_DOC A
LEFT JOIN CM_AUTH_STATUS D ON D.AUTH_STATUS = A.AUTH_STATUS
---DAO MOI THEM BRANCH
LEFT JOIN CM_BRANCH B ON A.BRANCH_ID=B.BRANCH_ID
LEFT JOIN CON_MASTER E ON E.CONSTRUCT_ID = A.CONSTRUCT_ID
LEFT JOIN CM_ALLCODE C ON C.CDNAME = 'CONSTRUCT_TYPE' AND C.CDVAL = 'SC'
WHERE 1 = 1
AND (A.REQ_ID LIKE '%' + @p_REQ_ID + '%' OR @p_REQ_ID IS NULL OR @p_REQ_ID = '')
AND (A.REQ_CODE LIKE '%' + @p_REQ_CODE + '%' OR @p_REQ_CODE IS NULL OR @p_REQ_CODE = '')
AND (A.REQ_NAME LIKE '%' + @p_REQ_NAME + '%' OR @p_REQ_NAME IS NULL OR @p_REQ_NAME = '')
AND (A.REQ_DT =CONVERT(DATETIME, @p_REQ_DT, 103) OR @p_REQ_DT IS NULL OR @p_REQ_DT = '')
AND (A.REQ_CONTENT LIKE '%' + @p_REQ_CONTENT + '%' OR @p_REQ_CONTENT IS NULL OR @p_REQ_CONTENT = '')
AND (A.CONSTRUCT_ID LIKE '%' + @p_CONSTRUCT_ID + '%' OR @p_CONSTRUCT_ID IS NULL OR @p_CONSTRUCT_ID = '')
AND (A.TOTAL_AMT = @p_TOTAL_AMT OR @p_TOTAL_AMT IS NULL)
AND (A.NOTES LIKE '%' + @p_NOTES + '%' OR @p_NOTES IS NULL OR @p_NOTES = '')
AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '')
AND (A.MAKER_ID LIKE '%' + @p_MAKER_ID + '%' OR @p_MAKER_ID IS NULL OR @p_MAKER_ID = '')
AND (A.CREATE_DT =CONVERT(DATETIME, @p_CREATE_DT, 103) OR @p_CREATE_DT IS NULL OR @p_CREATE_DT = '')
AND (A.AUTH_STATUS LIKE '%' + @p_AUTH_STATUS + '%' OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '')
AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '')
AND (A.APPROVE_DT =CONVERT(DATETIME, @p_APPROVE_DT, 103) OR @p_APPROVE_DT IS NULL OR @p_APPROVE_DT = '')
AND (A.BRANCH_ID LIKE '%' + @p_BRANCH_ID + '%' OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '')
AND (A.PLAN_TYPE LIKE '%' + @p_PLAN_TYPE + '%' OR @p_PLAN_TYPE IS NULL OR @p_PLAN_TYPE = '')
AND (A.IS_PARENT LIKE '%' + @p_IS_PARENT + '%' OR @p_IS_PARENT IS NULL OR @p_IS_PARENT = '')
ORDER BY A.CREATE_DT DESC
-- PAGING END
ELSE
-- PAGING BEGIN
SELECT TOP(CONVERT(INT,@P_TOP))A.*,D.AUTH_STATUS_NAME,E.CONSTRUCT_NAME,E.CONSTRUCT_CODE,
dbo.FN_GET_CHINHANH(A.BRANCH_ID,'KV') KHU_VUC,
dbo.FN_GET_CHINHANH(A.BRANCH_ID,'CN') CHI_NHANH,
B.BRANCH_NAME PGD,
B.BRANCH_CODE,
C.CONTENT AS CONS_TYPE_NAME,
ISNULL((SELECT SUM (T.SETTLE_PAYMENT) AS SETTLE_PAYMENT FROM (SELECT A.*, ISNULL((SELECT SUM(Z.AMOUNT)
FROM TR_CONTRACT_PAYMENT Z
INNER JOIN TR_CONTRACT Y ON Z.CONTRACT_CODE = Y.CONTRACT_CODE
INNER JOIN BID_MASTER X ON Y.CONTRACT_CODE = X.CONTRACT_CODE AND B.CONTRACT_CODE = X.CONTRACT_CODE
WHERE Z.PAY_STATUS = '1' ),0) AS SETTLE_PAYMENT FROM BID_MASTER B WHERE A.CON_REQUEST_DOC_ID = B.REQUEST_ID) AS T), 0) AS VALUE_PAYMENT
-- SELECT END
FROM CON_REQUEST_DOC A
LEFT JOIN CM_AUTH_STATUS D ON D.AUTH_STATUS = A.AUTH_STATUS
LEFT JOIN CM_BRANCH B ON A.BRANCH_ID=B.BRANCH_ID
LEFT JOIN CON_MASTER E ON E.CONSTRUCT_ID = A.CONSTRUCT_ID
LEFT JOIN CM_ALLCODE C ON C.CDNAME = 'CONSTRUCT_TYPE' AND C.CDVAL = 'SC'
WHERE 1 = 1
AND (A.REQ_ID LIKE '%' + @p_REQ_ID + '%' OR @p_REQ_ID IS NULL OR @p_REQ_ID = '')
AND (A.REQ_CODE LIKE '%' + @p_REQ_CODE + '%' OR @p_REQ_CODE IS NULL OR @p_REQ_CODE = '')
AND (A.REQ_NAME LIKE '%' + @p_REQ_NAME + '%' OR @p_REQ_NAME IS NULL OR @p_REQ_NAME = '')
AND (A.REQ_DT =CONVERT(DATETIME, @p_REQ_DT, 103) OR @p_REQ_DT IS NULL OR @p_REQ_DT = '')
AND (A.REQ_CONTENT LIKE '%' + @p_REQ_CONTENT + '%' OR @p_REQ_CONTENT IS NULL OR @p_REQ_CONTENT = '')
AND (A.CONSTRUCT_ID LIKE '%' + @p_CONSTRUCT_ID + '%' OR @p_CONSTRUCT_ID IS NULL OR @p_CONSTRUCT_ID = '')
AND (A.TOTAL_AMT = @p_TOTAL_AMT OR @p_TOTAL_AMT IS NULL)
AND (A.NOTES LIKE '%' + @p_NOTES + '%' OR @p_NOTES IS NULL OR @p_NOTES = '')
AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '')
AND (A.MAKER_ID LIKE '%' + @p_MAKER_ID + '%' OR @p_MAKER_ID IS NULL OR @p_MAKER_ID = '')
AND (A.CREATE_DT =CONVERT(DATETIME, @p_CREATE_DT, 103) OR @p_CREATE_DT IS NULL OR @p_CREATE_DT = '')
AND (A.AUTH_STATUS LIKE '%' + @p_AUTH_STATUS + '%' OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '')
AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '')
AND (A.APPROVE_DT =CONVERT(DATETIME, @p_APPROVE_DT, 103) OR @p_APPROVE_DT IS NULL OR @p_APPROVE_DT = '')
AND (A.BRANCH_ID LIKE '%' + @p_BRANCH_ID + '%' OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '')
AND (A.PLAN_TYPE LIKE '%' + @p_PLAN_TYPE + '%' OR @p_PLAN_TYPE IS NULL OR @p_PLAN_TYPE = '')
AND (A.IS_PARENT LIKE '%' + @p_IS_PARENT + '%' OR @p_IS_PARENT IS NULL OR @p_IS_PARENT = '')
ORDER BY A.CREATE_DT DESC
-- PAGING END
COMMIT TRANSACTION
END -- PAGING
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Altering [dbo].[PL_REQ_GOOD_Search]'
GO
ALTER PROCEDURE [dbo].[PL_REQ_GOOD_Search]
@P_REQDT_TYPE varchar(1)= NULL,
@p_GD_ID VARCHAR(15) = NULL,
@p_GD_CODE varchar(20) = NULL,
@p_GD_NAME nvarchar(200) = NULL,
@p_BRANCH_CODE varchar(15) = NULL,
@p_BRANCH_ID VARCHAR(20) = NULL,
@p_DEP_ID VARCHAR(20) = NULL,
@p_BRANCH_LOGIN varchar(15) = NULL,
@p_USER_LOGIN VARCHAR(20) = NULL,
@P_PLAN_ID NVARCHAR(15) = NULL,
@P_HH_ID VARCHAR(15),
@p_GD_TYPE_ID VARCHAR(20) = NULL,
@p_GD_TYPE_CODE VARCHAR(20)= NULL,
@p_GD_TYPE_NAME NVARCHAR(500)= NULL,
@p_DVDM_ID VARCHAR(15) = NULL,
@p_PLAN_TYPE_ID VARCHAR(15) = NULL,
@p_TYPE_NS VARCHAR(15) = NULL,
@p_YEAR VARCHAR(4),
@P_TOP INT = null
AS
BEGIN -- PAGING
DECLARE
@l_QUANTITY numeric(18,0)=0, @l_QUANTITY_EXE decimal(18,0)=0, @l_QUANTITY_REMAIN decimal(18,0)=0,
@l_AMT numeric(18,0)=0, @l_AMT_EXE decimal(18,0)=0, @l_AMT_REMAIN decimal(18,0)=0,@GD_CODE VARCHAR(50),
@BRANCH_TYPE VARCHAR(20),@BRANCH_LOGIN VARCHAR(20),@DEP_LOGIN VARCHAR(20),@ROLE_USER VARCHAR(20),@IS_ALL BIT,@IS_CHUNG BIT
DECLARE @IS_HANHCHINH BIT
SET @IS_HANHCHINH=0
IF(@p_YEAR IS NULL OR @p_YEAR='' OR @p_YEAR = '0')
BEGIN
SET @p_YEAR=YEAR(GETDATE())
END
IF(@p_YEAR < YEAR(GETDATE()))
BEGIN
SET @p_YEAR='1'
END
SET @IS_ALL=0
DECLARE @DVDM_ID TABLE( DVDM_ID VARCHAR(20))
DECLARE @TRADE_REF TABLE( TRADE_ID VARCHAR (20))
SELECT @BRANCH_LOGIN=TLSUBBRID,@DEP_LOGIN=SECUR_CODE ,@ROLE_USER=RoleName FROM dbo.TL_USER WHERE TLNANME=@p_USER_LOGIN
IF(@p_BRANCH_CODE IS NOT NULL AND @p_BRANCH_CODE <>'')
SELECT TOP 1 @p_DEP_ID=DEP_ID,@p_BRANCH_ID=BRANCH_ID FROM dbo.CM_DEPARTMENT WHERE DEP_CODE=@p_BRANCH_CODE
IF(@p_BRANCH_ID='' OR @p_BRANCH_ID IS NULL)
SET @p_BRANCH_ID=@BRANCH_LOGIN
DECLARE @AUTHOR_DVDM TABLE
(
ROLE_ID VARCHAR(100),
BRANCH_ID VARCHAR(20),
DEP_ID VARCHAR(20)
)
INSERT INTO @AUTHOR_DVDM
(
ROLE_ID,
BRANCH_ID,
DEP_ID
)
SELECT TU.RoleName,TU.TLSUBBRID,TU.SECUR_CODE FROM dbo.TL_USER TU
WHERE TU.TLNANME=@p_USER_LOGIN
UNION ALL
SELECT TM.ROLE_NEW RoleName,TU.TLSUBBRID,TU.SECUR_CODE FROM dbo.TL_USER TU
LEFT JOIN dbo.TL_SYS_ROLE_MAPPING TM ON TM.ROLE_OLD=TU.RoleName AND( TM.TLNAME IS NULL OR TM.TLNAME='')
WHERE TU.TLNANME=@p_USER_LOGIN
UNION ALL
SELECT TU.ROLE_NEW RoleName,TU.BRANCH_ID TLSUBBRID,TU.DEP_ID SECUR_CODE FROM dbo.TL_SYS_ROLE_MAPPING TU
WHERE TU.TLNAME=@p_USER_LOGIN AND CAST(EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE)
UNION ALL
SELECT TM.ROLE_NEW RoleName,TU.BRANCH_ID TLSUBBRID,TU.DEP_ID SECUR_CODE FROM dbo.TL_SYS_ROLE_MAPPING TU
LEFT JOIN dbo.TL_SYS_ROLE_MAPPING TM ON TM.ROLE_OLD=TU.ROLE_NEW AND( TM.TLNAME IS NULL OR TM.TLNAME='')
WHERE TU.TLNAME=@p_USER_LOGIN AND CAST(TU.EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE)
IF(EXISTS(SELECT * FROM dbo.CM_BRANCH WHERE BRANCH_ID = @p_BRANCH_ID AND BRANCH_TYPE = 'HS'))
BEGIN
IF(@p_DEP_ID='' OR @p_DEP_ID IS NULL)
SET @p_DEP_ID=@DEP_LOGIN
END
SET @BRANCH_TYPE= (SELECT BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@p_BRANCH_ID)
INSERT @TRADE_REF
SELECT TRADE_ID FROM dbo.PL_TRADE_REF WHERE REF_CODE IN (SELECT DEP_CODE FROM dbo.CM_DEPARTMENT WHERE BRANCH_ID IN (SELECT BRANCH_ID FROM @AUTHOR_DVDM))
PRINT @BRANCH_TYPE
IF(EXISTS(SELECT ID FROM PL_ROLE_DATA_CONFIG WHERE ROLE_TYPE='PL_MASTER' AND BRANCH_ID=@BRANCH_LOGIN AND DEP_ID=@DEP_LOGIN))
SET @IS_ALL=1
SET @IS_CHUNG=0
IF(EXISTS(SELECT ID FROM dbo.PL_ROLE_DATA_CONFIG WHERE BRANCH_ID=@p_BRANCH_ID AND DEP_ID=@p_DEP_ID AND ROLE_TYPE='TRADE_USER_ALL'))
BEGIN
IF(EXISTS(
SELECT CC.DVDM_ID FROM dbo.CM_DVDM DM
LEFT JOIN dbo.PL_COSTCENTER CC ON DM.DVDM_ID=CC.DVDM_ID
LEFT JOIN dbo.PL_COSTCENTER_DT CT ON CT.COST_ID=CC.COST_ID
WHERE CT.DEP_ID=@DEP_LOGIN AND CT.BRANCH_ID=@p_BRANCH_ID AND DM.IS_KHOI=1 AND CC.DVDM_ID IN (SELECT CC.DVDM_ID FROM dbo.CM_DVDM DM
LEFT JOIN dbo.PL_COSTCENTER CC ON DM.DVDM_ID=CC.DVDM_ID
LEFT JOIN dbo.PL_COSTCENTER_DT CT ON CT.COST_ID=CC.COST_ID
WHERE CT.DEP_ID=@p_DEP_ID AND CT.BRANCH_ID=@p_BRANCH_ID AND DM.IS_KHOI=1
)))
SET @IS_CHUNG=1
END
IF(EXISTS(SELECT ID FROM dbo.PL_ROLE_DATA_CONFIG WHERE BRANCH_ID=@BRANCH_LOGIN AND DEP_ID=@DEP_LOGIN AND ROLE_TYPE='HANHCHINH'))
BEGIN
SET @IS_HANHCHINH=1
END
---PRINT @IS_CHUNG
IF(@IS_ALL=1 OR @ROLE_USER='TGD')
BEGIN
INSERT INTO @DVDM_ID
SELECT DVDM_ID FROM dbo.CM_DVDM WHERE IS_DVDM=1
END
ELSE
BEGIN
INSERT INTO @DVDM_ID
SELECT PC.DVDM_ID FROM
dbo.PL_COSTCENTER PC
LEFT JOIN dbo.PL_COSTCENTER_DT PT ON PT.COST_ID=PC.COST_ID
WHERE PT.DEP_ID=@DEP_LOGIN AND PT.BRANCH_ID=@BRANCH_LOGIN AND EXISTS(SELECT DVDM_ID FROM dbo.CM_DVDM WHERE IS_DVDM=1)
END
DECLARE @lstGD TABLE (
GD_ID VARCHAR(20)
)
DECLARE @lstGD_CODE TABLE (
GD_CODE VARCHAR(20)
)
INSERT INTO @lstGD
SELECT GD_ID FROM dbo.CM_HANGHOA_GOODS WHERE HH_ID=@P_HH_ID
IF(@P_HH_ID IS NOT NULL AND @P_HH_ID <>'')
BEGIN
IF(NOT EXISTS(SELECT PM.PLAN_ID FROM dbo.PL_MASTER PM
LEFT JOIN dbo.PL_TRADEDETAIL PT ON PT.PLAN_ID=PM.PLAN_ID
WHERE (PT.GOODS_ID =@p_GD_ID OR EXISTS(SELECT GD_ID FROM @lstGD WHERE [@lstGD].GD_ID=PT.GOODS_ID))
AND (PM.YEAR = @p_YEAR OR @p_YEAR ='' OR @p_YEAR IS NULL )
AND (
(
@BRANCH_TYPE='HS' AND PM.BRANCH_ID =@p_BRANCH_ID AND PM.DEPT_ID=@p_DEP_ID
AND( @IS_CHUNG=1 OR @IS_HANHCHINH=1 OR @IS_ALL=1 OR PT.TRADE_ID IN (SELECT TRADE_ID FROM @TRADE_REF) OR ((@p_DEP_ID IN (SELECT DEP_ID FROM @AUTHOR_DVDM)) OR (NOT EXISTS (SELECT AUTH.DEP_ID FROM @AUTHOR_DVDM AUTH WHERE AUTH.DEP_ID=@p_DEP_ID) AND (PM.COST_ID IN (SELECT DVDM_ID FROM @DVDM_ID)))))
)
OR
(@BRANCH_TYPE='CN' AND PM.BRANCH_ID =@p_BRANCH_ID AND ((@p_BRANCH_ID IN (SELECT DEP_ID FROM @AUTHOR_DVDM)) OR @IS_HANHCHINH=1 OR @IS_ALL=1 OR PT.TRADE_ID IN (SELECT TRADE_ID FROM @TRADE_REF) OR (PM.COST_ID IN (SELECT DVDM_ID FROM @DVDM_ID)) ))
OR
(@BRANCH_TYPE='PGD' AND PM.BRANCH_ID =@p_BRANCH_ID AND (@p_BRANCH_ID IN (SELECT DEP_ID FROM @AUTHOR_DVDM) OR PT.TRADE_ID IN (SELECT TRADE_ID FROM @TRADE_REF) OR @IS_HANHCHINH=1 OR @IS_ALL=1 OR (PM.COST_ID IN (SELECT DVDM_ID FROM @DVDM_ID)) OR (NOT EXISTS (SELECT AUTH.BRANCH_ID FROM @AUTHOR_DVDM AUTH WHERE AUTH.BRANCH_ID=@p_BRANCH_ID) AND PM.BRANCH_ID IN (SELECT BRANCH_ID FROM [dbo].[CM_BRANCH_GETCHILDID](@BRANCH_LOGIN) ))) )
OR
(
EXISTS (SELECT * FROM dbo.PL_ROLE_DATA_CONFIG WHERE ROLE_TYPE='TRADE_USER_VIEW' AND BRANCH_ID=@p_USER_LOGIN AND DEP_ID=PT.GOODS_ID)
)
)
)
)
BEGIN
SET @P_REQDT_TYPE='O'
INSERT INTO @lstGD_CODE
SELECT REPLACE(GD_CODE,'.I.','.O.') FROM dbo.CM_GOODS WHERE GD_ID IN (SELECT GD_ID FROM @lstGD)
END
END
PRINT @p_BRANCH_ID
PRINT @p_DEP_ID
PRINT @BRANCH_LOGIN
IF(@P_REQDT_TYPE='I')
BEGIN
IF(@P_PLAN_ID IS NOT NULL AND @P_PLAN_ID <>'')
BEGIN
-- PAGING BEGIN
SELECT PM.PLAN_ID,PM.PLAN_CODE,DT.TRADE_ID,DT.GOODS_ID,CG.GD_CODE,CG.GD_NAME,PM.BRANCH_ID,PM.DEPT_ID,
ISNULL(DT.QUANTITY,0) AS QUANTITY,
ISNULL(DT.QUANTITY_EXE,0) AS QUANTITY_EXE,
ISNULL(DT.QUANTITY_ETM,0) AS QUANTITY_ETM,
ISNULL(DT.QUANTITY,0)- ISNULL(DT.QUANTITY_EXE,0) AS QUANTITY_REMAIN,
ISNULL(DT.QUANTITY,0)-ISNULL(DT.QUANTITY_ETM,0) AS QUANTITY_REMAIN_ETM,
ISNULL( DT.AMT_APP,0) + ISNULL( DT.AMT_RECEIVE_TF,0) AS AMT_APP,
ISNULL( DT.AMT_EXE,0) AS AMT_EXE,
ISNULL( DT.AMT_ETM,0) AS AMT_ETM,
ISNULL( DT.AMT_TF,0) AS AMT_TF,
ISNULL( DT.AMT_RECEIVE_TF,0) AS AMT_RECEIVE_TF,
ISNULL(DT.AMT_APP,0) + ISNULL( DT.AMT_RECEIVE_TF,0)- ISNULL( DT.AMT_TF,0)- ISNULL(DT.AMT_EXE,0) AS AMT_REMAIN,
ISNULL(DT.AMT_APP,0) + ISNULL( DT.AMT_RECEIVE_TF,0)- ISNULL( DT.AMT_TF,0)-ISNULL(DT.AMT_ETM,0) AS AMT_REMAIN_ETM,
CB.BRANCH_CODE,CB.BRANCH_NAME,'I' AS REQDT_TYPE,
DT.NOTES,PT.PLAN_TYPE_CODE,PT.PLAN_TYPE_NAME,CM.DVDM_ID AS COST_ID,CM.DVDM_CODE AS COST_CODE,CM.DVDM_NAME AS COST_NAME,CK.DVDM_CODE AS KHOI_CODE,CK.DVDM_ID AS KHOI_ID,CK.DVDM_NAME AS KHOI_NAME,
DM.DVDM_ID,DM.DVDM_CODE,DM.DVDM_NAME,CD.DEP_CODE,CD.DEP_NAME,GT.GD_TYPE_NAME,GT.GD_TYPE_CODE,GT.GD_TYPE_ID,
PM.PLAN_TYPE_ID, CG.GD_TYPE_ID AS TYPE_NS,PM.YEAR
-- SELECT END
FROM dbo.PL_MASTER PM
LEFT JOIN dbo.PL_TRADEDETAIL DT ON DT.PLAN_ID=PM.PLAN_ID
LEFT JOIN dbo.CM_PLAN_TYPE PT ON PT.PLAN_TYPE_ID=PM.PLAN_TYPE_ID
LEFT JOIN dbo.CM_GOODS CG ON CG.GD_ID=DT.GOODS_ID
LEFT JOIN dbo.CM_GOOD_DVDM CGDM ON CGDM.GD_ID=CG.GD_ID
LEFT JOIN dbo.CM_GOODSTYPE GT ON CG.GD_CODE LIKE '%.' + GT.GD_TYPE_CODE +'.%'
LEFT JOIN dbo.CM_BRANCH CB ON CB.BRANCH_ID=PM.BRANCH_ID
LEFT JOIN dbo.CM_DEPARTMENT CD ON CD.DEP_ID=PM.DEPT_ID
LEFT JOIN dbo.CM_DVDM DM ON DM.DVDM_ID=PM.COST_ID
LEFT JOIN dbo.CM_DVDM CM ON CM.DVDM_ID=DM.DVDM_ID
LEFT JOIN dbo.CM_DVDM_KHOI DMKH ON DMKH.DVDM_ID = DM.DVDM_ID
LEFT JOIN dbo.CM_DVDM CK ON CK.DVDM_ID=DMKH.KHOI_ID
WHERE (1=1)
AND (CG.GD_NAME LIKE '%' + @p_GD_NAME + '%' OR @p_GD_NAME IS NULL OR @p_GD_NAME ='')
AND (CG.GD_CODE LIKE '%' + @p_GD_CODE + '%' OR @p_GD_CODE IS NULL OR @p_GD_CODE ='')
--AND (CB.BRANCH_CODE LIKE '%' + @p_BRANCH_CODE +'%' OR @p_BRANCH_CODE IS NULL OR @p_BRANCH_CODE ='')
--AND (PM.BRANCH_ID IN (SELECT BRANCH_ID FROM [dbo].[CM_BRANCH_GETCHILDID](@p_BRANCH_LOGIN)))
AND (PM.PLAN_ID LIKE '%' + @P_PLAN_ID+'%' OR @P_PLAN_ID IS NULL OR @P_PLAN_ID='' )
AND (DT.GOODS_ID = @p_GD_ID OR @p_GD_ID IS NULL OR @p_GD_ID ='')
AND (EXISTS(SELECT GD_ID FROM @lstGD WHERE [@lstGD].GD_ID=DT.GOODS_ID) OR @P_HH_ID ='' OR @P_HH_ID IS NULL)
AND (PM.YEAR = @p_YEAR OR @p_YEAR ='' OR @p_YEAR IS NULL )
AND(PM.BRANCH_ID= @p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID='')
AND(PM.DEPT_ID= @p_DEP_ID OR @p_DEP_ID IS NULL OR @p_DEP_ID='')
AND(DM.DVDM_ID = @p_DVDM_ID OR @p_DVDM_ID IS NULL OR @p_DVDM_ID = '')
AND(PM.PLAN_TYPE_ID = @p_PLAN_TYPE_ID OR @p_PLAN_TYPE_ID IS NULL OR @p_PLAN_TYPE_ID = '')
AND(CG.GD_TYPE_ID = @p_TYPE_NS OR @p_TYPE_NS IS NULL OR @p_TYPE_NS = '')
AND (GT.GD_TYPE_ID LIKE '%' + @p_GD_TYPE_ID + '%' OR @p_GD_TYPE_ID IS NULL OR @p_GD_TYPE_ID ='')
AND (GT.GD_TYPE_CODE LIKE '%' + @p_GD_TYPE_CODE + '%' OR @p_GD_TYPE_CODE IS NULL OR @p_GD_TYPE_CODE ='')
AND (GT.GD_TYPE_NAME LIKE N'%' + @p_GD_TYPE_NAME + N'%' OR @p_GD_TYPE_NAME IS NULL OR @p_GD_TYPE_NAME ='')
AND DT.RECORD_STATUS='1'
-- PAGING END
END
ELSE
BEGIN
-- PAGING BEGIN
SELECT DISTINCT PM.PLAN_ID,PM.PLAN_CODE,DT.TRADE_ID,DT.GOODS_ID,CG.GD_CODE,CG.GD_NAME,PM.BRANCH_ID,PM.DEPT_ID,
ISNULL(DT.QUANTITY,0) AS QUANTITY,
ISNULL(DT.QUANTITY_EXE,0) AS QUANTITY_EXE,
ISNULL(DT.QUANTITY_ETM,0) AS QUANTITY_ETM,
ISNULL(DT.QUANTITY,0)- ISNULL(DT.QUANTITY_EXE,0) AS QUANTITY_REMAIN,
ISNULL(DT.QUANTITY,0)-ISNULL(DT.QUANTITY_ETM,0) AS QUANTITY_REMAIN_ETM,
ISNULL( DT.AMT_APP,0) + ISNULL( DT.AMT_RECEIVE_TF,0) AS AMT_APP,
ISNULL( DT.AMT_EXE,0) AS AMT_EXE,
ISNULL( DT.AMT_ETM,0) AS AMT_ETM,
ISNULL( DT.AMT_TF,0) AS AMT_TF,
ISNULL( DT.AMT_RECEIVE_TF,0) AS AMT_RECEIVE_TF,
ISNULL(DT.AMT_APP,0) + ISNULL( DT.AMT_RECEIVE_TF,0)- ISNULL( DT.AMT_TF,0)- ISNULL(DT.AMT_EXE,0) AS AMT_REMAIN,
ISNULL(DT.AMT_APP,0) + ISNULL( DT.AMT_RECEIVE_TF,0)- ISNULL( DT.AMT_TF,0)-ISNULL(DT.AMT_ETM,0) AS AMT_REMAIN_ETM,
CB.BRANCH_CODE,CB.BRANCH_NAME,'I' AS REQDT_TYPE,
DT.NOTES,PT.PLAN_TYPE_CODE,PT.PLAN_TYPE_NAME,CM.DVDM_ID AS COST_ID,CM.DVDM_CODE AS COST_CODE,CM.DVDM_NAME AS COST_NAME,CK.DVDM_CODE AS KHOI_CODE,CK.DVDM_ID AS KHOI_ID,CK.DVDM_NAME AS KHOI_NAME,
DM.DVDM_ID,DM.DVDM_CODE,DM.DVDM_NAME,CD.DEP_CODE,CD.DEP_NAME,GT.GD_TYPE_NAME,GT.GD_TYPE_CODE,GT.GD_TYPE_ID,
PM.PLAN_TYPE_ID, CG.GD_TYPE_ID AS TYPE_NS,PM.YEAR
-- SELECT END
FROM dbo.PL_MASTER PM
LEFT JOIN dbo.PL_TRADEDETAIL DT ON DT.PLAN_ID=PM.PLAN_ID
LEFT JOIN dbo.CM_PLAN_TYPE PT ON PT.PLAN_TYPE_ID=PM.PLAN_TYPE_ID
LEFT JOIN dbo.CM_GOODS CG ON CG.GD_ID=DT.GOODS_ID
LEFT JOIN dbo.CM_GOOD_DVDM CGDM ON CGDM.GD_ID=CG.GD_ID
LEFT JOIN dbo.CM_GOODSTYPE GT ON CG.GD_CODE LIKE '%.' + GT.GD_TYPE_CODE +'.%'
LEFT JOIN dbo.CM_BRANCH CB ON CB.BRANCH_ID=PM.BRANCH_ID
LEFT JOIN dbo.CM_DEPARTMENT CD ON CD.DEP_ID=PM.DEPT_ID
LEFT JOIN dbo.CM_DVDM DM ON DM.DVDM_ID=PM.COST_ID
LEFT JOIN dbo.CM_DVDM CM ON CM.DVDM_ID=DM.DVDM_ID
LEFT JOIN dbo.CM_DVDM_KHOI DMKH ON DMKH.DVDM_ID = DM.DVDM_ID
LEFT JOIN dbo.CM_DVDM CK ON CK.DVDM_ID=DMKH.KHOI_ID
WHERE (1=1)
AND (CG.GD_NAME LIKE '%' + @p_GD_NAME + '%' OR @p_GD_NAME IS NULL OR @p_GD_NAME ='')
AND (CG.GD_CODE LIKE '%' + @p_GD_CODE + '%' OR @p_GD_CODE IS NULL OR @p_GD_CODE ='')
--AND (CB.BRANCH_CODE LIKE '%' + @p_BRANCH_CODE +'%' OR @p_BRANCH_CODE IS NULL OR @p_BRANCH_CODE ='')
--AND (PM.BRANCH_ID IN (SELECT BRANCH_ID FROM [dbo].[CM_BRANCH_GETCHILDID](@p_BRANCH_LOGIN)))
--AND(PM.BRANCH_ID= @p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID='')
AND (PM.PLAN_ID LIKE '%' + @P_PLAN_ID+'%' OR @P_PLAN_ID IS NULL OR @P_PLAN_ID='' )
AND (DT.GOODS_ID = @p_GD_ID OR @p_GD_ID IS NULL OR @p_GD_ID ='')
AND (EXISTS(SELECT GD_ID FROM @lstGD WHERE [@lstGD].GD_ID=DT.GOODS_ID) OR @P_HH_ID ='' OR @P_HH_ID IS NULL)
AND (
(
@BRANCH_TYPE='HS' AND PM.BRANCH_ID =@p_BRANCH_ID AND PM.DEPT_ID=@p_DEP_ID
AND( @IS_CHUNG=1 OR @IS_HANHCHINH=1 OR @IS_ALL=1 OR DT.TRADE_ID IN (SELECT TRADE_ID FROM @TRADE_REF) OR ((@p_DEP_ID IN (SELECT DEP_ID FROM @AUTHOR_DVDM)) OR (NOT EXISTS (SELECT AUTH.DEP_ID FROM @AUTHOR_DVDM AUTH WHERE AUTH.DEP_ID=@p_DEP_ID) AND (PM.COST_ID IN (SELECT DVDM_ID FROM @DVDM_ID)))))
)
OR
(@BRANCH_TYPE='CN' AND PM.BRANCH_ID =@p_BRANCH_ID AND ((@p_BRANCH_ID IN (SELECT DEP_ID FROM @AUTHOR_DVDM)) OR @IS_HANHCHINH=1 OR @IS_ALL=1 OR DT.TRADE_ID IN (SELECT TRADE_ID FROM @TRADE_REF) OR (PM.COST_ID IN (SELECT DVDM_ID FROM @DVDM_ID)) ))
OR
(@BRANCH_TYPE='PGD' AND PM.BRANCH_ID =@p_BRANCH_ID AND (@p_BRANCH_ID IN (SELECT DEP_ID FROM @AUTHOR_DVDM) OR DT.TRADE_ID IN (SELECT TRADE_ID FROM @TRADE_REF) OR @IS_HANHCHINH=1 OR @IS_ALL=1 OR (PM.COST_ID IN (SELECT DVDM_ID FROM @DVDM_ID)) OR (NOT EXISTS (SELECT AUTH.BRANCH_ID FROM @AUTHOR_DVDM AUTH WHERE AUTH.BRANCH_ID=@p_BRANCH_ID) AND PM.BRANCH_ID IN (SELECT BRANCH_ID FROM [dbo].[CM_BRANCH_GETCHILDID](@BRANCH_LOGIN) ))) )
OR
(
EXISTS (SELECT * FROM dbo.PL_ROLE_DATA_CONFIG WHERE ROLE_TYPE='TRADE_USER_VIEW' AND BRANCH_ID=@p_USER_LOGIN AND DEP_ID=DT.GOODS_ID)
)
)
AND (PM.YEAR = @p_YEAR OR @p_YEAR ='' OR @p_YEAR IS NULL )
--AND(PM.BRANCH_ID= @p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID='')
--AND(PM.DEPT_ID= @p_DEP_ID OR @p_DEP_ID IS NULL OR @p_DEP_ID='')
AND(DM.DVDM_ID = @p_DVDM_ID OR @p_DVDM_ID IS NULL OR @p_DVDM_ID = '')
AND(PM.PLAN_TYPE_ID = @p_PLAN_TYPE_ID OR @p_PLAN_TYPE_ID IS NULL OR @p_PLAN_TYPE_ID = '')
AND(CG.GD_TYPE_ID = @p_GD_TYPE_ID OR @p_GD_TYPE_ID IS NULL OR @p_GD_TYPE_ID = '')
AND(CG.GD_TYPE_ID = @p_TYPE_NS OR @p_TYPE_NS IS NULL OR @p_TYPE_NS = '')
AND (GT.GD_TYPE_ID LIKE '%' + @p_GD_TYPE_ID + '%' OR @p_GD_TYPE_ID IS NULL OR @p_GD_TYPE_ID ='')
AND (GT.GD_TYPE_CODE LIKE '%' + @p_GD_TYPE_CODE + '%' OR @p_GD_TYPE_CODE IS NULL OR @p_GD_TYPE_CODE ='')
AND (GT.GD_TYPE_NAME LIKE N'%' + @p_GD_TYPE_NAME + N'%' OR @p_GD_TYPE_NAME IS NULL OR @p_GD_TYPE_NAME ='')
AND DT.RECORD_STATUS='1'
-- PAGING END
END
END
ELSE
BEGIN
DECLARE @BRANCH_CODE VARCHAR(15), @BRANCH_NAME NVARCHAR(200), @DEP_CODE VARCHAR(15), @DEP_NAME VARCHAR(200)
SET @BRANCH_CODE = (SELECT BRANCH_CODE FROM dbo.CM_BRANCH WHERE BRANCH_ID = @p_BRANCH_ID)
SET @BRANCH_NAME = (SELECT BRANCH_NAME FROM dbo.CM_BRANCH WHERE BRANCH_ID = @p_BRANCH_ID)
SET @DEP_CODE = (SELECT DEP_CODE FROM dbo.CM_DEPARTMENT WHERE DEP_ID = @p_DEP_ID)
SET @DEP_NAME = (SELECT DEP_NAME FROM dbo.CM_DEPARTMENT WHERE DEP_ID = @p_DEP_ID)
-- PAGING BEGIN
SELECT '' AS PLAN_ID,'' AS PLAN_CODE,'' AS TRADE_ID, CG.GD_ID AS GOODS_ID, CG.GD_CODE ,CG.GD_NAME ,'' AS BRANCH_ID,'' AS DEPT_ID,
@l_QUANTITY AS QUANTITY,
@l_QUANTITY_EXE AS QUANTITY_EXE,
@l_QUANTITY_EXE AS QUANTITY_ETM,
@l_QUANTITY_REMAIN AS QUANTITY_REMAIN,
@l_QUANTITY_REMAIN AS QUANTITY_REMAIN_ETM,
@l_AMT AS AMT_APP,
@l_AMT_EXE AS AMT_EXE,
@l_AMT_EXE AS AMT_ETM,
@l_AMT_EXE AS AMT_TF,
@l_AMT_EXE AS AMT_RECEIVE_TF,
@l_AMT_REMAIN AS AMT_REMAIN,
@l_AMT_REMAIN AS AMT_REMAIN_ETM,
@BRANCH_CODE AS BRANCH_CODE,
@BRANCH_NAME AS BRANCH_NAME,
--N'Ngoài kế hoạch' AS BRANCH_NAME,
'O' AS REQDT_TYPE,
'' AS NOTES
,'' AS PLAN_TYPE_CODE,'' AS PLAN_TYPE_NAME,CM.DVDM_ID AS COST_ID,CM.DVDM_CODE AS COST_CODE,CM.DVDM_NAME AS COST_NAME,CK.DVDM_CODE AS KHOI_CODE,CK.DVDM_ID AS KHOI_ID,CK.DVDM_NAME AS KHOI_NAME,
DM.DVDM_ID,DM.DVDM_CODE,DM.DVDM_NAME, @DEP_CODE AS DEP_CODE, @DEP_NAME AS DEP_NAME,GT.GD_TYPE_NAME,GT.GD_TYPE_CODE,GT.GD_TYPE_ID AS TYPE_NS ,@p_YEAR YEAR
-- SELECT END
FROM dbo.CM_GOODS CG
LEFT JOIN dbo.CM_GOODSTYPE GT ON CG.GD_CODE LIKE '%.' + GT.GD_TYPE_CODE +'.%'
LEFT JOIN dbo.CM_GOOD_DVDM CGDM ON CGDM.GD_ID=CG.GD_ID
LEFT JOIN dbo.CM_DVDM DM ON DM.DVDM_ID=CGDM.DVDM_ID
LEFT JOIN dbo.CM_DVDM CM ON CM.DVDM_ID=CGDM.DVCM_ID
LEFT JOIN dbo.CM_DVDM CK ON CK.DVDM_ID=CGDM.KHOI_ID
WHERE (1=1)
AND (CG.GD_NAME LIKE '%' + @p_GD_NAME + '%' OR @p_GD_NAME IS NULL OR @p_GD_NAME ='')
AND (CG.GD_CODE LIKE '%' + @p_GD_CODE + '%' OR @p_GD_CODE IS NULL OR @p_GD_CODE ='')
--AND CG.GD_CODE LIKE '%.O.%' AND RIGHT (CG.GD_CODE,4)=YEAR (GETDATE())
AND (EXISTS(SELECT GD_CODE FROM @lstGD_CODE WHERE [@lstGD_CODE].GD_CODE=CG.GD_CODE ) OR @P_HH_ID ='' OR @P_HH_ID IS NULL)
AND (GT.GD_TYPE_ID LIKE '%' + @p_GD_TYPE_ID + '%' OR @p_GD_TYPE_ID IS NULL OR @p_GD_TYPE_ID ='')
AND (GT.GD_TYPE_CODE LIKE '%' + @p_GD_TYPE_CODE + '%' OR @p_GD_TYPE_CODE IS NULL OR @p_GD_TYPE_CODE ='')
AND (GT.GD_TYPE_NAME LIKE N'%' + @p_GD_TYPE_NAME + N'%' OR @p_GD_TYPE_NAME IS NULL OR @p_GD_TYPE_NAME ='')
AND NOT EXISTS(SELECT PM.PLAN_ID FROM dbo.PL_MASTER PM
LEFT JOIN dbo.PL_TRADEDETAIL PT ON PT.PLAN_ID=PM.PLAN_ID
LEFT JOIN dbo.CM_GOODS CMG ON CMG.GD_ID=PT.GOODS_ID
LEFT JOIN CM_GOODS CI ON CI.GD_CODE= REPLACE(CMG.GD_CODE,'.I.','.O.')
WHERE (PT.GOODS_ID =CG.GD_ID OR CI.GD_ID=CG.GD_ID)
AND (PM.YEAR = @p_YEAR OR @p_YEAR ='' OR @p_YEAR IS NULL )
AND (
(
@BRANCH_TYPE='HS' AND PM.BRANCH_ID =@p_BRANCH_ID AND PM.DEPT_ID=@p_DEP_ID
AND( @IS_CHUNG=1 OR @IS_HANHCHINH=1 OR @IS_ALL=1 OR PT.TRADE_ID IN (SELECT TRADE_ID FROM @TRADE_REF) OR ((@p_DEP_ID IN (SELECT DEP_ID FROM @AUTHOR_DVDM)) OR (NOT EXISTS (SELECT AUTH.DEP_ID FROM @AUTHOR_DVDM AUTH WHERE AUTH.DEP_ID=@p_DEP_ID) AND (PM.COST_ID IN (SELECT DVDM_ID FROM @DVDM_ID)))))
)
OR
(@BRANCH_TYPE='CN' AND PM.BRANCH_ID =@p_BRANCH_ID AND ((@p_BRANCH_ID IN (SELECT DEP_ID FROM @AUTHOR_DVDM)) OR @IS_HANHCHINH=1 OR @IS_ALL=1 OR PT.TRADE_ID IN (SELECT TRADE_ID FROM @TRADE_REF) OR (PM.COST_ID IN (SELECT DVDM_ID FROM @DVDM_ID)) ))
OR
(@BRANCH_TYPE='PGD' AND PM.BRANCH_ID =@p_BRANCH_ID AND (@p_BRANCH_ID IN (SELECT DEP_ID FROM @AUTHOR_DVDM) OR PT.TRADE_ID IN (SELECT TRADE_ID FROM @TRADE_REF) OR @IS_HANHCHINH=1 OR @IS_ALL=1 OR (PM.COST_ID IN (SELECT DVDM_ID FROM @DVDM_ID)) OR (NOT EXISTS (SELECT AUTH.BRANCH_ID FROM @AUTHOR_DVDM AUTH WHERE AUTH.BRANCH_ID=@p_BRANCH_ID) AND PM.BRANCH_ID IN (SELECT BRANCH_ID FROM [dbo].[CM_BRANCH_GETCHILDID](@BRANCH_LOGIN) ))) )
OR
(
EXISTS (SELECT * FROM dbo.PL_ROLE_DATA_CONFIG WHERE ROLE_TYPE='TRADE_USER_VIEW' AND BRANCH_ID=@p_USER_LOGIN AND DEP_ID=PT.GOODS_ID)
))
)
-- PAGING END
END
END -- PAGING
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Creating [dbo].[CON_LAYOUT_BLUEPRINT_DEL]'
GO
CREATE PROC [dbo].[CON_LAYOUT_BLUEPRINT_DEL]
@p_CON_LAYOUT_BLUEPRINT_ID VARCHAR(15) = NULL
AS
BEGIN TRANSACTION
IF( (SELECT AUTH_STATUS FROM dbo.CON_LAYOUT_BLUEPRINT WHERE CON_LAYOUT_BLUEPRINT_ID = @p_CON_LAYOUT_BLUEPRINT_ID) = 'A')
BEGIN
UPDATE CON_LAYOUT_BLUEPRINT SET RECORD_STATUS = '0' where CON_LAYOUT_BLUEPRINT_ID= @p_CON_LAYOUT_BLUEPRINT_ID
IF @@Error <> 0 GOTO ABORT
END
ELSE
BEGIN
Delete FROM CON_LAYOUT_BLUEPRINT WHERE CON_LAYOUT_BLUEPRINT_ID = @p_CON_LAYOUT_BLUEPRINT_ID
IF @@Error <> 0 GOTO ABORT
END
COMMIT TRANSACTION
SELECT '0' as Result, '' ErrorDesc
RETURN '0'
ABORT:
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, N'' ErrorDesc
RETURN '-1'
End
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Altering [dbo].[BUD_CONTRACT_MASTER_App_Internal]'
GO
ALTER PROCEDURE [dbo].[BUD_CONTRACT_MASTER_App_Internal]
@p_CONTRACT_ID varchar(15),
@p_VERSION_NO varchar(15),
@P_AUTH_STATUS VARCHAR(1),
@P_CHECKER_ID VARCHAR(12),
@P_APPROVE_DT VARCHAR(20),
@P_XML_TEMP XML
AS
/*
DECLARE @aStatus VARCHAR(1)
DECLARE @sErrorCode VARCHAR(20)
SET @sErrorCode = ''
SELECT @aStatus = [AUTH_STATUS] FROM BUD_CONTRACT_MASTER WHERE VERSION_NO=@p_VERSION_NO
IF @aStatus = 'A'
SET @sErrorCode = ''
IF @ERRORSYS <> ''
BEGIN
SELECT ErrorCode Result, ''VERSION_NO, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS
RETURN '0'
END*/
BEGIN TRANSACTION
UPDATE BUD_CONTRACT_MASTER SET AUTH_STATUS = 'A', CHECKER_ID = @P_CHECKER_ID, APPROVE_DT = CONVERT(DATETIME,@P_APPROVE_DT,103)
WHERE VERSION_NO=@p_VERSION_NO AND CONTRACT_ID =@p_CONTRACT_ID
IF @@Error <> 0 GOTO ABORT
Declare @hdoc1 INT
----BAODNQ : Thêm các cột vào bảng BUD_CONTRACT_DT---
DECLARE
@d_CONTRACT_DTID VARCHAR(15),
@d_BUILD_ID VARCHAR(15),
@d_VERSION_NO INT,
@d_BUILDING_AREA_ID VARCHAR(15),
@d_RENT_AREA DECIMAL,
@d_RENT_PRICE DECIMAL,
@d_NOTES NVARCHAR(MAX),
@d_DIEN_TICH_TANG DECIMAL,
@d_DIEN_TICH_SD_NOI_BO DECIMAL,
@d_DIEN_TICH_DA_CHO_THUE DECIMAL,
@d_DIEN_TICH_CON_LAI DECIMAL,
@d_DIEN_TICH_CAN_SD DECIMAL,
@d_REASON NVARCHAR(MAX),
@d_PRICE DECIMAL,
@d_TOTAL_AMT DECIMAL,
@d_DIEN_TICH_CON_LAI_FINAL DECIMAL,
@d_BRANCH_ID NVARCHAR(15),
@d_DEP_ID NVARCHAR(15)
Exec sp_xml_preparedocument @hdoc1 Output,@p_XML_TEMP
DECLARE XmlDataDoc CURSOR FOR
SELECT *
FROM OPENXML(@hdoc1,'/Root/XmlData1',2)
WITH
(
---BAODNQ: thêm các cột trong bảng BUD_CONTRACT_DT vào XML---
CONTRACT_DTID VARCHAR(15),
BUILD_ID VARCHAR(15),
VERSION_NO INT,
BUILDING_AREA_ID VARCHAR(15),
RENT_AREA DECIMAL,
RENT_PRICE DECIMAL,
NOTES NVARCHAR(MAX),
DIEN_TICH_TANG DECIMAL,
DIEN_TICH_SD_NOI_BO DECIMAL,
DIEN_TICH_DA_CHO_THUE DECIMAL,
DIEN_TICH_CON_LAI DECIMAL,
DIEN_TICH_CAN_SD DECIMAL,
REASON NVARCHAR(MAX),
PRICE DECIMAL,
TOTAL_AMT DECIMAL,
DIEN_TICH_CON_LAI_FINAL DECIMAL,
BRANCH_ID NVARCHAR(15),
DEP_ID NVARCHAR(15)
)
OPEN XmlDataDoc
---BAODNQ: thêm các cột trong bảng BUD_CONTRACT_DT vào XML---
FETCH NEXT FROM XmlDataDoc INTO
@d_CONTRACT_DTID,
@d_BUILD_ID,
@d_VERSION_NO,
@d_BUILDING_AREA_ID,
@d_RENT_AREA,
@d_RENT_PRICE,
@d_NOTES,
@d_DIEN_TICH_TANG,
@d_DIEN_TICH_SD_NOI_BO,
@d_DIEN_TICH_DA_CHO_THUE,
@d_DIEN_TICH_CON_LAI,
@d_DIEN_TICH_CAN_SD,
@d_REASON,
@d_PRICE,
@d_TOTAL_AMT,
@d_DIEN_TICH_CON_LAI_FINAL,
@d_BRANCH_ID,
@d_DEP_ID
WHILE @@FETCH_STATUS = 0
BEGIN
---BAODNQ: sửa kq INTERNAL_AREA---
UPDATE BUD_AREA_DT
SET INTERNAL_AREA = INTERNAL_AREA+ @d_DIEN_TICH_CAN_SD
WHERE BUILDING_AREA_ID = @d_BUILDING_AREA_ID
--UPDATE BUDING_MASTER------------------------------------------------------
---BAODNQ: sửa kq UTILZED_AREA---
UPDATE BUD_MASTER
SET UTILZED_AREA= UTILZED_AREA+@d_DIEN_TICH_CAN_SD
WHERE BUILDING_ID=@d_BUILD_ID
------------------------------------------------------------------------------------
IF @@Error <> 0 GOTO ABORT
---BAODNQ: thêm các cột trong bảng BUD_CONTRACT_DT vào XML---
FETCH NEXT FROM XmlDataDoc INTO
@d_CONTRACT_DTID,
@d_BUILD_ID,
@d_VERSION_NO,
@d_BUILDING_AREA_ID,
@d_RENT_AREA,
@d_RENT_PRICE,
@d_NOTES,
@d_DIEN_TICH_TANG,
@d_DIEN_TICH_SD_NOI_BO,
@d_DIEN_TICH_DA_CHO_THUE,
@d_DIEN_TICH_CON_LAI,
@d_DIEN_TICH_CAN_SD,
@d_REASON,
@d_PRICE,
@d_TOTAL_AMT,
@d_DIEN_TICH_CON_LAI_FINAL,
@d_BRANCH_ID,
@d_DEP_ID
END
CLOSE XmlDataDoc
DEALLOCATE XmlDataDoc
COMMIT TRANSACTION
SELECT '0' as Result, @p_VERSION_NO VERSION_NO, '' ErrorDesc
RETURN '0'
ABORT:
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' CONTRACT_ID, '' ErrorDesc
RETURN '-1'
End
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Altering [dbo].[PL_REQUEST_DOC_Search]'
GO
ALTER PROCEDURE [dbo].[PL_REQUEST_DOC_Search]
@p_REQ_ID varchar(15) = NULL,
@p_REQ_CODE nvarchar(100) = NULL,
@p_REQ_NAME nvarchar(200) = NULL,
@p_REQ_DT varchar(20) = NULL,
@p_REQ_TYPE int = NULL,
@p_REQ_CONTENT NVARCHAR(1000)=NULL,
@p_REQ_REASON NVARCHAR(500)=NULL,
@p_TOTAL_AMT decimal = NULL,
@p_NOTES nvarchar(1000) = NULL,
@p_RECORD_STATUS varchar(1) = NULL,
@p_MAKER_ID varchar(12) = NULL,
@p_CREATE_DT varchar(20) = NULL,
@p_AUTH_STATUS varchar(50) = NULL,
@p_CHECKER_ID varchar(12) = NULL,
@p_APPROVE_DT varchar(20) = NULL,
@p_PROCESS_ID varchar(15) = NULL,
@p_BRANCH_ID VARCHAR(15)=NULL,
@p_DEP_ID VARCHAR(15) = NULL,
@p_BRANCH_LOGIN VARCHAR(15),
@p_ROLE_USER VARCHAR(20),
@p_TLNAME_USER VARCHAR(15),
@p_FR_DATE varchar(20) = NULL,
@p_TO_DATE varchar(20) = NULL,
@p_TYPE_TRANFER VARCHAR(15),
@p_TYPE VARCHAR(15),
@p_YEAR INT,
@p_TOP INT = 10,
@p_IS_TRANSFER VARCHAR(10) = NULL,
@p_NGUOIXULY NVARCHAR(15) = NULL
AS
BEGIN -- PAGING
DECLARE @TABLE_ROLE TABLE
( ROLE_ID VARCHAR(20))
INSERT INTO @TABLE_ROLE VALUES(@p_ROLE_USER)
INSERT INTO @TABLE_ROLE
SELECT ROLE_NEW FROM dbo.TL_SYS_ROLE_MAPPING WHERE ROLE_OLD=@p_ROLE_USER
DECLARE @DEP_ID VARCHAR(15),@BRANCH_TYPE VARCHAR(15)
DECLARE
@COST_ID TABLE (
COST_ID VARCHAR(15)
)
DECLARE @DVDM_ID TABLE (
DVDM_ID VARCHAR(15)
)
SET @DEP_ID =(SELECT SECUR_CODE FROM dbo.TL_USER WHERE TLNANME=@p_TLNAME_USER)
SET @BRANCH_TYPE=(SELECT BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@p_BRANCH_LOGIN)
IF(EXISTS(SELECT DEP_CODE FROM dbo.CM_DEPARTMENT WHERE DEP_ID=@DEP_ID AND DEP_CODE LIKE '069%'))
BEGIN
SET @BRANCH_TYPE='HS'
END
DECLARE @AUTHOR TABLE
(
ROLE_ID VARCHAR(100),
BRANCH_ID VARCHAR(20),
DEP_ID VARCHAR(20)
)
DECLARE @AUTHOR_DVDM TABLE
(
ROLE_ID VARCHAR(100),
BRANCH_ID VARCHAR(20),
DEP_ID VARCHAR(20),
DVDM_ID VARCHAR(20)
)
INSERT INTO @AUTHOR
(
ROLE_ID,
BRANCH_ID,
DEP_ID
)
SELECT RoleName,TLSUBBRID,SECUR_CODE FROM dbo.TL_USER TU
WHERE TLNANME=@p_TLNAME_USER
UNION ALL
SELECT TM.ROLE_NEW RoleName,TLSUBBRID,SECUR_CODE FROM dbo.TL_USER TU
LEFT JOIN dbo.TL_SYS_ROLE_MAPPING TM ON TM.ROLE_OLD=TU.RoleName AND( TM.TLNAME IS NULL OR TM.TLNAME='')
WHERE TLNANME=@p_TLNAME_USER AND TM.ROLE_NEW IS NOT NULL
UNION ALL
SELECT TM1.ROLE_NEW RoleName,TM1.BRANCH_ID TLSUBBRID,TM1.DEP_ID SECUR_CODE FROM dbo.TL_SYS_ROLE_MAPPING TM1
WHERE TM1.TLNAME=@p_TLNAME_USER AND CAST(TM1.EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE)
UNION ALL
SELECT TM.ROLE_NEW RoleName,TM1.BRANCH_ID TLSUBBRID,TM1.DEP_ID SECUR_CODE FROM dbo.TL_SYS_ROLE_MAPPING TM1
LEFT JOIN dbo.TL_SYS_ROLE_MAPPING TM ON TM.ROLE_OLD=TM1.ROLE_NEW AND( TM.TLNAME IS NULL OR TM.TLNAME='')
WHERE TM1.TLNAME=@p_TLNAME_USER AND CAST(TM1.EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE)
INSERT INTO @AUTHOR_DVDM
(
ROLE_ID,
BRANCH_ID,
DEP_ID,
DVDM_ID
)
SELECT TU.RoleName,TU.TLSUBBRID,TU.SECUR_CODE,PC.DVDM_ID FROM dbo.TL_USER TU
LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.BRANCH_ID=TU.TLSUBBRID AND DT.DEP_ID=TU.SECUR_CODE
LEFT JOIN dbo.PL_COSTCENTER PC ON PC.COST_ID=DT.COST_ID
WHERE TU.TLNANME=@p_TLNAME_USER
UNION ALL
SELECT TM.ROLE_NEW RoleName,TU.TLSUBBRID,TU.SECUR_CODE,PC.DVDM_ID FROM dbo.TL_USER TU
LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.BRANCH_ID=TU.TLSUBBRID AND DT.DEP_ID=TU.SECUR_CODE
LEFT JOIN dbo.PL_COSTCENTER PC ON PC.COST_ID=DT.COST_ID
LEFT JOIN dbo.TL_SYS_ROLE_MAPPING TM ON TM.ROLE_OLD=TU.RoleName AND( TM.TLNAME IS NULL OR TM.TLNAME='')
WHERE TU.TLNANME=@p_TLNAME_USER AND TM.ROLE_NEW IS NOT NULL
UNION ALL
SELECT TU.ROLE_NEW RoleName,TU.BRANCH_ID TLSUBBRID,TU.DEP_ID SECUR_CODE,PC.DVDM_ID FROM dbo.TL_SYS_ROLE_MAPPING TU
LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.BRANCH_ID=TU.BRANCH_ID AND DT.DEP_ID=TU.DEP_ID
LEFT JOIN dbo.PL_COSTCENTER PC ON PC.COST_ID=DT.COST_ID
WHERE TU.TLNAME=@p_TLNAME_USER AND CAST(EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE)
UNION ALL
SELECT TM.ROLE_NEW RoleName,TU.BRANCH_ID TLSUBBRID,TU.DEP_ID SECUR_CODE,PC.DVDM_ID FROM dbo.TL_SYS_ROLE_MAPPING TU
LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.BRANCH_ID=TU.BRANCH_ID AND DT.DEP_ID=TU.DEP_ID
LEFT JOIN dbo.PL_COSTCENTER PC ON PC.COST_ID=DT.COST_ID
LEFT JOIN dbo.TL_SYS_ROLE_MAPPING TM ON TM.ROLE_OLD=TU.ROLE_NEW AND( TM.TLNAME IS NULL OR TM.TLNAME='')
WHERE TU.TLNAME=@p_TLNAME_USER AND CAST(TU.EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE)
INSERT INTO @COST_ID
SELECT COST_ID FROM dbo.PL_COSTCENTER_DT WHERE DEP_ID=@DEP_ID AND BRANCH_ID=@p_BRANCH_LOGIN
INSERT INTO @DVDM_ID
SELECT DVDM_ID FROM dbo.PL_COSTCENTER WHERE COST_ID IN (SELECT COST_ID FROM @COST_ID) GROUP BY DVDM_ID
---- NGUOI XU lY TIEP THEO 18022021
DECLARE @lstREQUEST TABLE (
REQ_ID VARCHAR(20),
PROCESS_ID VARCHAR(50),
DVDM_NAME NVARCHAR(200),
TLNAME VARCHAR(200),
TLFullName NVARCHAR(200),
NOTES NVARCHAR(200)
)
INSERT INTO @lstREQUEST
( REQ_ID,PROCESS_ID, DVDM_NAME,TLNAME,TLFullName, NOTES)
SELECT distinct PL.REQ_ID,PL.PROCESS_ID,CASE WHEN CD.DVDM_NAME IS NOT NULL AND CD.DVDM_NAME <> '' THEN CD.DVDM_NAME ELSE BR.BRANCH_NAME END AS DVDM_NAME,TempU.TLNANME AS TLNAME,TempU.TLFullName,PL.NOTES FROM
(SELECT * FROM dbo.PL_REQUEST_PROCESS PRC WHERE PRC.STATUS = 'C' AND --GIANT 23/12/2021
EXISTS(SELECT PLRD.REQ_ID FROM dbo.PL_REQUEST_DOC PLRD
WHERE PLRD.REQ_ID=PRC.REQ_ID
) AND PRC.STATUS='C' AND PRC.PROCESS_ID <>'APPROVE' AND PRC.PROCESS_ID <>'SIGN' AND (PRC.IS_HAS_CHILD = 0 OR PRC.IS_HAS_CHILD IS NULL)) PL
LEFT JOIN dbo.CM_DVDM CD ON CD.DVDM_ID=PL.DVDM_ID
LEFT JOIN
(
SELECT TU.TLNANME,TU.TLFullName,TU.RoleName,Temp.DVDM_ID,TU.SECUR_CODE,TU.TLSUBBRID FROM dbo.TL_USER TU
LEFT JOIN(
SELECT PC.DVDM_ID,PD.DEP_ID,PD.BRANCH_ID FROM dbo.PL_COSTCENTER PC
LEFT JOIN dbo.PL_COSTCENTER_DT PD ON PC.COST_ID=PD.COST_ID) Temp ON Temp.DEP_ID=TU.SECUR_CODE AND Temp.BRANCH_ID=TU.TLSUBBRID
UNION ALL
SELECT TU.TLNAME,US.TLFullName,TU.ROLE_NEW RoleName,Temp.DVDM_ID,TU.DEP_ID SECUR_CODE,TU.BRANCH_ID TLSUBBRID FROM dbo.TL_SYS_ROLE_MAPPING TU
LEFT JOIN dbo.TL_USER US ON US.TLNANME=TU.TLNAME
LEFT JOIN(
SELECT PC.DVDM_ID,PD.DEP_ID,PD.BRANCH_ID FROM dbo.PL_COSTCENTER PC
LEFT JOIN dbo.PL_COSTCENTER_DT PD ON PC.COST_ID=PD.COST_ID) Temp ON Temp.DEP_ID=TU.DEP_ID AND Temp.BRANCH_ID=TU.BRANCH_ID
WHERE CAST(TU.EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE)
) TempU ON (TempU.RoleName=PL.ROLE_USER OR PL.ROLE_USER IN (SELECT ROLE_NEW FROM dbo.TL_SYS_ROLE_MAPPING TM WHERE ROLE_OLD=TempU.RoleName AND (TM.TLNAME IS NULL OR TM.TLNAME=''))) AND (TempU.TLSUBBRID=PL.BRANCH_ID OR PL.BRANCH_ID IS NULL OR PL.BRANCH_ID='')
AND (TempU.SECUR_CODE=PL.DEP_ID OR PL.DEP_ID IS NULL OR PL.DEP_ID='')
AND (TempU.DVDM_ID=PL.DVDM_ID OR PL.DVDM_ID IS NULL OR PL.DVDM_ID ='')
LEFT JOIN dbo.PL_REQUEST_DOC RD ON RD.REQ_ID = PL.REQ_ID
LEFT JOIN CM_BRANCH BR ON PL.BRANCH_ID = BR.BRANCH_ID
WHERE PL.STATUS='C'
UNION ALL
SELECT distinct PL.REQ_ID,PL.PROCESS_ID, CASE WHEN CD.DVDM_NAME IS NOT NULL AND CD.DVDM_NAME <> '' THEN CD.DVDM_NAME ELSE BR.BRANCH_NAME END AS DVDM_NAME,TempU.TLNANME AS TLNAME,TempU.TLFullName,PL.NOTES FROM
(SELECT * FROM dbo.PL_REQUEST_PROCESS PRC WHERE PRC.STATUS = 'C' AND --GIANT 23/12/2021
EXISTS(SELECT PLRD.REQ_ID FROM dbo.PL_REQUEST_DOC PLRD
WHERE PLRD.REQ_ID=PRC.REQ_ID
) AND PRC.STATUS='C' AND PRC.PROCESS_ID <>'APPROVE' AND PRC.PROCESS_ID ='SIGN' AND (PRC.IS_HAS_CHILD = 0 OR PRC.IS_HAS_CHILD IS NULL)) PL
LEFT JOIN dbo.CM_DVDM CD ON CD.DVDM_ID=PL.DVDM_ID
LEFT JOIN
(
SELECT TU.TLNANME,TU.TLFullName,TU.RoleName,Temp.DVDM_ID,TU.SECUR_CODE,TU.TLSUBBRID FROM dbo.TL_USER TU
LEFT JOIN(
SELECT PC.DVDM_ID,PD.DEP_ID,PD.BRANCH_ID FROM dbo.PL_COSTCENTER PC
LEFT JOIN dbo.PL_COSTCENTER_DT PD ON PC.COST_ID=PD.COST_ID) Temp ON Temp.DEP_ID=TU.SECUR_CODE AND Temp.BRANCH_ID=TU.TLSUBBRID
) TempU ON (TempU.RoleName=PL.ROLE_USER OR PL.ROLE_USER IN (SELECT ROLE_NEW FROM dbo.TL_SYS_ROLE_MAPPING TM WHERE TM.ROLE_OLD=TempU.RoleName AND (TM.TLNAME IS NULL OR TM.TLNAME='')))
AND (TempU.TLSUBBRID=PL.BRANCH_ID OR PL.BRANCH_ID IS NULL OR PL.BRANCH_ID='')
AND (TempU.SECUR_CODE=PL.DEP_ID OR PL.DEP_ID IS NULL OR PL.DEP_ID='')
AND (TempU.DVDM_ID=PL.DVDM_ID OR PL.DVDM_ID IS NULL OR PL.DVDM_ID ='')
LEFT JOIN dbo.PL_REQUEST_DOC RD ON RD.REQ_ID = PL.REQ_ID
LEFT JOIN CM_BRANCH BR ON PL.BRANCH_ID = BR.BRANCH_ID
WHERE STATUS='C' AND (PL.PROCESS_ID = 'SIGN' AND TempU.TLNANME = RD.SIGN_USER)
UNION ALL
SELECT distinct PL.REQ_ID,PL.PROCESS_ID,CASE WHEN CD.DVDM_NAME IS NOT NULL AND CD.DVDM_NAME <> '' THEN CD.DVDM_NAME ELSE BR.BRANCH_NAME END AS DVDM_NAME,CASE WHEN TempC.ID IS NULL THEN TempU.TLNANME ELSE TU.TLNANME END AS TLNAME,CASE WHEN TempC.ID IS NULL THEN TempU.TLFullName ELSE TU.TLFullName END AS TLFullName,CASE WHEN TempC.ID IS NULL THEN PL.NOTES ELSE TempC.CONTENT END AS NOTES
FROM
(SELECT * FROM dbo.PL_REQUEST_PROCESS PRC WHERE
EXISTS(SELECT PLRD.REQ_ID FROM dbo.PL_REQUEST_DOC PLRD
WHERE PLRD.REQ_ID=PRC.REQ_ID
) AND PRC.STATUS='C' AND PRC.PROCESS_ID <>'APPROVE' AND PRC.PROCESS_ID <>'SIGN' AND PRC.IS_HAS_CHILD = 1 ) PL
LEFT JOIN dbo.CM_DVDM CD ON CD.DVDM_ID=PL.DVDM_ID
LEFT JOIN CM_BRANCH BR ON PL.BRANCH_ID = BR.BRANCH_ID
LEFT JOIN
(
SELECT PRC.ID, PRC.PROCESS_ID,PRC.REQ_ID,PRC.TLNAME,AC.CONTENT FROM dbo.PL_REQUEST_PROCESS_CHILD PRC
LEFT JOIN dbo.CM_ALLCODE AC ON AC.CDVAL=PRC.TYPE_JOB AND AC.CDNAME='JOB_TYPE' AND CDTYPE='REQ'
WHERE (PRC.STATUS_JOB='C' OR PRC.STATUS_JOB='R' )
)TempC ON TempC.PROCESS_ID =PL.ID AND PL.IS_HAS_CHILD=1
LEFT JOIN dbo.TL_USER TU ON TU.TLNANME=TempC.TLNAME
LEFT JOIN
(
SELECT TU.TLNANME,TU.TLFullName,TU.RoleName,Temp.DVDM_ID,TU.SECUR_CODE,TU.TLSUBBRID FROM dbo.TL_USER TU
LEFT JOIN(
SELECT PC.DVDM_ID,PD.DEP_ID,PD.BRANCH_ID FROM dbo.PL_COSTCENTER PC
LEFT JOIN dbo.PL_COSTCENTER_DT PD ON PC.COST_ID=PD.COST_ID) Temp ON Temp.DEP_ID=TU.SECUR_CODE AND Temp.BRANCH_ID=TU.TLSUBBRID
UNION ALL
SELECT TU.TLNAME,US.TLFullName,TU.ROLE_NEW RoleName,Temp.DVDM_ID,TU.DEP_ID SECUR_CODE,TU.BRANCH_ID TLSUBBRID FROM dbo.TL_SYS_ROLE_MAPPING TU
LEFT JOIN dbo.TL_USER US ON US.TLNANME=TU.TLNAME
LEFT JOIN(
SELECT PC.DVDM_ID,PD.DEP_ID,PD.BRANCH_ID FROM dbo.PL_COSTCENTER PC
LEFT JOIN dbo.PL_COSTCENTER_DT PD ON PC.COST_ID=PD.COST_ID) Temp ON Temp.DEP_ID=TU.DEP_ID AND Temp.BRANCH_ID=TU.BRANCH_ID
WHERE CAST(TU.EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE)
) TempU ON (TempU.RoleName=PL.ROLE_USER OR PL.ROLE_USER IN (SELECT ROLE_NEW FROM dbo.TL_SYS_ROLE_MAPPING TM WHERE ROLE_OLD=TempU.RoleName AND (TM.TLNAME IS NULL OR TM.TLNAME=''))) AND (TempU.TLSUBBRID=PL.BRANCH_ID OR PL.BRANCH_ID IS NULL OR PL.BRANCH_ID='')
AND (TempU.SECUR_CODE=PL.DEP_ID OR PL.DEP_ID IS NULL OR PL.DEP_ID='')
AND (TempU.DVDM_ID=PL.DVDM_ID OR PL.DVDM_ID IS NULL OR PL.DVDM_ID ='')
WHERE PL.STATUS='C'
----- GIANT 23/12/2021
IF(@p_FR_DATE IS NULL)
BEGIN
SET @p_FR_DATE = GETDATE()
SET @p_FR_DATE = DATEADD(MONTH,-2,@p_FR_DATE)
END
-----
IF(@p_TYPE='DVKD')
BEGIN
-- PAGING BEGIN
SELECT A.REQ_ID,A.REQ_CODE,A.REQ_NAME,A.REQ_DT,A.REQ_TYPE,A.REQ_CONTENT, A.REQ_REASON,A.BRANCH_ID,
A.TOTAL_AMT AS TOTAL_AMT,A.NOTES, A.RECORD_STATUS,A.MAKER_ID,A.CREATE_DT,A.AUTH_STATUS,A.CHECKER_ID,
UDV.TLFullName AS CHECKER_NAME_DV,
A.APPROVE_DT,
A.PROCESS_ID,
--D.AUTH_STATUS_NAME AS AUTH_STATUS_NAME_DV,
--CASE WHEN A.PROCESS_ID='APPROVE' THEN N'Đã duyệt'
--WHEN A.PROCESS_ID<> 'APPROVE' AND A.AUTH_STATUS='A' THEN N'Chờ duyệt' ELSE D.AUTH_STATUS_NAME END AS AUTH_STATUS_NAME,
CASE WHEN A.PROCESS_ID='APPROVE' OR A.AUTH_STATUS ='A' THEN N'Đã duyệt'
ELSE D.AUTH_STATUS_NAME END AS AUTH_STATUS_NAME,
G.BRANCH_CODE,
CASE WHEN A.BRANCH_CREATE <> 'DV0001' THEN G.BRANCH_NAME ELSE G.BRANCH_NAME+' - ' + DEP.DEP_NAME END AS BRANCH_NAME,
UP.TLFullName AS CHECKER_NAME_PROCESS,
RP.APPROVE_DT AS APPROVE_DT_PROCESS,
UC.TLFullName AS MAKER_NAME,
RPN.PROCESS_ID AS PROCESS_ID_NEXT,
RP.ROLE_USER,
RP.NOTES AS PROCESS_STATUS ,
RPN.NOTES AS PROCESS_STATUS_NEXT,
A.DVDM_APP_ID,
CD.DVDM_NAME AS DVDM_APP_NAME,
A.REQ_PARENT_ID,
PARENT.REQ_NAME AS REQ_PARENT_NAME,
PARENT.REQ_CODE AS REQ_PARENT_CODE,
PARENT.TOTAL_AMT AS REQ_PARENT_AMT,
A.BRANCH_FEE,
A.DEP_ID,
A.DEP_FEE,
DEP.DEP_NAME,
DEP.DEP_CODE,
BF.BRANCH_NAME AS BRANCH_FEE_NAME,
BF.BRANCH_CODE AS BRANCH_FEE_CODE,
DF.DEP_NAME AS DEP_FEE_NAME,
DF.DEP_CODE AS DEP_FEE_CODE,
'' AS BRANCH_DEP,
'' AS BRANCH_DEP_FEE,
'' AS TYPE_JOB,
'' AS USER_JOB,
'' AS USER_JOB_NAME,
'' AS TRANSFER_MAKER,
A.CREATE_DT AS TRANFER_DT ,
'' AS TRANSFER_MAKER_ID,
A.EFFEC_DT,A.IS_BACKDAY,
'' AS TYPE_JOB_XL,
'' AS USER_JOB_XL,
RP.ID AS REF_ID,
RPN.STATUS AS STATUS_NEXT,
RP.STATUS AS STATUS_CURR,
'' AS STATUS_JOB,
A.BRANCH_CREATE,
A.DEP_CREATE,
A.REQ_LINE,
A.TC_NOTES,
A.SIGN_USER,
TL.TLFullName AS SIGN_USER_NAME,
A.KT_NOTES,
A.IS_CHECKALL,
A.BASED_CONTENT,
A.PL_BASED_ID, PL_B.REQ_CODE AS PL_BASED_CODE, PL_B.REQ_CONTENT AS PL_BASED_CONTENT,
'' AS IS_TRANSFER,
--NGUOI XU LY
NXL.NGUOIXULY AS NGUOIXULY, A.TK_HDQT_NOTES, A.TK_TGD_NOTES, A.OTHER_NOTES
-- SELECT END
FROM PL_REQUEST_DOC A
--LEFT JOIN dbo.PL_REQUEST_PROCESS PLRP ON PLRP.REQ_ID=A.REQ_ID AND PLRP.STATUS <>'U'
LEFT JOIN CM_AUTH_STATUS D ON D.AUTH_STATUS = A.AUTH_STATUS
LEFT JOIN CM_BRANCH G ON A.BRANCH_ID=G.BRANCH_ID
LEFT JOIN dbo.CM_DEPARTMENT DEP ON DEP.DEP_ID=A.DEP_ID
LEFT JOIN CM_BRANCH BF ON BF.BRANCH_ID=A.BRANCH_FEE
LEFT JOIN dbo.CM_DEPARTMENT DF ON DF.DEP_ID=A.DEP_FEE
LEFT JOIN dbo.TL_USER UDV ON UDV.TLNANME=A.CHECKER_ID
LEFT JOIN dbo.PL_REQUEST_PROCESS RPN
ON RPN.ID IN (SELECT TOP 1 Temp.ID FROM dbo.PL_REQUEST_PROCESS Temp WHERE Temp.REQ_ID=A.REQ_ID AND (Temp.STATUS='C' OR Temp.STATUS='R') )
LEFT JOIN dbo.PL_REQUEST_PROCESS RP ON RP.ID IN(SELECT TOP 1 ID FROM dbo.PL_REQUEST_PROCESS WHERE PL_REQUEST_PROCESS.PROCESS_ID=RPN.PARENT_PROCESS_ID AND PL_REQUEST_PROCESS.REQ_ID=A.REQ_ID)
LEFT JOIN dbo.TL_USER UP ON UP.TLNANME=RP.CHECKER_ID
LEFT JOIN dbo.TL_USER UC ON UC.TLNANME=A.MAKER_ID
LEFT JOIN dbo.CM_DVDM CD ON CD.DVDM_ID=A.DVDM_APP_ID
LEFT JOIN dbo.PL_REQUEST_DOC PARENT ON PARENT.REQ_ID=A.REQ_PARENT_ID
LEFT JOIN dbo.PL_REQUEST_DOC PL_B ON PL_B.REQ_ID=A.PL_BASED_ID
LEFT JOIN TL_USER TL ON A.SIGN_USER = TL.TLNANME
LEFT JOIN
(
SELECT Results.REQ_ID,STUFF((select ', ' + RE.TLFullName
FROM @lstREQUEST RE
WHERE RE.REQ_ID=Results.REQ_ID
FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULY,
STUFF((select ', ' + RE.TLNAME
FROM @lstREQUEST RE
WHERE RE.REQ_ID=Results.REQ_ID
FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULYTLNAME
FROM @lstREQUEST Results
GROUP BY REQ_ID
) NXL ON NXL.REQ_ID=A.REQ_ID
WHERE 1 = 1
AND (A.REQ_CODE LIKE '%' + @p_REQ_CODE + '%' OR @p_REQ_CODE IS NULL OR @p_REQ_CODE = '')
AND (A.REQ_ID LIKE '%' + @p_REQ_ID + '%' OR @p_REQ_ID IS NULL OR @p_REQ_ID = '')
AND (A.REQ_CONTENT LIKE '%' + @p_REQ_CONTENT + '%' OR @p_REQ_CONTENT IS NULL OR @p_REQ_CONTENT = '')
AND (A.REQ_REASON LIKE '%' + @p_REQ_REASON + '%' OR @p_REQ_REASON IS NULL OR @p_REQ_REASON = '')
AND (A.TOTAL_AMT=@p_TOTAL_AMT OR @p_TOTAL_AMT IS NULL OR @p_TOTAL_AMT =0)
AND (A.REQ_NAME LIKE '%' + @p_REQ_NAME + '%' OR @p_REQ_NAME IS NULL OR @p_REQ_NAME = '')
AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '')
AND (A.MAKER_ID LIKE '%' + @p_MAKER_ID + '%' OR @p_MAKER_ID IS NULL OR @p_MAKER_ID = '')
AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '')
AND (@p_CREATE_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_CREATE_DT,103)) = 0)
AND (@p_APPROVE_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_APPROVE_DT,103)) = 0)
AND (@p_REQ_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_REQ_DT,103)) = 0)
AND (A.REQ_TYPE = @p_REQ_TYPE OR @p_REQ_TYPE IS NULL OR @p_REQ_TYPE =-1)
AND A.RECORD_STATUS = '1'
AND(
@p_REQ_TYPE = -1 OR @p_REQ_TYPE IS NULL
OR
(
@p_REQ_TYPE=1 AND EXISTS(SELECT D.REQDT_ID FROM dbo.PL_REQUEST_DOC_DT D WHERE D.REQDT_TYPE='O' AND D.REQ_ID=A.REQ_ID)
)
OR
(
@p_REQ_TYPE=0 AND NOT EXISTS(SELECT D.REQDT_ID FROM dbo.PL_REQUEST_DOC_DT D WHERE D.REQDT_TYPE='O' AND D.REQ_ID=A.REQ_ID)
)
)
AND (A.MAKER_ID=@p_TLNAME_USER OR
(A.PROCESS_ID ='APPROVE' AND A.BRANCH_CREATE=@p_BRANCH_LOGIN AND (A.DEP_CREATE=@DEP_ID OR @BRANCH_TYPE<>'HS'))
OR EXISTS(SELECT ID FROM dbo.PL_ROLE_DATA_CONFIG WHERE ROLE_TYPE='PL_REQUEST_DOC_ALL' AND BRANCH_ID=@p_TLNAME_USER )
OR EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS PLRP WHERE PLRP.PROCESS_ID='APPNEW' AND PLRP.REQ_ID=A.REQ_ID
AND EXISTS(SELECT AUTH.ROLE_ID FROM @AUTHOR AUTH WHERE AUTH.ROLE_ID=PLRP.ROLE_USER AND AUTH.BRANCH_ID=PLRP.BRANCH_ID
AND(PLRP.DEP_ID=AUTH.DEP_ID OR PLRP.DEP_ID IS NULL OR PLRP.DEP_ID ='') ))
--
--OR (EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS PLRP WHERE A.REQ_ID=PLRP.REQ_ID AND PLRP.PROCESS_ID='APPNEW'
-- AND PLRP.ROLE_USER IN (SELECT ROLE_ID FROM @TABLE_ROLE) AND PLRP.BRANCH_ID=@p_BRANCH_LOGIN
-- AND (PLRP.DEP_ID=@DEP_ID OR PLRP.DEP_ID IS NULL OR PLRP.DEP_ID ='')))
--
OR(A.SIGN_USER IS NOT NULL AND A.SIGN_USER <>'' AND A.SIGN_USER =@p_TLNAME_USER AND A.AUTH_STATUS<>'E'))
--
--AND (( @p_AUTH_STATUS='A' AND A.PROCESS_ID='APPROVE') OR( @p_AUTH_STATUS IN('U','R','E') AND (A.PROCESS_ID <> 'APPROVE' OR A.PROCESS_ID IS NULL)) OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '')
--AND ((A.AUTH_STATUS='E' AND A.MAKER_ID=@p_TLNAME_USER) OR (A.AUTH_STATUS <> 'E' AND (A.MAKER_ID=@p_TLNAME_USER OR (PLRP.PROCESS_ID='DVKD' AND PLRP.ROLE_USER=@p_ROLE_USER AND PLRP.BRANCH_ID=@p_BRANCH_LOGIN AND (PLRP.DEP_ID=@DEP_ID OR PLRP.DEP_ID IS NULL OR PLRP.DEP_ID ='')))))
--
--AND (A.AUTH_STATUS = @p_AUTH_STATUS OR @p_AUTH_STATUS ='' OR @p_AUTH_STATUS IS NULL)
AND( (@p_AUTH_STATUS ='A' AND EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID = A.REQ_ID AND PROCESS_ID ='APPNEW' AND STATUS ='P'))
OR (@p_AUTH_STATUS ='E' AND A.AUTH_STATUS =@p_AUTH_STATUS)
OR (@p_AUTH_STATUS ='R' AND A.AUTH_STATUS =@p_AUTH_STATUS)
OR (@p_AUTH_STATUS ='W' AND EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID = A.REQ_ID AND PROCESS_ID ='SIGN' AND STATUS ='C'))
OR (@p_AUTH_STATUS ='G' AND EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID = A.REQ_ID AND PROCESS_ID ='SIGN' AND STATUS ='P'))
OR (@p_AUTH_STATUS ='U' AND EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID = A.REQ_ID AND PROCESS_ID ='APPNEW' AND STATUS ='C'))
OR (@p_AUTH_STATUS ='' OR @p_AUTH_STATUS IS NULL)
)
AND(@p_FR_DATE IS NULL OR CONVERT(DATETIME,A.REQ_DT,103) >= CONVERT(DATETIME,@p_FR_DATE,103))
AND(@p_TO_DATE IS NULL OR CONVERT(DATETIME,A.REQ_DT,103) <= CONVERT(DATETIME,@p_TO_DATE,103))
AND(@p_YEAR IS NULL OR @p_YEAR=0 OR YEAR(A.REQ_DT)=@p_YEAR)
AND( NXL.NGUOIXULYTLNAME LIKE '%' + @p_NGUOIXULY + '%' OR @p_NGUOIXULY IS NULL OR @p_NGUOIXULY = ''
OR NXL.NGUOIXULY LIKE '%' + @p_NGUOIXULY + '%')
AND (A.BRANCH_ID = @p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '')
AND (A.DEP_ID = @p_DEP_ID OR @p_DEP_ID IS NULL OR @p_DEP_ID = '')
-- GIANT 26/10/2021
AND (A.REQ_ID IN (SELECT PL_REQUEST_DOC_DT.REQ_ID FROM PL_REQUEST_DOC_DT WHERE PL_REQUEST_DOC_DT.REQ_ID = A.REQ_ID))
ORDER BY A.CREATE_DT DESC
-- PAGING END
END
ELSE IF(@p_TYPE='PDTT')
BEGIN
-- PAGING BEGIN
SELECT A.REQ_ID,A.REQ_CODE,A.REQ_NAME,A.REQ_DT,A.REQ_TYPE,A.REQ_CONTENT, A.REQ_REASON,A.BRANCH_ID,
A.TOTAL_AMT AS TOTAL_AMT,A.NOTES, A.RECORD_STATUS,A.MAKER_ID,A.CREATE_DT,A.AUTH_STATUS,A.CHECKER_ID,
UDV.TLFullName AS CHECKER_NAME_DV,
A.APPROVE_DT,
A.PROCESS_ID,
D.AUTH_STATUS_NAME AS AUTH_STATUS_NAME_DV,
CASE WHEN A.PROCESS_ID='APPROVE' THEN N'Đã duyệt'
ELSE N'Chờ duyệt' END AS AUTH_STATUS_NAME,
G.BRANCH_CODE,
G.BRANCH_NAME,
UP.TLFullName AS CHECKER_NAME_PROCESS,
RP.APPROVE_DT AS APPROVE_DT_PROCESS,
UC.TLFullName AS MAKER_NAME,
RPN.PROCESS_ID AS PROCESS_ID_NEXT,
RPN.ROLE_USER,
RP.NOTES AS PROCESS_STATUS ,
RPN.NOTES AS PROCESS_STATUS_NEXT,
A.DVDM_APP_ID,
CD.DVDM_NAME AS DVDM_APP_NAME,
A.REQ_PARENT_ID,
PARENT.REQ_NAME AS REQ_PARENT_NAME,
PARENT.REQ_CODE AS REQ_PARENT_CODE,
PARENT.TOTAL_AMT AS REQ_PARENT_AMT,
A.BRANCH_FEE,
A.DEP_ID,
A.DEP_FEE,
DEP.DEP_NAME,
DEP.DEP_CODE,
BF.BRANCH_NAME AS BRANCH_FEE_NAME,
BF.BRANCH_CODE AS BRANCH_FEE_CODE,
DF.DEP_NAME AS DEP_FEE_NAME,
DF.DEP_CODE AS DEP_FEE_CODE,
'' AS BRANCH_DEP,
'' AS BRANCH_DEP_FEE,
RPC.TYPE_JOB AS TYPE_JOB,
RPC.TLNAME AS USER_JOB,
TU.TLFullName AS USER_JOB_NAME,
TFM.TLNANME AS TRANSFER_MAKER,
RPC.TRANFER_DT AS TRANFER_DT ,
RPC.MAKER_ID AS TRANSFER_MAKER_ID,
A.EFFEC_DT,A.IS_BACKDAY,
'' AS TYPE_JOB_XL,
'' AS USER_JOB_XL,
--RP.ID AS REF_ID,
ISNULL(RP.ID,1) AS REF_ID,
RPN.STATUS AS STATUS_NEXT,
PLRP.STATUS AS STATUS_CURR,
RPC.STATUS_JOB AS STATUS_JOB,
A.BRANCH_CREATE,
A.DEP_CREATE,
A.REQ_LINE,
A.TC_NOTES,
A.SIGN_USER,
TL.TLFullName AS SIGN_USER_NAME,
A.KT_NOTES,
A.IS_CHECKALL,
A.BASED_CONTENT,
'' AS IS_TRANSFER,
--NGUOI XU LY
--dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'TTCT-DVKD',0) AS NGUOIXULY
NXL.NGUOIXULY AS NGUOIXULY,A.TK_TGD_NOTES, A.OTHER_NOTES,A.TK_HDQT_NOTES
-- SELECT END
FROM PL_REQUEST_DOC A
INNER JOIN dbo.PL_REQUEST_PROCESS PLRP ON PLRP.REQ_ID=A.REQ_ID AND PLRP.STATUS <>'U'
LEFT JOIN dbo.PL_REQUEST_PROCESS RPN
ON RPN.ID IN (SELECT TOP 1 Temp.ID FROM dbo.PL_REQUEST_PROCESS Temp WHERE Temp.REQ_ID=A.REQ_ID AND (Temp.STATUS='C' OR Temp.STATUS='R') )
LEFT JOIN dbo.PL_REQUEST_PROCESS RP ON RP.ID=(SELECT TOP 1 ID FROM PL_REQUEST_PROCESS WHERE PL_REQUEST_PROCESS.REQ_ID=A.REQ_ID AND PL_REQUEST_PROCESS.PROCESS_ID=RPN.PARENT_PROCESS_ID ORDER BY APPROVE_DT DESC)
LEFT JOIN CM_AUTH_STATUS D ON D.AUTH_STATUS = A.AUTH_STATUS
LEFT JOIN CM_BRANCH G ON A.BRANCH_ID=G.BRANCH_ID
LEFT JOIN dbo.CM_DEPARTMENT DEP ON DEP.DEP_ID=A.DEP_ID
LEFT JOIN dbo.PL_REQUEST_PROCESS_CHILD RPC ON RPC.REQ_ID=A.REQ_ID AND RPC.PROCESS_ID=PLRP.ID AND (RPC.STATUS_JOB='C' OR RPC.STATUS_JOB='R')
LEFT JOIN CM_BRANCH BF ON BF.BRANCH_ID=A.BRANCH_FEE
LEFT JOIN dbo.CM_DEPARTMENT DF ON DF.DEP_ID=A.DEP_FEE
LEFT JOIN dbo.TL_USER UDV ON UDV.TLNANME=A.CHECKER_ID
LEFT JOIN dbo.TL_USER UC ON UC.TLNANME=A.MAKER_ID
LEFT JOIN dbo.TL_USER UP ON UP.TLNANME=RP.CHECKER_ID
LEFT JOIN dbo.TL_USER TU ON TU.TLNANME=RPC.TLNAME
LEFT JOIN dbo.TL_USER TFM ON TFM.TLNANME=RPC.MAKER_ID
LEFT JOIN dbo.CM_PROCESS_STATUS PS ON PS.PROCESS_ID = A.PROCESS_ID
LEFT JOIN dbo.CM_PROCESS_STATUS PSN ON PSN.PROCESS_ID = A.PROCESS_ID
LEFT JOIN dbo.CM_DVDM CD ON CD.DVDM_ID=A.DVDM_APP_ID
LEFT JOIN dbo.PL_REQUEST_DOC PARENT ON PARENT.REQ_ID=A.REQ_PARENT_ID
LEFT JOIN TL_USER TL ON A.SIGN_USER = TL.TLNANME
LEFT JOIN
(
SELECT Results.REQ_ID,STUFF((select ', ' + RE.TLFullName
FROM @lstREQUEST RE
WHERE RE.REQ_ID=Results.REQ_ID
FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULY,
STUFF((select ', ' + RE.TLNAME
FROM @lstREQUEST RE
WHERE RE.REQ_ID=Results.REQ_ID
FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULYTLNAME
FROM @lstREQUEST Results
GROUP BY REQ_ID
) NXL ON NXL.REQ_ID=A.REQ_ID
WHERE 1 = 1
AND (A.REQ_CODE LIKE '%' + @p_REQ_CODE + '%' OR @p_REQ_CODE IS NULL OR @p_REQ_CODE = '')
AND (A.REQ_ID LIKE '%' + @p_REQ_ID + '%' OR @p_REQ_ID IS NULL OR @p_REQ_ID = '')
AND (A.REQ_CONTENT LIKE '%' + @p_REQ_CONTENT + '%' OR @p_REQ_CONTENT IS NULL OR @p_REQ_CONTENT = '')
AND (A.REQ_REASON LIKE '%' + @p_REQ_REASON + '%' OR @p_REQ_REASON IS NULL OR @p_REQ_REASON = '')
AND (A.TOTAL_AMT=@p_TOTAL_AMT OR @p_TOTAL_AMT IS NULL OR @p_TOTAL_AMT =0)
AND (A.REQ_NAME LIKE '%' + @p_REQ_NAME + '%' OR @p_REQ_NAME IS NULL OR @p_REQ_NAME = '')
AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '')
AND (A.MAKER_ID LIKE '%' + @p_MAKER_ID + '%' OR @p_MAKER_ID IS NULL OR @p_MAKER_ID = '')
AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '')
AND (@p_CREATE_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_CREATE_DT,103)) = 0)
AND (@p_APPROVE_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_APPROVE_DT,103)) = 0)
AND (@p_REQ_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_REQ_DT,103)) = 0)
AND (A.REQ_TYPE = @p_REQ_TYPE OR @p_REQ_TYPE IS NULL OR @p_REQ_TYPE =-1)
--AND (@p_RECEIVE_BRANCH IS NULL OR A.PO_ID IN (SELECT PO_ID FROM TR_PO_DETAIL WHERE RECEIVE_BRANCH=@p_RECEIVE_BRANCH))
AND A.RECORD_STATUS = '1'
AND(
@p_REQ_TYPE = -1 OR @p_REQ_TYPE IS NULL
OR
(
@p_REQ_TYPE=1 AND EXISTS(SELECT D.REQDT_ID FROM dbo.PL_REQUEST_DOC_DT D WHERE D.REQDT_TYPE='O' AND D.REQ_ID=A.REQ_ID)
)
OR
(
@p_REQ_TYPE=0 AND NOT EXISTS(SELECT D.REQDT_ID FROM dbo.PL_REQUEST_DOC_DT D WHERE D.REQDT_TYPE='O' AND D.REQ_ID=A.REQ_ID)
)
)
AND EXISTS(SELECT AUTH.ROLE_ID FROM @AUTHOR_DVDM AUTH WHERE AUTH.ROLE_ID=PLRP.ROLE_USER AND (
(PLRP.PROCESS_ID='DVDC' AND PLRP.BRANCH_ID=AUTH.BRANCH_ID AND (PLRP.DEP_ID=AUTH.DEP_ID OR PLRP.DEP_ID IS NULL OR PLRP.DEP_ID=''))
OR PLRP.DVDM_ID=AUTH.DVDM_ID
OR ((PLRP.DVDM_ID ='' OR PLRP.DVDM_ID IS NULL) AND (PLRP.BRANCH_ID IS NULL OR PLRP.BRANCH_ID=''))
))
--AND PLRP.ROLE_USER IN (SELECT ROLE_ID FROM @TABLE_ROLE)
--AND (
-- (PLRP.PROCESS_ID='DVDC' AND PLRP.BRANCH_ID=@p_BRANCH_LOGIN AND (PLRP.DEP_ID=@DEP_ID OR PLRP.DEP_ID IS NULL OR PLRP.DEP_ID=''))
--OR ( PLRP.DVDM_ID IN (SELECT DVDM_ID FROM @DVDM_ID))
--OR
--( (PLRP.DVDM_ID ='' OR PLRP.DVDM_ID IS NULL) AND (PLRP.BRANCH_ID IS NULL OR PLRP.BRANCH_ID=''))
--)
AND(@p_YEAR IS NULL OR @p_YEAR=0 OR YEAR(A.REQ_DT)=@p_YEAR)
AND (PLRP.IS_HAS_CHILD=0 OR PLRP.IS_HAS_CHILD IS NULL)
AND (( @p_AUTH_STATUS='A' AND PLRP.STATUS='P') OR( @p_AUTH_STATUS='U' AND (PLRP.STATUS='C')) OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '')
AND(@p_FR_DATE IS NULL OR CONVERT(DATETIME,A.REQ_DT,103) >= CONVERT(DATETIME,@p_FR_DATE,103))
AND(@p_TO_DATE IS NULL OR CONVERT(DATETIME,A.REQ_DT,103) <= CONVERT(DATETIME,@p_TO_DATE,103))
AND( NXL.NGUOIXULYTLNAME LIKE '%' + @p_NGUOIXULY + '%' OR @p_NGUOIXULY IS NULL OR @p_NGUOIXULY = ''
OR NXL.NGUOIXULY LIKE '%' + @p_NGUOIXULY + '%')
--AND(
-- (dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'TTCT-DVKD',0) LIKE '%' + @p_NGUOIXULY + '%' OR @p_NGUOIXULY IS NULL OR @p_NGUOIXULY = '')
-- OR
-- (dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'TTCT-DVKD',1) LIKE '%' + @p_NGUOIXULY + '%' OR @p_NGUOIXULY IS NULL OR @p_NGUOIXULY = '')
--)
--AND (A.BRANCH_ID = @p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '')
--AND (A.DEP_ID = @p_DEP_ID OR @p_DEP_ID IS NULL OR @p_DEP_ID = '')
-- GIANT 26/10/2021
AND (A.REQ_ID IN (SELECT PL_REQUEST_DOC_DT.REQ_ID FROM PL_REQUEST_DOC_DT WHERE PL_REQUEST_DOC_DT.REQ_ID = A.REQ_ID))
ORDER BY A.CREATE_DT DESC
-- PAGING END
END
ELSE IF(@p_TYPE='TFJOB')
BEGIN
-- PAGING BEGIN
SELECT A.REQ_ID,A.REQ_CODE,A.REQ_NAME,A.REQ_DT,A.REQ_TYPE,A.REQ_CONTENT, A.REQ_REASON,A.BRANCH_ID,
A.TOTAL_AMT AS TOTAL_AMT,A.NOTES, A.RECORD_STATUS,A.MAKER_ID,A.CREATE_DT,A.AUTH_STATUS,A.CHECKER_ID,
UDV.TLFullName AS CHECKER_NAME_DV,
A.APPROVE_DT,
A.PROCESS_ID,
D.AUTH_STATUS_NAME AS AUTH_STATUS_NAME_DV,
CASE WHEN A.PROCESS_ID='APPROVE' THEN N'Đã duyệt'
ELSE N'Chờ duyệt' END AS AUTH_STATUS_NAME,
G.BRANCH_CODE,
G.BRANCH_NAME,
UP.TLFullName AS CHECKER_NAME_PROCESS,
RP.APPROVE_DT AS APPROVE_DT_PROCESS,
UC.TLFullName AS MAKER_NAME,
RPN.PROCESS_ID AS PROCESS_ID_NEXT,
RP.ROLE_USER,
RP.NOTES AS PROCESS_STATUS ,
RPN.NOTES AS PROCESS_STATUS_NEXT,
A.DVDM_APP_ID,
CD.DVDM_NAME AS DVDM_APP_NAME,
A.REQ_PARENT_ID,
PARENT.REQ_NAME AS REQ_PARENT_NAME,
PARENT.REQ_CODE AS REQ_PARENT_CODE,
PARENT.TOTAL_AMT AS REQ_PARENT_AMT,
A.BRANCH_FEE,
A.DEP_ID,
A.DEP_FEE,
DEP.DEP_NAME,
DEP.DEP_CODE,
BF.BRANCH_NAME AS BRANCH_FEE_NAME,
BF.BRANCH_CODE AS BRANCH_FEE_CODE,
DF.DEP_NAME AS DEP_FEE_NAME,
DF.DEP_CODE AS DEP_FEE_CODE,
'' AS BRANCH_DEP,
'' AS BRANCH_DEP_FEE,
CASE WHEN RPC.TYPE_JOB IS NULL OR RPC.TYPE_JOB ='' THEN 'TP' ELSE RPC.TYPE_JOB END AS TYPE_JOB,
RPC.TLNAME AS USER_JOB,
TU.TLFullName AS USER_JOB_NAME,
TFM.TLNANME AS TRANSFER_MAKER,
RPC.TRANFER_DT AS TRANFER_DT ,
RPC.MAKER_ID AS TRANSFER_MAKER_ID,
A.EFFEC_DT,A.IS_BACKDAY,
'' AS TYPE_JOB_XL,
'' AS USER_JOB_XL,
PLRP.ID AS REF_ID,
RPN.STATUS AS STATUS_NEXT,
PLRP.STATUS AS STATUS_CURR,
RPC.STATUS_JOB AS STATUS_JOB,
A.BRANCH_CREATE,
A.DEP_CREATE,
A.REQ_LINE,
A.TC_NOTES,
A.SIGN_USER,
TL.TLFULLNAME AS SIGN_USER_NAME,
A.KT_NOTES,
A.IS_CHECKALL,
A.BASED_CONTENT,
'' AS IS_TRANSFER,
--NGUOI XU LY
-- dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'TTCT-DVKD',0) AS NGUOIXULY
NXL.NGUOIXULY AS NGUOIXULY,A.TK_TGD_NOTES,A.TK_HDQT_NOTES, A.OTHER_NOTES
--PLQ.TLFullName CHECKER_NAME_DV
-- SELECT END
FROM PL_REQUEST_DOC A
INNER JOIN dbo.PL_REQUEST_PROCESS PLRP ON PLRP.REQ_ID=A.REQ_ID AND PLRP.STATUS = 'C' AND PLRP.IS_HAS_CHILD=1
LEFT JOIN dbo.PL_REQUEST_PROCESS RPN
ON RPN.ID IN (SELECT TOP 1 Temp.ID FROM dbo.PL_REQUEST_PROCESS Temp WHERE Temp.REQ_ID=A.REQ_ID AND (Temp.STATUS='C' OR Temp.STATUS='R') )
LEFT JOIN dbo.PL_REQUEST_PROCESS RP ON RP.ID=(SELECT TOP 1 ID FROM PL_REQUEST_PROCESS WHERE PL_REQUEST_PROCESS.REQ_ID=A.REQ_ID AND PL_REQUEST_PROCESS.PROCESS_ID=RPN.PARENT_PROCESS_ID ORDER BY APPROVE_DT DESC)
LEFT JOIN CM_AUTH_STATUS D ON D.AUTH_STATUS = A.AUTH_STATUS
LEFT JOIN CM_BRANCH G ON A.BRANCH_ID=G.BRANCH_ID
LEFT JOIN dbo.CM_DEPARTMENT DEP ON DEP.DEP_ID=A.DEP_ID
LEFT JOIN CM_BRANCH BF ON BF.BRANCH_ID=A.BRANCH_FEE
LEFT JOIN dbo.CM_DEPARTMENT DF ON DF.DEP_ID=A.DEP_FEE
LEFT JOIN dbo.TL_USER UC ON UC.TLNANME=A.MAKER_ID
LEFT JOIN dbo.CM_PROCESS_STATUS PS ON PS.PROCESS_ID = A.PROCESS_ID
LEFT JOIN dbo.CM_PROCESS_STATUS PSN ON PSN.PROCESS_ID = A.PROCESS_ID
LEFT JOIN dbo.CM_DVDM CD ON CD.DVDM_ID=A.DVDM_APP_ID
LEFT JOIN dbo.PL_REQUEST_PROCESS_CHILD RPC ON RPC.REQ_ID=A.REQ_ID AND RPC.PROCESS_ID=PLRP.ID AND (RPC.STATUS_JOB='C' OR RPC.STATUS_JOB='R')
LEFT JOIN dbo.TL_USER UDV ON UDV.TLNANME=A.CHECKER_ID
LEFT JOIN dbo.TL_USER UP ON UP.TLNANME=RP.CHECKER_ID
LEFT JOIN dbo.TL_USER TU ON TU.TLNANME=RPC.TLNAME
LEFT JOIN dbo.TL_USER TFM ON TFM.TLNANME=RPC.MAKER_ID
LEFT JOIN dbo.PL_REQUEST_DOC PARENT ON PARENT.REQ_ID=A.REQ_PARENT_ID
LEFT JOIN TL_USER TL ON A.SIGN_USER = TL.TLNANME
LEFT JOIN
(
SELECT Results.REQ_ID,STUFF((select ', ' + RE.TLFullName
FROM @lstREQUEST RE
WHERE RE.REQ_ID=Results.REQ_ID
FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULY,
STUFF((select ', ' + RE.TLNAME
FROM @lstREQUEST RE
WHERE RE.REQ_ID=Results.REQ_ID
FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULYTLNAME
FROM @lstREQUEST Results
GROUP BY REQ_ID
) NXL ON NXL.REQ_ID=A.REQ_ID
-- GIANT
--LEFT JOIN (
-- SELECT AB.ID,AB.REQ_ID,AB.PROCESS_ID,BC.TLFullName,AB.TLNAME FROM PL_REQUEST_PROCESS_CHILD AB LEFT JOIN TL_USER BC ON AB.TLNAME = BC.TLNANME
--) PLQ ON A.REQ_ID = PLQ.REQ_ID
WHERE 1 = 1
AND (A.REQ_CODE LIKE '%' + @p_REQ_CODE + '%' OR @p_REQ_CODE IS NULL OR @p_REQ_CODE = '')
AND (A.REQ_ID LIKE '%' + @p_REQ_ID + '%' OR @p_REQ_ID IS NULL OR @p_REQ_ID = '')
AND (A.REQ_CONTENT LIKE '%' + @p_REQ_CONTENT + '%' OR @p_REQ_CONTENT IS NULL OR @p_REQ_CONTENT = '')
AND (A.REQ_REASON LIKE '%' + @p_REQ_REASON + '%' OR @p_REQ_REASON IS NULL OR @p_REQ_REASON = '')
AND (A.TOTAL_AMT=@p_TOTAL_AMT OR @p_TOTAL_AMT IS NULL OR @p_TOTAL_AMT =0)
AND (A.REQ_NAME LIKE '%' + @p_REQ_NAME + '%' OR @p_REQ_NAME IS NULL OR @p_REQ_NAME = '')
AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '')
AND (A.MAKER_ID LIKE '%' + @p_MAKER_ID + '%' OR @p_MAKER_ID IS NULL OR @p_MAKER_ID = '')
AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '')
AND (@p_CREATE_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_CREATE_DT,103)) = 0)
AND (@p_APPROVE_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_APPROVE_DT,103)) = 0)
AND (@p_REQ_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_REQ_DT,103)) = 0)
AND (A.REQ_TYPE = @p_REQ_TYPE OR @p_REQ_TYPE IS NULL OR @p_REQ_TYPE =-1)
--AND (@p_RECEIVE_BRANCH IS NULL OR A.PO_ID IN (SELECT PO_ID FROM TR_PO_DETAIL WHERE RECEIVE_BRANCH=@p_RECEIVE_BRANCH))
AND A.RECORD_STATUS = '1'
AND(
@p_REQ_TYPE = -1 OR @p_REQ_TYPE IS NULL
OR
(
@p_REQ_TYPE=1 AND EXISTS(SELECT D.REQDT_ID FROM dbo.PL_REQUEST_DOC_DT D WHERE D.REQDT_TYPE='O' AND D.REQ_ID=A.REQ_ID)
)
OR
(
@p_REQ_TYPE=0 AND NOT EXISTS(SELECT D.REQDT_ID FROM dbo.PL_REQUEST_DOC_DT D WHERE D.REQDT_TYPE='O' AND D.REQ_ID=A.REQ_ID)
)
)
AND(
EXISTS(SELECT AUTH.ROLE_ID FROM @AUTHOR_DVDM AUTH WHERE AUTH.ROLE_ID=PLRP.ROLE_USER AND (
(PLRP.PROCESS_ID='DVDC' AND PLRP.BRANCH_ID=AUTH.BRANCH_ID AND (PLRP.DEP_ID=AUTH.DEP_ID OR PLRP.DEP_ID IS NULL OR PLRP.DEP_ID=''))
OR PLRP.DVDM_ID=AUTH.DVDM_ID
OR ((PLRP.DVDM_ID ='' OR PLRP.DVDM_ID IS NULL) AND (PLRP.BRANCH_ID IS NULL OR PLRP.BRANCH_ID=''))
))
OR (EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS_CHILD WHERE TLNAME=@p_TLNAME_USER AND TYPE_JOB='KS' AND PL_REQUEST_PROCESS_CHILD.PROCESS_ID=PLRP.ID) ) )
AND(@p_FR_DATE IS NULL OR CONVERT(DATETIME,A.REQ_DT,103) >= CONVERT(DATETIME,@p_FR_DATE,103))
AND(@p_TO_DATE IS NULL OR CONVERT(DATETIME,A.REQ_DT,103) <= CONVERT(DATETIME,@p_TO_DATE,103))
AND(@p_YEAR IS NULL OR @p_YEAR=0 OR YEAR(A.REQ_DT)=@p_YEAR)
AND (( @p_AUTH_STATUS='A' AND PLRP.STATUS='P') OR( @p_AUTH_STATUS='U' AND (PLRP.STATUS='C')) OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '')
AND (NOT EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS_CHILD WHERE PL_REQUEST_PROCESS_CHILD.PROCESS_ID=PLRP.ID AND PL_REQUEST_PROCESS_CHILD.STATUS_JOB='C' AND PL_REQUEST_PROCESS_CHILD.TYPE_JOB='TP'))
AND (
((RPC.REQ_ID IS NOT NULL OR RPC.REQ_ID <> '') AND @p_IS_TRANSFER = 'Y')
OR ((RPC.REQ_ID IS NULL OR RPC.REQ_ID = '') AND @p_IS_TRANSFER = 'N')
OR @p_IS_TRANSFER = '' OR @p_IS_TRANSFER IS NULL
)
AND( NXL.NGUOIXULYTLNAME LIKE '%' + @p_NGUOIXULY + '%' OR @p_NGUOIXULY IS NULL OR @p_NGUOIXULY = ''
OR NXL.NGUOIXULY LIKE '%' + @p_NGUOIXULY + '%')
---- GIANT 26/10/2021
AND (A.REQ_ID IN (SELECT PL_REQUEST_DOC_DT.REQ_ID FROM PL_REQUEST_DOC_DT WHERE PL_REQUEST_DOC_DT.REQ_ID = A.REQ_ID))
---- GIANT
--AND (A.BRANCH_CREATE = @p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '')
--AND (A.DEP_CREATE = @p_DEP_ID OR @p_DEP_ID IS NULL OR @p_DEP_ID = '')
ORDER BY A.CREATE_DT DESC
-- PAGING END
END
ELSE IF(@p_TYPE='XLTT')
BEGIN
-- PAGING BEGIN
SELECT A.REQ_ID,A.REQ_CODE,A.REQ_NAME,A.REQ_DT,A.REQ_TYPE,A.REQ_CONTENT, A.REQ_REASON,A.BRANCH_ID,
A.TOTAL_AMT AS TOTAL_AMT,A.NOTES, A.RECORD_STATUS,A.MAKER_ID,A.CREATE_DT,A.AUTH_STATUS,A.CHECKER_ID,
UDV.TLFullName AS CHECKER_NAME_DV,
A.APPROVE_DT,
A.PROCESS_ID,
D.AUTH_STATUS_NAME AS AUTH_STATUS_NAME_DV,
CASE WHEN A.PROCESS_ID='APPROVE' THEN N'Đã duyệt'
ELSE N'Chờ duyệt' END AS AUTH_STATUS_NAME,
G.BRANCH_CODE,
CASE WHEN A.BRANCH_CREATE <> 'DV0001' THEN G.BRANCH_NAME ELSE G.BRANCH_NAME+' - ' + DEP.DEP_NAME END AS BRANCH_NAME,
UP.TLFullName AS CHECKER_NAME_PROCESS,
RP.APPROVE_DT AS APPROVE_DT_PROCESS,
UC.TLFullName AS MAKER_NAME,
RPN.PROCESS_ID AS PROCESS_ID_NEXT,
RPN.ROLE_USER,
RP.NOTES AS PROCESS_STATUS ,
RPN.NOTES AS PROCESS_STATUS_NEXT,
A.DVDM_APP_ID,
CD.DVDM_NAME AS DVDM_APP_NAME,
A.REQ_PARENT_ID,
PARENT.REQ_NAME AS REQ_PARENT_NAME,
PARENT.REQ_CODE AS REQ_PARENT_CODE,
PARENT.TOTAL_AMT AS REQ_PARENT_AMT,
A.BRANCH_FEE,
A.DEP_ID,
A.DEP_FEE,
DEP.DEP_NAME,
DEP.DEP_CODE,
BF.BRANCH_NAME AS BRANCH_FEE_NAME,
BF.BRANCH_CODE AS BRANCH_FEE_CODE,
DF.DEP_NAME AS DEP_FEE_NAME,
DF.DEP_CODE AS DEP_FEE_CODE,
'' AS BRANCH_DEP,
'' AS BRANCH_DEP_FEE,
RPC.TYPE_JOB AS TYPE_JOB,
RPC.TLNAME AS USER_JOB,
TU.TLFullName AS USER_JOB_NAME,
TFM.TLNANME AS TRANSFER_MAKER,
RPC.TRANFER_DT AS TRANFER_DT ,
RPC.MAKER_ID AS TRANSFER_MAKER_ID,
A.EFFEC_DT,A.IS_BACKDAY,
'' AS TYPE_JOB_XL,
'' AS USER_JOB_XL,
PLRP.ID AS REF_ID,
RPN.STATUS AS STATUS_NEXT,
PLRP.STATUS AS STATUS_CURR,
RPC.STATUS_JOB AS STATUS_JOB,
A.BRANCH_CREATE,
A.DEP_CREATE,
A.REQ_LINE,
A.TC_NOTES,
A.SIGN_USER, TL.TLFullName AS SIGN_USER_NAME,
A.KT_NOTES,
A.IS_CHECKALL,
A.BASED_CONTENT,
'' AS IS_TRANSFER,
--NGUOI XU LY
--dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'TTCT-DVKD',0) AS NGUOIXULY
NXL.NGUOIXULY AS NGUOIXULY,A.TK_TGD_NOTES, A.OTHER_NOTES,A.TK_HDQT_NOTES
-- SELECT END
FROM PL_REQUEST_DOC A
INNER JOIN dbo.PL_REQUEST_PROCESS PLRP ON PLRP.REQ_ID=A.REQ_ID AND PLRP.STATUS <> 'U' AND PLRP.IS_HAS_CHILD=1
LEFT JOIN dbo.PL_REQUEST_PROCESS RPN
ON RPN.ID IN (SELECT TOP 1 Temp.ID FROM dbo.PL_REQUEST_PROCESS Temp WHERE Temp.REQ_ID=A.REQ_ID AND (Temp.STATUS='C' OR Temp.STATUS='R') )
LEFT JOIN dbo.PL_REQUEST_PROCESS RP ON RP.ID=(SELECT TOP 1 ID FROM PL_REQUEST_PROCESS WHERE PL_REQUEST_PROCESS.REQ_ID=A.REQ_ID AND PL_REQUEST_PROCESS.PROCESS_ID=RPN.PARENT_PROCESS_ID ORDER BY APPROVE_DT DESC)
LEFT JOIN CM_AUTH_STATUS D ON D.AUTH_STATUS = A.AUTH_STATUS
LEFT JOIN CM_BRANCH G ON A.BRANCH_ID=G.BRANCH_ID
LEFT JOIN dbo.CM_DEPARTMENT DEP ON DEP.DEP_ID=A.DEP_ID
LEFT JOIN CM_BRANCH BF ON BF.BRANCH_ID=A.BRANCH_FEE
LEFT JOIN dbo.CM_DEPARTMENT DF ON DF.DEP_ID=A.DEP_FEE
LEFT JOIN dbo.TL_USER UC ON UC.TLNANME=A.MAKER_ID
LEFT JOIN dbo.CM_PROCESS_STATUS PS ON PS.PROCESS_ID = A.PROCESS_ID
LEFT JOIN dbo.CM_PROCESS_STATUS PSN ON PSN.PROCESS_ID = A.PROCESS_ID
LEFT JOIN dbo.CM_DVDM CD ON CD.DVDM_ID=A.DVDM_APP_ID
LEFT JOIN dbo.PL_REQUEST_PROCESS_CHILD RPC ON RPC.REQ_ID=A.REQ_ID AND RPC.PROCESS_ID=PLRP.ID AND (RPC.STATUS_JOB='C' OR RPC.STATUS_JOB='R')
LEFT JOIN dbo.TL_USER UDV ON UDV.TLNANME=A.CHECKER_ID
LEFT JOIN dbo.TL_USER UP ON UP.TLNANME=RP.CHECKER_ID
LEFT JOIN dbo.TL_USER TU ON TU.TLNANME=RPC.TLNAME
LEFT JOIN dbo.TL_USER TFM ON TFM.TLNANME=RPC.MAKER_ID
LEFT JOIN dbo.PL_REQUEST_DOC PARENT ON PARENT.REQ_ID=A.REQ_PARENT_ID
LEFT JOIN TL_USER TL ON A.SIGN_USER = TL.TLNANME
LEFT JOIN
(
SELECT Results.REQ_ID,STUFF((select ', ' + RE.TLFullName
FROM @lstREQUEST RE
WHERE RE.REQ_ID=Results.REQ_ID
FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULY,
STUFF((select ', ' + RE.TLNAME
FROM @lstREQUEST RE
WHERE RE.REQ_ID=Results.REQ_ID
FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULYTLNAME
FROM @lstREQUEST Results
GROUP BY REQ_ID
) NXL ON NXL.REQ_ID=A.REQ_ID
WHERE 1 = 1
AND (A.REQ_CODE LIKE '%' + @p_REQ_CODE + '%' OR @p_REQ_CODE IS NULL OR @p_REQ_CODE = '')
AND (A.REQ_ID LIKE '%' + @p_REQ_ID + '%' OR @p_REQ_ID IS NULL OR @p_REQ_ID = '')
AND (A.REQ_CONTENT LIKE '%' + @p_REQ_CONTENT + '%' OR @p_REQ_CONTENT IS NULL OR @p_REQ_CONTENT = '')
AND (A.REQ_REASON LIKE '%' + @p_REQ_REASON + '%' OR @p_REQ_REASON IS NULL OR @p_REQ_REASON = '')
AND (A.TOTAL_AMT=@p_TOTAL_AMT OR @p_TOTAL_AMT IS NULL OR @p_TOTAL_AMT =0)
AND (A.REQ_NAME LIKE '%' + @p_REQ_NAME + '%' OR @p_REQ_NAME IS NULL OR @p_REQ_NAME = '')
AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '')
AND (A.MAKER_ID LIKE '%' + @p_MAKER_ID + '%' OR @p_MAKER_ID IS NULL OR @p_MAKER_ID = '')
AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '')
AND (@p_CREATE_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_CREATE_DT,103)) = 0)
AND (@p_APPROVE_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_APPROVE_DT,103)) = 0)
AND (@p_REQ_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_REQ_DT,103)) = 0)
AND (A.REQ_TYPE = @p_REQ_TYPE OR @p_REQ_TYPE IS NULL OR @p_REQ_TYPE =-1)
--AND (@p_RECEIVE_BRANCH IS NULL OR A.PO_ID IN (SELECT PO_ID FROM TR_PO_DETAIL WHERE RECEIVE_BRANCH=@p_RECEIVE_BRANCH))
AND A.RECORD_STATUS = '1'
AND(
@p_REQ_TYPE = -1 OR @p_REQ_TYPE IS NULL
OR
(
@p_REQ_TYPE=1 AND EXISTS(SELECT D.REQDT_ID FROM dbo.PL_REQUEST_DOC_DT D WHERE D.REQDT_TYPE='O' AND D.REQ_ID=A.REQ_ID)
)
OR
(
@p_REQ_TYPE=0 AND NOT EXISTS(SELECT D.REQDT_ID FROM dbo.PL_REQUEST_DOC_DT D WHERE D.REQDT_TYPE='O' AND D.REQ_ID=A.REQ_ID)
)
)
AND(
EXISTS(SELECT AUTH.ROLE_ID FROM @AUTHOR_DVDM AUTH WHERE AUTH.ROLE_ID=PLRP.ROLE_USER AND (
(PLRP.PROCESS_ID='DVDC' AND PLRP.BRANCH_ID=AUTH.BRANCH_ID AND (PLRP.DEP_ID=AUTH.DEP_ID OR PLRP.DEP_ID IS NULL OR PLRP.DEP_ID=''))
OR PLRP.DVDM_ID=AUTH.DVDM_ID
OR ((PLRP.DVDM_ID ='' OR PLRP.DVDM_ID IS NULL) AND (PLRP.BRANCH_ID IS NULL OR PLRP.BRANCH_ID=''))
))
OR (EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS_CHILD WHERE TLNAME=@p_TLNAME_USER AND PL_REQUEST_PROCESS_CHILD.PROCESS_ID=PLRP.ID) ))
AND(@p_FR_DATE IS NULL OR CONVERT(DATETIME,A.REQ_DT,103) >= CONVERT(DATETIME,@p_FR_DATE,103))
AND(@p_TO_DATE IS NULL OR CONVERT(DATETIME,A.REQ_DT,103) <= CONVERT(DATETIME,@p_TO_DATE,103))
AND(@p_YEAR IS NULL OR @p_YEAR=0 OR YEAR(A.REQ_DT)=@p_YEAR)
AND (( @p_AUTH_STATUS='A' AND PLRP.STATUS='P') OR( @p_AUTH_STATUS='U' AND (PLRP.STATUS='C')) OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '')
AND( NXL.NGUOIXULYTLNAME LIKE '%' + @p_NGUOIXULY + '%' OR @p_NGUOIXULY IS NULL OR @p_NGUOIXULY = ''
OR NXL.NGUOIXULY LIKE '%' + @p_NGUOIXULY + '%')
--AND(
-- (dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'TTCT-DVKD',0) LIKE '%' + @p_NGUOIXULY + '%' OR @p_NGUOIXULY IS NULL OR @p_NGUOIXULY = '')
-- OR
-- (dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'TTCT-DVKD',1) LIKE '%' + @p_NGUOIXULY + '%' OR @p_NGUOIXULY IS NULL OR @p_NGUOIXULY = '')
--)
--
AND (A.BRANCH_ID = @p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '')
AND (A.DEP_ID = @p_DEP_ID OR @p_DEP_ID IS NULL OR @p_DEP_ID = '')
-- LUCTV 10 03 2021 BO SUNG DIEU KIENN NEU PHIEU CHUA DUOC DIEU PHOI THI SE KHONG TIM THAY O MAN HINH DVCM
AND((EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS_CHILD C WHERE A.REQ_ID=C.REQ_ID AND C.PROCESS_ID=PLRP.ID AND C.TLNAME =@p_TLNAME_USER AND C.STATUS_JOB IN ('C','P')))
OR (@p_NGUOIXULY IS NOT NULL AND @p_NGUOIXULY <> ''))
-- GIANT 26/10/2021
AND (A.REQ_ID IN (SELECT PL_REQUEST_DOC_DT.REQ_ID FROM PL_REQUEST_DOC_DT WHERE PL_REQUEST_DOC_DT.REQ_ID = A.REQ_ID))
ORDER BY A.CREATE_DT DESC
-- PAGING END
END
ELSE IF(@p_TYPE='DVKD_PARENT')
BEGIN
-- PAGING BEGIN
SELECT A.REQ_ID,A.REQ_CODE,A.REQ_NAME,A.REQ_DT,A.REQ_TYPE,A.REQ_CONTENT, A.REQ_REASON,A.BRANCH_ID,
A.TOTAL_AMT AS TOTAL_AMT,A.NOTES, A.RECORD_STATUS,A.MAKER_ID,A.CREATE_DT,A.AUTH_STATUS,A.CHECKER_ID,
UDV.TLFullName AS CHECKER_NAME_DV,
A.APPROVE_DT,
A.PROCESS_ID,
D.AUTH_STATUS_NAME AS AUTH_STATUS_NAME_DV,
CASE WHEN A.PROCESS_ID='APPROVE' THEN N'Đã duyệt'
WHEN A.PROCESS_ID<> 'APPROVE' AND A.AUTH_STATUS='A' THEN N'Chờ duyệt' ELSE D.AUTH_STATUS_NAME END AS AUTH_STATUS_NAME,
--CASE WHEN A.PROCESS_ID='APPROVE' THEN N'Đã duyệt'
--ELSE N'Chờ duyệt' END AS AUTH_STATUS_NAME,
G.BRANCH_CODE,
G.BRANCH_NAME,
UP.TLFullName AS CHECKER_NAME_PROCESS,
RP.APPROVE_DT AS APPROVE_DT_PROCESS,
UC.TLFullName AS MAKER_NAME,
RPN.PROCESS_ID AS PROCESS_ID_NEXT,
RP.ROLE_USER,
RP.NOTES AS PROCESS_STATUS ,
RPN.NOTES AS PROCESS_STATUS_NEXT,
A.DVDM_APP_ID,
CD.DVDM_NAME AS DVDM_APP_NAME,
A.REQ_PARENT_ID,
PARENT.REQ_NAME AS REQ_PARENT_NAME,
PARENT.REQ_CODE AS REQ_PARENT_CODE,
PARENT.TOTAL_AMT AS REQ_PARENT_AMT,
A.BRANCH_FEE,
A.DEP_ID,
A.DEP_FEE,
DEP.DEP_NAME,
DEP.DEP_CODE,
BF.BRANCH_NAME AS BRANCH_FEE_NAME,
BF.BRANCH_CODE AS BRANCH_FEE_CODE,
DF.DEP_NAME AS DEP_FEE_NAME,
DF.DEP_CODE AS DEP_FEE_CODE,
'' AS BRANCH_DEP,
'' AS BRANCH_DEP_FEE,
'' AS TYPE_JOB,
'' AS USER_JOB,
'' AS USER_JOB_NAME,
'' AS TRANSFER_MAKER,
A.CREATE_DT AS TRANFER_DT ,
'' AS TRANSFER_MAKER_ID,
A.EFFEC_DT,A.IS_BACKDAY,
'' AS TYPE_JOB_XL,
'' AS USER_JOB_XL,
--RP.ID AS REF_ID,
0 AS REF_ID,
RPN.STATUS AS STATUS_NEXT,
RP.STATUS AS STATUS_CURR,
'' AS STATUS_JOB,
A.BRANCH_CREATE,
A.DEP_CREATE,
A.REQ_LINE,
A.TC_NOTES, A.SIGN_USER, TL.TLFullName AS SIGN_USER_NAME,
A.KT_NOTES,
A.BASED_CONTENT,
A.IS_CHECKALL,
-- GIANT 23/12/2021
A.PL_BASED_ID, PL_B.REQ_CODE AS PL_BASED_CODE, PL_B.REQ_CONTENT AS PL_BASED_CONTENT,
'' AS IS_TRANSFER,
--NGUOI XU LY
--dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'TTCT-DVKD',0) AS NGUOIXULY
NXL.NGUOIXULY AS NGUOIXULY,A.TK_TGD_NOTES, A.OTHER_NOTES,A.TK_HDQT_NOTES,
(SELECT TOP 1 BB.YEAR FROM PL_REQUEST_DOC_DT AA LEFT JOIN PL_MASTER BB ON AA.PLAN_ID = BB.PLAN_ID WHERE AA.REQ_ID = A.REQ_ID) AS NAMNGANSACH
-- SELECT END
FROM PL_REQUEST_DOC A
LEFT JOIN CM_AUTH_STATUS D ON D.AUTH_STATUS = A.AUTH_STATUS
LEFT JOIN CM_BRANCH G ON A.BRANCH_ID=G.BRANCH_ID
LEFT JOIN dbo.CM_DEPARTMENT DEP ON DEP.DEP_ID=A.DEP_ID
LEFT JOIN CM_BRANCH BF ON BF.BRANCH_ID=A.BRANCH_FEE
LEFT JOIN dbo.CM_DEPARTMENT DF ON DF.DEP_ID=A.DEP_FEE
LEFT JOIN dbo.TL_USER UDV ON UDV.TLNANME=A.CHECKER_ID
LEFT JOIN dbo.PL_REQUEST_PROCESS RPN
ON RPN.ID IN (SELECT TOP 1 Temp.ID FROM dbo.PL_REQUEST_PROCESS Temp WHERE Temp.REQ_ID=A.REQ_ID AND (Temp.STATUS='C' OR Temp.STATUS='R') )
LEFT JOIN dbo.PL_REQUEST_PROCESS RP ON RP.ID IN(SELECT TOP 1 ID FROM dbo.PL_REQUEST_PROCESS WHERE PL_REQUEST_PROCESS.PROCESS_ID=RPN.PARENT_PROCESS_ID AND PL_REQUEST_PROCESS.REQ_ID=A.REQ_ID)
LEFT JOIN dbo.TL_USER UP ON UP.TLNANME=RP.CHECKER_ID
LEFT JOIN dbo.TL_USER UC ON UC.TLNANME=A.MAKER_ID
LEFT JOIN dbo.CM_DVDM CD ON CD.DVDM_ID=A.DVDM_APP_ID
LEFT JOIN dbo.PL_REQUEST_DOC PARENT ON PARENT.REQ_ID=A.REQ_PARENT_ID
-- GIANT 23/12/2021
LEFT JOIN dbo.PL_REQUEST_DOC PL_B ON PL_B.REQ_ID=A.PL_BASED_ID
LEFT JOIN TL_USER TL ON A.SIGN_USER = TL.TLNANME
LEFT JOIN
(
SELECT Results.REQ_ID,STUFF((select ', ' + RE.TLFullName
FROM @lstREQUEST RE
WHERE RE.REQ_ID=Results.REQ_ID
FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULY,
STUFF((select ', ' + RE.TLNAME
FROM @lstREQUEST RE
WHERE RE.REQ_ID=Results.REQ_ID
FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULYTLNAME
FROM @lstREQUEST Results
GROUP BY REQ_ID
) NXL ON NXL.REQ_ID=A.REQ_ID
WHERE 1 = 1
AND (A.REQ_CODE LIKE '%' + @p_REQ_CODE + '%' OR @p_REQ_CODE IS NULL OR @p_REQ_CODE = '')
AND ((A.BRANCH_CREATE = @p_BRANCH_LOGIN AND( A.DEP_CREATE=@DEP_ID OR @BRANCH_TYPE <>'HS')) OR A.IS_CHECKALL=1)
AND(@p_YEAR IS NULL OR @p_YEAR=0 OR YEAR(A.REQ_DT)=@p_YEAR)
AND (ISNULL(A.PROCESS_ID,'') ='APPROVE')
--AND (A.REQ_ID LIKE '%' + @p_REQ_ID + '%' OR @p_REQ_ID IS NULL OR @p_REQ_ID = '')
--AND (A.REQ_CONTENT LIKE '%' + @p_REQ_CONTENT + '%' OR @p_REQ_CONTENT IS NULL OR @p_REQ_CONTENT = '')
--AND (A.REQ_REASON LIKE '%' + @p_REQ_REASON + '%' OR @p_REQ_REASON IS NULL OR @p_REQ_REASON = '')
--AND (A.TOTAL_AMT=@p_TOTAL_AMT OR @p_TOTAL_AMT IS NULL OR @p_TOTAL_AMT =0)
--AND (A.REQ_NAME LIKE '%' + @p_REQ_NAME + '%' OR @p_REQ_NAME IS NULL OR @p_REQ_NAME = '')
--AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '')
--AND (A.MAKER_ID LIKE '%' + @p_MAKER_ID + '%' OR @p_MAKER_ID IS NULL OR @p_MAKER_ID = '')
--AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '')
--AND (@p_CREATE_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_CREATE_DT,103)) = 0)
--AND (@p_APPROVE_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_APPROVE_DT,103)) = 0)
--AND (@p_REQ_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_REQ_DT,103)) = 0)
--AND (A.REQ_TYPE = @p_REQ_TYPE OR @p_REQ_TYPE IS NULL OR @p_REQ_TYPE =-1)
--AND A.RECORD_STATUS = '1'
--AND(
-- @p_REQ_TYPE = -1 OR @p_REQ_TYPE IS NULL
-- OR
-- (
-- @p_REQ_TYPE=1 AND EXISTS(SELECT D.REQDT_ID FROM dbo.PL_REQUEST_DOC_DT D WHERE D.REQDT_TYPE='O' AND D.REQ_ID=A.REQ_ID)
-- )
-- OR
-- (
-- @p_REQ_TYPE=0 AND NOT EXISTS(SELECT D.REQDT_ID FROM dbo.PL_REQUEST_DOC_DT D WHERE D.REQDT_TYPE='O' AND D.REQ_ID=A.REQ_ID)
-- )
-- )
--AND ( (A.BRANCH_CREATE = @p_BRANCH_LOGIN AND( A.DEP_CREATE=@DEP_ID OR @BRANCH_TYPE <>'HS')) OR A.IS_CHECKALL=1)
--AND A.PROCESS_ID='APPROVE'
--AND(@p_FR_DATE IS NULL OR CONVERT(DATETIME,A.REQ_DT,103) >= CONVERT(DATETIME,@p_FR_DATE,103))
--AND(@p_TO_DATE IS NULL OR CONVERT(DATETIME,A.REQ_DT,103) <= CONVERT(DATETIME,@p_TO_DATE,103))
--AND(@p_YEAR IS NULL OR @p_YEAR=0 OR YEAR(A.REQ_DT)=@p_YEAR)
--AND(A.REQ_PARENT_ID IS NULL OR A.REQ_PARENT_ID='')
--AND( NXL.NGUOIXULYTLNAME LIKE '%' + @p_NGUOIXULY + '%' OR @p_NGUOIXULY IS NULL OR @p_NGUOIXULY = ''
-- OR NXL.NGUOIXULY LIKE '%' + @p_NGUOIXULY + '%')
----AND(
---- (dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'TTCT-DVKD',0) LIKE '%' + @p_NGUOIXULY + '%' OR @p_NGUOIXULY IS NULL OR @p_NGUOIXULY = '')
---- OR
---- (dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'TTCT-DVKD',1) LIKE '%' + @p_NGUOIXULY + '%' OR @p_NGUOIXULY IS NULL OR @p_NGUOIXULY = '')
----)
--AND (A.BRANCH_ID = @p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '')
--AND (A.DEP_ID = @p_DEP_ID OR @p_DEP_ID IS NULL OR @p_DEP_ID = '')
-- GIANT 26/10/2021
AND (A.REQ_ID IN (SELECT PL_REQUEST_DOC_DT.REQ_ID FROM PL_REQUEST_DOC_DT WHERE PL_REQUEST_DOC_DT.REQ_ID = A.REQ_ID))
ORDER BY A.CREATE_DT DESC
-- PAGING END
END
ELSE IF(@p_TYPE='DVKD_ISALL')
BEGIN
-- PAGING BEGIN
SELECT A.REQ_ID,A.REQ_CODE,A.REQ_NAME,A.REQ_DT,A.REQ_TYPE,A.REQ_CONTENT, A.REQ_REASON,A.BRANCH_ID,
A.TOTAL_AMT AS TOTAL_AMT,A.NOTES, A.RECORD_STATUS,A.MAKER_ID,A.CREATE_DT,A.AUTH_STATUS,A.CHECKER_ID,
UDV.TLFullName AS CHECKER_NAME_DV,
A.APPROVE_DT,
A.PROCESS_ID,
D.AUTH_STATUS_NAME AS AUTH_STATUS_NAME_DV,
CASE WHEN A.PROCESS_ID='APPROVE' THEN N'Đã duyệt'
ELSE N'Chờ duyệt' END AS AUTH_STATUS_NAME,
G.BRANCH_CODE,
G.BRANCH_NAME,
UP.TLFullName AS CHECKER_NAME_PROCESS,
RP.APPROVE_DT AS APPROVE_DT_PROCESS,
UC.TLFullName AS MAKER_NAME,
RPN.PROCESS_ID AS PROCESS_ID_NEXT,
RP.ROLE_USER,
RP.NOTES AS PROCESS_STATUS ,
RPN.NOTES AS PROCESS_STATUS_NEXT,
A.DVDM_APP_ID,
CD.DVDM_NAME AS DVDM_APP_NAME,
A.REQ_PARENT_ID,
PARENT.REQ_NAME AS REQ_PARENT_NAME,
PARENT.REQ_CODE AS REQ_PARENT_CODE,
PARENT.TOTAL_AMT AS REQ_PARENT_AMT,
A.BRANCH_FEE,
A.DEP_ID,
A.DEP_FEE,
DEP.DEP_NAME,
DEP.DEP_CODE,
BF.BRANCH_NAME AS BRANCH_FEE_NAME,
BF.BRANCH_CODE AS BRANCH_FEE_CODE,
DF.DEP_NAME AS DEP_FEE_NAME,
DF.DEP_CODE AS DEP_FEE_CODE,
'' AS BRANCH_DEP,
'' AS BRANCH_DEP_FEE,
'' AS TYPE_JOB,
'' AS USER_JOB,
'' AS USER_JOB_NAME,
'' AS TRANSFER_MAKER,
A.CREATE_DT AS TRANFER_DT ,
'' AS TRANSFER_MAKER_ID,
A.EFFEC_DT,A.IS_BACKDAY,
'' AS TYPE_JOB_XL,
'' AS USER_JOB_XL,
RP.ID AS REF_ID,
RPN.STATUS AS STATUS_NEXT,
RP.STATUS AS STATUS_CURR,
'' AS STATUS_JOB,
A.BRANCH_CREATE,
A.DEP_CREATE,
A.REQ_LINE,
A.TC_NOTES, A.SIGN_USER, TL.TLFullName AS SIGN_USER_NAME,
A.KT_NOTES,
A.IS_CHECKALL,
A.BASED_CONTENT,
'' AS IS_TRANSFER,
--NGUOI XU LY
--dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'TTCT-DVKD',0) AS NGUOIXULY
NXL.NGUOIXULY AS NGUOIXULY,A.TK_TGD_NOTES, A.OTHER_NOTES,A.TK_HDQT_NOTES
-- SELECT END
FROM PL_REQUEST_DOC A
LEFT JOIN CM_AUTH_STATUS D ON D.AUTH_STATUS = A.AUTH_STATUS
LEFT JOIN CM_BRANCH G ON A.BRANCH_ID=G.BRANCH_ID
LEFT JOIN dbo.CM_DEPARTMENT DEP ON DEP.DEP_ID=A.DEP_ID
LEFT JOIN CM_BRANCH BF ON BF.BRANCH_ID=A.BRANCH_FEE
LEFT JOIN dbo.CM_DEPARTMENT DF ON DF.DEP_ID=A.DEP_FEE
LEFT JOIN dbo.TL_USER UDV ON UDV.TLNANME=A.CHECKER_ID
LEFT JOIN dbo.PL_REQUEST_PROCESS RPN
ON RPN.ID IN (SELECT TOP 1 Temp.ID FROM dbo.PL_REQUEST_PROCESS Temp WHERE Temp.REQ_ID=A.REQ_ID AND (Temp.STATUS='C' OR Temp.STATUS='R') )
LEFT JOIN dbo.PL_REQUEST_PROCESS RP ON RP.ID IN(SELECT TOP 1 ID FROM dbo.PL_REQUEST_PROCESS WHERE PL_REQUEST_PROCESS.PROCESS_ID=RPN.PARENT_PROCESS_ID AND PL_REQUEST_PROCESS.REQ_ID=A.REQ_ID)
LEFT JOIN dbo.TL_USER UP ON UP.TLNANME=RP.CHECKER_ID
LEFT JOIN dbo.TL_USER UC ON UC.TLNANME=A.MAKER_ID
LEFT JOIN dbo.CM_DVDM CD ON CD.DVDM_ID=A.DVDM_APP_ID
LEFT JOIN dbo.PL_REQUEST_DOC PARENT ON PARENT.REQ_ID=A.REQ_PARENT_ID
LEFT JOIN TL_USER TL ON A.SIGN_USER = TL.TLNANME
LEFT JOIN
(
SELECT Results.REQ_ID,STUFF((select ', ' + RE.TLFullName
FROM @lstREQUEST RE
WHERE RE.REQ_ID=Results.REQ_ID
FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULY,
STUFF((select ', ' + RE.TLNAME
FROM @lstREQUEST RE
WHERE RE.REQ_ID=Results.REQ_ID
FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULYTLNAME
FROM @lstREQUEST Results
GROUP BY REQ_ID
) NXL ON NXL.REQ_ID=A.REQ_ID
WHERE 1 = 1
AND (A.REQ_CODE LIKE '%' + @p_REQ_CODE + '%' OR @p_REQ_CODE IS NULL OR @p_REQ_CODE = '')
AND (A.REQ_ID LIKE '%' + @p_REQ_ID + '%' OR @p_REQ_ID IS NULL OR @p_REQ_ID = '')
AND (A.REQ_CONTENT LIKE '%' + @p_REQ_CONTENT + '%' OR @p_REQ_CONTENT IS NULL OR @p_REQ_CONTENT = '')
AND (A.REQ_REASON LIKE '%' + @p_REQ_REASON + '%' OR @p_REQ_REASON IS NULL OR @p_REQ_REASON = '')
AND (A.TOTAL_AMT=@p_TOTAL_AMT OR @p_TOTAL_AMT IS NULL OR @p_TOTAL_AMT =0)
AND (A.REQ_NAME LIKE '%' + @p_REQ_NAME + '%' OR @p_REQ_NAME IS NULL OR @p_REQ_NAME = '')
AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '')
AND (A.MAKER_ID LIKE '%' + @p_MAKER_ID + '%' OR @p_MAKER_ID IS NULL OR @p_MAKER_ID = '')
AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '')
AND (@p_CREATE_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_CREATE_DT,103)) = 0)
AND (@p_APPROVE_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_APPROVE_DT,103)) = 0)
AND (@p_REQ_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_REQ_DT,103)) = 0)
AND (A.REQ_TYPE = @p_REQ_TYPE OR @p_REQ_TYPE IS NULL OR @p_REQ_TYPE =-1)
AND A.RECORD_STATUS = '1'
AND(
@p_REQ_TYPE = -1 OR @p_REQ_TYPE IS NULL
OR
(
@p_REQ_TYPE=1 AND EXISTS(SELECT D.REQDT_ID FROM dbo.PL_REQUEST_DOC_DT D WHERE D.REQDT_TYPE='O' AND D.REQ_ID=A.REQ_ID)
)
OR
(
@p_REQ_TYPE=0 AND NOT EXISTS(SELECT D.REQDT_ID FROM dbo.PL_REQUEST_DOC_DT D WHERE D.REQDT_TYPE='O' AND D.REQ_ID=A.REQ_ID)
)
)
AND A.IS_CHECKALL=1
AND A.PROCESS_ID='APPROVE'
AND(@p_FR_DATE IS NULL OR CONVERT(DATETIME,A.REQ_DT,103) >= CONVERT(DATETIME,@p_FR_DATE,103))
AND(@p_TO_DATE IS NULL OR CONVERT(DATETIME,A.REQ_DT,103) <= CONVERT(DATETIME,@p_TO_DATE,103))
AND(@p_YEAR IS NULL OR @p_YEAR=0 OR YEAR(A.REQ_DT)=@p_YEAR)
AND(A.REQ_PARENT_ID IS NULL OR A.REQ_PARENT_ID='')
AND( NXL.NGUOIXULYTLNAME LIKE '%' + @p_NGUOIXULY + '%' OR @p_NGUOIXULY IS NULL OR @p_NGUOIXULY = ''
OR NXL.NGUOIXULY LIKE '%' + @p_NGUOIXULY + '%')
--AND(
-- (dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'TTCT-DVKD',0) LIKE '%' + @p_NGUOIXULY + '%' OR @p_NGUOIXULY IS NULL OR @p_NGUOIXULY = '')
-- OR
-- (dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'TTCT-DVKD',1) LIKE '%' + @p_NGUOIXULY + '%' OR @p_NGUOIXULY IS NULL OR @p_NGUOIXULY = '')
--)
--AND (A.BRANCH_ID = @p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '')
--AND (A.DEP_ID = @p_DEP_ID OR @p_DEP_ID IS NULL OR @p_DEP_ID = '')
-- GIANT 26/10/2021
AND (A.REQ_ID IN (SELECT PL_REQUEST_DOC_DT.REQ_ID FROM PL_REQUEST_DOC_DT WHERE PL_REQUEST_DOC_DT.REQ_ID = A.REQ_ID))
ORDER BY A.CREATE_DT DESC
-- PAGING END
END
ELSE IF(@p_TYPE='TTCT_DVCM')
BEGIN
-- PAGING BEGIN
SELECT A.REQ_ID,A.REQ_CODE,A.REQ_NAME,A.REQ_DT,A.REQ_TYPE,A.REQ_CONTENT, A.REQ_REASON,A.BRANCH_ID,
A.TOTAL_AMT AS TOTAL_AMT,A.NOTES, A.RECORD_STATUS,A.MAKER_ID,A.CREATE_DT,A.AUTH_STATUS,A.CHECKER_ID,
UDV.TLFullName AS CHECKER_NAME_DV,
A.APPROVE_DT,
A.PROCESS_ID,
D.AUTH_STATUS_NAME AS AUTH_STATUS_NAME_DV,
CASE WHEN A.PROCESS_ID='APPROVE' THEN N'Đã duyệt'
ELSE N'Chờ duyệt' END AS AUTH_STATUS_NAME,
G.BRANCH_CODE,
G.BRANCH_NAME,
UP.TLFullName AS CHECKER_NAME_PROCESS,
RP.APPROVE_DT AS APPROVE_DT_PROCESS,
UC.TLFullName AS MAKER_NAME,
RPN.PROCESS_ID AS PROCESS_ID_NEXT,
RP.ROLE_USER,
RP.NOTES AS PROCESS_STATUS ,
RPN.NOTES AS PROCESS_STATUS_NEXT,
A.DVDM_APP_ID,
CD.DVDM_NAME AS DVDM_APP_NAME,
A.REQ_PARENT_ID,
PARENT.REQ_NAME AS REQ_PARENT_NAME,
PARENT.REQ_CODE AS REQ_PARENT_CODE,
PARENT.TOTAL_AMT AS REQ_PARENT_AMT,
A.BRANCH_FEE,
A.DEP_ID,
A.DEP_FEE,
DEP.DEP_NAME,
DEP.DEP_CODE,
BF.BRANCH_NAME AS BRANCH_FEE_NAME,
BF.BRANCH_CODE AS BRANCH_FEE_CODE,
DF.DEP_NAME AS DEP_FEE_NAME,
DF.DEP_CODE AS DEP_FEE_CODE,
'' AS BRANCH_DEP,
'' AS BRANCH_DEP_FEE,
'' AS TYPE_JOB,
'' AS USER_JOB,
'' AS USER_JOB_NAME,
'' AS TRANSFER_MAKER,
A.CREATE_DT AS TRANFER_DT ,
'' AS TRANSFER_MAKER_ID,
A.EFFEC_DT,A.IS_BACKDAY,
'' AS TYPE_JOB_XL,
'' AS USER_JOB_XL,
RP.ID AS REF_ID,
RPN.STATUS AS STATUS_NEXT,
RP.STATUS AS STATUS_CURR,
'' AS STATUS_JOB,
A.BRANCH_CREATE,
A.DEP_CREATE,
A.REQ_LINE,
A.TC_NOTES, A.SIGN_USER, TL.TLFullName AS SIGN_USER_NAME,
A.KT_NOTES,
A.IS_CHECKALL,
A.BASED_CONTENT,
'' AS IS_TRANSFER,
--NGUOI XU LY
--dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'TTCT-DVKD',0) AS NGUOIXULY
NXL.NGUOIXULY AS NGUOIXULY,A.TK_TGD_NOTES, A.OTHER_NOTES,A.TK_HDQT_NOTES
-- SELECT END
FROM PL_REQUEST_DOC A
LEFT JOIN CM_AUTH_STATUS D ON D.AUTH_STATUS = A.AUTH_STATUS
LEFT JOIN CM_BRANCH G ON A.BRANCH_ID=G.BRANCH_ID
LEFT JOIN dbo.CM_DEPARTMENT DEP ON DEP.DEP_ID=A.DEP_ID
LEFT JOIN CM_BRANCH BF ON BF.BRANCH_ID=A.BRANCH_FEE
LEFT JOIN dbo.CM_DEPARTMENT DF ON DF.DEP_ID=A.DEP_FEE
LEFT JOIN dbo.TL_USER UDV ON UDV.TLNANME=A.CHECKER_ID
LEFT JOIN dbo.PL_REQUEST_PROCESS RPN
ON RPN.ID IN (SELECT TOP 1 Temp.ID FROM dbo.PL_REQUEST_PROCESS Temp WHERE Temp.REQ_ID=A.REQ_ID AND (Temp.STATUS='C' OR Temp.STATUS='R') )
LEFT JOIN dbo.PL_REQUEST_PROCESS RP ON RP.ID IN(SELECT TOP 1 ID FROM dbo.PL_REQUEST_PROCESS WHERE PL_REQUEST_PROCESS.PROCESS_ID=RPN.PARENT_PROCESS_ID AND PL_REQUEST_PROCESS.REQ_ID=A.REQ_ID)
LEFT JOIN dbo.TL_USER UP ON UP.TLNANME=RP.CHECKER_ID
LEFT JOIN dbo.TL_USER UC ON UC.TLNANME=A.MAKER_ID
LEFT JOIN dbo.CM_DVDM CD ON CD.DVDM_ID=A.DVDM_APP_ID
LEFT JOIN dbo.PL_REQUEST_DOC PARENT ON PARENT.REQ_ID=A.REQ_PARENT_ID
LEFT JOIN TL_USER TL ON A.SIGN_USER = TL.TLNANME
LEFT JOIN
(
SELECT Results.REQ_ID,STUFF((select ', ' + RE.TLFullName
FROM @lstREQUEST RE
WHERE RE.REQ_ID=Results.REQ_ID
FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULY,
STUFF((select ', ' + RE.TLNAME
FROM @lstREQUEST RE
WHERE RE.REQ_ID=Results.REQ_ID
FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULYTLNAME
FROM @lstREQUEST Results
GROUP BY REQ_ID
) NXL ON NXL.REQ_ID=A.REQ_ID
WHERE 1 = 1
AND (A.REQ_CODE LIKE '%' + @p_REQ_CODE + '%' OR @p_REQ_CODE IS NULL OR @p_REQ_CODE = '')
AND (A.REQ_ID LIKE '%' + @p_REQ_ID + '%' OR @p_REQ_ID IS NULL OR @p_REQ_ID = '')
AND (A.REQ_CONTENT LIKE '%' + @p_REQ_CONTENT + '%' OR @p_REQ_CONTENT IS NULL OR @p_REQ_CONTENT = '')
AND (A.REQ_REASON LIKE '%' + @p_REQ_REASON + '%' OR @p_REQ_REASON IS NULL OR @p_REQ_REASON = '')
AND (A.TOTAL_AMT=@p_TOTAL_AMT OR @p_TOTAL_AMT IS NULL OR @p_TOTAL_AMT =0)
AND (A.REQ_NAME LIKE '%' + @p_REQ_NAME + '%' OR @p_REQ_NAME IS NULL OR @p_REQ_NAME = '')
AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '')
AND (A.MAKER_ID LIKE '%' + @p_MAKER_ID + '%' OR @p_MAKER_ID IS NULL OR @p_MAKER_ID = '')
AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '')
AND (@p_CREATE_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_CREATE_DT,103)) = 0)
AND (@p_APPROVE_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_APPROVE_DT,103)) = 0)
AND (@p_REQ_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_REQ_DT,103)) = 0)
AND (A.REQ_TYPE = @p_REQ_TYPE OR @p_REQ_TYPE IS NULL OR @p_REQ_TYPE =-1)
AND A.RECORD_STATUS = '1'
AND(
@p_REQ_TYPE = -1 OR @p_REQ_TYPE IS NULL
OR
(
@p_REQ_TYPE=1 AND EXISTS(SELECT D.REQDT_ID FROM dbo.PL_REQUEST_DOC_DT D WHERE D.REQDT_TYPE='O' AND D.REQ_ID=A.REQ_ID)
)
OR
(
@p_REQ_TYPE=0 AND NOT EXISTS(SELECT D.REQDT_ID FROM dbo.PL_REQUEST_DOC_DT D WHERE D.REQDT_TYPE='O' AND D.REQ_ID=A.REQ_ID)
)
)
AND (
EXISTS (SELECT * FROM dbo.PL_REQUEST_COSTCENTER PC WHERE PC.REQ_ID=A.REQ_ID AND EXISTS(SELECT AUTH.ROLE_ID FROM @AUTHOR_DVDM AUTH WHERE AUTH.DVDM_ID=PC.COST_ID) )
)
AND A.PROCESS_ID='APPROVE'
AND(@p_FR_DATE IS NULL OR CONVERT(DATETIME,A.REQ_DT,103) >= CONVERT(DATETIME,@p_FR_DATE,103))
AND(@p_TO_DATE IS NULL OR CONVERT(DATETIME,A.REQ_DT,103) <= CONVERT(DATETIME,@p_TO_DATE,103))
AND(@p_YEAR IS NULL OR @p_YEAR=0 OR YEAR(A.REQ_DT)=@p_YEAR)
AND(A.REQ_PARENT_ID IS NULL OR A.REQ_PARENT_ID='')
AND( NXL.NGUOIXULYTLNAME LIKE '%' + @p_NGUOIXULY + '%' OR @p_NGUOIXULY IS NULL OR @p_NGUOIXULY = ''
OR NXL.NGUOIXULY LIKE '%' + @p_NGUOIXULY + '%')
--AND(
-- (dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'TTCT-DVKD',0) LIKE '%' + @p_NGUOIXULY + '%' OR @p_NGUOIXULY IS NULL OR @p_NGUOIXULY = '')
-- OR
-- (dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'TTCT-DVKD',1) LIKE '%' + @p_NGUOIXULY + '%' OR @p_NGUOIXULY IS NULL OR @p_NGUOIXULY = '')
--)
--AND (A.BRANCH_ID = @p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '')
--AND (A.DEP_ID = @p_DEP_ID OR @p_DEP_ID IS NULL OR @p_DEP_ID = '')
-- GIANT 26/10/2021
AND (A.REQ_ID IN (SELECT PL_REQUEST_DOC_DT.REQ_ID FROM PL_REQUEST_DOC_DT WHERE PL_REQUEST_DOC_DT.REQ_ID = A.REQ_ID))
ORDER BY A.CREATE_DT DESC
-- PAGING END
END
ELSE IF(@p_TYPE='REQ_PARENT')
BEGIN
-- PAGING BEGIN
SELECT A.REQ_ID,A.REQ_CODE,A.REQ_NAME,A.REQ_DT,A.REQ_TYPE,A.REQ_CONTENT, A.REQ_REASON,A.BRANCH_ID,
A.TOTAL_AMT AS TOTAL_AMT,A.NOTES, A.RECORD_STATUS,A.MAKER_ID,A.CREATE_DT,A.AUTH_STATUS,A.CHECKER_ID,
UDV.TLFullName AS CHECKER_NAME_DV,
A.APPROVE_DT,
A.PROCESS_ID,
D.AUTH_STATUS_NAME AS AUTH_STATUS_NAME_DV,
CASE WHEN A.PROCESS_ID='APPROVE' THEN N'Đã duyệt'
ELSE N'Chờ duyệt' END AS AUTH_STATUS_NAME,
G.BRANCH_CODE,
G.BRANCH_NAME,
UP.TLFullName AS CHECKER_NAME_PROCESS,
RP.APPROVE_DT AS APPROVE_DT_PROCESS,
UC.TLFullName AS MAKER_NAME,
RPN.PROCESS_ID AS PROCESS_ID_NEXT,
RP.ROLE_USER,
RP.NOTES AS PROCESS_STATUS ,
RPN.NOTES AS PROCESS_STATUS_NEXT,
A.DVDM_APP_ID,
CD.DVDM_NAME AS DVDM_APP_NAME,
A.REQ_PARENT_ID,
PARENT.REQ_NAME AS REQ_PARENT_NAME,
PARENT.REQ_CODE AS REQ_PARENT_CODE,
PARENT.TOTAL_AMT AS REQ_PARENT_AMT,
A.BRANCH_FEE,
A.DEP_ID,
A.DEP_FEE,
DEP.DEP_NAME,
DEP.DEP_CODE,
BF.BRANCH_NAME AS BRANCH_FEE_NAME,
BF.BRANCH_CODE AS BRANCH_FEE_CODE,
DF.DEP_NAME AS DEP_FEE_NAME,
DF.DEP_CODE AS DEP_FEE_CODE,
'' AS BRANCH_DEP,
'' AS BRANCH_DEP_FEE,
'' AS TYPE_JOB,
'' AS USER_JOB,
'' AS USER_JOB_NAME,
'' AS TRANSFER_MAKER,
A.CREATE_DT AS TRANFER_DT ,
'' AS TRANSFER_MAKER_ID,
A.EFFEC_DT,A.IS_BACKDAY,
'' AS TYPE_JOB_XL,
'' AS USER_JOB_XL,
RP.ID AS REF_ID,
RPN.STATUS AS STATUS_NEXT,
RP.STATUS AS STATUS_CURR,
'' AS STATUS_JOB,
A.BRANCH_CREATE,
A.DEP_CREATE,
A.REQ_LINE,
A.TC_NOTES, A.SIGN_USER, TL.TLFullName AS SIGN_USER_NAME,
A.KT_NOTES,
A.IS_CHECKALL,
A.BASED_CONTENT,
'' AS IS_TRANSFER,
--NGUOI XU LY
--dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'TTCT-DVKD',0) AS NGUOIXULY
NXL.NGUOIXULY AS NGUOIXULY
,A.TK_TGD_NOTES, A.OTHER_NOTES,A.TK_HDQT_NOTES
-- SELECT END
FROM PL_REQUEST_DOC A
LEFT JOIN CM_AUTH_STATUS D ON D.AUTH_STATUS = A.AUTH_STATUS
LEFT JOIN CM_BRANCH G ON A.BRANCH_ID=G.BRANCH_ID
LEFT JOIN dbo.CM_DEPARTMENT DEP ON DEP.DEP_ID=A.DEP_ID
LEFT JOIN CM_BRANCH BF ON BF.BRANCH_ID=A.BRANCH_FEE
LEFT JOIN dbo.CM_DEPARTMENT DF ON DF.DEP_ID=A.DEP_FEE
LEFT JOIN dbo.TL_USER UDV ON UDV.TLNANME=A.CHECKER_ID
LEFT JOIN dbo.PL_REQUEST_PROCESS RPN
ON RPN.ID IN (SELECT TOP 1 Temp.ID FROM dbo.PL_REQUEST_PROCESS Temp WHERE Temp.REQ_ID=A.REQ_ID AND (Temp.STATUS='C' OR Temp.STATUS='R') )
LEFT JOIN dbo.PL_REQUEST_PROCESS RP ON RP.ID IN(SELECT TOP 1 ID FROM dbo.PL_REQUEST_PROCESS WHERE PL_REQUEST_PROCESS.PROCESS_ID=RPN.PARENT_PROCESS_ID AND PL_REQUEST_PROCESS.REQ_ID=A.REQ_ID)
LEFT JOIN dbo.TL_USER UP ON UP.TLNANME=RP.CHECKER_ID
LEFT JOIN dbo.TL_USER UC ON UC.TLNANME=A.MAKER_ID
LEFT JOIN dbo.CM_DVDM CD ON CD.DVDM_ID=A.DVDM_APP_ID
LEFT JOIN dbo.PL_REQUEST_DOC PARENT ON PARENT.REQ_ID=A.REQ_PARENT_ID
LEFT JOIN TL_USER TL ON A.SIGN_USER = TL.TLNANME
LEFT JOIN
(
SELECT Results.REQ_ID,STUFF((select ', ' + RE.TLFullName
FROM @lstREQUEST RE
WHERE RE.REQ_ID=Results.REQ_ID
FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULY,
STUFF((select ', ' + RE.TLNAME
FROM @lstREQUEST RE
WHERE RE.REQ_ID=Results.REQ_ID
FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULYTLNAME
FROM @lstREQUEST Results
GROUP BY REQ_ID
) NXL ON NXL.REQ_ID=A.REQ_ID
WHERE 1 = 1
AND A.REQ_PARENT_ID =@p_REQ_ID
ORDER BY A.CREATE_DT DESC
-- PAGING END
END
ELSE IF(@p_TYPE='LINK_TTCT')
BEGIN
-- PAGING BEGIN
-- đoạn dưới chưa làm
SELECT A.REQ_ID,A.REQ_CODE,A.REQ_NAME,A.REQ_DT,A.REQ_TYPE,A.REQ_CONTENT, A.REQ_REASON,A.BRANCH_ID,
A.TOTAL_AMT AS TOTAL_AMT,A.NOTES, A.RECORD_STATUS,A.MAKER_ID,A.CREATE_DT,A.AUTH_STATUS,A.CHECKER_ID,
UDV.TLFullName AS CHECKER_NAME_DV,
A.APPROVE_DT,
A.PROCESS_ID,
D.AUTH_STATUS_NAME AS AUTH_STATUS_NAME_DV,
CASE WHEN A.PROCESS_ID='APPROVE' THEN N'Đã duyệt'
ELSE N'Chờ duyệt' END AS AUTH_STATUS_NAME,
G.BRANCH_CODE,
G.BRANCH_NAME,
UP.TLFullName AS CHECKER_NAME_PROCESS,
RP.APPROVE_DT AS APPROVE_DT_PROCESS,
UC.TLFullName AS MAKER_NAME,
RPN.PROCESS_ID AS PROCESS_ID_NEXT,
RP.ROLE_USER,
RP.NOTES AS PROCESS_STATUS ,
RPN.NOTES AS PROCESS_STATUS_NEXT,
A.DVDM_APP_ID,
CD.DVDM_NAME AS DVDM_APP_NAME,
A.REQ_PARENT_ID,
PARENT.REQ_NAME AS REQ_PARENT_NAME,
PARENT.REQ_CODE AS REQ_PARENT_CODE,
PARENT.TOTAL_AMT AS REQ_PARENT_AMT,
A.BRANCH_FEE,
A.DEP_ID,
A.DEP_FEE,
DEP.DEP_NAME,
DEP.DEP_CODE,
BF.BRANCH_NAME AS BRANCH_FEE_NAME,
BF.BRANCH_CODE AS BRANCH_FEE_CODE,
DF.DEP_NAME AS DEP_FEE_NAME,
DF.DEP_CODE AS DEP_FEE_CODE,
'' AS BRANCH_DEP,
'' AS BRANCH_DEP_FEE,
'' AS TYPE_JOB,
'' AS USER_JOB,
'' AS USER_JOB_NAME,
'' AS TRANSFER_MAKER,
A.CREATE_DT AS TRANFER_DT ,
'' AS TRANSFER_MAKER_ID,
A.EFFEC_DT,A.IS_BACKDAY,
'' AS TYPE_JOB_XL,
'' AS USER_JOB_XL,
RP.ID AS REF_ID,
RPN.STATUS AS STATUS_NEXT,
RP.STATUS AS STATUS_CURR,
'' AS STATUS_JOB,
A.BRANCH_CREATE,
A.DEP_CREATE,
A.REQ_LINE,
A.TC_NOTES, A.SIGN_USER, TL.TLFullName AS SIGN_USER_NAME,
A.KT_NOTES,
A.IS_CHECKALL,
A.BASED_CONTENT,
'' AS IS_TRANSFER,
--NGUOI XU LY
--dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'TTCT-DVKD',0) AS NGUOIXULY
NXL.NGUOIXULY AS NGUOIXULY
,A.TK_TGD_NOTES, A.OTHER_NOTES,A.TK_HDQT_NOTES
-- SELECT END
FROM PL_REQUEST_DOC A
LEFT JOIN CM_AUTH_STATUS D ON D.AUTH_STATUS = A.AUTH_STATUS
LEFT JOIN CM_BRANCH G ON A.BRANCH_ID=G.BRANCH_ID
LEFT JOIN dbo.CM_DEPARTMENT DEP ON DEP.DEP_ID=A.DEP_ID
LEFT JOIN CM_BRANCH BF ON BF.BRANCH_ID=A.BRANCH_FEE
LEFT JOIN dbo.CM_DEPARTMENT DF ON DF.DEP_ID=A.DEP_FEE
LEFT JOIN dbo.TL_USER UDV ON UDV.TLNANME=A.CHECKER_ID
LEFT JOIN dbo.PL_REQUEST_PROCESS RPN
ON RPN.ID IN (SELECT TOP 1 Temp.ID FROM dbo.PL_REQUEST_PROCESS Temp WHERE Temp.REQ_ID=A.REQ_ID AND (Temp.STATUS='C' OR Temp.STATUS='R') )
LEFT JOIN dbo.PL_REQUEST_PROCESS RP ON RP.ID IN(SELECT TOP 1 ID FROM dbo.PL_REQUEST_PROCESS WHERE PL_REQUEST_PROCESS.PROCESS_ID=RPN.PARENT_PROCESS_ID AND PL_REQUEST_PROCESS.REQ_ID=A.REQ_ID)
LEFT JOIN dbo.TL_USER UP ON UP.TLNANME=RP.CHECKER_ID
LEFT JOIN dbo.TL_USER UC ON UC.TLNANME=A.MAKER_ID
LEFT JOIN dbo.CM_DVDM CD ON CD.DVDM_ID=A.DVDM_APP_ID
LEFT JOIN dbo.PL_REQUEST_DOC PARENT ON PARENT.REQ_ID=A.REQ_PARENT_ID
LEFT JOIN TL_USER TL ON A.SIGN_USER = TL.TLNANME
LEFT JOIN
(
SELECT Results.REQ_ID,STUFF((select ', ' + RE.TLFullName
FROM @lstREQUEST RE
WHERE RE.REQ_ID=Results.REQ_ID
FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULY,
STUFF((select ', ' + RE.TLNAME
FROM @lstREQUEST RE
WHERE RE.REQ_ID=Results.REQ_ID
FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOIXULYTLNAME
FROM @lstREQUEST Results
GROUP BY REQ_ID
) NXL ON NXL.REQ_ID=A.REQ_ID
WHERE 1 = 1
AND A.REQ_PARENT_ID =@p_REQ_ID
ORDER BY A.CREATE_DT DESC
-- PAGING END
END
END -- PAGING
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Creating [dbo].[CON_LAYOUT_BLUEPRINT_BYID]'
GO
CREATE PROC [dbo].[CON_LAYOUT_BLUEPRINT_BYID]
@p_CON_LAYOUT_BLUEPRINT_ID VARCHAR(15) = NULL
AS
SELECT * FROM CON_LAYOUT_BLUEPRINT WHERE CON_LAYOUT_BLUEPRINT_ID = @p_CON_LAYOUT_BLUEPRINT_ID
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Creating [dbo].[CON_LAYOUT_BLUEPRINT_APP]'
GO
CREATE PROC [dbo].[CON_LAYOUT_BLUEPRINT_APP]
@p_CON_LAYOUT_BLUEPRINT_ID VARCHAR(15) = NULL,
@p_AUTH_STATUS VARCHAR(1) = NULL,
@p_CHECKER_ID varchar(15) = NULL,
@p_APPROVE_DT varchar(20)
AS
BEGIN TRANSACTION
BEGIN
DECLARE @PROCESS_ID VARCHAR(15),@LAYOUT_TYPE VARCHAR(15)
SET @PROCESS_ID = (SELECT PROCESS_ID FROM CON_LAYOUT_BLUEPRINT WHERE CON_LAYOUT_BLUEPRINT_ID = @p_CON_LAYOUT_BLUEPRINT_ID)
SET @LAYOUT_TYPE = (SELECT LAYOUT_TYPE FROM CON_LAYOUT_BLUEPRINT WHERE CON_LAYOUT_BLUEPRINT_ID = @p_CON_LAYOUT_BLUEPRINT_ID)
IF (@PROCESS_ID = 'SIGN')
BEGIN
UPDATE PL_REQUEST_PROCESS SET [STATUS] = 'P', CHECKER_ID = @p_CHECKER_ID, APPROVE_DT = @p_APPROVE_DT WHERE REQ_ID = @p_CON_LAYOUT_BLUEPRINT_ID AND PROCESS_ID = @PROCESS_ID
UPDATE PL_REQUEST_PROCESS SET [STATUS] = 'C' WHERE REQ_ID = @p_CON_LAYOUT_BLUEPRINT_ID AND PROCESS_ID = 'APPNEW'
UPDATE CON_LAYOUT_BLUEPRINT SET PROCESS_ID = 'APPNEW' WHERE CON_LAYOUT_BLUEPRINT_ID = @p_CON_LAYOUT_BLUEPRINT_ID
END
ELSE IF (@PROCESS_ID = 'APPNEW')
BEGIN
UPDATE PL_REQUEST_PROCESS SET [STATUS] = 'P', CHECKER_ID = @p_CHECKER_ID, APPROVE_DT = @p_APPROVE_DT WHERE REQ_ID = @p_CON_LAYOUT_BLUEPRINT_ID AND PROCESS_ID = @PROCESS_ID
UPDATE PL_REQUEST_PROCESS SET [STATUS] = 'C' WHERE REQ_ID = @p_CON_LAYOUT_BLUEPRINT_ID AND PROCESS_ID = 'GDK_HT'
UPDATE CON_LAYOUT_BLUEPRINT SET PROCESS_ID = 'GDK_HT' WHERE CON_LAYOUT_BLUEPRINT_ID = @p_CON_LAYOUT_BLUEPRINT_ID
END
ELSE IF (@PROCESS_ID = 'GDK_HT')
BEGIN
UPDATE PL_REQUEST_PROCESS SET [STATUS] = 'P', CHECKER_ID = @p_CHECKER_ID, APPROVE_DT = @p_APPROVE_DT WHERE REQ_ID = @p_CON_LAYOUT_BLUEPRINT_ID AND PROCESS_ID = @PROCESS_ID
UPDATE PL_REQUEST_PROCESS SET [STATUS] = 'C' WHERE REQ_ID = @p_CON_LAYOUT_BLUEPRINT_ID AND PROCESS_ID = 'PTGD_TC'
UPDATE CON_LAYOUT_BLUEPRINT SET PROCESS_ID = 'PTGD_TC' WHERE CON_LAYOUT_BLUEPRINT_ID = @p_CON_LAYOUT_BLUEPRINT_ID
END
ELSE IF (@PROCESS_ID = 'PTGD_TC')
BEGIN
UPDATE PL_REQUEST_PROCESS SET [STATUS] = 'P', CHECKER_ID = @p_CHECKER_ID, APPROVE_DT = @p_APPROVE_DT WHERE REQ_ID = @p_CON_LAYOUT_BLUEPRINT_ID AND PROCESS_ID = @PROCESS_ID
UPDATE PL_REQUEST_PROCESS SET [STATUS] = 'C' WHERE REQ_ID = @p_CON_LAYOUT_BLUEPRINT_ID AND PROCESS_ID = 'PTGD_VH'
UPDATE CON_LAYOUT_BLUEPRINT SET PROCESS_ID = 'PTGD_VH' WHERE CON_LAYOUT_BLUEPRINT_ID = @p_CON_LAYOUT_BLUEPRINT_ID
END
ELSE IF (@PROCESS_ID = 'PTGD_VH')
BEGIN
UPDATE PL_REQUEST_PROCESS SET [STATUS] = 'P', CHECKER_ID = @p_CHECKER_ID, APPROVE_DT = @p_APPROVE_DT WHERE REQ_ID = @p_CON_LAYOUT_BLUEPRINT_ID AND PROCESS_ID = @PROCESS_ID
UPDATE PL_REQUEST_PROCESS SET [STATUS] = 'C' WHERE REQ_ID = @p_CON_LAYOUT_BLUEPRINT_ID AND PROCESS_ID = 'PTGD_HT'
UPDATE CON_LAYOUT_BLUEPRINT SET PROCESS_ID = 'PTGD_HT' WHERE CON_LAYOUT_BLUEPRINT_ID = @p_CON_LAYOUT_BLUEPRINT_ID
END
ELSE IF (@PROCESS_ID = 'PTGD_HT')
BEGIN
UPDATE PL_REQUEST_PROCESS SET [STATUS] = 'P', CHECKER_ID = @p_CHECKER_ID, APPROVE_DT = @p_APPROVE_DT WHERE REQ_ID = @p_CON_LAYOUT_BLUEPRINT_ID AND PROCESS_ID = @PROCESS_ID
IF (@LAYOUT_TYPE = 'CN')
BEGIN
UPDATE PL_REQUEST_PROCESS SET [STATUS] = 'C' WHERE REQ_ID = @p_CON_LAYOUT_BLUEPRINT_ID AND PROCESS_ID = 'TGD'
UPDATE CON_LAYOUT_BLUEPRINT SET PROCESS_ID = 'TGD' WHERE CON_LAYOUT_BLUEPRINT_ID = @p_CON_LAYOUT_BLUEPRINT_ID
END
ELSE
BEGIN
UPDATE CON_LAYOUT_BLUEPRINT SET PROCESS_ID = 'APPROVE',AUTH_STATUS = 'A' WHERE CON_LAYOUT_BLUEPRINT_ID = @p_CON_LAYOUT_BLUEPRINT_ID
END
END
ELSE IF (@PROCESS_ID = 'TGD')
BEGIN
UPDATE PL_REQUEST_PROCESS SET [STATUS] = 'P', CHECKER_ID = @p_CHECKER_ID, APPROVE_DT = @p_APPROVE_DT WHERE REQ_ID = @p_CON_LAYOUT_BLUEPRINT_ID AND PROCESS_ID = @PROCESS_ID
UPDATE CON_LAYOUT_BLUEPRINT SET PROCESS_ID = 'APPROVE',AUTH_STATUS = 'A' WHERE CON_LAYOUT_BLUEPRINT_ID = @p_CON_LAYOUT_BLUEPRINT_ID
END
IF @@Error <> 0 GOTO ABORT
END
COMMIT TRANSACTION
SELECT '0' as Result, '' ErrorDesc
RETURN 0
ABORT:
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' ErrorDesc
RETURN -1
END
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Creating [dbo].[CON_LAYOUT_BLUEPRINT_SendApp]'
GO
CREATE PROC [dbo].[CON_LAYOUT_BLUEPRINT_SendApp]
@p_CON_LAYOUT_BLUEPRINT_ID VARCHAR(20),
@p_PROCESS_ID VARCHAR(20),
@p_TLNAME VARCHAR(20),
@p_MAKER_ID VARCHAR(20)
AS
BEGIN TRANSACTION
DECLARE @BRANCH_ID VARCHAR(15),@DEP_ID VARCHAR(15)
SET @BRANCH_ID = (SELECT TLSUBBRID FROM TL_USER WHERE TLNANME = @p_TLNAME)
SET @DEP_ID = (SELECT SECUR_CODE FROM TL_USER WHERE TLNANME = @p_TLNAME)
-- KIỂM TRA XEM CÓ CẤP PHÊ DUYỆT TRUNG GIAN HAY KHÔNG
IF(EXISTS(SELECT * FROM CON_LAYOUT_BLUEPRINT WHERE CON_LAYOUT_BLUEPRINT_ID = @p_CON_LAYOUT_BLUEPRINT_ID AND SIGN_USER IS NOT NULL AND SIGN_USER <>''))
BEGIN
DELETE PL_REQUEST_PROCESS WHERE REQ_ID = @p_CON_LAYOUT_BLUEPRINT_ID
DECLARE @BRANCH_SIGN_ID VARCHAR(20),@DEP_SIGN_ID VARCHAR(20),@BRANCH_SIGN_TYPE VARCHAR(10),@ROLE_SIGN VARCHAR(20)
SELECT @BRANCH_SIGN_ID=TLSUBBRID,@DEP_SIGN_ID=SECUR_CODE,@BRANCH_SIGN_TYPE=BRANCH_TYPE,@ROLE_SIGN=RoleName FROM dbo.TL_USER WHERE TLNANME =(SELECT SIGN_USER FROM CON_LAYOUT_BLUEPRINT WHERE CON_LAYOUT_BLUEPRINT_ID = @p_CON_LAYOUT_BLUEPRINT_ID )
INSERT INTO dbo.PL_REQUEST_PROCESS(REQ_ID,PROCESS_ID,[STATUS], ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD)
VALUES(@p_CON_LAYOUT_BLUEPRINT_ID,'','C',@ROLE_SIGN,@BRANCH_SIGN_ID,CASE WHEN @BRANCH_SIGN_TYPE='HS' THEN @DEP_SIGN_ID ELSE '' END,'',NULL,'','N','','',N'Chờ cấp phê duyệt trung gian xác nhận phiếu',NULL)
INSERT INTO dbo.PL_REQUEST_PROCESS(REQ_ID,PROCESS_ID,[STATUS], ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD)
VALUES(@p_CON_LAYOUT_BLUEPRINT_ID,'APPNEW','U','GDDV',@BRANCH_ID,@DEP_ID,'',NULL,'SIGN','N','','',N'Chờ trưởng đơn vị phê duyệt',NULL)
-- SET CHỜ DUYỆT
UPDATE CON_LAYOUT_BLUEPRINT SET AUTH_STATUS = 'U',PROCESS_ID = 'SIGN' WHERE CON_LAYOUT_BLUEPRINT_ID = @p_CON_LAYOUT_BLUEPRINT_ID
END
ELSE
BEGIN
DELETE PL_REQUEST_PROCESS WHERE REQ_ID = @p_CON_LAYOUT_BLUEPRINT_ID
INSERT INTO dbo.PL_REQUEST_PROCESS(REQ_ID,PROCESS_ID,[STATUS], ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD)
VALUES(@p_CON_LAYOUT_BLUEPRINT_ID,'APPNEW','C','GDDV',@BRANCH_ID,@DEP_ID,'',NULL,'','N','','',N'Chờ trưởng đơn vị phê duyệt',NULL)
-- SET CHỜ DUYỆT
UPDATE CON_LAYOUT_BLUEPRINT SET AUTH_STATUS = 'U',PROCESS_ID = 'APPNEW' WHERE CON_LAYOUT_BLUEPRINT_ID = @p_CON_LAYOUT_BLUEPRINT_ID
END
-- KIỂM TRA LOẠI LAYOUT
IF ((SELECT LAYOUT_TYPE FROM CON_LAYOUT_BLUEPRINT WHERE CON_LAYOUT_BLUEPRINT_ID = @p_CON_LAYOUT_BLUEPRINT_ID) = 'PGD')
BEGIN
-- GĐK HỖ TRỢ
INSERT INTO dbo.PL_REQUEST_PROCESS (REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD)
VALUES(@p_CON_LAYOUT_BLUEPRINT_ID,'GDK_HT','U', 'GDK','','','',NULL,'APPNEW','N','','DM0000000000015', N'Chờ GĐK hỗ trợ phê duyệt',NULL)
-- PTGD KHỐI TÀI CHÍNH
INSERT INTO dbo.PL_REQUEST_PROCESS (REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD)
VALUES(@p_CON_LAYOUT_BLUEPRINT_ID,'PTGD_TC','U', 'PTGD','','','',NULL,'GDK_HT','N','','DM0000000000017', N'Chờ PTGĐ Khối tài chính phê duyệt',NULL)
-- PTGD KHỐI VẬN HÀNH
INSERT INTO dbo.PL_REQUEST_PROCESS (REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD)
VALUES(@p_CON_LAYOUT_BLUEPRINT_ID,'PTGD_VH','U', 'PTGD','','','',NULL,'PTGD_TC','N','','DM0000000000019', N'Chờ PTGĐ Khối vận hành phê duyệt',NULL)
-- PTGD KHỐI HỖ TRỢ
INSERT INTO dbo.PL_REQUEST_PROCESS (REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD)
VALUES(@p_CON_LAYOUT_BLUEPRINT_ID,'PTGD_HT','U', 'PTGD','','','',NULL,'PTGD_VH','N','','DM0000000000015', N'Chờ PTGĐ Khối hỗ trợ phê duyệt',NULL)
-- HOÀN THÀNH
INSERT INTO dbo.PL_REQUEST_PROCESS (REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD)
VALUES(@p_CON_LAYOUT_BLUEPRINT_ID,'APPROVE','U', '','','','',NULL,'PTGD_HT','','','', N'Hoàn tất',NULL)
END
ELSE
BEGIN
-- GĐK HỖ TRỢ
INSERT INTO dbo.PL_REQUEST_PROCESS (REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD)
VALUES(@p_CON_LAYOUT_BLUEPRINT_ID,'GDK_HT','U', 'GDK','','','',NULL,'APPNEW','N','','DM0000000000015', N'Chờ GĐK hỗ trợ phê duyệt',NULL)
-- PTGD KHỐI TÀI CHÍNH
INSERT INTO dbo.PL_REQUEST_PROCESS (REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD)
VALUES(@p_CON_LAYOUT_BLUEPRINT_ID,'PTGD_TC','U', 'PTGD','','','',NULL,'GDK_HT','N','','DM0000000000017', N'Chờ PTGĐ Khối tài chính phê duyệt',NULL)
-- PTGD KHỐI VẬN HÀNH
INSERT INTO dbo.PL_REQUEST_PROCESS (REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD)
VALUES(@p_CON_LAYOUT_BLUEPRINT_ID,'PTGD_VH','U', 'PTGD','','','',NULL,'PTGD_TC','N','','DM0000000000019', N'Chờ PTGĐ Khối vận hành phê duyệt',NULL)
-- PTGD KHỐI HỖ TRỢ
INSERT INTO dbo.PL_REQUEST_PROCESS (REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD)
VALUES(@p_CON_LAYOUT_BLUEPRINT_ID,'PTGD_HT','U', 'PTGD','','','',NULL,'PTGD_VH','N','','DM0000000000015', N'Chờ PTGĐ Khối hỗ trợ phê duyệt',NULL)
-- TỔNG GIẢM ĐÓC
INSERT INTO dbo.PL_REQUEST_PROCESS (REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD)
VALUES(@p_CON_LAYOUT_BLUEPRINT_ID,'TGD','U', 'TGD','','','',NULL,'PTGD_HT','N','','', N'Chờ Tổng giám đốc phê duyệt',NULL)
-- HOÀN THÀNH
INSERT INTO dbo.PL_REQUEST_PROCESS (REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD)
VALUES(@p_CON_LAYOUT_BLUEPRINT_ID,'APPROVE','U', '','','','',NULL,'TGD','','','', N'Hoàn tất',NULL)
END
COMMIT TRANSACTION
SELECT '0' as Result, N'GỬI PHÊ DUYỆT THÀNH CÔNG' ErrorDesc
RETURN '0'
ABORT:
BEGIN
ROLLBACK TRANSACTION;
SELECT '-1' AS Result,
'' ROLE_NOTIFI,
'' ErrorDesc;
RETURN '-1';
END;
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Altering [dbo].[CM_DVDM_Search]'
GO
ALTER PROCEDURE [dbo].[CM_DVDM_Search]
@p_DVDM_CODE varchar(15) = NULL,
@p_DVDM_NAME Nvarchar(300) = NULL,
@p_NOTES nvarchar(1000) = NULL,
@p_RECORD_STATUS varchar(1) = NULL,
@p_MAKER_ID varchar(20) = NULL,
@p_CREATE_DT NVARCHAR(25) = NULL,
@p_AUTH_STATUS varchar(50) = NULL,
@p_CHECKER_ID varchar(20) = NULL,
@p_APPROVE_DT NVARCHAR(25) = NULL,
@p_TYPE VARCHAR(20)= NULL,
@p_TOP INT = 0
AS
BEGIN
IF(@p_TYPE='DVDM')
BEGIN -- PAGING
IF(@p_TOP IS NULL OR @p_TOP = 0)
BEGIN
-- PAGING BEGIN
SELECT A.*,B.AUTH_STATUS_NAME
-- SELECT END
FROM dbo.CM_DVDM A
LEFT JOIN CM_AUTH_STATUS B ON A.AUTH_STATUS = B.AUTH_STATUS
WHERE 1 = 1
AND (A.DVDM_NAME like '%' + @p_DVDM_NAME + '%' OR @p_DVDM_NAME IS NULL OR @p_DVDM_NAME = '')
AND (A.DVDM_CODE like + '%' + @p_DVDM_CODE + '%' OR @p_DVDM_CODE IS NULL OR @p_DVDM_CODE = '')
AND (A.NOTES LIKE '%' + @p_NOTES + '%' OR @p_NOTES IS NULL OR @p_NOTES = '')
AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '')
AND (A.MAKER_ID LIKE '%' + @p_MAKER_ID + '%' OR @p_MAKER_ID IS NULL OR @p_MAKER_ID = '')
AND (DATEDIFF(DAY,A.CREATE_DT ,CONVERT(DATETIME, @p_CREATE_DT, 103)) =0 OR @p_CREATE_DT IS NULL OR @p_CREATE_DT = '')
AND (A.AUTH_STATUS LIKE '%' + @p_AUTH_STATUS + '%' OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '')
AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '')
AND (DATEDIFF(DAY,A.APPROVE_DT ,CONVERT(DATETIME, @p_APPROVE_DT, 103)) = 0 OR @p_APPROVE_DT IS NULL OR @p_APPROVE_DT = '')
AND A.RECORD_STATUS = '1'
AND A.IS_DVDM=1
-- PAGING END
END;
ELSE
BEGIN
-- PAGING BEGIN
SELECT A.*,B.AUTH_STATUS_NAME
-- SELECT END
FROM dbo.CM_DVDM A
LEFT JOIN CM_AUTH_STATUS B ON A.AUTH_STATUS = B.AUTH_STATUS
WHERE 1 = 1
AND (A.DVDM_NAME like '%' + @p_DVDM_NAME + '%' OR @p_DVDM_NAME IS NULL OR @p_DVDM_NAME = '')
AND (A.DVDM_CODE like + '%' + @p_DVDM_CODE + '%' OR @p_DVDM_CODE IS NULL OR @p_DVDM_CODE = '')
--AND (A.NOTES LIKE '%' + @p_NOTES + '%' OR @p_NOTES IS NULL OR @p_NOTES = '')
AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '')
AND (A.MAKER_ID LIKE '%' + @p_MAKER_ID + '%' OR @p_MAKER_ID IS NULL OR @p_MAKER_ID = '')
AND (DATEDIFF(DAY,A.CREATE_DT ,CONVERT(DATETIME, @p_CREATE_DT, 103)) =0 OR @p_CREATE_DT IS NULL OR @p_CREATE_DT = '')
AND (A.AUTH_STATUS LIKE '%' + @p_AUTH_STATUS + '%' OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '')
AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '')
AND (DATEDIFF(DAY,A.APPROVE_DT ,CONVERT(DATETIME, @p_APPROVE_DT, 103)) = 0 OR @p_APPROVE_DT IS NULL OR @p_APPROVE_DT = '')
AND A.RECORD_STATUS = '1'
AND A.IS_DVDM=1
-- PAGING END
END;
END -- PAGING
ELSE IF(@p_TYPE='DVCM')
BEGIN -- PAGING
IF(@p_TOP IS NULL OR @p_TOP = 0)
BEGIN
-- PAGING BEGIN
SELECT A.*,B.AUTH_STATUS_NAME
-- SELECT END
FROM dbo.CM_DVDM A
LEFT JOIN CM_AUTH_STATUS B ON A.AUTH_STATUS = B.AUTH_STATUS
WHERE 1 = 1
AND (A.DVDM_NAME like '%' + @p_DVDM_NAME + '%' OR @p_DVDM_NAME IS NULL OR @p_DVDM_NAME = '')
AND (A.DVDM_CODE like + '%' + @p_DVDM_CODE + '%' OR @p_DVDM_CODE IS NULL OR @p_DVDM_CODE = '')
--AND (A.NOTES LIKE '%' + @p_NOTES + '%' OR @p_NOTES IS NULL OR @p_NOTES = '')
AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '')
AND (A.MAKER_ID LIKE '%' + @p_MAKER_ID + '%' OR @p_MAKER_ID IS NULL OR @p_MAKER_ID = '')
AND (DATEDIFF(DAY,A.CREATE_DT ,CONVERT(DATETIME, @p_CREATE_DT, 103)) =0 OR @p_CREATE_DT IS NULL OR @p_CREATE_DT = '')
AND (A.AUTH_STATUS LIKE '%' + @p_AUTH_STATUS + '%' OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '')
AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '')
AND (DATEDIFF(DAY,A.APPROVE_DT ,CONVERT(DATETIME, @p_APPROVE_DT, 103)) = 0 OR @p_APPROVE_DT IS NULL OR @p_APPROVE_DT = '')
AND A.RECORD_STATUS = '1'
AND A.IS_DVCM=1
-- PAGING END
END;
ELSE
BEGIN
-- PAGING BEGIN
SELECT A.*,B.AUTH_STATUS_NAME
-- SELECT END
FROM dbo.CM_DVDM A
LEFT JOIN CM_AUTH_STATUS B ON A.AUTH_STATUS = B.AUTH_STATUS
WHERE 1 = 1
AND (A.DVDM_NAME like '%' + @p_DVDM_NAME + '%' OR @p_DVDM_NAME IS NULL OR @p_DVDM_NAME = '')
AND (A.DVDM_CODE like + '%' + @p_DVDM_CODE + '%' OR @p_DVDM_CODE IS NULL OR @p_DVDM_CODE = '')
AND (A.NOTES LIKE '%' + @p_NOTES + '%' OR @p_NOTES IS NULL OR @p_NOTES = '')
AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '')
AND (A.MAKER_ID LIKE '%' + @p_MAKER_ID + '%' OR @p_MAKER_ID IS NULL OR @p_MAKER_ID = '')
AND (DATEDIFF(DAY,A.CREATE_DT ,CONVERT(DATETIME, @p_CREATE_DT, 103)) =0 OR @p_CREATE_DT IS NULL OR @p_CREATE_DT = '')
AND (A.AUTH_STATUS LIKE '%' + @p_AUTH_STATUS + '%' OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '')
AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '')
AND (DATEDIFF(DAY,A.APPROVE_DT ,CONVERT(DATETIME, @p_APPROVE_DT, 103)) = 0 OR @p_APPROVE_DT IS NULL OR @p_APPROVE_DT = '')
AND A.RECORD_STATUS = '1'
AND A.IS_DVCM=1
-- PAGING END
END;
END -- PAGING
ELSE IF(@p_TYPE='KHOI')
BEGIN -- PAGING
IF(@p_TOP IS NULL OR @p_TOP = 0)
BEGIN
-- PAGING BEGIN
SELECT A.*,B.AUTH_STATUS_NAME
-- SELECT END
FROM dbo.CM_DVDM A
LEFT JOIN CM_AUTH_STATUS B ON A.AUTH_STATUS = B.AUTH_STATUS
WHERE 1 = 1
AND (A.DVDM_NAME like '%' + @p_DVDM_NAME + '%' OR @p_DVDM_NAME IS NULL OR @p_DVDM_NAME = '')
AND (A.DVDM_CODE like + '%' + @p_DVDM_CODE + '%' OR @p_DVDM_CODE IS NULL OR @p_DVDM_CODE = '')
--AND (A.NOTES LIKE '%' + @p_NOTES + '%' OR @p_NOTES IS NULL OR @p_NOTES = '')
AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '')
AND (A.MAKER_ID LIKE '%' + @p_MAKER_ID + '%' OR @p_MAKER_ID IS NULL OR @p_MAKER_ID = '')
AND (DATEDIFF(DAY,A.CREATE_DT ,CONVERT(DATETIME, @p_CREATE_DT, 103)) =0 OR @p_CREATE_DT IS NULL OR @p_CREATE_DT = '')
AND (A.AUTH_STATUS LIKE '%' + @p_AUTH_STATUS + '%' OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '')
AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '')
AND (DATEDIFF(DAY,A.APPROVE_DT ,CONVERT(DATETIME, @p_APPROVE_DT, 103)) = 0 OR @p_APPROVE_DT IS NULL OR @p_APPROVE_DT = '')
AND A.RECORD_STATUS = '1'
AND A.IS_KHOI=1
-- PAGING END
END;
ELSE
BEGIN
-- PAGING BEGIN
SELECT A.*,B.AUTH_STATUS_NAME
-- SELECT END
FROM dbo.CM_DVDM A
LEFT JOIN CM_AUTH_STATUS B ON A.AUTH_STATUS = B.AUTH_STATUS
WHERE 1 = 1
AND (A.DVDM_NAME like '%' + @p_DVDM_NAME + '%' OR @p_DVDM_NAME IS NULL OR @p_DVDM_NAME = '')
AND (A.DVDM_CODE like + '%' + @p_DVDM_CODE + '%' OR @p_DVDM_CODE IS NULL OR @p_DVDM_CODE = '')
--AND (A.NOTES LIKE '%' + @p_NOTES + '%' OR @p_NOTES IS NULL OR @p_NOTES = '')
AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '')
AND (A.MAKER_ID LIKE '%' + @p_MAKER_ID + '%' OR @p_MAKER_ID IS NULL OR @p_MAKER_ID = '')
AND (DATEDIFF(DAY,A.CREATE_DT ,CONVERT(DATETIME, @p_CREATE_DT, 103)) =0 OR @p_CREATE_DT IS NULL OR @p_CREATE_DT = '')
AND (A.AUTH_STATUS LIKE '%' + @p_AUTH_STATUS + '%' OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '')
AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '')
AND (DATEDIFF(DAY,A.APPROVE_DT ,CONVERT(DATETIME, @p_APPROVE_DT, 103)) = 0 OR @p_APPROVE_DT IS NULL OR @p_APPROVE_DT = '')
AND A.RECORD_STATUS = '1'
AND A.IS_KHOI=1
-- PAGING END
END;
END -- PAGING
END
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Altering [dbo].[BUD_AREA_ByID]'
GO
ALTER PROCEDURE [dbo].[BUD_AREA_ByID]
@BUILD_ID varchar(15) = NULL,
@FROMFLOOR INT,
@TOFLOOR INT,
@CONTRACT_ID NVARCHAR(15)
AS
----BAODNQ : Thêm chức năng phân trang cho store + sửa lại tên biến @BUILD_ID---
BEGIN -- PAGING
-- PAGING BEGIN
SELECT A. *,
ISNULL(A.INTERNAL_AREA+A.UTILZED_AREA,0) AS TONGDIENTICH_CHOTHUE,
ISNULL(A.FLOOR_AREA-(A.INTERNAL_AREA+A.UTILZED_AREA),0) AS TONGDIENTICH_CONLAI
-- SELECT END
FROM
BUD_AREA_DT A
WHERE
A.BUILD_ID= @BUILD_ID
AND (A.FLOOR_NO >= @FROMFLOOR OR @FROMFLOOR= NULL OR @FROMFLOOR=0)
AND (A.FLOOR_NO <= @TOFLOOR OR @TOFLOOR= NULL OR @TOFLOOR=0)
AND(FLOOR_AREA -A.UTILZED_AREA >0)
-- PAGING END
END -- PAGING
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Altering [dbo].[CM_REJECT_LOG_Ins]'
GO
ALTER PROC [dbo].[CM_REJECT_LOG_Ins]
@p_LOG_ID varchar(15) = NULL,
@p_STAGE varchar(5) = NULL,
@p_TRN_ID varchar(15) = NULL,
@p_TRN_TYPE nvarchar(100) = NULL,
@p_LOG_DT VARCHAR = NULL,
@p_AUTH_STAT varchar(3) = NULL,
@p_REASON nvarchar(4000) = NULL,
@p_IS_LATEST varchar(1) = NULL,
@p_REJECTED_BY varchar(20) = NULL,
@p_REJECTED_DT VARCHAR = NULL
AS
BEGIN TRANSACTION
DECLARE @TRADED_ID VARCHAR(15), @AMT_EXE DECIMAL(18,0)
DECLARE @PAY_ADVANCE_ID VARCHAR(15), @AMT_PAY DECIMAL(18,0), @AMT_REVERT DECIMAL(18,0), @AMT_ADD DECIMAL(18,0)
DECLARE @p_MESSAGE NVARCHAR(100) = NULL
IF(EXISTS (SELECT * FROM CM_REJECT_LOG WHERE TRN_ID = @p_TRN_ID))
BEGIN
UPDATE CM_REJECT_LOG SET IS_LATEST ='N' WHERE TRN_ID =@p_TRN_ID
END
-- Thu hồi tài sản
IF(@p_TRN_TYPE ='ASS_COLLECT_MUL')
BEGIN
IF(EXISTS (SELECT * FROM ASS_COLLECT_MULTI_MASTER WHERE COL_MULTI_MASTER_ID =@p_TRN_ID AND AUTH_STATUS_KT ='A' AND @p_STAGE='KT'))
BEGIN
SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin thu hồi tài sản đã được kế toán duyệt'
ROLLBACK TRANSACTION
SELECT '0' as Result, @p_LOG_ID LOG_ID ,@p_MESSAGE ErrorDesc
RETURN '0'
END
IF(EXISTS (SELECT * FROM ASS_COLLECT_MULTI_MASTER WHERE COL_MULTI_MASTER_ID =@p_TRN_ID AND AUTH_STATUS ='A' AND @p_STAGE='HC'))
BEGIN
SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin thu hồi tài sản đã được hành chính duyệt'
ROLLBACK TRANSACTION
SELECT '0' as Result, @p_LOG_ID LOG_ID ,@p_MESSAGE ErrorDesc
RETURN '0'
END
ELSE
BEGIN
IF(@p_STAGE='KT')
BEGIN
IF(EXISTS(SELECT * FROM ASS_COLLECT_MULTI_MASTER WHERE COL_MULTI_MASTER_ID =@p_TRN_ID AND MAKER_ID_KT IS NOT NULL AND MAKER_ID_KT <>''))
BEGIN
UPDATE ASS_COLLECT_MULTI_MASTER SET AUTH_STATUS_KT ='R' WHERE COL_MULTI_MASTER_ID=@p_TRN_ID
SET @p_MESSAGE =N'Thông tin thu hồi tài sản đã được trả về thành công'
-- GiaNT 29/09/2021
INSERT INTO dbo.PL_PROCESS
(
REQ_ID,
PROCESS_ID,
CHECKER_ID,
APPROVE_DT,
PROCESS_DESC,NOTES
)
VALUES
( @p_TRN_ID,
'REJECT',
@p_REJECTED_BY,
GETDATE(),
@p_REASON ,
N'Từ chối phiếu'
)
END
ELSE
BEGIN
SET @p_STAGE ='HC'
UPDATE ASS_COLLECT_MULTI_MASTER SET AUTH_STATUS ='R' WHERE COL_MULTI_MASTER_ID=@p_TRN_ID
SET @p_MESSAGE =N'Thông tin thu hồi tài sản đã được trả về cho bộ phận hành chính thành công'
-- GiaNT 29/09/2021
INSERT INTO dbo.PL_PROCESS
(
REQ_ID,
PROCESS_ID,
CHECKER_ID,
APPROVE_DT,
PROCESS_DESC,NOTES
)
VALUES
( @p_TRN_ID,
'REJECT',
@p_REJECTED_BY,
GETDATE(),
@p_REASON ,
N'Từ chối phiếu'
)
END
END
ELSE
BEGIN
UPDATE ASS_COLLECT_MULTI_MASTER SET AUTH_STATUS ='R' WHERE COL_MULTI_MASTER_ID=@p_TRN_ID
SET @p_MESSAGE =N'Thông tin thu hồi tài sản đã được trả về thành công'
-- GiaNT 29/09/2021
INSERT INTO dbo.PL_PROCESS
(
REQ_ID,
PROCESS_ID,
CHECKER_ID,
APPROVE_DT,
PROCESS_DESC,NOTES
)
VALUES
( @p_TRN_ID,
'REJECT',
@p_REJECTED_BY,
GETDATE(),
@p_REASON ,N'Từ chối phiếu'
)
END
END
END
-- Điều chuyển tài sản
ELSE IF(@p_TRN_TYPE ='ASS_TRANSFER_MUL')
BEGIN
---- GiaNT 29/09/2021 Sửa
IF(@p_STAGE='KT')
BEGIN
IF(EXISTS (SELECT * FROM ASS_TRANSFER_MULTI_MASTER WHERE TRANS_MULTI_MASTER_ID = @p_TRN_ID AND AUTH_STATUS_KT ='A' AND @p_STAGE ='KT'))
BEGIN
SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin Điều chuyển tài sản đã được kế toán duyệt'
ROLLBACK TRANSACTION
SELECT '0' as Result, @p_LOG_ID LOG_ID ,@p_MESSAGE ErrorDesc
RETURN '0'
END
ELSE
BEGIN
IF(EXISTS(SELECT * FROM ASS_TRANSFER_MULTI_MASTER WHERE TRANS_MULTI_MASTER_ID = @p_TRN_ID AND MAKER_ID_KT IS NOT NULL AND MAKER_ID_KT <>''))
BEGIN
UPDATE ASS_TRANSFER_MULTI_MASTER SET AUTH_STATUS_KT ='R' WHERE TRANS_MULTI_MASTER_ID = @p_TRN_ID
SET @p_MESSAGE =N'Thông tin Điều chuyển tài sản đã được trả về nhân viên xử lý thành công'
-- GiaNT 29/09/2021
INSERT INTO dbo.PL_PROCESS
(
REQ_ID,
PROCESS_ID,
CHECKER_ID,
APPROVE_DT,
PROCESS_DESC,NOTES
)
VALUES
( @p_TRN_ID,
'REJECT',
@p_REJECTED_BY,
GETDATE(),
@p_REASON ,
N'Trả về nhân viên xử lý'
)
END
ELSE
BEGIN
SET @p_STAGE ='HC'
UPDATE ASS_TRANSFER_MULTI_MASTER SET AUTH_STATUS ='R',AUTH_STATUS_KT = NULL WHERE TRANS_MULTI_MASTER_ID = @p_TRN_ID
SET @p_MESSAGE =N'Thông tin Điều chuyển tài sản đã được trả về hành chính thành công'
INSERT INTO dbo.PL_PROCESS
(
REQ_ID,
PROCESS_ID,
CHECKER_ID,
APPROVE_DT,
PROCESS_DESC,NOTES
)
VALUES
( @p_TRN_ID,
'REJECT',
@p_REJECTED_BY,
GETDATE(),
@p_REASON ,
N'Trả về hành chính'
)
END
END
END
ELSE IF(@p_STAGE='KT_HC')
BEGIN
IF(EXISTS (SELECT * FROM ASS_TRANSFER_MULTI_MASTER WHERE TRANS_MULTI_MASTER_ID = @p_TRN_ID AND AUTH_STATUS='A' AND @p_STAGE ='KT'))
BEGIN
SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin Điều chuyển tài sản đã được kế toán duyệt'
ROLLBACK TRANSACTION
SELECT '0' as Result, @p_LOG_ID LOG_ID ,@p_MESSAGE ErrorDesc
RETURN '0'
END
ELSE
BEGIN
SET @p_STAGE ='HC'
UPDATE ASS_TRANSFER_MULTI_MASTER SET AUTH_STATUS ='R',AUTH_STATUS_KT = NULL, APPROVE_DT = NULL,CHECKER_ID = NULL, MAKER_ID_KT = NULL, CREATE_DT_KT = NULL , CORE_NOTE = NULL
WHERE TRANS_MULTI_MASTER_ID = @p_TRN_ID
-- XÓA THÔNG TIN XÁC NHẬN
DELETE ASS_TRANSFER_CONFIRM_MASTER WHERE TRANS_MULTI_MASTER_ID = @p_TRN_ID
SET @p_MESSAGE =N'Thông tin Điều chuyển tài sản đã được trả về hành chính thành công'
INSERT INTO dbo.PL_PROCESS
(
REQ_ID,
PROCESS_ID,
CHECKER_ID,
APPROVE_DT,
PROCESS_DESC,NOTES
)
VALUES
( @p_TRN_ID, -- REQ_ID - varchar(15)
'REJECT', -- PROCESS_ID - varchar(10)
@p_REJECTED_BY, -- CHECKER_ID - varchar(15)
GETDATE(), -- APPROVE_DT - datetime
@p_REASON ,N'Trả về hành chính' -- PROCESS_DESC - nvarchar(1000)
)
END
END
ELSE
BEGIN
IF(EXISTS (SELECT * FROM ASS_TRANSFER_MULTI_MASTER WHERE TRANS_MULTI_MASTER_ID = @p_TRN_ID AND AUTH_STATUS='A' AND @p_STAGE ='HC'))
BEGIN
SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin Điều chuyển tài sản đã được hành chính duyệt'
ROLLBACK TRANSACTION
SELECT '0' as Result, @p_LOG_ID LOG_ID ,@p_MESSAGE ErrorDesc
RETURN '0'
END
ELSE
BEGIN
UPDATE ASS_TRANSFER_MULTI_MASTER SET AUTH_STATUS ='R' WHERE TRANS_MULTI_MASTER_ID = @p_TRN_ID
SET @p_MESSAGE =N'Thông tin Điều chuyển tài sản đã được trả về thành công'
INSERT INTO dbo.PL_PROCESS
(
REQ_ID,
PROCESS_ID,
CHECKER_ID,
APPROVE_DT,
PROCESS_DESC,NOTES
)
VALUES
( @p_TRN_ID, -- REQ_ID - varchar(15)
'REJECT', -- PROCESS_ID - varchar(10)
@p_REJECTED_BY, -- CHECKER_ID - varchar(15)
GETDATE(), -- APPROVE_DT - datetime
@p_REASON ,N'Từ chối phiếu' -- PROCESS_DESC - nvarchar(1000)
)
END
END
END
-- Xuất sử dụng tài sản
ELSE IF(@p_TRN_TYPE ='ASS_USE_MUL')
BEGIN
IF(@p_STAGE='KT')
BEGIN
IF(EXISTS (SELECT * FROM ASS_USE_MULTI_MASTER WHERE USER_MASTER_ID =@p_TRN_ID AND AUTH_STATUS_KT ='A' AND @p_STAGE ='KT'))
BEGIN
SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin xuất sử dụng tài sản đã được kế toán duyệt'
ROLLBACK TRANSACTION
SELECT '0' as Result, @p_LOG_ID LOG_ID ,@p_MESSAGE ErrorDesc
RETURN '0'
END
ELSE
BEGIN
IF(EXISTS(SELECT * FROM ASS_USE_MULTI_MASTER WHERE USER_MASTER_ID =@p_TRN_ID AND MAKER_ID_KT IS NOT NULL AND MAKER_ID_KT <>''))
BEGIN
SET @p_STAGE ='HC'
UPDATE ASS_USE_MULTI_MASTER SET AUTH_STATUS_KT ='R' WHERE USER_MASTER_ID =@p_TRN_ID
SET @p_MESSAGE =N'Thông tin xuất sử dụng tài sản đã được trả về thành công'
-- GiaNT 29/09/2021
INSERT INTO dbo.PL_PROCESS
(
REQ_ID,
PROCESS_ID,
CHECKER_ID,
APPROVE_DT,
PROCESS_DESC,NOTES
)
VALUES
( @p_TRN_ID,
'REJECT',
@p_REJECTED_BY,
GETDATE(),
@p_REASON ,
N'Từ chối phiếu'
)
END
ELSE
BEGIN
SET @p_STAGE ='HC'
UPDATE ASS_USE_MULTI_MASTER SET AUTH_STATUS ='R' WHERE USER_MASTER_ID =@p_TRN_ID
SET @p_MESSAGE =N'Thông tin xuất sử dụng tài sản đã được trả về hành chính thành công'
-- GiaNT 29/09/2021
INSERT INTO dbo.PL_PROCESS
(
REQ_ID,
PROCESS_ID,
CHECKER_ID,
APPROVE_DT,
PROCESS_DESC,NOTES
)
VALUES
( @p_TRN_ID,
'REJECT',
@p_REJECTED_BY,
GETDATE(),
@p_REASON ,
N'Trả về hành chính'
)
END
END
END
ELSE
BEGIN
IF(EXISTS (SELECT * FROM ASS_USE_MULTI_MASTER WHERE USER_MASTER_ID =@p_TRN_ID AND AUTH_STATUS ='A' AND @p_STAGE ='HC'))
BEGIN
SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin xuất sử dụng tài sản đã được hành chính duyệt'
ROLLBACK TRANSACTION
SELECT '0' as Result, @p_LOG_ID LOG_ID ,@p_MESSAGE ErrorDesc
RETURN '0'
END
ELSE
BEGIN
UPDATE ASS_USE_MULTI_MASTER SET AUTH_STATUS ='R' WHERE USER_MASTER_ID =@p_TRN_ID
SET @p_MESSAGE =N'Thông tin xuất sử dụng tài sản đã được trả về thành công'
END
END
END
-- Thanh lý tài sản
ELSE IF(@p_TRN_TYPE ='ASS_LIQ_MUL')
BEGIN
IF(EXISTS (SELECT * FROM ASS_LIQUIDATION WHERE LIQ_ID =@p_TRN_ID AND AUTH_STATUS_KT='A' AND @p_STAGE='KT'))
BEGIN
SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin thanh lý tài sản đã được kế toán duyệt'
ROLLBACK TRANSACTION
SELECT '0' as Result, @p_LOG_ID LOG_ID ,@p_MESSAGE ErrorDesc
RETURN '0'
END
IF(EXISTS (SELECT * FROM ASS_LIQUIDATION WHERE LIQ_ID =@p_TRN_ID AND AUTH_STATUS='A' AND @p_STAGE='HC'))
BEGIN
SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin thanh lý tài sản đã được hành chính duyệt'
ROLLBACK TRANSACTION
SELECT '0' as Result, @p_LOG_ID LOG_ID ,@p_MESSAGE ErrorDesc
RETURN '0'
END
ELSE
BEGIN
IF(@p_STAGE='KT')
BEGIN
IF(EXISTS(SELECT * FROM ASS_LIQUIDATION WHERE LIQ_ID =@p_TRN_ID AND MAKER_ID_KT IS NOT NULL AND MAKER_ID_KT <>''))
BEGIN
UPDATE ASS_LIQUIDATION SET AUTH_STATUS_KT ='R' WHERE LIQ_ID =@p_TRN_ID
SET @p_MESSAGE =N'Thông tin thanh lý tài sản đã được trả về thành công'
-- GiaNT 29/09/2021
INSERT INTO dbo.PL_PROCESS
(
REQ_ID,
PROCESS_ID,
CHECKER_ID,
APPROVE_DT,
PROCESS_DESC,NOTES
)
VALUES
( @p_TRN_ID,
'REJECT',
@p_REJECTED_BY,
GETDATE(),
@p_REASON ,
N'Từ chối phiếu'
)
END
ELSE
BEGIN
SET @p_STAGE ='HC'
UPDATE ASS_LIQUIDATION SET AUTH_STATUS ='R' WHERE LIQ_ID =@p_TRN_ID
SET @p_MESSAGE =N'Thông tin thanh lý tài sản đã được trả hành chính về thành công'
-- GiaNT 29/09/2021
INSERT INTO dbo.PL_PROCESS
(
REQ_ID,
PROCESS_ID,
CHECKER_ID,
APPROVE_DT,
PROCESS_DESC,NOTES
)
VALUES
( @p_TRN_ID,
'REJECT',
@p_REJECTED_BY,
GETDATE(),
@p_REASON ,
N'Trả về hành chính'
)
END
END
ELSE
BEGIN
UPDATE ASS_LIQUIDATION SET AUTH_STATUS ='R' WHERE LIQ_ID =@p_TRN_ID
SET @p_MESSAGE =N'Thông tin thanh lý tài sản đã được trả về thành công'
-- GiaNT 29/09/2021
INSERT INTO dbo.PL_PROCESS
(
REQ_ID,
PROCESS_ID,
CHECKER_ID,
APPROVE_DT,
PROCESS_DESC,NOTES
)
VALUES
( @p_TRN_ID,
'REJECT',
@p_REJECTED_BY,
GETDATE(),
@p_REASON ,
N'Từ chối phiếu'
)
END
END
END
-- Nhập mới tài sản
ELSE IF(@p_TRN_TYPE ='ASS_ADDNEW_MUL')
BEGIN
BEGIN
IF(@p_STAGE='KT')
BEGIN
IF(EXISTS (SELECT * FROM ASS_ADDNEW WHERE ADDNEW_ID =@p_TRN_ID AND AUTH_STATUS_KT='A' AND @p_STAGE ='KT'))
BEGIN
SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin nhập mới tài sản đã được kế toán duyệt'
ROLLBACK TRANSACTION
SELECT '0' as Result, @p_LOG_ID LOG_ID ,@p_MESSAGE ErrorDesc
RETURN '0'
END
ELSE
BEGIN
IF(EXISTS(SELECT * FROM ASS_ADDNEW WHERE ADDNEW_ID =@p_TRN_ID AND MAKER_ID_KT IS NOT NULL AND MAKER_ID_KT <>''))
BEGIN
UPDATE ASS_ADDNEW SET AUTH_STATUS_KT ='R' WHERE ADDNEW_ID =@p_TRN_ID
SET @p_MESSAGE =N'Thông tin nhập mới tài sản đã được trả về thành công'
-- GiaNT 29/09/2021
INSERT INTO dbo.PL_PROCESS
(
REQ_ID,
PROCESS_ID,
CHECKER_ID,
APPROVE_DT,
PROCESS_DESC,NOTES
)
VALUES
( @p_TRN_ID,
'REJECT',
@p_REJECTED_BY,
GETDATE(),
@p_REASON ,
N'Từ chối phiếu'
)
END
ELSE
BEGIN
SET @p_STAGE ='HC'
UPDATE ASS_ADDNEW SET AUTH_STATUS ='R',CREATE_DT_KT = NULL,MAKER_ID_KT = NULL,APPROVE_DT_KT = NULL,CHECKER_ID_KT = NULL WHERE ADDNEW_ID =@p_TRN_ID
SET @p_MESSAGE =N'Thông tin nhập mới tài sản đã được trả về hành chính thành công'
-- GiaNT 29/09/2021
INSERT INTO dbo.PL_PROCESS
(
REQ_ID,
PROCESS_ID,
CHECKER_ID,
APPROVE_DT,
PROCESS_DESC,NOTES
)
VALUES
( @p_TRN_ID,
'REJECT',
@p_REJECTED_BY,
GETDATE(),
@p_REASON ,
N'Trả về hành chính'
)
END
END
END
ELSE
BEGIN
IF(EXISTS (SELECT * FROM ASS_ADDNEW WHERE ADDNEW_ID =@p_TRN_ID AND AUTH_STATUS='A' AND @p_STAGE ='HC'))
BEGIN
SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin nhập mới tài sản đã được hành chính duyệt'
ROLLBACK TRANSACTION
SELECT '0' as Result, @p_LOG_ID LOG_ID ,@p_MESSAGE ErrorDesc
RETURN '0'
END
ELSE
BEGIN
UPDATE ASS_ADDNEW SET AUTH_STATUS ='R',CREATE_DT_KT = NULL,MAKER_ID_KT = NULL,APPROVE_DT_KT = NULL,CHECKER_ID_KT = NULL WHERE ADDNEW_ID =@p_TRN_ID
SET @p_MESSAGE =N'Thông tin nhập mới tài sản đã được trả về thành công'
-- GiaNT 29/09/2021
INSERT INTO dbo.PL_PROCESS
(
REQ_ID,
PROCESS_ID,
CHECKER_ID,
APPROVE_DT,
PROCESS_DESC,NOTES
)
VALUES
( @p_TRN_ID,
'REJECT',
@p_REJECTED_BY,
GETDATE(),
@p_REASON ,
N'Từ chối phiếu'
)
END
END
END
END
ELSE IF(@p_TRN_TYPE ='MW_IN')
BEGIN
BEGIN
IF(@p_STAGE='KT')
BEGIN
IF(EXISTS (SELECT * FROM MW_IN_MASTER WHERE IN_ID =@p_TRN_ID AND AUTH_STATUS_KT='A' AND @p_STAGE ='KT'))
BEGIN
SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin nhập mới vật liệu đã được kế toán duyệt'
ROLLBACK TRANSACTION
SELECT '0' as Result, @p_LOG_ID LOG_ID ,@p_MESSAGE ErrorDesc
RETURN '0'
END
ELSE
BEGIN
--UPDATE MW_IN_MASTER SET AUTH_STATUS_KT ='R' WHERE IN_ID =@p_TRN_ID
--SET @p_MESSAGE =N'Thông tin nhập mới vật liệu đã được trả về thành công'
IF(EXISTS(SELECT * FROM MW_IN_MASTER WHERE IN_ID =@p_TRN_ID AND MAKER_ID_KT IS NOT NULL AND MAKER_ID_KT <>''))
BEGIN
UPDATE MW_IN_MASTER SET AUTH_STATUS_KT ='R' WHERE IN_ID =@p_TRN_ID
SET @p_MESSAGE =N'Thông tin nhập mới vật liệu đã được trả về thành công'
END
ELSE
BEGIN
SET @p_STAGE ='HC'
UPDATE MW_IN_MASTER SET AUTH_STATUS ='R' WHERE IN_ID =@p_TRN_ID
SET @p_MESSAGE =N'Thông tin nhập mới vật liệu đã được trả về hành chính thành công'
END
END
END
ELSE IF(@p_STAGE='KT_HC')
BEGIN
BEGIN
IF(EXISTS (SELECT * FROM MW_IN_MASTER WHERE IN_ID =@p_TRN_ID AND AUTH_STATUS_KT='A' AND @p_STAGE ='KT'))
BEGIN
SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin nhập mới vật liệu đã được kế toán duyệt'
ROLLBACK TRANSACTION
SELECT '0' as Result, @p_LOG_ID LOG_ID ,@p_MESSAGE ErrorDesc
RETURN '0'
END
ELSE
BEGIN
SET @p_STAGE ='HC'
UPDATE MW_IN_MASTER SET AUTH_STATUS ='R',CORE_NOTE = NULL
, MAKER_ID_KT = NULL, CREATE_DT_KT = NULL, APPROVE_DT = NULL, CHECKER_ID = NULL
--,CHECKER_ID_KT = @p_REJECTED_BY,APPROVE_DT_KT = GETDATE()
WHERE IN_ID =@p_TRN_ID
SET @p_MESSAGE =N'Thông tin nhập mới vật liệu đã được trả về hành chính thành công'
END
END
END
ELSE
BEGIN
IF(EXISTS (SELECT * FROM MW_IN_MASTER WHERE IN_ID =@p_TRN_ID AND AUTH_STATUS='A' AND @p_STAGE ='HC'))
BEGIN
SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin nhập mới vật liệu đã được hành chính duyệt'
ROLLBACK TRANSACTION
SELECT '0' as Result, @p_LOG_ID LOG_ID ,@p_MESSAGE ErrorDesc
RETURN '0'
END
ELSE
BEGIN
UPDATE MW_IN_MASTER SET AUTH_STATUS ='R' WHERE IN_ID =@p_TRN_ID
SET @p_MESSAGE =N'Thông tin nhập mới vật liệu đã được trả về thành công'
END
END
END
END
--- MW - TRANSFER : ĐIỀU CHUYỂN VẬT LIỆU
ELSE IF(@p_TRN_TYPE ='MW_TRANSFER')
BEGIN
BEGIN
IF(@p_STAGE='KT')
BEGIN
IF(EXISTS (SELECT * FROM MW_TRANSFER WHERE TRANSFER_ID =@p_TRN_ID AND KT_AUTH_STATUS='A' AND @p_STAGE ='KT'))
BEGIN
SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin điều chuyển vật liệu đã được kế toán duyệt'
ROLLBACK TRANSACTION
SELECT '0' as Result, @p_LOG_ID LOG_ID ,@p_MESSAGE ErrorDesc
RETURN '0'
END
ELSE
BEGIN
--UPDATE MW_TRANSFER SET KT_AUTH_STATUS ='R' WHERE TRANSFER_ID =@p_TRN_ID
--SET @p_MESSAGE =N'Thông tin điều chuyển vật liệu đã được trả về thành công'
IF(EXISTS(SELECT * FROM MW_TRANSFER WHERE TRANSFER_ID =@p_TRN_ID AND KT_MAKER_ID IS NOT NULL AND KT_MAKER_ID <>''))
BEGIN
UPDATE MW_TRANSFER SET KT_AUTH_STATUS ='R' WHERE TRANSFER_ID =@p_TRN_ID
SET @p_MESSAGE =N'Thông tin điều chuyển vật liệu đã được trả về thành công'
END
ELSE
BEGIN
SET @p_STAGE ='HC'
UPDATE MW_TRANSFER SET AUTH_STATUS ='R' WHERE TRANSFER_ID =@p_TRN_ID
SET @p_MESSAGE =N'Thông tin điều chuyển vật liệu đã được trả về hành chính thành công'
END
END
END
ELSE IF(@p_STAGE='KT_HC')
BEGIN
IF(EXISTS (SELECT * FROM MW_TRANSFER WHERE TRANSFER_ID =@p_TRN_ID AND KT_AUTH_STATUS='A' AND @p_STAGE ='KT'))
BEGIN
SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin điều chuyển vật liệu đã được kế toán duyệt'
ROLLBACK TRANSACTION
SELECT '0' as Result, @p_LOG_ID LOG_ID ,@p_MESSAGE ErrorDesc
RETURN '0'
END
ELSE
BEGIN
SET @p_STAGE ='HC'
UPDATE MW_TRANSFER SET AUTH_STATUS ='R', CORE_NOTE = NULL
, KT_MAKER_ID = NULL, KT_CREATE_DT = NULL, APPROVE_DT = NULL, CHECKER_ID = NULL
--,KT_CHECKER_ID = @p_REJECTED_BY, KT_APPROVE_DT = GETDATE()
WHERE TRANSFER_ID =@p_TRN_ID
SET @p_MESSAGE =N'Thông tin điều chuyển vật liệu đã được trả về hành chính thành công'
END
END
ELSE
BEGIN
IF(EXISTS (SELECT * FROM MW_TRANSFER WHERE TRANSFER_ID =@p_TRN_ID AND AUTH_STATUS='A' AND @p_STAGE ='HC'))
BEGIN
SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin điều chuyển vật liệu đã được hành chính duyệt'
ROLLBACK TRANSACTION
SELECT '0' as Result, @p_LOG_ID LOG_ID ,@p_MESSAGE ErrorDesc
RETURN '0'
END
ELSE
BEGIN
UPDATE MW_TRANSFER SET AUTH_STATUS ='R' WHERE TRANSFER_ID =@p_TRN_ID
SET @p_MESSAGE =N'Thông tin điều chuyển vật liệu đã được trả về thành công'
END
END
END
END
--- MW_OUT : XUẤT VẬT LIỆU
ELSE IF(@p_TRN_TYPE ='MW_OUT')
BEGIN
BEGIN
IF(@p_STAGE='KT')
BEGIN
IF(EXISTS (SELECT * FROM MW_OUT WHERE OUT_ID =@p_TRN_ID AND KT_AUTH_STATUS='A' AND @p_STAGE ='KT'))
BEGIN
SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin xuất sử dụng vật liệu đã được kế toán duyệt'
ROLLBACK TRANSACTION
SELECT '0' as Result, @p_LOG_ID LOG_ID ,@p_MESSAGE ErrorDesc
RETURN '0'
END
ELSE
BEGIN
--UPDATE MW_OUT SET KT_AUTH_STATUS ='R' WHERE OUT_ID =@p_TRN_ID
--SET @p_MESSAGE =N'Thông tin xuất sử dụng vật liệu đã được trả về thành công'
IF(EXISTS(SELECT * FROM MW_OUT WHERE OUT_ID =@p_TRN_ID AND KT_MAKER_ID IS NOT NULL AND KT_MAKER_ID <>''))
BEGIN
UPDATE MW_OUT SET KT_AUTH_STATUS ='R' WHERE OUT_ID =@p_TRN_ID
SET @p_MESSAGE =N'Thông tin xuất sử dụng vật liệu đã được trả về thành công'
END
ELSE
BEGIN
SET @p_STAGE ='HC'
UPDATE MW_OUT SET AUTH_STATUS ='R' WHERE OUT_ID =@p_TRN_ID
SET @p_MESSAGE =N'Thông tin xuất sử dụng vật liệu đã được trả về hành chính thành công'
END
END
END
ELSE IF(@p_STAGE='KT_HC')
BEGIN
IF(EXISTS (SELECT * FROM MW_OUT WHERE OUT_ID =@p_TRN_ID AND KT_AUTH_STATUS='A' AND @p_STAGE ='KT'))
BEGIN
SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin xuất sử dụng vật liệu đã được kế toán duyệt'
ROLLBACK TRANSACTION
SELECT '0' as Result, @p_LOG_ID LOG_ID ,@p_MESSAGE ErrorDesc
RETURN '0'
END
ELSE
BEGIN
SET @p_STAGE ='HC'
UPDATE MW_OUT SET AUTH_STATUS ='R', CORE_NOTE = NULL
, KT_MAKER_ID = NULL, KT_CREATE_DT = NULL, APPROVE_DT = NULL, CHECKER_ID = NULL
--, KT_APPROVE_DT = GETDATE() ,KT_CHECKER_ID = @p_REJECTED_BY
WHERE OUT_ID =@p_TRN_ID
SET @p_MESSAGE =N'Thông tin xuất sử dụng vật liệu đã được trả về hành chính thành công'
END
END
ELSE
BEGIN
IF(EXISTS (SELECT * FROM MW_OUT WHERE OUT_ID =@p_TRN_ID AND AUTH_STATUS='A' AND @p_STAGE ='HC'))
BEGIN
SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin xuất sử dụng vật liệu đã được hành chính duyệt'
ROLLBACK TRANSACTION
SELECT '0' as Result, @p_LOG_ID LOG_ID ,@p_MESSAGE ErrorDesc
RETURN '0'
END
ELSE
BEGIN
UPDATE MW_OUT SET AUTH_STATUS ='R' WHERE OUT_ID =@p_TRN_ID
SET @p_MESSAGE =N'Thông tin xuất sử dụng vật liệu đã được trả về thành công'
END
END
END
END
--- MW_OUT : THANH LÝ VẬT LIỆU
ELSE IF(@p_TRN_TYPE ='MW_LIQ_MASTER')
BEGIN
BEGIN
IF(@p_STAGE='KT')
BEGIN
IF(EXISTS (SELECT * FROM MW_LIQ_MASTER WHERE LIQ_ID =@p_TRN_ID AND KT_AUTH_STATUS='A' AND @p_STAGE ='KT'))
BEGIN
SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin thanh lý vật liệu đã được kế toán duyệt'
ROLLBACK TRANSACTION
SELECT '0' as Result, @p_LOG_ID LOG_ID ,@p_MESSAGE ErrorDesc
RETURN '0'
END
ELSE
BEGIN
--UPDATE MW_OUT SET KT_AUTH_STATUS ='R' WHERE OUT_ID =@p_TRN_ID
--SET @p_MESSAGE =N'Thông tin xuất sử dụng vật liệu đã được trả về thành công'
IF(EXISTS(SELECT * FROM MW_LIQ_MASTER WHERE LIQ_ID =@p_TRN_ID AND KT_MAKER_ID IS NOT NULL AND KT_MAKER_ID <>''))
BEGIN
UPDATE MW_LIQ_MASTER SET KT_AUTH_STATUS ='R' WHERE LIQ_ID =@p_TRN_ID
SET @p_MESSAGE =N'Thông tin thanh lý vật liệu đã được trả về thành công'
END
ELSE
BEGIN
SET @p_STAGE ='HC'
UPDATE MW_LIQ_MASTER SET AUTH_STATUS ='R' WHERE LIQ_ID =@p_TRN_ID
SET @p_MESSAGE =N'Thông tin thanh lý vật liệu đã được trả về hành chính thành công'
END
END
END
ELSE IF(@p_STAGE='KT_HC')
BEGIN
IF(EXISTS (SELECT * FROM MW_LIQ_MASTER WHERE LIQ_ID =@p_TRN_ID AND KT_AUTH_STATUS='A' AND @p_STAGE ='KT'))
BEGIN
SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin thanh lý vật liệu đã được kế toán duyệt'
ROLLBACK TRANSACTION
SELECT '0' as Result, @p_LOG_ID LOG_ID ,@p_MESSAGE ErrorDesc
RETURN '0'
END
ELSE
BEGIN
SET @p_STAGE ='HC'
UPDATE MW_LIQ_MASTER SET AUTH_STATUS ='R', CORE_NOTE = NULL
, KT_MAKER_ID = NULL, KT_CREATE_DT = NULL, APPROVE_DT = NULL, CHECKER_ID = NULL
--,KT_CHECKER_ID = @p_REJECTED_BY, KT_APPROVE_DT = GETDATE()
WHERE LIQ_ID =@p_TRN_ID
SET @p_MESSAGE =N'Thông tin thanh lý vật liệu đã được trả về hành chính thành công'
END
END
ELSE
BEGIN
IF(EXISTS (SELECT * FROM MW_LIQ_MASTER WHERE LIQ_ID =@p_TRN_ID AND AUTH_STATUS='A' AND @p_STAGE ='HC'))
BEGIN
SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin thanh lý vật liệu đã được hành chính duyệt'
ROLLBACK TRANSACTION
SELECT '0' as Result, @p_LOG_ID LOG_ID ,@p_MESSAGE ErrorDesc
RETURN '0'
END
ELSE
BEGIN
UPDATE MW_LIQ_MASTER SET AUTH_STATUS ='R' WHERE LIQ_ID =@p_TRN_ID
SET @p_MESSAGE =N'Thông tin thanh lý vật liệu đã được trả về thành công'
END
END
END
END
-- PHIEU DE NGHI TAM UNG 05 11 2019
ELSE IF(@p_TRN_TYPE ='REQ_ADVANCE_PAY')
BEGIN
BEGIN
IF(@p_STAGE='KT')
BEGIN
IF(EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_TRN_ID AND AUTH_STATUS_KT ='A' AND @p_STAGE ='KT'))
BEGIN
SET @p_MESSAGE =N'Hủy trả về thất bại!Phiếu đề nghị tạm ứng đã được kế toán duyệt'
ROLLBACK TRANSACTION
SELECT '0' as Result, @p_LOG_ID LOG_ID ,@p_MESSAGE ErrorDesc
RETURN '0'
END
ELSE
BEGIN
-- NEU DANG O VI TRI TKTGD, TKHDQT
IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_TRN_ID AND ROLE_USER IN ('TKTGD','TKHDQT') AND STATUS ='C'))
BEGIN
IF(NOT EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_TRN_ID AND TYPE_JOB ='KS' AND TLNAME =@p_REJECTED_BY))
BEGIN
SET @p_MESSAGE =N'Hủy trả về thất bại!Phiếu đề nghị tạm ứng chưa được điều phối cho nhân viên xử lý'
ROLLBACK TRANSACTION
SELECT '0' as Result, @p_LOG_ID LOG_ID ,@p_MESSAGE ErrorDesc
RETURN '0'
END
--UPDATE TR_REQ_ADVANCE_PAYMENT SET AUTH_STATUS_KT ='R' WHERE REQ_PAY_ID =@p_TRN_ID
SET @p_MESSAGE =N'Phiếu đề nghị tạm ứng đã được trả về nhân viên xử lý thành công'
---- CAP NHAT LAI TR_PROCESS_REQUEST_CHILD VE GIAO DICH VIEN
UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='C' WHERE TLNAME =(SELECT TOP 1 TLNAME FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_TRN_ID AND TYPE_JOB ='XL')
AND REQ_ID =@p_TRN_ID
-- INSERT VAO BANG PL_PROCESS 1 DONG TRA VE
UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P' WHERE TLNAME =@p_REJECTED_BY AND REQ_ID =@p_TRN_ID AND TYPE_JOB ='KS'
INSERT INTO dbo.PL_PROCESS
(
REQ_ID,
PROCESS_ID,
CHECKER_ID,
APPROVE_DT,
PROCESS_DESC,NOTES
)
VALUES
( @p_TRN_ID, -- REQ_ID - varchar(15)
'REJECT', -- PROCESS_ID - varchar(10)
@p_REJECTED_BY, -- CHECKER_ID - varchar(15)
GETDATE(), -- APPROVE_DT - datetime
@p_REASON ,N'Trưởng văn phòng từ chối nhân viên xử lý' -- PROCESS_DESC - nvarchar(1000)
)
EXEC SYS_CodeMasters_Gen 'CM_REJECT_LOG', @p_LOG_ID out
IF @p_LOG_ID='' OR @p_LOG_ID IS NULL GOTO ABORT
INSERT INTO [dbo].[CM_REJECT_LOG] VALUES (@p_LOG_ID,'HC',@p_TRN_ID,@p_TRN_TYPE,CONVERT(DATETIME,GETDATE(),103),'R',@p_REASON,'Y',@p_REJECTED_BY,CONVERT(DATETIME,GETDATE(),103))
COMMIT TRANSACTION
SELECT '0' as Result, @p_LOG_ID LOG_ID ,@p_MESSAGE ErrorDesc
RETURN '0'
END
--UPDATE MW_OUT SET KT_AUTH_STATUS ='R' WHERE OUT_ID =@p_TRN_ID
--SET @p_MESSAGE =N'Thông tin xuất sử dụng vật liệu đã được trả về thành công'
IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_TRN_ID AND MAKER_ID_KT IS NOT NULL AND MAKER_ID_KT <>''))
BEGIN
UPDATE TR_REQ_ADVANCE_PAYMENT SET AUTH_STATUS_KT ='R' WHERE REQ_PAY_ID =@p_TRN_ID
SET @p_MESSAGE =N'Phiếu đề nghị tạm ứng đã được trả về thành công'
---- CAP NHAT LAI TR_PROCESS_REQUEST_CHILD VE GIAO DICH VIEN
UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='C' WHERE TLNAME =(SELECT MAKER_ID_KT FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_TRN_ID)
AND REQ_ID =@p_TRN_ID
-- INSERT VAO BANG PL_PROCESS 1 DONG TRA VE
UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P' WHERE TLNAME =@p_REJECTED_BY AND REQ_ID =@p_TRN_ID
INSERT INTO dbo.PL_PROCESS
(
REQ_ID,
PROCESS_ID,
CHECKER_ID,
APPROVE_DT,
PROCESS_DESC,NOTES
)
VALUES
( @p_TRN_ID, -- REQ_ID - varchar(15)
'REJECT', -- PROCESS_ID - varchar(10)
@p_REJECTED_BY, -- CHECKER_ID - varchar(15)
GETDATE(), -- APPROVE_DT - datetime
@p_REASON ,N'KSV trả về cho GDV' -- PROCESS_DESC - nvarchar(1000)
)
END
ELSE
BEGIN
SET @p_STAGE ='HC'
UPDATE TR_REQ_ADVANCE_PAYMENT SET AUTH_STATUS ='R',PROCESS ='',MAKER_ID_KT = NULL, CREATE_DT_KT =NULL, APPROVE_DT = NULL, CHECKER_ID = NULL WHERE REQ_PAY_ID =@p_TRN_ID
SET @p_MESSAGE =N'Phiếu đề nghị tạm ứng đã được trả về đơn vị thành công'
---- CAP NHAT LAI TR_PROCESS_REQUEST_CHILD VE GIAO DICH VIEN
DELETE FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_TRN_ID
DELETE FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_TRN_ID
-- INSERT VAO BANG PL_PROCESS 1 DONG TRA VE
INSERT INTO dbo.PL_PROCESS
(
REQ_ID,
PROCESS_ID,
CHECKER_ID,
APPROVE_DT,
PROCESS_DESC,NOTES
)
VALUES
( @p_TRN_ID, -- REQ_ID - varchar(15)
'REJECT', -- PROCESS_ID - varchar(10)
@p_REJECTED_BY, -- CHECKER_ID - varchar(15)
GETDATE(), -- APPROVE_DT - datetime
@p_REASON,N'Trả về' -- PROCESS_DESC - nvarchar(1000)
)
END
END
END
ELSE IF(@p_STAGE ='HC')
BEGIN
IF(EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_TRN_ID AND AUTH_STATUS='A' AND @p_STAGE ='HC' AND (MAKER_ID_KT IS NULL OR MAKER_ID_KT ='')))
BEGIN
SET @p_MESSAGE =N'Hủy trả về thất bại! Phiếu đề nghị tạm ứng đã được duyệt hoàn tất ở cấp độ Hành Chính Quản Trị'
ROLLBACK TRANSACTION
SELECT '0' as Result, @p_LOG_ID LOG_ID ,@p_MESSAGE ErrorDesc
RETURN '0'
END
IF(EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_TRN_ID AND AUTH_STATUS='R'))
BEGIN
SET @p_MESSAGE =N'Hủy trả về thất bại! Phiếu đề nghị tạm ứng đã được trả về trước đó'
ROLLBACK TRANSACTION
SELECT '0' as Result, @p_LOG_ID LOG_ID ,@p_MESSAGE ErrorDesc
RETURN '0'
END
ELSE
BEGIN
UPDATE TR_REQ_ADVANCE_PAYMENT SET AUTH_STATUS ='R',PROCESS ='',CHECKER_ID ='',APPROVE_DT =NULL, MAKER_ID_KT =NULL, CREATE_DT_KT = NULL, APPROVE_DT_KT =NULL WHERE REQ_PAY_ID =@p_TRN_ID
SET @p_MESSAGE =N'Phiếu đề nghị tạm ứng được trả về về thành công'
--NEU PHIEU DANG TRONG QUA TRINH PHE DUYET THI XOA TOAN BO PL_PROCESS VA PL_REQUEST_PROCESS
-- XOA CAC CAP PHE DUYET, KHI DON VI THUC HIEN CHINH SUA THI HE THONG SE INSERT LAI
DELETE FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_TRN_ID
DELETE FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_TRN_ID
--DELETE FROM PL_PROCESS WHERE REQ_ID =@p_TRN_ID
-- INSERT VAO BANG PL_PROCESS 1 DONG TRA VE
INSERT INTO dbo.PL_PROCESS
(
REQ_ID,
PROCESS_ID,
CHECKER_ID,
APPROVE_DT,
PROCESS_DESC,NOTES
)
VALUES
( @p_TRN_ID, -- REQ_ID - varchar(15)
'REJECT', -- PROCESS_ID - varchar(10)
@p_REJECTED_BY, -- CHECKER_ID - varchar(15)
GETDATE(), -- APPROVE_DT - datetime
@p_REASON ,N'Trả về' -- PROCESS_DESC - nvarchar(1000)
)
END
END
ELSE IF(@p_STAGE ='SUG')
BEGIN
UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P' WHERE REQ_ID=@p_TRN_ID AND TLNAME=@p_REJECTED_BY
DECLARE @LEVEL_JOB VARCHAR(5), @LEVEL_JOB_PREV INT
SET @LEVEL_JOB =(SELECT LEVEL_JOB FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_TRN_ID AND TLNAME=@p_REJECTED_BY)
SET @LEVEL_JOB_PREV = CONVERT(INT,@LEVEL_JOB) -1
UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='C' WHERE REQ_ID=@p_TRN_ID AND LEVEL_JOB = CONVERT(VARCHAR(5),@LEVEL_JOB_PREV)
-- CAP NHAT TINH TRANG VE DANG XU LY
UPDATE TR_REQ_ADVANCE_PAYMENT SET AUTH_STATUS_KT ='S' WHERE REQ_PAY_ID =@p_TRN_ID
INSERT INTO dbo.PL_PROCESS
(
REQ_ID,
PROCESS_ID,
CHECKER_ID,
APPROVE_DT,
PROCESS_DESC,NOTES
)
VALUES
( @p_TRN_ID, -- REQ_ID - varchar(15)
'REJECT', -- PROCESS_ID - varchar(10)
@p_REJECTED_BY, -- CHECKER_ID - varchar(15)
GETDATE(), -- APPROVE_DT - datetime
@p_REASON ,N'GDV đề xuất từ chối phiếu' -- PROCESS_DESC - nvarchar(1000)
)
SET @p_MESSAGE =N'Phiếu đề nghị tạm ứng được đề xuất từ chối thành công'
END
ELSE IF(@p_STAGE ='DEL')
BEGIN
UPDATE TR_REQ_ADVANCE_PAYMENT SET AUTH_STATUS_KT ='D',AUTH_STATUS ='D' WHERE REQ_PAY_ID =@p_TRN_ID
UPDATE TR_REQ_ADVANCE_PAYMENT SET AUTH_STATUS_KT ='D' WHERE REQ_PAY_ID =@p_TRN_ID
UPDATE TR_REQ_PAYMENT_DT SET AUTH_STATUS_KT ='D' WHERE PAY_ID =@p_TRN_ID
UPDATE TR_REQ_PAY_SCHEDULE SET AUTH_STATUS_KT='D' WHERE PAY_ID =@p_TRN_ID
UPDATE TR_REQ_PAY_PERIOD SET AUTH_STATUS_KT ='D' WHERE REQ_PAY_ID =@p_TRN_ID
---------------------------------------------------------------------------------------------------------------------
DECLARE CURS_TRADE CURSOR FOR SELECT A.TRADE_ID, A.AMT_EXE FROM TR_REQ_PAY_BUDGET A WHERE A.REQ_PAY_ID =@p_TRN_ID
OPEN CURS_TRADE
FETCH NEXT FROM CURS_TRADE INTO @TRADED_ID,@AMT_EXE
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE PL_TRADEDETAIL SET AMT_EXE = ISNULL(AMT_EXE,0) + @AMT_EXE
WHERE TRADE_ID =@TRADED_ID
FETCH NEXT FROM CURS_TRADE INTO @TRADED_ID,@AMT_EXE
END
CLOSE CURS_TRADE
DEALLOCATE CURS_TRADE
DECLARE CURS CURSOR FOR SELECT A.PAY_ADV_ID,A.AMT_USE,A.AMT_ADD,A.AMT_REVERT FROM TR_REQ_PAYMENT_DT A WHERE A.PAY_ID =@p_TRN_ID
OPEN CURS
FETCH NEXT FROM CURS INTO @PAY_ADVANCE_ID,@AMT_PAY,@AMT_ADD , @AMT_REVERT
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE TR_REQ_ADVANCE_PAYMENT
SET PAY_AMT = ISNULL(PAY_AMT,0) - @AMT_PAY - @AMT_REVERT + @AMT_ADD WHERE REQ_PAY_ID=@PAY_ADVANCE_ID
FETCH NEXT FROM CURS INTO @PAY_ADVANCE_ID,@AMT_PAY,@AMT_ADD , @AMT_REVERT
END
CLOSE CURS
DEALLOCATE CURS
INSERT INTO dbo.PL_PROCESS
(
REQ_ID,
PROCESS_ID,
CHECKER_ID,
APPROVE_DT,
PROCESS_DESC,NOTES
)
VALUES
( @p_TRN_ID, -- REQ_ID - varchar(15)
'DEL', -- PROCESS_ID - varchar(10)
@p_REJECTED_BY, -- CHECKER_ID - varchar(15)
GETDATE(), -- APPROVE_DT - datetime
@p_REASON ,N'KSV hủy phiếu' -- PROCESS_DESC - nvarchar(1000)
)
SET @p_MESSAGE =N'Phiếu đề nghị tạm ứng được hủy thành công. Bạn vẫn có thể xem thông tin giao dịch với tình trạng đã bị hủy'
END
END
END
-- END PHIEU DE NGHI TAM UNG 05 11 2019
-- START PHIEU DE THI THANH TOAN 19-11-2019
ELSE IF(@p_TRN_TYPE ='TR_REQ_PAY')
BEGIN
BEGIN
IF(@p_STAGE='KT')
BEGIN
IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_TRN_ID AND AUTH_STATUS_KT ='A' AND @p_STAGE ='KT'))
BEGIN
SET @p_MESSAGE =N'Hủy trả về thất bại!Phiếu đề nghị thanh toán đã được kế toán duyệt'
ROLLBACK TRANSACTION
SELECT '0' as Result, @p_LOG_ID LOG_ID ,@p_MESSAGE ErrorDesc
RETURN '0'
END
ELSE
BEGIN
--UPDATE MW_OUT SET KT_AUTH_STATUS ='R' WHERE OUT_ID =@p_TRN_ID
--SET @p_MESSAGE =N'Thông tin xuất sử dụng vật liệu đã được trả về thành công'
IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_TRN_ID AND MAKER_ID_KT IS NOT NULL AND MAKER_ID_KT <>''))
BEGIN
UPDATE TR_REQ_PAYMENT SET AUTH_STATUS_KT ='R' WHERE REQ_PAY_ID =@p_TRN_ID
SET @p_MESSAGE =N'Phiếu đề nghị thanh toán đã được trả về thành công'
---- CAP NHAT LAI TR_PROCESS_REQUEST_CHILD VE GIAO DICH VIEN
UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='C' WHERE TLNAME =(SELECT MAKER_ID_KT FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_TRN_ID)
AND REQ_ID =@p_TRN_ID
UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P' WHERE TLNAME =@p_REJECTED_BY AND REQ_ID =@p_TRN_ID
-- INSERT VAO BANG LICH SU
INSERT INTO dbo.PL_PROCESS
(
REQ_ID,
PROCESS_ID,
CHECKER_ID,
APPROVE_DT,
PROCESS_DESC,NOTES
)
VALUES
( @p_TRN_ID, -- REQ_ID - varchar(15)
'REJECT', -- PROCESS_ID - varchar(10)
@p_REJECTED_BY, -- CHECKER_ID - varchar(15)
GETDATE(), -- APPROVE_DT - datetime
@p_REASON ,N'KSV trả về cho GDV' -- PROCESS_DESC - nvarchar(1000)
)
END
ELSE
BEGIN
SET @p_STAGE ='HC'
UPDATE TR_REQ_PAYMENT SET AUTH_STATUS ='R',PROCESS ='',MAKER_ID_KT = NULL, CREATE_DT_KT =NULL, APPROVE_DT = NULL, CHECKER_ID = NULL WHERE REQ_PAY_ID =@p_TRN_ID
SET @p_MESSAGE =N'Phiếu đề nghị thanh toán đã được trả về đơn vị thành công'
-- XOA DI DU LIEU DA DIEU PHOI, CHO DON VI XU LY VA DUYET LAI SE DIEU PHOI LAI
---- CAP NHAT LAI TR_PROCESS_REQUEST_CHILD VE GIAO DICH VIEN
DELETE FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_TRN_ID
-- INSERT VAO BANG LICH SU
INSERT INTO dbo.PL_PROCESS
(
REQ_ID,
PROCESS_ID,
CHECKER_ID,
APPROVE_DT,
PROCESS_DESC,NOTES
)
VALUES
( @p_TRN_ID, -- REQ_ID - varchar(15)
'REJECT', -- PROCESS_ID - varchar(10)
@p_REJECTED_BY, -- CHECKER_ID - varchar(15)
GETDATE(), -- APPROVE_DT - datetime
@p_REASON ,N'Từ chối phiếu' -- PROCESS_DESC - nvarchar(1000)
)
SET @p_MESSAGE =N'Phiếu đề nghị thanh toán được từ chối thành công'
END
END
END
ELSE IF(@p_STAGE ='HC')
BEGIN
IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_TRN_ID AND AUTH_STATUS='A' AND @p_STAGE ='HC'AND (MAKER_ID_KT IS NULL OR MAKER_ID_KT ='')))
BEGIN
SET @p_MESSAGE =N'Hủy trả về thất bại!Phiếu đề nghị thanh toán đã được trưởng đơn vị duyệt'
ROLLBACK TRANSACTION
SELECT '0' as Result, @p_LOG_ID LOG_ID ,@p_MESSAGE ErrorDesc
RETURN '0'
END
ELSE
BEGIN
UPDATE TR_REQ_PAYMENT SET AUTH_STATUS ='R',PROCESS='',CHECKER_ID ='',APPROVE_DT =NULL, MAKER_ID_KT =NULL, CREATE_DT_KT = NULL, APPROVE_DT_KT =NULL WHERE REQ_PAY_ID =@p_TRN_ID
DELETE FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_TRN_ID
SET @p_MESSAGE =N'Phiếu đề nghị thanh toán được trả về về thành công'
-- INSERT VAO BANG LICH SU
INSERT INTO dbo.PL_PROCESS
(
REQ_ID,
PROCESS_ID,
CHECKER_ID,
APPROVE_DT,
PROCESS_DESC,NOTES
)
VALUES
( @p_TRN_ID, -- REQ_ID - varchar(15)
'REJECT', -- PROCESS_ID - varchar(10)
@p_REJECTED_BY, -- CHECKER_ID - varchar(15)
GETDATE(), -- APPROVE_DT - datetime
@p_REASON,N'Trả về' -- PROCESS_DESC - nvarchar(1000)
)
END
END
ELSE IF(@p_STAGE ='SUG')
BEGIN
UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P' WHERE REQ_ID=@p_TRN_ID AND TLNAME=@p_REJECTED_BY
DECLARE @LEVEL_JOB_PAY VARCHAR(5), @LEVEL_JOB_PREV_PAY INT
SET @LEVEL_JOB_PAY =(SELECT LEVEL_JOB FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_TRN_ID AND TLNAME=@p_REJECTED_BY)
SET @LEVEL_JOB_PREV_PAY = CONVERT(INT,@LEVEL_JOB_PAY) -1
UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='C' WHERE REQ_ID=@p_TRN_ID AND LEVEL_JOB = CONVERT(VARCHAR(5),@LEVEL_JOB_PREV_PAY)
UPDATE TR_REQ_PAYMENT SET AUTH_STATUS_KT ='S' WHERE REQ_PAY_ID =@p_TRN_ID
INSERT INTO dbo.PL_PROCESS
(
REQ_ID,
PROCESS_ID,
CHECKER_ID,
APPROVE_DT,
PROCESS_DESC,NOTES
)
VALUES
( @p_TRN_ID, -- REQ_ID - varchar(15)
'SUG', -- PROCESS_ID - varchar(10)
@p_REJECTED_BY, -- CHECKER_ID - varchar(15)
GETDATE(), -- APPROVE_DT - datetime
@p_REASON ,N'GDV đề xuất từ chối phiếu' -- PROCESS_DESC - nvarchar(1000)
)
SET @p_MESSAGE =N'Phiếu đề nghị thanh toán được đề xuất từ chối thành công'
END
ELSE IF(@p_STAGE ='DEL')
BEGIN
--UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P' WHERE REQ_ID=@p_TRN_ID AND TLNAME=@p_REJECTED_BY
--DECLARE @LEVEL_JOB_PAY VARCHAR(5), @LEVEL_JOB_PREV_PAY INT
--SET @LEVEL_JOB_PAY =(SELECT LEVEL_JOB FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_TRN_ID AND TLNAME=@p_REJECTED_BY)
--SET @LEVEL_JOB_PREV_PAY = CONVERT(INT,@LEVEL_JOB_PAY) -1
--UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='C' WHERE REQ_ID=@p_TRN_ID AND LEVEL_JOB = CONVERT(VARCHAR(5),@LEVEL_JOB_PREV_PAY)
UPDATE TR_REQ_PAYMENT SET AUTH_STATUS_KT ='D',AUTH_STATUS ='D' WHERE REQ_PAY_ID =@p_TRN_ID
UPDATE TR_REQ_PAYMENT SET AUTH_STATUS_KT ='D' WHERE REQ_PAY_ID =@p_TRN_ID
UPDATE TR_REQ_PAYMENT_DT SET AUTH_STATUS_KT ='D' WHERE PAY_ID =@p_TRN_ID
UPDATE TR_REQ_PAY_SCHEDULE SET AUTH_STATUS_KT='D' WHERE PAY_ID =@p_TRN_ID
---------------------------------------------------------------------------------------------------------------------
--DECLARE @TRADED_ID VARCHAR(15), @AMT_EXE DECIMAL(18,0)
DECLARE CURS_TRADE CURSOR FOR SELECT A.TRADE_ID, A.AMT_EXE FROM TR_REQ_PAY_BUDGET A WHERE A.REQ_PAY_ID =@p_TRN_ID
OPEN CURS_TRADE
FETCH NEXT FROM CURS_TRADE INTO @TRADED_ID,@AMT_EXE
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE PL_TRADEDETAIL SET AMT_EXE = ISNULL(AMT_EXE,0) + @AMT_EXE
WHERE TRADE_ID =@TRADED_ID
FETCH NEXT FROM CURS_TRADE INTO @TRADED_ID,@AMT_EXE
END
CLOSE CURS_TRADE
DEALLOCATE CURS_TRADE
-- XOA NGAN SACH
--DELETE FROM TR_REQ_PAY_BUDGET WHERE REQ_PAY_ID= @p_TRN_ID
--- NEU LA TAM UNG NOI BO THI PHAI REVERT LAI SO TIEN DA HOAN UNG CUA PHIEU DE NGHI TAM UNG
--DECLARE @PAY_ADVANCE_ID VARCHAR(15), @AMT_PAY DECIMAL(18,0), @AMT_REVERT DECIMAL(18,0), @AMT_ADD DECIMAL(18,0)
DECLARE CURS CURSOR FOR SELECT A.PAY_ADV_ID,A.AMT_USE,A.AMT_ADD,A.AMT_REVERT FROM TR_REQ_PAYMENT_DT A WHERE A.PAY_ID =@p_TRN_ID
OPEN CURS
FETCH NEXT FROM CURS INTO @PAY_ADVANCE_ID,@AMT_PAY,@AMT_ADD , @AMT_REVERT
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE TR_REQ_ADVANCE_PAYMENT
SET PAY_AMT = ISNULL(PAY_AMT,0) - @AMT_PAY - @AMT_REVERT + @AMT_ADD WHERE REQ_PAY_ID=@PAY_ADVANCE_ID
FETCH NEXT FROM CURS INTO @PAY_ADVANCE_ID,@AMT_PAY,@AMT_ADD , @AMT_REVERT
END
CLOSE CURS
DEALLOCATE CURS
---- XOA DI SO TIEN DA HOAN UNG CUA KI THANH TOAN NEU THANH TOAN NHA CUNG CAP VUA HOAN UNG DOT CŨ VÀ VỪA THANH TOÁN ĐỢT MỚI
--DECLARE @REQ_PAY_ID VARCHAR(15), @AMT_REAL DECIMAL(18,0)
--DECLARE CURS_SCHE CURSOR FOR SELECT A.REQ_PAY_ID, A.AMT_PAY_REAL FROM TR_REQ_PAY_SCHEDULE A WHERE A.REQ_PAY_ID =@p_TRN_ID
--OPEN CURS_SCHE
-- FETCH NEXT FROM CURS_TRADE INTO @TRADED_ID,@AMT_EXE
-- WHILE @@FETCH_STATUS = 0
-- BEGIN
-- UPDATE PL_TRADEDETAIL SET AMT_EXE = ISNULL(AMT_EXE,0) + @AMT_EXE
-- WHERE TRADE_ID =@TRADED_ID
-- FETCH NEXT FROM CURS_SCHE INTO @TRADED_ID,@AMT_EXE
-- END
--CLOSE CURS_SCHE
--DEALLOCATE CURS_SCHE
INSERT INTO dbo.PL_PROCESS
(
REQ_ID,
PROCESS_ID,
CHECKER_ID,
APPROVE_DT,
PROCESS_DESC,NOTES
)
VALUES
( @p_TRN_ID, -- REQ_ID - varchar(15)
'DEL', -- PROCESS_ID - varchar(10)
@p_REJECTED_BY, -- CHECKER_ID - varchar(15)
GETDATE(), -- APPROVE_DT - datetime
@p_REASON ,N'KSV hủy phiếu' -- PROCESS_DESC - nvarchar(1000)
)
SET @p_MESSAGE =N'Phiếu đề nghị thanh toán được hủy thành công. Bạn vẫn có thể xem thông tin giao dịch với tình trạng đã bị hủy'
END
END
END
-- END PHIEU DE THI THANH TOAN 19-11-2019
--- Tờ trình chủ trương
ELSE IF(@p_TRN_TYPE='PL_REQUEST_DOC')
BEGIN IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_TRN_ID AND PROCESS_ID='APPROVE'))
BEGIN
SET @p_MESSAGE =N'Trả về thất bại! Tờ trình chủ trương đã được duyệt'
ROLLBACK TRANSACTION
SELECT '0' as Result, @p_LOG_ID LOG_ID ,@p_MESSAGE ErrorDesc
RETURN '0'
END
ELSE
BEGIN
UPDATE dbo.PL_REQUEST_DOC SET PROCESS_ID='REJECT',AUTH_STATUS='R' WHERE REQ_ID=@p_TRN_ID
INSERT INTO dbo.PL_PROCESS
(
REQ_ID,
PROCESS_ID,
CHECKER_ID,
APPROVE_DT,
PROCESS_DESC,NOTES
)
VALUES
( @p_TRN_ID, -- REQ_ID - varchar(15)
'REJECT', -- PROCESS_ID - varchar(10)
@p_REJECTED_BY, -- CHECKER_ID - varchar(15)
GETDATE(), -- APPROVE_DT - datetime
@p_REASON ,N'Từ chối phiếu' -- PROCESS_DESC - nvarchar(1000)
)
SET @p_MESSAGE =N'Tờ trình chủ trương đã được trả về thành công'
-- 28-10-2020 LUCTV, KHI TRA VE PHAI GO PL_REQUEST_PROCESS
UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='R',NOTES=N'Tờ trình bị trả về' WHERE PROCESS_ID='APPNEW' AND REQ_ID=@p_TRN_ID
UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='R',NOTES=N'Phiếu bị trả về' WHERE PROCESS_ID='SIGN' AND REQ_ID=@p_TRN_ID
END
END
ELSE IF(@p_TRN_TYPE='TR_REQUEST_DOC')
BEGIN
--IF(@p_STAGE='DVMS')
--BEGIN
--END
IF(@p_STAGE='PDYC' OR @p_STAGE ='DV')
BEGIN
IF(EXISTS(SELECT * FROM dbo.TR_REQUEST_DOC WHERE REQ_ID=@p_TRN_ID AND PROCESS_ID='APPROVE'))
BEGIN
SET @p_MESSAGE =N'Trả về thất bại! Phiếu yêu cầu đã được duyệt'
ROLLBACK TRANSACTION
SELECT '0' as Result, @p_LOG_ID LOG_ID ,@p_MESSAGE ErrorDesc
RETURN '0'
END
ELSE
BEGIN
UPDATE dbo.TR_REQUEST_DOC SET PROCESS_ID='REJECT', AUTH_STATUS ='R' WHERE REQ_ID=@p_TRN_ID
INSERT INTO dbo.PL_PROCESS
(
REQ_ID,
PROCESS_ID,
CHECKER_ID,
APPROVE_DT,
PROCESS_DESC,NOTES
)
VALUES
( @p_TRN_ID, -- REQ_ID - varchar(15)
'REJECT', -- PROCESS_ID - varchar(10)
@p_REJECTED_BY, -- CHECKER_ID - varchar(15)
GETDATE(), -- APPROVE_DT - datetime
@p_REASON ,N'Từ chối phiếu' -- PROCESS_DESC - nvarchar(1000)
)
SET @p_MESSAGE =N'Phiếu yêu cầu mua sắm đã được trả về thành công'
-- 28-10-2020 LUCTV, KHI TRA VE PHAI GO PL_REQUEST_PROCESS
UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='R',NOTES=N'Phiếu bị trả về' WHERE PROCESS_ID='APPNEW' AND REQ_ID=@p_TRN_ID
UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='R',NOTES=N'Phiếu bị trả về' WHERE PROCESS_ID='SIGN' AND REQ_ID=@p_TRN_ID
END
END
END
-- END IF
-- NEU LA TRA VE CUA HOP DONG
ELSE IF(@p_TRN_TYPE='TR_CONTRACT')
BEGIN
--- CAP NHAT AUTH_STATUS CUA HOP DONG VE R
IF(EXISTS(SELECT * FROM TR_CONTRACT WHERE CONTRACT_ID =@p_TRN_ID AND AUTH_STATUS='R'))
BEGIN
SET @p_MESSAGE =N'Trả về thất bại! Hợp đồng đã được trả về trước đó. Vui lòng đợi nhân viên cập nhật thông tin và bấm gửi phê duyệt'
ROLLBACK TRANSACTION
SELECT '0' as Result, @p_LOG_ID LOG_ID ,@p_MESSAGE ErrorDesc
RETURN '0'
END
IF(EXISTS(SELECT * FROM TR_CONTRACT WHERE CONTRACT_ID =@p_TRN_ID AND AUTH_STATUS='A'))
BEGIN
SET @p_MESSAGE =N'Trả về thất bại! Hợp đồng đã được phê duyệt thành công trước đó!'
ROLLBACK TRANSACTION
SELECT '0' as Result, @p_LOG_ID LOG_ID ,@p_MESSAGE ErrorDesc
RETURN '0'
END
UPDATE TR_CONTRACT SET AUTH_STATUS ='R' WHERE CONTRACT_ID =@p_TRN_ID
INSERT INTO dbo.PL_PROCESS
(
REQ_ID,
PROCESS_ID,
CHECKER_ID,
APPROVE_DT,
PROCESS_DESC,NOTES
)
VALUES
( @p_TRN_ID, -- REQ_ID - varchar(15)
'REJECT', -- PROCESS_ID - varchar(10)
@p_REJECTED_BY, -- CHECKER_ID - varchar(15)
GETDATE(), -- APPROVE_DT - datetime
@p_REASON ,N'Từ chối phiếu' -- PROCESS_DESC - nvarchar(1000)
)
SET @p_MESSAGE =N'Hợp đồng đã được trả về thành công'
END
-- NEU LA TRA VE CUA HOP DONG
ELSE IF(@p_TRN_TYPE='TR_PO')
BEGIN
--- CAP NHAT AUTH_STATUS CUA HOP DONG VE R
IF(EXISTS(SELECT * FROM TR_PO_MASTER WHERE CONTRACT_ID =@p_TRN_ID AND AUTH_STATUS='R'))
BEGIN
SET @p_MESSAGE =N'Trả về thất bại! PO đã được trả về trước đó. Vui lòng đợi nhân viên cập nhật thông tin và bấm gửi phê duyệt'
ROLLBACK TRANSACTION
SELECT '0' as Result, @p_LOG_ID LOG_ID ,@p_MESSAGE ErrorDesc
RETURN '0'
END
IF(EXISTS(SELECT * FROM TR_PO_MASTER WHERE CONTRACT_ID =@p_TRN_ID AND AUTH_STATUS='A'))
BEGIN
SET @p_MESSAGE =N'Trả về thất bại! PO đã được phê duyệt thành công trước đó!'
ROLLBACK TRANSACTION
SELECT '0' as Result, @p_LOG_ID LOG_ID ,@p_MESSAGE ErrorDesc
RETURN '0'
END
UPDATE TR_PO_MASTER SET AUTH_STATUS ='R' WHERE PO_ID =@p_TRN_ID
INSERT INTO dbo.PL_PROCESS
(
REQ_ID,
PROCESS_ID,
CHECKER_ID,
APPROVE_DT,
PROCESS_DESC,NOTES
)
VALUES
( @p_TRN_ID, -- REQ_ID - varchar(15)
'REJECT', -- PROCESS_ID - varchar(10)
@p_REJECTED_BY, -- CHECKER_ID - varchar(15)
GETDATE(), -- APPROVE_DT - datetime
@p_REASON ,N'Từ chối phiếu' -- PROCESS_DESC - nvarchar(1000)
)
SET @p_MESSAGE =N'PO đã được trả về thành công'
END
--- KET THUC TRA VE PO
ELSE
BEGIN
SET @p_MESSAGE =N'Trả về giao dịch thành công'
END
---BAODNQ 28/12/2021: Thêm xử lý trả về cho phân hệ quản lý cho thuê------
-------Khai báo DTSD nội bộ-------
IF(@p_TRN_TYPE ='BUD_INTERNAL')
--BEGIN ELSE IF---
BEGIN
IF(EXISTS (SELECT * FROM BUD_CONTRACT_MASTER WHERE CONTRACT_ID =@p_TRN_ID AND AUTH_STATUS ='A'))
BEGIN
SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin khai báo DTSD nội bộ đã được duyệt'
ROLLBACK TRANSACTION
SELECT '0' as Result, @p_LOG_ID LOG_ID ,@p_MESSAGE ErrorDesc
RETURN '0'
END
UPDATE BUD_CONTRACT_MASTER
SET AUTH_STATUS ='R',
---BAODNQ 31/12/2021: Gán IS_SEND_APPR = 'N' khi bị trả về------
IS_SEND_APPR = 'N'
WHERE CONTRACT_ID=@p_TRN_ID
SET @p_MESSAGE =N'Thông tin khai báo DTSD nội bộ đã được trả về thành công'
---END ELSE IF---
END
-------Quản lý hợp đồng khách thuê-------
ELSE IF(@p_TRN_TYPE ='BUD_RENTAL')
--BEGIN ELSE IF---
BEGIN
IF(EXISTS (SELECT * FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_ID =@p_TRN_ID AND AUTH_STATUS ='A'))
BEGIN
SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin khai báo DT cho khách thuê đã được duyệt'
ROLLBACK TRANSACTION
SELECT '0' as Result, @p_LOG_ID LOG_ID ,@p_MESSAGE ErrorDesc
RETURN '0'
END
UPDATE BUD_CONTRACT_CUST_MASTER
SET AUTH_STATUS ='R',
---BAODNQ 31/12/2021: Gán IS_SEND_APPR = 'N' khi bị trả về------
IS_SEND_APPR = 'N'
WHERE CONTRACT_ID=@p_TRN_ID
SET @p_MESSAGE =N'Thông tin khai báo DT cho khách thuê đã được trả về thành công'
---END ELSE IF---
END
---datmq 28/12/2021: Thêm xử lý trả về cho phân hệ quản lý cho thuê------
-------Quản lý trụ sở-------
ELSE IF(@p_TRN_TYPE ='BUD_MASTER')
--BEGIN ELSE IF---
BEGIN
IF(EXISTS (SELECT * FROM BUD_MASTER WHERE BUILDING_ID =@p_TRN_ID AND AUTH_STATUS ='A'))
BEGIN
SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin quản lý cho thuê đã được duyệt'
ROLLBACK TRANSACTION
SELECT '0' as Result, @p_LOG_ID LOG_ID ,@p_MESSAGE ErrorDesc
RETURN '0'
END
---BAODNQ 26/1/2021: Gán IS_SEND_APPR = 'N' khi bị trả về------
UPDATE BUD_MASTER SET AUTH_STATUS ='R', IS_SEND_APPR = 'N'
WHERE BUILDING_ID=@p_TRN_ID
SET @p_MESSAGE =N'Thông tin quản lý trụ sở đã được trả về thành công'
---END ELSE IF---
END
---doanptt 10/02/2022: Thêm xử lý trả về cho phân hệ quản lý thanh toán/ tạm ứng------
ELSE IF(@p_TRN_TYPE ='TR_REQ_PAY')
BEGIN
IF(@p_STAGE='HC')
BEGIN
IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_TRN_ID AND AUTH_STATUS = 'A' AND @p_STAGE ='HC'))
BEGIN
SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin nhập mới phiếu đề nghị thanh toán đã được hành chính duyệt'
ROLLBACK TRANSACTION
SELECT '0' as Result, @p_LOG_ID LOG_ID ,@p_MESSAGE ErrorDesc
RETURN '0'
END
ELSE
BEGIN
--UPDATE MW_IN_MASTER SET AUTH_STATUS_KT ='R' WHERE IN_ID =@p_TRN_ID
--SET @p_MESSAGE =N'Thông tin nhập mới vật liệu đã được trả về thành công'
IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_TRN_ID AND MAKER_ID IS NOT NULL AND MAKER_ID <>''))
BEGIN
UPDATE TR_REQ_PAYMENT SET AUTH_STATUS ='R' WHERE REQ_PAY_ID =@p_TRN_ID
SET @p_MESSAGE =N'Thông tin nhập mới phiếu đề nghị thanh toán đã được trả về thành công'
END
/*ELSE
BEGIN
SET @p_STAGE ='HC'
UPDATE MW_IN_MASTER SET AUTH_STATUS ='R' WHERE IN_ID =@p_TRN_ID
SET @p_MESSAGE =N'Thông tin nhập mới vật liệu đã được trả về hành chính thành công'
END*/
END
END
END
---doanptt 10/02/2022: Thêm xử lý trả về cho phân hệ quản lý thanh toán/ tạm ứng------
ELSE IF(@p_TRN_TYPE ='TR_REQ_ADVACNE_PAY')
BEGIN
IF(@p_STAGE='HC')
BEGIN
IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_TRN_ID AND AUTH_STATUS = 'A' AND @p_STAGE ='HC'))
BEGIN
SET @p_MESSAGE =N'Hủy trả về thất bại!Thông tin nhập mới phiếu đề nghị tạm ứng đã được hành chính duyệt'
ROLLBACK TRANSACTION
SELECT '0' as Result, @p_LOG_ID LOG_ID ,@p_MESSAGE ErrorDesc
RETURN '0'
END
ELSE
BEGIN
--UPDATE MW_IN_MASTER SET AUTH_STATUS_KT ='R' WHERE IN_ID =@p_TRN_ID
--SET @p_MESSAGE =N'Thông tin nhập mới vật liệu đã được trả về thành công'
IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_TRN_ID AND MAKER_ID IS NOT NULL AND MAKER_ID <>''))
BEGIN
UPDATE TR_REQ_PAYMENT SET AUTH_STATUS ='R' WHERE REQ_PAY_ID =@p_TRN_ID
SET @p_MESSAGE =N'Thông tin nhập mới phiếu đề nghị tạm ứng đã được trả về thành công'
END
/*ELSE
BEGIN
SET @p_STAGE ='HC'
UPDATE MW_IN_MASTER SET AUTH_STATUS ='R' WHERE IN_ID =@p_TRN_ID
SET @p_MESSAGE =N'Thông tin nhập mới vật liệu đã được trả về hành chính thành công'
END*/
END
END
END
--- INSERT VAO BANG CM_REJECT_LOG
EXEC SYS_CodeMasters_Gen 'CM_REJECT_LOG', @p_LOG_ID out
IF @p_LOG_ID='' OR @p_LOG_ID IS NULL GOTO ABORT
INSERT INTO [dbo].[CM_REJECT_LOG] VALUES (@p_LOG_ID,@p_STAGE,@p_TRN_ID,@p_TRN_TYPE,CONVERT(DATETIME,GETDATE(),103),'R',@p_REASON,'Y',@p_REJECTED_BY,CONVERT(DATETIME,GETDATE(),103))
IF @@Error <> 0 GOTO ABORT
COMMIT TRANSACTION
SELECT '0' as Result, @p_LOG_ID LOG_ID ,@p_MESSAGE ErrorDesc
RETURN '0'
ABORT:
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' LOG_ID, '' ErrorDesc
RETURN '-1'
END
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Creating [dbo].[BUD_MASTER_SendAppr]'
GO
CREATE PROCEDURE [dbo].[BUD_MASTER_SendAppr]
@p_BUILDING_ID VARCHAR(15) = NULL,
@p_USER_LOGIN VARCHAR(15) = NULL,
@p_SEND_APPR_DT VARCHAR(20) = NULL
AS
BEGIN TRANSACTION
UPDATE BUD_MASTER SET IS_SEND_APPR = 'Y',
SEND_APPR_DT = CONVERT(DATETIME, @p_SEND_APPR_DT, 103)
WHERE BUILDING_ID = @p_BUILDING_ID
IF @@ERROR <> 0 GOTO ABORT
DECLARE @l_IS_SEND_APPR VARCHAR(15)
SET @l_IS_SEND_APPR = (SELECT IS_SEND_APPR FROM BUD_MASTER WHERE BUILDING_ID = @p_BUILDING_ID)
INSERT INTO dbo.PL_PROCESS(REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES)
VALUES(@p_BUILDING_ID, 'SEND', @p_USER_LOGIN, GETDATE(),
N'Người tạo gửi phê duyệt thành công', N'Người tạo gửi phê duyệt')
IF @@ERROR <> 0 GOTO ABORT
COMMIT TRANSACTION
SELECT '0' as Result, '' BUILDING_ID, @l_IS_SEND_APPR IS_SEND_APPR,
N'Thông tin trụ sở: '+(SELECT BUILDING_NAME FROM BUD_MASTER WHERE BUILDING_ID = @p_BUILDING_ID)+
N' đã được gửi phê duyệt thành công. Vui lòng đợi cấp phê duyệt trung gian xác nhận.' ErrorDesc
RETURN '0'
ABORT:
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' BUILDING_ID, '' ErrorDesc
RETURN '-1'
END
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Altering [dbo].[ASS_TYPE_Lis]'
GO
/*
[ASS_TYPE_Lis]
*/
ALTER PROCEDURE [dbo].[ASS_TYPE_Lis]
AS
BEGIN
SELECT * FROM ASS_TYPE WHERE AUTH_STATUS = 'A'
End
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Creating [dbo].[rpt_BUD_UTILIZED_EFFICIENT_ALL_Excel]'
GO
CREATE PROC [dbo].[rpt_BUD_UTILIZED_EFFICIENT_ALL_Excel]
@p_BRANCH_ID VARCHAR(15) = NULL,
@p_DEP_ID VARCHAR(15) = NULL,
@p_FROM_DT VARCHAR(20) = NULL,
@p_TO_DT VARCHAR(20) = NULL
AS
BEGIN
DECLARE @AUTH_CONTRACT TABLE (CONTRACT_ID VARCHAR(15))
INSERT INTO @AUTH_CONTRACT
SELECT CONTRACT_ID FROM BUD_CONTRACT_MASTER
WHERE AUTH_STATUS = 'A'
AND (CONVERT(DATE, INPUT_DT, 103) >= CONVERT(DATE, @p_FROM_DT, 103) OR @p_FROM_DT IS NULL OR @p_FROM_DT = '')
AND (CONVERT(DATE, AMEND_DT, 103 ) <= CONVERT(DATE, @p_TO_DT, 103) OR @p_TO_DT IS NULL OR @p_TO_DT = '')
UNION ALL
SELECT A1.CONTRACT_ID FROM BUD_CONTRACT_CUST_MASTER A1
INNER JOIN TR_CONTRACT B1 ON A1.TR_CONTRACT_ID = B1.CONTRACT_ID
WHERE A1.AUTH_STATUS = 'A'
AND (CONVERT(DATE, B1.START_DT, 103) >= CONVERT(DATE, @p_FROM_DT, 103) OR @p_FROM_DT IS NULL OR @p_FROM_DT = '')
AND (CONVERT(DATE, B1.END_DT, 103 ) <= CONVERT(DATE, @p_TO_DT, 103) OR @p_TO_DT IS NULL OR @p_TO_DT = '')
SELECT
ROW_NUMBER() OVER(ORDER BY A.BUILDING_ID) AS STT,
C.BRANCH_NAME AS BRANCH,
A.BUILDING_NAME,
A.ADDRESS,
ISNULL(A.TOTAL_AREA,0) AS TOTAL_AREA,
(
--SELECT ISNULL(SUM(INTERNAL_AREA) + SUM(UTILZED_AREA),0)
--FROM BUD_AREA_DT
--WHERE BUILD_ID = A.BUILDING_ID
(SELECT ISNULL(SUM(DIEN_TICH_CAN_SD),0)
FROM BUD_CONTRACT_DT
WHERE BUILD_ID = A.BUILDING_ID
AND CONTRACT_ID IN (SELECT CONTRACT_ID FROM @AUTH_CONTRACT))
+
(SELECT ISNULL(SUM(DIEN_TICH_CAN_CHOTHUE),0)
FROM BUD_CONTRACT_CUST_DT
WHERE BUILD_ID = A.BUILDING_ID
AND CONTRACT_ID IN (SELECT CONTRACT_ID FROM @AUTH_CONTRACT))
)
AS DT_DA_CHO_THUE,
(
--A.TOTAL_AREA -
--(SELECT ISNULL(SUM(INTERNAL_AREA) + SUM(UTILZED_AREA),0)
--FROM BUD_AREA_DT
--WHERE BUILD_ID = A.BUILDING_ID)
A.TOTAL_AREA -
(
(SELECT ISNULL(SUM(DIEN_TICH_CAN_SD),0)
FROM BUD_CONTRACT_DT
WHERE BUILD_ID = A.BUILDING_ID
AND CONTRACT_ID IN (SELECT CONTRACT_ID FROM @AUTH_CONTRACT))
+
(SELECT ISNULL(SUM(DIEN_TICH_CAN_CHOTHUE),0)
FROM BUD_CONTRACT_CUST_DT
WHERE BUILD_ID = A.BUILDING_ID
AND CONTRACT_ID IN (SELECT CONTRACT_ID FROM @AUTH_CONTRACT))
)
)
AS DT_CON_LAI,
(
(SELECT ISNULL(SUM(TOTAL_AMT),0) FROM BUD_CONTRACT_DT
WHERE BUILD_ID = A.BUILDING_ID
AND CONTRACT_ID IN (SELECT CONTRACT_ID FROM @AUTH_CONTRACT))
+
(SELECT ISNULL(SUM(TOTAL_AMT),0) FROM BUD_CONTRACT_CUST_DT
WHERE BUILD_ID = A.BUILDING_ID
AND CONTRACT_ID IN (SELECT CONTRACT_ID FROM @AUTH_CONTRACT))
) / 1000000
AS THU_NHAP,
'' AS GIA_TRI_DA_KHAU_HAO,
'' AS GIA_TRI_KHAU_HAO_CON_LAI
FROM BUD_MASTER A
LEFT JOIN CM_BRANCH C ON A.BRANCH_ID = C.BRANCH_ID
WHERE 1=1
AND A.AUTH_STATUS = 'A'
AND A.RECORD_STATUS = '1'
END
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Altering [dbo].[BUD_MASTER_Upd]'
GO
ALTER PROCEDURE [dbo].[BUD_MASTER_Upd]
@p_BUILDING_ID varchar(15) = null ,
@p_ASSET_ID varchar(15) = NULL ,
@p_BUILDING_NAME nvarchar(1000) = NULL ,
@p_BRANCH_ID varchar(15) = NULL ,
@p_ADDRESS nvarchar(800) = NULL ,
@p_OWNER_OR_RENT varchar(1) = NULL ,
@p_NUM_FLOOR int = NULL,
@p_AREA numeric(17) = NULL ,
@p_TOTAL_AREA numeric(17) = NULL ,
@p_RENT_TOTAL_AREA numeric(17) = NULL ,
@p_UTILZED_AREA numeric(17) = NULL ,
@p_NOTES nvarchar(1000) = NULL ,
@p_RECORD_STATUS varchar(1) = NULL ,
@p_AUTH_STATUS varchar(1) = NULL ,
@p_MAKER_ID varchar(15) = NULL ,
@p_CREATE_DT VARCHAR(20) = NULL,
@p_CHECKER_ID varchar(15) = NULL ,
@p_APPROVE_DT VARCHAR(20) = NULL,
@p_XML_TEMP xml = NULL,
@p_RENT_AMT DECIMAL(18,0) =NULL,
@p_DEPOSITS_AMT DECIMAL(18,0) =NULL,
@p_RENT_TIME int,
@p_IS_SEND_APPR VARCHAR(15),
@p_SEND_APPR_DT VARCHAR(20),
@p_SIGN_USER VARCHAR(15),
@p_SIGN_DT VARCHAR(15)
AS
/*
--Validation is here
DECLARE @ERRORSYS NVARCHAR(15) = ''
IF ( NOT EXISTS ( SELECT * FROM BUD_MASTER WHERE BUILDING_ID=@p_BUILDING_ID
SET @ERRORSYS = ''
IF @ERRORSYS <> ''
BEGIN
SELECT ErrorCode Result, ''BUILDING_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS
RETURN '0'
END
*/
BEGIN TRANSACTION
UPDATE BUD_MASTER SET [ASSET_ID] = @p_ASSET_ID,[BUILDING_NAME] = @p_BUILDING_NAME,
[BRANCH_ID] = @p_BRANCH_ID,[ADDRESS] = @p_ADDRESS,
[OWNER_OR_RENT] = @p_OWNER_OR_RENT,[NUM_FLOOR] = @p_NUM_FLOOR,
[AREA] = @p_AREA,[TOTAL_AREA] = @p_TOTAL_AREA,
[RENT_TOTAL_AREA] = @p_RENT_TOTAL_AREA,
[UTILZED_AREA] = @p_UTILZED_AREA,[NOTES] = @p_NOTES,
[RECORD_STATUS] = @p_RECORD_STATUS,[AUTH_STATUS] = @p_AUTH_STATUS,
[MAKER_ID] = @p_MAKER_ID,[CREATE_DT] = CONVERT(DATETIME, @p_CREATE_DT, 103),
[CHECKER_ID] = @p_CHECKER_ID,[APPROVE_DT] = CONVERT(DATETIME, @p_APPROVE_DT, 103),
[XML_TEMP] = @p_XML_TEMP,
[RENT_AMT]=@p_RENT_AMT,
[DEPOSITS_AMT] =@p_DEPOSITS_AMT,
[RENT_TIME] =@p_RENT_TIME,
[IS_SEND_APPR] = @p_IS_SEND_APPR,
[SEND_APPR_DT] = @p_SEND_APPR_DT,
[SIGN_USER] = @p_SIGN_USER,
[SIGN_DT]= @p_SIGN_DT
WHERE BUILDING_ID= @p_BUILDING_ID
IF @@Error <> 0 GOTO ABORT
DELETE FROM BUD_AREA_DT WHERE BUILD_ID =@p_BUILDING_ID
Declare @hdoc1 INT
DECLARE @d_BUILDING_AREA_ID VARCHAR(15),
@d_FLOOR_NO INT,
@d_FLOOR_AREA decimal,
@d_INTERNAL_AREA decimal,
@d_RENT_AREA decimal,
@d_UTILZED_AREA decimal,
@d_NOTES NVARCHAR(1000)
Exec sp_xml_preparedocument @hdoc1 Output,@p_XML_TEMP
DECLARE XmlDataDoc CURSOR FOR
SELECT *
FROM OPENXML(@hdoc1,'/Root/XmlData1',2)
WITH
(
BUILDING_AREA_ID VARCHAR(15),
FLOOR_NO INT,
FLOOR_AREA decimal,
INTERNAL_AREA decimal,
RENT_AREA decimal,
UTILZED_AREA decimal,
NOTES NVARCHAR(1000)
)
OPEN XmlDataDoc
FETCH NEXT FROM XmlDataDoc INTO
@d_BUILDING_AREA_ID ,
@d_FLOOR_NO ,
@d_FLOOR_AREA ,
@d_INTERNAL_AREA ,
@d_RENT_AREA ,
@d_UTILZED_AREA ,
@d_NOTES
WHILE @@FETCH_STATUS = 0
BEGIN
IF(LEN( @d_BUILDING_AREA_ID)=0)
EXEC SYS_CodeMasters_Gen 'BUD_AREA_DT', @d_BUILDING_AREA_ID out
IF @d_BUILDING_AREA_ID='' OR @d_BUILDING_AREA_ID IS NULL GOTO ABORT
INSERT INTO BUD_AREA_DT([BUILDING_AREA_ID],[BUILD_ID],[FLOOR_NO],[FLOOR_AREA],[INTERNAL_AREA],
[RENT_AREA],[UTILZED_AREA],[NOTES],[RECORD_STATUS],[AUTH_STATUS],[MAKER_ID],[CREATE_DT],[CHECKER_ID],[APPROVE_DT])
VALUES(@d_BUILDING_AREA_ID ,@p_BUILDING_ID ,@d_FLOOR_NO ,@d_FLOOR_AREA ,@d_INTERNAL_AREA ,0 ,
@d_UTILZED_AREA ,@d_NOTES,@p_RECORD_STATUS ,@p_AUTH_STATUS ,@p_MAKER_ID ,CONVERT(DATETIME, @p_CREATE_DT, 103) ,@p_CHECKER_ID ,CONVERT(DATETIME, @p_APPROVE_DT, 103) )
IF @@Error <> 0 GOTO ABORT
FETCH NEXT FROM XmlDataDoc INTO
@d_BUILDING_AREA_ID ,
@d_FLOOR_NO ,
@d_FLOOR_AREA ,
@d_INTERNAL_AREA ,
@d_RENT_AREA ,
@d_UTILZED_AREA ,
@d_NOTES
END
CLOSE XmlDataDoc
DEALLOCATE XmlDataDoc
-----**** UPDATE ----
--8/12/2021,datmq thêm UTILZED_AREA=(SELECT SUM(UTILZED_AREA))----
UPDATE BUD_MASTER
SET TOTAL_AREA = (SELECT SUM(FLOOR_AREA) FROM BUD_AREA_DT WHERE BUILD_ID=@p_BUILDING_ID),UTILZED_AREA=(SELECT SUM(UTILZED_AREA) FROM BUD_AREA_DT WHERE BUILD_ID=@p_BUILDING_ID)
WHERE BUILDING_ID=@p_BUILDING_ID
-- 29/12/2021:datmq Insert to table PL_PROCESS
INSERT INTO dbo.PL_PROCESS
(
REQ_ID,
PROCESS_ID,
CHECKER_ID,
APPROVE_DT,
PROCESS_DESC,
NOTES
)
VALUES
( @p_BUILDING_ID,
'UPDATE',
@p_MAKER_ID,
GETDATE(),
N'Cập nhật quản lý trụ sở thành công' ,
N'Cập nhật quản lý trụ sở'
)
COMMIT TRANSACTION
SELECT '0' as Result, @p_BUILDING_ID BUILDING_ID, '' ErrorDesc
RETURN '0'
ABORT:
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' BUILDING_ID, '' ErrorDesc
RETURN '-1'
End
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Creating [dbo].[rpt_BUD_MASTER_Excel]'
GO
CREATE PROC [dbo].[rpt_BUD_MASTER_Excel]
@p_BRANCH_ID VARCHAR(15) = NULL,
@p_DEP_ID VARCHAR(15) = NULL,
@p_FROM_DT VARCHAR(20) = NULL,
@p_TO_DT VARCHAR(20) = NULL,
@p_LEVEL VARCHAR(15) = 'ALL'
AS
BEGIN
DECLARE @BRANCH_TABLE TABLE(BRANCH_ID VARCHAR(15))
IF(@p_LEVEL = 'ALL')
BEGIN
INSERT INTO @BRANCH_TABLE SELECT BRANCH_ID FROM [dbo].[CM_BRANCH_GETCHILDID](@p_BRANCH_ID)
END
IF(@p_LEVEL = 'UNIT')
BEGIN
INSERT INTO @BRANCH_TABLE SELECT @p_BRANCH_ID
END
DECLARE @AUTH_CONTRACT TABLE(CONTRACT_ID VARCHAR(15))
INSERT INTO @AUTH_CONTRACT
SELECT CONTRACT_ID
FROM BUD_CONTRACT_MASTER
WHERE AUTH_STATUS = 'A'
AND BRANCH_ID IN(SELECT BRANCH_ID FROM @BRANCH_TABLE)
AND (CONVERT(DATE,CREATE_DT,103) >=CONVERT(DATE, @p_FROM_DT, 103) OR @p_FROM_DT IS NULL OR @p_FROM_DT = '')
AND (CONVERT(DATE,CREATE_DT,103) <=CONVERT(DATE, @p_TO_DT, 103) OR @p_TO_DT IS NULL OR @p_TO_DT = '')
UNION ALL
SELECT CONTRACT_ID
FROM BUD_CONTRACT_CUST_MASTER
WHERE AUTH_STATUS = 'A'
AND BRANCH_ID IN(SELECT BRANCH_ID FROM @BRANCH_TABLE)
AND (CONVERT(DATE,CREATE_DT,103) >=CONVERT(DATE, @p_FROM_DT, 103) OR @p_FROM_DT IS NULL OR @p_FROM_DT = '')
AND (CONVERT(DATE,CREATE_DT,103) <=CONVERT(DATE, @p_TO_DT, 103) OR @p_TO_DT IS NULL OR @p_TO_DT = '')
SELECT ROW_NUMBER() OVER(ORDER BY A.BUILDING_ID) AS STT,
A.ADDRESS,
B.BRANCH_NAME AS BRANCH_OR_DEP,
(
--SELECT SUM(INTERNAL_AREA) + SUM(UTILZED_AREA)
--FROM BUD_AREA_DT
--WHERE BUILD_ID = A.BUILDING_ID
(SELECT ISNULL(SUM(DIEN_TICH_CAN_SD),0)
FROM BUD_CONTRACT_DT
WHERE CONTRACT_ID IN (SELECT CONTRACT_ID FROM @AUTH_CONTRACT)
AND BUILD_ID = A.BUILDING_ID)
+
(SELECT ISNULL(SUM(DIEN_TICH_CAN_CHOTHUE),0)
FROM BUD_CONTRACT_CUST_DT
WHERE CONTRACT_ID IN(SELECT CONTRACT_ID FROM @AUTH_CONTRACT)
AND BUILD_ID = A.BUILDING_ID)
) AS DT_CHO_THUE,
(
A.TOTAL_AREA -
(
(SELECT ISNULL(SUM(DIEN_TICH_CAN_SD),0)
FROM BUD_CONTRACT_DT
WHERE CONTRACT_ID IN (SELECT CONTRACT_ID FROM @AUTH_CONTRACT)
AND BUILD_ID = A.BUILDING_ID)
+
(SELECT ISNULL(SUM(DIEN_TICH_CAN_CHOTHUE),0)
FROM BUD_CONTRACT_CUST_DT
WHERE CONTRACT_ID IN(SELECT CONTRACT_ID FROM @AUTH_CONTRACT)
AND BUILD_ID = A.BUILDING_ID)
)
) AS DT_CON_LAI,
CASE
WHEN A.OWNER_OR_RENT = 'O' THEN 'Mua'
WHEN A.OWNER_OR_RENT = 'U' THEN 'Thuê'
END
AS OWNER_OR_RENT,
C.CURRENT_STATE,
C.HOUSEDES AS HOUSE_STRUCTURE,
A.RENT_AMT,
'' AS GIA_TRI_KHAU_HAO,
'' AS GIA_TRI_CON_LAI,
'' AS GIA_THI_TRUONG,
CASE
WHEN C.CONST_STATUS = 'XD' THEN 'X'
ELSE ''
END
AS GIA_TRI_XAY_DUNG,
CASE
WHEN C.CONST_STATUS = 'SC' THEN 'X'
ELSE ''
END
AS SUA_CHUA,
CASE
WHEN C.CONST_STATUS = 'XD/SC' THEN 'X'
ELSE ''
END
AS DANG_XD_SC,
'' AS TG_GHI_NHAN_TS,
'' AS TG_TRICH_KHAU_HAO,
A.RENT_TIME
FROM BUD_MASTER A
LEFT JOIN CM_BRANCH B ON A.BRANCH_ID = B.BRANCH_ID
LEFT JOIN RET_MASTER C ON A.ASSET_ID = C.ASSET_ID
WHERE A.AUTH_STATUS = 'A'
AND A.RECORD_STATUS = '1'
END
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Creating [dbo].[rpt_BUD_UTILIZED_QUARTER_Excel]'
GO
CREATE PROC [dbo].[rpt_BUD_UTILIZED_QUARTER_Excel]
@p_YEAR VARCHAR(5)
AS
BEGIN
SELECT
ROW_NUMBER() OVER (ORDER BY A.BUILDING_ID) AS STT,
B.BRANCH_NAME AS BRANCH,
A.BUILDING_NAME,
(
(SELECT ISNULL(SUM(B1.DIEN_TICH_CAN_SD),0)
FROM BUD_CONTRACT_MASTER A1
LEFT JOIN BUD_CONTRACT_DT B1 ON A1.CONTRACT_ID = B1.CONTRACT_ID
WHERE A1.INPUT_DT >= CONVERT(DATE,'01/01/' + @p_YEAR,103)
AND A1.AMEND_DT <= CONVERT(DATE,'31/03/' + @p_YEAR,103)
AND A1.AUTH_STATUS = 'A'
AND A1.BUILDING_ID = A.BUILDING_ID)
+
(SELECT ISNULL(SUM(B1.DIEN_TICH_CAN_CHOTHUE),0)
FROM BUD_CONTRACT_CUST_MASTER A1
LEFT JOIN BUD_CONTRACT_CUST_DT B1 ON A1.CONTRACT_ID = B1.CONTRACT_ID
LEFT JOIN TR_CONTRACT C1 ON A1.TR_CONTRACT_ID = C1.CONTRACT_ID
WHERE C1.START_DT >= CONVERT(DATE,'01/01/' + @p_YEAR,103)
AND C1.END_DT <= CONVERT(DATE,'31/03/' + @p_YEAR,103)
AND A1.AUTH_STATUS = 'A'
AND A1.BUILDING_ID = A.BUILDING_ID)
) / A.TOTAL_AREA AS QUARTER_1,
(
(SELECT ISNULL(SUM(B1.DIEN_TICH_CAN_SD),0)
FROM BUD_CONTRACT_MASTER A1
LEFT JOIN BUD_CONTRACT_DT B1 ON A1.CONTRACT_ID = B1.CONTRACT_ID
WHERE A1.INPUT_DT >= CONVERT(DATE,'01/04/' + @p_YEAR,103)
AND A1.AMEND_DT <= CONVERT(DATE,'30/06/' + @p_YEAR,103)
AND A1.AUTH_STATUS = 'A'
AND A1.BUILDING_ID = A.BUILDING_ID)
+
(SELECT ISNULL(SUM(B1.DIEN_TICH_CAN_CHOTHUE),0)
FROM BUD_CONTRACT_CUST_MASTER A1
LEFT JOIN BUD_CONTRACT_CUST_DT B1 ON A1.CONTRACT_ID = B1.CONTRACT_ID
LEFT JOIN TR_CONTRACT C1 ON A1.TR_CONTRACT_ID = C1.CONTRACT_ID
WHERE C1.START_DT >= CONVERT(DATE,'01/04/' + @p_YEAR,103)
AND C1.END_DT <= CONVERT(DATE,'30/06/' + @p_YEAR,103)
AND A1.AUTH_STATUS = 'A'
AND A1.BUILDING_ID = A.BUILDING_ID)
) / A.TOTAL_AREA AS QUARTER_2,
(
(SELECT ISNULL(SUM(B1.DIEN_TICH_CAN_SD),0)
FROM BUD_CONTRACT_MASTER A1
LEFT JOIN BUD_CONTRACT_DT B1 ON A1.CONTRACT_ID = B1.CONTRACT_ID
WHERE A1.INPUT_DT >= CONVERT(DATE,'01/07/' + @p_YEAR,103)
AND A1.AMEND_DT <= CONVERT(DATE,'30/09/' + @p_YEAR,103)
AND A1.AUTH_STATUS = 'A'
AND A1.BUILDING_ID = A.BUILDING_ID)
+
(SELECT ISNULL(SUM(B1.DIEN_TICH_CAN_CHOTHUE),0)
FROM BUD_CONTRACT_CUST_MASTER A1
LEFT JOIN BUD_CONTRACT_CUST_DT B1 ON A1.CONTRACT_ID = B1.CONTRACT_ID
LEFT JOIN TR_CONTRACT C1 ON A1.TR_CONTRACT_ID = C1.CONTRACT_ID
WHERE C1.START_DT >= CONVERT(DATE,'01/07/' + @p_YEAR,103)
AND C1.END_DT <= CONVERT(DATE,'30/09/' + @p_YEAR,103)
AND A1.AUTH_STATUS = 'A'
AND A1.BUILDING_ID = A.BUILDING_ID)
) / A.TOTAL_AREA AS QUARTER_3,
(
(SELECT ISNULL(SUM(B1.DIEN_TICH_CAN_SD),0)
FROM BUD_CONTRACT_MASTER A1
LEFT JOIN BUD_CONTRACT_DT B1 ON A1.CONTRACT_ID = B1.CONTRACT_ID
WHERE A1.INPUT_DT >= CONVERT(DATE,'01/10/' + @p_YEAR,103)
AND A1.AMEND_DT <= CONVERT(DATE,'30/12/' + @p_YEAR,103)
AND A1.AUTH_STATUS = 'A'
AND A1.BUILDING_ID = A.BUILDING_ID)
+
(SELECT ISNULL(SUM(B1.DIEN_TICH_CAN_CHOTHUE),0)
FROM BUD_CONTRACT_CUST_MASTER A1
LEFT JOIN BUD_CONTRACT_CUST_DT B1 ON A1.CONTRACT_ID = B1.CONTRACT_ID
LEFT JOIN TR_CONTRACT C1 ON A1.TR_CONTRACT_ID = C1.CONTRACT_ID
WHERE C1.START_DT >= CONVERT(DATE,'01/10/' + @p_YEAR,103)
AND C1.END_DT <= CONVERT(DATE,'30/12/' + @p_YEAR,103)
AND A1.AUTH_STATUS = 'A'
AND A1.BUILDING_ID = A.BUILDING_ID)
) / A.TOTAL_AREA AS QUARTER_4,
(
(SELECT ISNULL(SUM(B1.DIEN_TICH_CAN_SD),0)
FROM BUD_CONTRACT_MASTER A1
LEFT JOIN BUD_CONTRACT_DT B1 ON A1.CONTRACT_ID = B1.CONTRACT_ID
WHERE A1.INPUT_DT >= CONVERT(DATE,'01/01/' + @p_YEAR,103)
AND A1.AMEND_DT <= CONVERT(DATE,'30/12/' + @p_YEAR,103)
AND A1.AUTH_STATUS = 'A'
AND A1.BUILDING_ID = A.BUILDING_ID)
+
(SELECT ISNULL(SUM(B1.DIEN_TICH_CAN_CHOTHUE),0)
FROM BUD_CONTRACT_CUST_MASTER A1
LEFT JOIN BUD_CONTRACT_CUST_DT B1 ON A1.CONTRACT_ID = B1.CONTRACT_ID
LEFT JOIN TR_CONTRACT C1 ON A1.TR_CONTRACT_ID = C1.CONTRACT_ID
WHERE C1.START_DT >= CONVERT(DATE,'01/01/' + @p_YEAR,103)
AND C1.END_DT <= CONVERT(DATE,'30/12/' + @p_YEAR,103)
AND A1.AUTH_STATUS = 'A'
AND A1.BUILDING_ID = A.BUILDING_ID)
) / A.TOTAL_AREA AS ALL_YEAR
FROM BUD_MASTER A
LEFT JOIN CM_BRANCH B ON A.BRANCH_ID = B.BRANCH_ID
WHERE A.AUTH_STATUS = 'A' AND A.RECORD_STATUS ='1'
DECLARE @tmp TABLE(BUILDING_ID VARCHAR(15))
INSERT INTO @tmp
SELECT BUILDING_ID
FROM BUD_CONTRACT_MASTER WHERE AUTH_STATUS = 'A'
AND INPUT_DT >= CONVERT(DATE, '01/01/' + @p_YEAR, 103)
AND AMEND_DT <= CONVERT(DATE, '30/12/' + @p_YEAR, 103)
UNION
SELECT BUILDING_ID
FROM BUD_CONTRACT_CUST_MASTER WHERE AUTH_STATUS = 'A'
AND FROM_DT >= CONVERT(DATE, '01/01/' + @p_YEAR, 103)
AND TO_DATE <= CONVERT(DATE, '30/12/' + @p_YEAR, 103)
-----Các CN/PGD còn trụ sở trống-------
SELECT
CONVERT(VARCHAR ,COUNT(DISTINCT A.BRANCH_ID)) + N' đơn vị' AS TONG_CN_CON_TRU_SO_TRONG
FROM BUD_MASTER A
WHERE A.AUTH_STATUS = 'A'
AND RECORD_STATUS = '1'
AND A.BRANCH_ID IS NOT NULL
AND A.BUILDING_ID NOT IN (SELECT BUILDING_ID FROM @tmp)
-----DT trống toàn hàng đến 31/12-------
SELECT
--CONVERT(VARCHAR, CAST((ISNULL(SUM((RENT_TOTAL_AREA - UTILZED_AREA) / 1000),0)) AS DECIMAL(18,2)))
CONVERT(VARCHAR, CAST(ISNULL(SUM(TOTAL_AREA) /1000 ,0) AS DECIMAL(18,2)))
+ N' ngàn m2' AS DT_TRONG_TOAN_HANG
FROM BUD_MASTER
WHERE AUTH_STATUS = 'A' AND RECORD_STATUS = '1'
DECLARE @RENT_AREA_TABLE TABLE(RENT_AREA DECIMAL(18,2))
INSERT INTO @RENT_AREA_TABLE
SELECT
CASE
WHEN RENT_TOTAL_AREA = 0 OR RENT_TOTAL_AREA IS NULL
THEN ISNULL(UTILZED_AREA,0)
ELSE ISNULL((TOTAL_AREA - RENT_TOTAL_AREA + UTILZED_AREA),0)
END
AS RENT_AREA
FROM BUD_MASTER
WHERE AUTH_STATUS = 'A'
DECLARE @AUTH_CONTRACT TABLE(CONTRACT_ID VARCHAR(15))
INSERT INTO @AUTH_CONTRACT
SELECT CONTRACT_ID
FROM BUD_CONTRACT_MASTER
WHERE AUTH_STATUS = 'A'
AND INPUT_DT >= CONVERT(DATE, '01/01/' + @p_YEAR, 103)
AND AMEND_DT <= CONVERT(DATE, '30/12/' + @p_YEAR, 103)
UNION ALL
SELECT A1.CONTRACT_ID
FROM BUD_CONTRACT_CUST_MASTER A1
INNER JOIN TR_CONTRACT B1 ON A1.TR_CONTRACT_ID = B1.CONTRACT_ID
WHERE A1.AUTH_STATUS = 'A'
AND B1.START_DT >= CONVERT(DATE, '01/01/' + @p_YEAR, 103)
AND B1.END_DT <= CONVERT(DATE, '30/12/' + @p_YEAR, 103)
-----DT cho thuê dc đến 31/12-------
--SELECT
--CONVERT(VARCHAR,
-- --CAST(
-- -- (ISNULL(SUM((TOTAL_AREA - RENT_TOTAL_AREA + UTILZED_AREA) / 1000),0)) AS DECIMAL(18,2)
-- --)
--)
-- + N' ngàn m2' AS DT_CHO_THUE
--FROM BUD_MASTER
--WHERE AUTH_STATUS = 'A'
--SELECT
-- CONVERT(VARCHAR,CAST(SUM(RENT_AREA) / 1000 AS DECIMAL(18,2)))
-- + N' ngàn m2' AS DT_CHO_THUE
--FROM @RENT_AREA_TABLE
SELECT CONVERT(VARCHAR,CAST(SUM(TMP.RENT_AREA) / 1000 AS DECIMAL(18,2))) + N' ngàn m2' AS DT_CHO_THUE
FROM(
(SELECT ISNULL(SUM(DIEN_TICH_CAN_SD), 0) AS RENT_AREA
FROM BUD_CONTRACT_DT
WHERE CONTRACT_ID IN (SELECT CONTRACT_ID FROM @AUTH_CONTRACT))
UNION ALL
(SELECT ISNULL(SUM(DIEN_TICH_CAN_CHOTHUE),0)
FROM BUD_CONTRACT_CUST_DT
WHERE CONTRACT_ID IN (SELECT CONTRACT_ID FROM @AUTH_CONTRACT))
) TMP
-----DT còn trống đến 31/12-------
SELECT
CONVERT(VARCHAR,
--CAST(
-- --(ISNULL(SUM(RENT_TOTAL_AREA - UTILZED_AREA),0)
-- (ISNULL(SUM(TOTAL_AREA) /1000 ,0)
-- - ISNULL(SUM(TOTAL_AREA - RENT_TOTAL_AREA + UTILZED_AREA),0)) / 1000
-- AS DECIMAL(18,2))
CAST(
ISNULL(SUM(TOTAL_AREA) / 1000 ,0)
-
(SELECT (SUM(TMP.RENT_AREA) / 1000 )
FROM(
(SELECT ISNULL(SUM(DIEN_TICH_CAN_SD), 0) AS RENT_AREA
FROM BUD_CONTRACT_DT
WHERE CONTRACT_ID IN (SELECT CONTRACT_ID FROM @AUTH_CONTRACT))
UNION ALL
(SELECT ISNULL(SUM(DIEN_TICH_CAN_CHOTHUE),0)
FROM BUD_CONTRACT_CUST_DT
WHERE CONTRACT_ID IN (SELECT CONTRACT_ID FROM @AUTH_CONTRACT))
) TMP)
AS DECIMAL(18,2))
) + N' ngàn m2' AS DT_TRONG
FROM BUD_MASTER
WHERE AUTH_STATUS = 'A' AND RECORD_STATUS ='1'
-----Tỷ lệ khai thác đạt-------
SELECT
(
--(ISNULL(SUM((TOTAL_AREA - RENT_TOTAL_AREA + UTILZED_AREA) / 1000),0))
(SELECT SUM(TMP.RENT_AREA) / 1000
FROM(
(SELECT ISNULL(SUM(DIEN_TICH_CAN_SD), 0) AS RENT_AREA
FROM BUD_CONTRACT_DT
WHERE CONTRACT_ID IN (SELECT CONTRACT_ID FROM @AUTH_CONTRACT))
UNION ALL
(SELECT ISNULL(SUM(DIEN_TICH_CAN_CHOTHUE),0)
FROM BUD_CONTRACT_CUST_DT
WHERE CONTRACT_ID IN (SELECT CONTRACT_ID FROM @AUTH_CONTRACT))
) TMP)
/
--(ISNULL(SUM((RENT_TOTAL_AREA - UTILZED_AREA) / 1000),0))
ISNULL(SUM(TOTAL_AREA) /1000 ,0)
)
AS TY_LE_KHAI_THAC_DAT
FROM BUD_MASTER
WHERE AUTH_STATUS = 'A' AND RECORD_STATUS = '1'
END
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Altering [dbo].[rpt_TR_REQ_PAYMENT_ByID]'
GO
ALTER PROCEDURE [dbo].[rpt_TR_REQ_PAYMENT_ByID]
@p_REQ_PAY_ID varchar(15)= NULL
AS
-------
DECLARE @TITLE_APPROVE NVARCHAR(50) ='', @TITLE_APPROVE_KSV NVARCHAR(50) =''
IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT='S'))
BEGIN
SET @TITLE_APPROVE =N'Đã từ chối '
END
ELSE
BEGIN
SET @TITLE_APPROVE =N'Đã chấp thuận '
END
----------------
IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT='R'))
BEGIN
SET @TITLE_APPROVE_KSV =N'Đã từ chối '
END
ELSE
BEGIN
SET @TITLE_APPROVE_KSV =N'Đã chấp thuận '
END
----------------
DECLARE @REQ_TYPE VARCHAR(15)
SET @REQ_TYPE =(SELECT REQ_TYPE FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID=@p_REQ_PAY_ID)
-------------------------------------------
DECLARE @CONTENT NVARCHAR(MAX)='', @CONTENT_CK NVARCHAR(MAX)='', @TM_TITLE NVARCHAR(100), @CK_TITLE NVARCHAR(100), @NDTM NVARCHAR(MAX) ='', @NDCK NVARCHAR(MAX) ='',
@REQ_PAY_TYPE VARCHAR(5), @ACCNO VARCHAR(50), @ACCNAME NVARCHAR(500), @BANK NVARCHAR(500), @ISUED_DT DATE,
@REASON NVARCHAR(MAX), @DESC NVARCHAR(MAX),@NOIDUNG NVARCHAR(MAX) ='',@AMT DECIMAL(18,2),@TYPE_TRANSFER VARCHAR(15)
SELECT A.REQ_PAY_CODE, A.REQ_REASON,A.DEP_ID,N'Đã chấp thuận '+ISNULL(FORMAT(A.CREATE_DT,'dd/MM/yyyy,hh:mm:ss tt'),'') AS CREATE_DT, A.MAKER_ID_KT,A.CHECKER_ID,
CASE WHEN ISNULL(FORMAT(A.APPROVE_DT,'dd/MM/yyyy,,hh:mm:ss tt'),'') <>'' THEN N'Đã chấp thuận ' +ISNULL(FORMAT(A.APPROVE_DT,'dd/MM/yyyy,hh:mm:ss tt'),'') ELSE '' END AS APPROVE_DT,
A.CHECKER_ID_KT,MAKER_ID_KT,CASE WHEN ISNULL(FORMAT(A.APPROVE_DT_KT,'dd/MM/yyyy,hh:mm:ss tt'),'') <>'' THEN @TITLE_APPROVE_KSV + ISNULL(FORMAT(A.APPROVE_DT_KT,'dd/MM/yyyy,hh:mm:ss tt'),'')
ELSE '' END AS APPROVE_DT_KT ,
CASE WHEN ISNULL(FORMAT(A.CREATE_DT_KT,'dd/MM/yyyy,hh:mm:ss tt'),'') <>'' THEN @TITLE_APPROVE + ISNULL(FORMAT(A.CREATE_DT_KT,'dd/MM/yyyy,hh:mm:ss tt'),'') ELSE '' END AS CREATE_DT_KT,
B.AUTH_STATUS_NAME, C.AUTH_STATUS_NAME AUTH_STATUS_NAME_KT, TL.TLFullName CREATE_FULLNAME,
TL1.TLFullName APPROVE_FULLNAME,TL2.TLFullName CREATE_FULLNAME_KT,TL3.TLFullName APPROVE_FULLNAME_KT,
BR.BRANCH_NAME BRANCH_NAME_REQ, BR1.BRANCH_NAME BRANCH_NAME_CRE, DP.DEP_NAME, DP.DEP_CODE, BR.BRANCH_CODE BRANCH_CODE_REQ,
--Luanlt--2019/10/15-Sửa AL,AL1
BR1.BRANCH_CODE BRANCH_CODE_CRE, AL.CONTENT REQ_TYPE_NAME,AL1.CONTENT REQ_PAY_TYPE_NAME, 0 TOTAL_AMT_TEMP, 0 TOTAL_AMT_PAY_HIS,TL4.TLFullName AS TRANSFER_FULLNAME,TL5.TLFullName AS TRANSFER_RECIEVER_FULLNAME,
CASE WHEN @REQ_TYPE <> 'I' THEN (ISNULL(X2.SO_TIEN_TAM_UNG,0) + ISNULL(X3.SO_TIEN_TAM_UNG,0)) ELSE ISNULL(X.SOTIEN_TAMUNG,0) END AS SOTIEN_TAMUNG,
CASE WHEN @REQ_TYPE <> 'I' THEN (ISNULL(X4.SO_TIEN_TAM_UNG,0.00) + ISNULL(X5.SO_TIEN_TAM_UNG,0.00) +ISNULL(X6.SO_TIEN_TAM_UNG,0.00)) ELSE ISNULL(X.AMT_USE,0.00) END AS SO_TIEN_DE_NGHI,
CASE WHEN (ISNULL(X.SOTIEN_TAMUNG,0.00) - ISNULL(X.AMT_USE,0.00)) >0 THEN (ISNULL(X.SOTIEN_TAMUNG,0.00) - ISNULL(X.AMT_USE,0.00)) ELSE 0 END AS SO_TIEN_CL,
-- CASE WHEN @REQ_TYPE <> 'I' THEN (ISNULL(X2.SO_TIEN_TAM_UNG,0) + ISNULL(X3.SO_TIEN_TAM_UNG,0)) - (ISNULL(X4.SO_TIEN_TAM_UNG,0.00) + ISNULL(X5.SO_TIEN_TAM_UNG,0.00) +ISNULL(X6.SO_TIEN_TAM_UNG,0.00))
-- ELSE ISNULL(X.SOTIEN_TAMUNG,0) - ISNULL(X.AMT_USE,.00) END AS SO_TIEN_CL,
ISNULL(X.ST_BO_SUNG,0.00) SO_TIEN_VUOT,
--CASE WHEN @REQ_TYPE <> 'I' THEN (ISNULL(X4.SO_TIEN_TAM_UNG,0.00) + ISNULL(X5.SO_TIEN_TAM_UNG,0.00) +ISNULL(X6.SO_TIEN_TAM_UNG,0.00)) -(ISNULL(X2.SO_TIEN_TAM_UNG,0) + ISNULL(X3.SO_TIEN_TAM_UNG,0)) ELSE
--ISNULL(X.AMT_USE,.00) -ISNULL(X.SOTIEN_TAMUNG,0) END AS SO_TIEN_VUOT,
ISNULL(X.ST_BO_SUNG,0.00) + ISNULL(X.ST_HOAN_UNG,0) CHI_BO_SUNG,
--CASE WHEN @REQ_TYPE <> 'I' THEN (ISNULL(X4.SO_TIEN_TAM_UNG,0.00) + ISNULL(X5.SO_TIEN_TAM_UNG,0.00) +ISNULL(X6.SO_TIEN_TAM_UNG,0.00)) -(ISNULL(X2.SO_TIEN_TAM_UNG,0) + ISNULL(X3.SO_TIEN_TAM_UNG,0)) ELSE
--ISNULL(X.AMT_USE,.00) -ISNULL(X.SOTIEN_TAMUNG,0) END AS CHI_BO_SUNG,\
DAY(A.CREATE_DT) D_, MONTH(A.CREATE_DT) M_, YEAR(A.CREATE_DT) Y_,
'' AS NOIDUNG,
'' AS PHUONG_THUC_THANH_TOAN, CASE WHEN EXISTS(SELECT * FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND CURRENCY <>'VND')
THEN (SELECT TOP 1 CURRENCY FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID) ELSE'VND' END TYPE_CUR,
ISNULL(X.ST_HOAN_UNG,0.00) + ISNULL(X.ST_BO_SUNG,0.00) AS SO_TIEN_PTTT, CASE WHEN A.CONFIRM_NOTE <>'' AND A.CONFIRM_NOTE IS NOT NULL THEN N'Ghi chú: '+ A.CONFIRM_NOTE ELSE '' END AS CONFIRM_NOTE,
CASE WHEN @REQ_TYPE ='I' THEN A.REQ_AMT ELSE (SELECT SUM(TOTAL_AMT) FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID) END AS REQ_AMT
FROM TR_REQ_PAYMENT A
LEFT JOIN CM_AUTH_STATUS B ON A.AUTH_STATUS=B.AUTH_STATUS
LEFT JOIN CM_AUTH_STATUS C ON A.AUTH_STATUS_KT=C.AUTH_STATUS
LEFT JOIN TL_USER TL ON A.MAKER_ID=TL.TLNANME
LEFT JOIN TL_USER TL1 ON A.CHECKER_ID=TL1.TLNANME
LEFT JOIN TL_USER TL2 ON A.MAKER_ID_KT=TL2.TLNANME
LEFT JOIN TL_USER TL3 ON A.CHECKER_ID_KT=TL3.TLNANME
LEFT JOIN dbo.CM_BRANCH BR ON A.BRANCH_ID=BR.BRANCH_ID
LEFT JOIN dbo.CM_BRANCH BR1 ON A.BRANCH_CREATE=BR1.BRANCH_ID
LEFT JOIN dbo.CM_DEPARTMENT DP ON DP.DEP_ID=A.DEP_ID
--Luanlt--2019/10/15-Sửa AL,AL1
LEFT JOIN CM_ALLCODE AL ON A.REQ_TYPE = AL.CDVAL AND AL.CDNAME='PAY_TYPE' AND AL.CDTYPE = 'REQ'
LEFT JOIN CM_ALLCODE AL1 ON A.REQ_PAY_TYPE = AL1.CDVAL AND AL1.CDNAME='REQ_PAY_TYPE' AND AL1.CDTYPE = 'REQ'
LEFT JOIN TL_USER TL4 ON A.TRANSFER_MAKER = TL4.TLNANME
LEFT JOIN TL_USER TL5 ON A.TRASFER_USER_RECIVE = TL5.TLNANME
LEFT JOIN
(
SELECT A.PAY_ID, SUM(A.AMT_REMAIN) SOTIEN_TAMUNG,
SUM(A.AMT_DO) ST_DA_HOAN,
SUM(A.AMT_ADD) ST_BO_SUNG,ABS(SUM(A.AMT_USE)) AS AMT_USE, SUM(A.AMT_REVERT) AS ST_HOAN_UNG FROM TR_REQ_PAYMENT_DT A
GROUP BY A.PAY_ID
) X ON A.REQ_PAY_ID = X.PAY_ID
LEFT JOIN
(
SELECT P.REQ_PAY_ID,SUM(P.AMT_PAY) AS SO_TIEN_TAM_UNG FROM TR_REQ_PAY_PERIOD P
WHERE P.REQ_PAY_ID=@p_REQ_PAY_ID AND P.PROCESS <>'1'
GROUP BY P.REQ_PAY_ID
)
X2 ON A.REQ_PAY_ID = X2.REQ_PAY_ID
LEFT JOIN
(
SELECT P.REQ_PAY_ID,SUM(P.AMT_ADVANCE) AS SO_TIEN_TAM_UNG FROM TR_REQ_PAY_SCHEDULE P
WHERE P.REQ_PAY_ID=@p_REQ_PAY_ID AND P.PROCESS <>'1'
GROUP BY P.REQ_PAY_ID
)
X3 ON A.REQ_PAY_ID = X3.REQ_PAY_ID
LEFT JOIN
(
SELECT P.REQ_PAY_ID,SUM(P.AMT_PAY) AS SO_TIEN_TAM_UNG FROM TR_REQ_PAY_PERIOD P
WHERE P.REQ_PAY_ID=@p_REQ_PAY_ID
GROUP BY P.REQ_PAY_ID
)
X4 ON A.REQ_PAY_ID = X4.REQ_PAY_ID
LEFT JOIN
(
SELECT P.REQ_PAY_ID,SUM(P.AMT_PAY_REAL) AS SO_TIEN_TAM_UNG FROM TR_REQ_PAY_SCHEDULE P
WHERE P.REQ_PAY_ID=@p_REQ_PAY_ID
GROUP BY P.REQ_PAY_ID
)
X5 ON A.REQ_PAY_ID = X5.REQ_PAY_ID
LEFT JOIN
(
SELECT P.REQ_PAY_ID,SUM(P.TOTAL_AMT) AS SO_TIEN_TAM_UNG FROM TR_REQ_PAY_SERVICE P
WHERE P.REQ_PAY_ID=@p_REQ_PAY_ID
GROUP BY P.REQ_PAY_ID
)
X6 ON A.REQ_PAY_ID = X6.REQ_PAY_ID
WHERE 1=1
AND(A.REQ_PAY_ID=@p_REQ_PAY_ID)
ORDER BY A.CREATE_DT DESC;
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Creating [dbo].[rpt_BUD_UTILIZED_EFF_Excel]'
GO
CREATE PROC [dbo].[rpt_BUD_UTILIZED_EFF_Excel]
@p_QUARTER INT,
@p_YEAR INT
AS
BEGIN
DECLARE @p_FROM VARCHAR(20), @p_TO VARCHAR(20)
IF(@p_QUARTER = 1)
BEGIN
SET @p_FROM = '01/01/'
SET @p_TO = '31/03/'
END
ELSE IF(@p_QUARTER = 2)
BEGIN
SET @p_FROM = '01/04/'
SET @p_TO = '30/06/'
END
ELSE IF(@p_QUARTER = 3)
BEGIN
SET @p_FROM = '01/07/'
SET @p_TO = '30/09/'
END
ELSE IF(@p_QUARTER = 4)
BEGIN
SET @p_FROM = '01/10/'
SET @p_TO = '30/12/'
END
DECLARE @p_FROM_DT VARCHAR(20), @p_TO_DT VARCHAR(20)
SET @p_FROM_DT = @p_FROM + CONVERT(VARCHAR, @p_YEAR)
SET @p_TO_DT = @p_TO + CONVERT(VARCHAR, @p_YEAR)
DECLARE @tmp TABLE(CONTRACT_ID VARCHAR(15),BUILDING_AREA_ID VARCHAR(15))
INSERT INTO @tmp
SELECT A1.CONTRACT_ID, B1.BUILDING_AREA_ID
FROM BUD_CONTRACT_MASTER A1
INNER JOIN BUD_CONTRACT_DT B1 ON A1.CONTRACT_ID = B1.CONTRACT_ID
WHERE A1.AUTH_STATUS = 'A'
AND A1.INPUT_DT >= CONVERT(DATE,@p_FROM_DT, 103)
AND A1.AMEND_DT <= CONVERT(DATE, @p_TO_DT, 103)
UNION
SELECT A1.CONTRACT_ID, B1.BUILDING_AREA_ID
FROM BUD_CONTRACT_CUST_MASTER A1
INNER JOIN BUD_CONTRACT_CUST_DT B1 ON A1.CONTRACT_ID = B1.CONTRACT_ID
LEFT JOIN TR_CONTRACT C1 ON A1.TR_CONTRACT_ID = C1.CONTRACT_ID
WHERE A1.AUTH_STATUS = 'A'
AND C1.START_DT >= CONVERT(DATE,@p_FROM_DT, 103)
AND C1.END_DT <= CONVERT(DATE, @p_TO_DT, 103)
SELECT
ROW_NUMBER() OVER (ORDER BY A.BUILDING_ID) AS STT,
B.BRANCH_NAME AS BRANCH,
'' AS KHAU_HAO_TRU_SO,
ISNULL(
STUFF((
SELECT ',' + CONVERT(VARCHAR,FLOOR_NO)
FROM BUD_AREA_DT
WHERE BUILD_ID = A.BUILDING_ID
AND BUILDING_AREA_ID NOT IN (SELECT BUILDING_AREA_ID FROM @tmp)
FOR XML PATH('')
),1,1,'')
,0)
AS TANG_TRONG,
A.TOTAL_AREA AS DT_TRONG,
(
(SELECT ISNULL(SUM(DIEN_TICH_CAN_SD),0)
FROM BUD_CONTRACT_DT
WHERE CONTRACT_ID IN (SELECT CONTRACT_ID FROM @tmp)
AND BUILD_ID = A.BUILDING_ID)
+
(SELECT ISNULL(SUM(DIEN_TICH_CAN_CHOTHUE),0)
FROM BUD_CONTRACT_CUST_DT
WHERE CONTRACT_ID IN (SELECT CONTRACT_ID FROM @tmp)
AND BUILD_ID = A.BUILDING_ID)
) AS DT_DA_CHO_THUE,
(
A.TOTAL_AREA -
(
(SELECT ISNULL(SUM(DIEN_TICH_CAN_SD),0)
FROM BUD_CONTRACT_DT
WHERE CONTRACT_ID IN (SELECT CONTRACT_ID FROM @tmp)
AND BUILD_ID = A.BUILDING_ID)
+
(SELECT ISNULL(SUM(DIEN_TICH_CAN_CHOTHUE),0)
FROM BUD_CONTRACT_CUST_DT
WHERE CONTRACT_ID IN (SELECT CONTRACT_ID FROM @tmp)
AND BUILD_ID = A.BUILDING_ID)
)
) AS DT_CON_LAI,
(
(SELECT ISNULL(SUM(TOTAL_AMT),0)
FROM BUD_CONTRACT_DT
WHERE CONTRACT_ID IN (SELECT CONTRACT_ID FROM @tmp)
AND BUILD_ID = A.BUILDING_ID)
+
(SELECT ISNULL(SUM(TOTAL_AMT),0)
FROM BUD_CONTRACT_CUST_DT
WHERE CONTRACT_ID IN (SELECT CONTRACT_ID FROM @tmp)
AND BUILD_ID = A.BUILDING_ID)
) / 1000000 AS THU_NHAP,
(
(SELECT ISNULL(SUM(DIEN_TICH_CAN_SD),0)
FROM BUD_CONTRACT_DT
WHERE CONTRACT_ID IN (SELECT CONTRACT_ID FROM @tmp)
AND BUILD_ID = A.BUILDING_ID)
+
(SELECT ISNULL(SUM(DIEN_TICH_CAN_CHOTHUE),0)
FROM BUD_CONTRACT_CUST_DT
WHERE CONTRACT_ID IN (SELECT CONTRACT_ID FROM @tmp)
AND BUILD_ID = A.BUILDING_ID)
) / A.TOTAL_AREA AS TY_LE_THUC_HIEN
FROM BUD_MASTER A
LEFT JOIN CM_BRANCH B ON A.BRANCH_ID = B.BRANCH_ID
WHERE A.AUTH_STATUS = 'A'
AND A.RECORD_STATUS = '1'
END
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Altering [dbo].[BUD_CONTRACT_MASTER_BYID]'
GO
ALTER PROCEDURE [dbo].[BUD_CONTRACT_MASTER_BYID]
@p_CONTRACT_ID varchar(15) = NULL,
@p_VERSION_NO int =0
AS
BEGIN
SELECT A.*,B.AUTH_STATUS_NAME,C.BUILDING_ID,C.NUM_FLOOR,
C.BUILDING_NAME,BR.BRANCH_NAME,LS.CUSTOMER_NAME,
-----BAODNQ 30/12/2021: Lấy thêm cột full name----
D.TLFullName AS SIGN_USER_FULLNAME
FROM BUD_CONTRACT_MASTER A
LEFT JOIN CM_AUTH_STATUS B ON A.AUTH_STATUS=B.AUTH_STATUS
LEFT JOIN BUD_MASTER C ON A.BUILDING_ID = C.BUILDING_ID
LEFT JOIN CM_BRANCH BR ON BR.BRANCH_ID = A.BRANCH_ID
LEFT JOIN LS_CUSTOMER LS ON LS.CUSTOMER_ID = A.CUST_ID
----BAODNQ 30/12/2021: Kết thêm bảng TL_USER----
LEFT JOIN TL_USER D ON A.SIGN_USER = D.TLNANME
WHERE 1 = 1
AND (A.CONTRACT_ID LIKE '%' + @p_CONTRACT_ID + '%' OR @p_CONTRACT_ID IS NULL OR @p_CONTRACT_ID = '')
AND (A.VERSION_NO = @p_VERSION_NO)
END
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Creating [dbo].[rpt_BUD_UTILIZED_QUARTER_2_Excel]'
GO
CREATE PROC [dbo].[rpt_BUD_UTILIZED_QUARTER_2_Excel]
@p_BUILDING_ID VARCHAR(15) = NULL,
@p_YEAR VARCHAR(5) = NULL
AS
BEGIN
DECLARE @p_BEGIN_QUARTER_1_DT DATE = CONVERT(DATE, '01/01/' + @p_YEAR, 103),
@p_END_QUARTER_1_DT DATE = CONVERT(DATE, '31/03/' + @p_YEAR, 103),
@p_BEGIN_QUARTER_2_DT DATE = CONVERT(DATE, '01/04/' + @p_YEAR, 103),
@p_END_QUARTER_2_DT DATE = CONVERT(DATE, '30/06/' + @p_YEAR, 103),
@p_BEGIN_QUARTER_3_DT DATE = CONVERT(DATE, '01/07/' + @p_YEAR, 103),
@p_END_QUARTER_3_DT DATE = CONVERT(DATE, '30/09/' + @p_YEAR, 103),
@p_BEGIN_QUARTER_4_DT DATE = CONVERT(DATE, '01/10/' + @p_YEAR, 103),
@p_END_QUARTER_4_DT DATE = CONVERT(DATE, '30/12/' + @p_YEAR, 103),
@p_BEGIN_YEAR_DT DATE = CONVERT(DATE, '01/01/' + @p_YEAR, 103),
@p_END_YEAR_DT DATE = CONVERT(DATE, '30/12/' + @p_YEAR, 103)
DECLARE @RENT_AREA_TABLE
TABLE (CONTRACT_ID VARCHAR(15), FROM_DT DATE, TO_DT DATE,
BUILDING_ID VARCHAR(15), BUILDING_AREA_ID VARCHAR(15), DT_DA_CHO_THUE DECIMAL(18,0))
INSERT INTO @RENT_AREA_TABLE
SELECT A1.CONTRACT_ID, A1.INPUT_DT AS FROM_DT, A1.AMEND_DT AS TO_DT,
A1.BUILDING_ID, B1.BUILDING_AREA_ID, ISNULL(B1.DIEN_TICH_CAN_SD,0) AS DT_DA_CHO_THUE
FROM BUD_CONTRACT_MASTER A1
LEFT JOIN BUD_CONTRACT_DT B1 ON A1.CONTRACT_ID = B1.CONTRACT_ID
WHERE A1.AUTH_STATUS = 'A'
UNION ALL
SELECT A1.CONTRACT_ID, C1.START_DT AS FROM_DT, C1.END_DT AS TO_DT,
A1.BUILDING_ID, B1.BUILDING_AREA_ID, ISNULL(B1.DIEN_TICH_CAN_CHOTHUE,0) AS DT_DA_CHO_THUE
FROM BUD_CONTRACT_CUST_MASTER A1
LEFT JOIN BUD_CONTRACT_CUST_DT B1 ON A1.CONTRACT_ID = B1.CONTRACT_ID
LEFT JOIN TR_CONTRACT C1 ON A1.TR_CONTRACT_ID = C1.CONTRACT_ID
WHERE A1.AUTH_STATUS = 'A'
---------Tổng DT trống---------
SELECT
C.BRANCH_NAME,
N'Tầng ' + CONVERT(VARCHAR, B.FLOOR_NO) AS FLOOR_NO,
CONVERT(VARCHAR, CAST((B.FLOOR_AREA / 1000) AS DECIMAL(18,2))) + N' ngàn m2' AS TOTAL_QUARTER_1,
CONVERT(VARCHAR, CAST((B.FLOOR_AREA / 1000) AS DECIMAL(18,2))) + N' ngàn m2' AS TOTAL_QUARTER_2,
CONVERT(VARCHAR, CAST((B.FLOOR_AREA / 1000) AS DECIMAL(18,2))) + N' ngàn m2' AS TOTAL_QUARTER_3,
CONVERT(VARCHAR, CAST((B.FLOOR_AREA / 1000) AS DECIMAL(18,2))) + N' ngàn m2' AS TOTAL_QUARTER_4,
CONVERT(VARCHAR, CAST((B.FLOOR_AREA / 1000) AS DECIMAL(18,2))) + N' ngàn m2' AS ALL_YEAR
FROM BUD_MASTER A
LEFT JOIN BUD_AREA_DT B ON A.BUILDING_ID = B.BUILD_ID
LEFT JOIN CM_BRANCH C ON A.BRANCH_ID = C.BRANCH_ID
WHERE A.BUILDING_ID = @p_BUILDING_ID
---------Tổng DT cho thuê được---------
SELECT
C.BRANCH_NAME,
N'Tầng ' + CONVERT(VARCHAR, B.FLOOR_NO) AS FLOOR_NO,
CONVERT(VARCHAR,
CAST((
--(SELECT ISNULL(SUM(B1.DIEN_TICH_CAN_SD),0)
--FROM BUD_CONTRACT_MASTER A1
--LEFT JOIN BUD_CONTRACT_DT B1 ON A1.CONTRACT_ID = B1.CONTRACT_ID
--WHERE A1.INPUT_DT >= CONVERT(DATE,'01/01/2022',103)
--AND A1.AMEND_DT <= CONVERT(DATE,'31/03/2022',103)
--AND A1.AUTH_STATUS = 'A'
--AND A1.BUILDING_ID = A.BUILDING_ID
--AND B1.BUILDING_AREA_ID = B.BUILDING_AREA_ID)
--+
--(SELECT ISNULL(SUM(B1.DIEN_TICH_CAN_CHOTHUE),0)
--FROM BUD_CONTRACT_CUST_MASTER A1
--LEFT JOIN BUD_CONTRACT_CUST_DT B1 ON A1.CONTRACT_ID = B1.CONTRACT_ID
--LEFT JOIN TR_CONTRACT C1 ON A1.TR_CONTRACT_ID = C1.CONTRACT_ID
--WHERE C1.START_DT >= CONVERT(DATE,'01/01/2022',103)
--AND C1.END_DT <= CONVERT(DATE,'31/03/2022',103)
--AND A1.AUTH_STATUS = 'A'
--AND A1.BUILDING_ID = A.BUILDING_ID
--AND B1.BUILDING_AREA_ID = B.BUILDING_AREA_ID)
SELECT ISNULL(SUM(A1.DT_DA_CHO_THUE),0)
FROM @RENT_AREA_TABLE A1
WHERE A1.FROM_DT >= @p_BEGIN_QUARTER_1_DT
AND A1.TO_DT <= @p_END_QUARTER_1_DT
AND A1.BUILDING_ID = A.BUILDING_ID
AND A1.BUILDING_AREA_ID = B.BUILDING_AREA_ID
) / 1000 AS DECIMAL(18,2))) + N' ngàn m2' AS TOTAL_QUARTER_1,
CONVERT(VARCHAR,CAST((
SELECT ISNULL(SUM(A1.DT_DA_CHO_THUE),0)
FROM @RENT_AREA_TABLE A1
WHERE A1.FROM_DT >= @p_BEGIN_QUARTER_2_DT
AND A1.TO_DT <= @p_END_QUARTER_2_DT
AND A1.BUILDING_ID = A.BUILDING_ID
AND A1.BUILDING_AREA_ID = B.BUILDING_AREA_ID
) / 1000 AS DECIMAL(18,2))) + N' ngàn m2' AS TOTAL_QUARTER_2,
CONVERT(VARCHAR,CAST((
SELECT ISNULL(SUM(A1.DT_DA_CHO_THUE),0)
FROM @RENT_AREA_TABLE A1
WHERE A1.FROM_DT >= @p_BEGIN_QUARTER_3_DT
AND A1.TO_DT <= @p_END_QUARTER_3_DT
AND A1.BUILDING_ID = A.BUILDING_ID
AND A1.BUILDING_AREA_ID = B.BUILDING_AREA_ID
) / 1000 AS DECIMAL(18,2))) + N' ngàn m2' AS TOTAL_QUARTER_3,
CONVERT(VARCHAR,CAST((
SELECT ISNULL(SUM(A1.DT_DA_CHO_THUE),0)
FROM @RENT_AREA_TABLE A1
WHERE A1.FROM_DT >= @p_BEGIN_QUARTER_4_DT
AND A1.TO_DT <= @p_END_QUARTER_4_DT
AND A1.BUILDING_ID = A.BUILDING_ID
AND A1.BUILDING_AREA_ID = B.BUILDING_AREA_ID
) / 1000 AS DECIMAL(18,2))) + N' ngàn m2' AS TOTAL_QUARTER_4,
CONVERT(VARCHAR,CAST((
SELECT ISNULL(SUM(A1.DT_DA_CHO_THUE),0)
FROM @RENT_AREA_TABLE A1
WHERE A1.FROM_DT >= @p_BEGIN_YEAR_DT
AND A1.TO_DT <= @p_END_YEAR_DT
AND A1.BUILDING_ID = A.BUILDING_ID
AND A1.BUILDING_AREA_ID = B.BUILDING_AREA_ID
) / 1000 AS DECIMAL(18,2))) + N' ngàn m2' AS ALL_YEAR
FROM BUD_MASTER A
LEFT JOIN BUD_AREA_DT B ON A.BUILDING_ID = B.BUILD_ID
LEFT JOIN CM_BRANCH C ON A.BRANCH_ID = C.BRANCH_ID
WHERE A.BUILDING_ID = @p_BUILDING_ID
---------Tổng DT còn trống---------
SELECT
C.BRANCH_NAME,
N'Tầng ' + CONVERT(VARCHAR, B.FLOOR_NO) AS FLOOR_NO,
CONVERT(VARCHAR,CAST((
B.FLOOR_AREA
-
--(SELECT ISNULL(SUM(B1.DIEN_TICH_CAN_SD),0)
--FROM BUD_CONTRACT_MASTER A1
--LEFT JOIN BUD_CONTRACT_DT B1 ON A1.CONTRACT_ID = B1.CONTRACT_ID
--WHERE A1.INPUT_DT >= CONVERT(DATE,'01/01/2022',103)
--AND A1.AMEND_DT <= CONVERT(DATE,'31/03/2022',103)
--AND A1.AUTH_STATUS = 'A'
--AND A1.BUILDING_ID = A.BUILDING_ID
--AND B1.BUILDING_AREA_ID = B.BUILDING_AREA_ID)
--+
--(SELECT ISNULL(SUM(B1.DIEN_TICH_CAN_CHOTHUE),0)
--FROM BUD_CONTRACT_CUST_MASTER A1
--LEFT JOIN BUD_CONTRACT_CUST_DT B1 ON A1.CONTRACT_ID = B1.CONTRACT_ID
--LEFT JOIN TR_CONTRACT C1 ON A1.TR_CONTRACT_ID = C1.CONTRACT_ID
--WHERE C1.START_DT >= CONVERT(DATE,'01/01/2022',103)
--AND C1.END_DT <= CONVERT(DATE,'31/03/2022',103)
--AND A1.AUTH_STATUS = 'A'
--AND A1.BUILDING_ID = A.BUILDING_ID
--AND B1.BUILDING_AREA_ID = B.BUILDING_AREA_ID)
(
SELECT ISNULL(SUM(A1.DT_DA_CHO_THUE),0)
FROM @RENT_AREA_TABLE A1
WHERE A1.FROM_DT >= @p_BEGIN_QUARTER_1_DT
AND A1.TO_DT <= @p_END_QUARTER_1_DT
AND A1.BUILDING_ID = A.BUILDING_ID
AND A1.BUILDING_AREA_ID = B.BUILDING_AREA_ID
)
) / 1000 AS DECIMAL(18,2))) + N' ngàn m2' AS TOTAL_QUARTER_1,
CONVERT(VARCHAR,CAST((
B.FLOOR_AREA
-
(
SELECT ISNULL(SUM(A1.DT_DA_CHO_THUE),0)
FROM @RENT_AREA_TABLE A1
WHERE A1.FROM_DT >= @p_BEGIN_QUARTER_2_DT
AND A1.TO_DT <= @p_END_QUARTER_2_DT
AND A1.BUILDING_ID = A.BUILDING_ID
AND A1.BUILDING_AREA_ID = B.BUILDING_AREA_ID
)
) / 1000 AS DECIMAL(18,2))) + N' ngàn m2' AS TOTAL_QUARTER_2,
CONVERT(VARCHAR,CAST((
B.FLOOR_AREA
-
(
SELECT ISNULL(SUM(A1.DT_DA_CHO_THUE),0)
FROM @RENT_AREA_TABLE A1
WHERE A1.FROM_DT >= @p_BEGIN_QUARTER_3_DT
AND A1.TO_DT <= @p_END_QUARTER_3_DT
AND A1.BUILDING_ID = A.BUILDING_ID
AND A1.BUILDING_AREA_ID = B.BUILDING_AREA_ID
)
) / 1000 AS DECIMAL(18,2))) + N' ngàn m2' AS TOTAL_QUARTER_3,
CONVERT(VARCHAR,CAST((
B.FLOOR_AREA
-
(
SELECT ISNULL(SUM(A1.DT_DA_CHO_THUE),0)
FROM @RENT_AREA_TABLE A1
WHERE A1.FROM_DT >= @p_BEGIN_QUARTER_4_DT
AND A1.TO_DT <= @p_END_QUARTER_4_DT
AND A1.BUILDING_ID = A.BUILDING_ID
AND A1.BUILDING_AREA_ID = B.BUILDING_AREA_ID
)
) / 1000 AS DECIMAL(18,2))) + N' ngàn m2' AS TOTAL_QUARTER_4,
CONVERT(VARCHAR,CAST((
B.FLOOR_AREA
-
(
SELECT ISNULL(SUM(A1.DT_DA_CHO_THUE),0)
FROM @RENT_AREA_TABLE A1
WHERE A1.FROM_DT >= @p_BEGIN_YEAR_DT
AND A1.TO_DT <= @p_END_YEAR_DT
AND A1.BUILDING_ID = A.BUILDING_ID
AND A1.BUILDING_AREA_ID = B.BUILDING_AREA_ID
)
) / 1000 AS DECIMAL(18,2))) + N' ngàn m2' AS ALL_YEAR
FROM BUD_MASTER A
LEFT JOIN BUD_AREA_DT B ON A.BUILDING_ID = B.BUILD_ID
LEFT JOIN CM_BRANCH C ON A.BRANCH_ID = C.BRANCH_ID
WHERE A.BUILDING_ID = @p_BUILDING_ID
---------Tầng DT trống nhiều nhất---------
DECLARE @EMPTY_AREA_TABLE
TABLE(REMAIN_AREA DECIMAL(18,0), BUILDING_ID VARCHAR(15), FLOOR_NO INT, BRANCH_NAME NVARCHAR(500))
INSERT INTO @EMPTY_AREA_TABLE
SELECT
(
B.FLOOR_AREA
-
(
SELECT ISNULL(SUM(A1.DT_DA_CHO_THUE),0)
FROM @RENT_AREA_TABLE A1
WHERE A1.FROM_DT >= @p_BEGIN_YEAR_DT
AND A1.TO_DT <= @p_END_YEAR_DT
AND A1.BUILDING_ID = A.BUILDING_ID
AND A1.BUILDING_AREA_ID = B.BUILDING_AREA_ID
)
) AS REMAIN_AREA, A.BUILDING_ID, B.FLOOR_NO, C.BRANCH_NAME
FROM BUD_MASTER A
LEFT JOIN BUD_AREA_DT B ON A.BUILDING_ID = B.BUILD_ID
LEFT JOIN CM_BRANCH C ON A.BRANCH_ID = C.BRANCH_ID
WHERE A.BUILDING_ID = @p_BUILDING_ID
DECLARE @p_MAX_EMPTY_AREA DECIMAL(18,0)
SET @p_MAX_EMPTY_AREA = (SELECT MAX(REMAIN_AREA) FROM @EMPTY_AREA_TABLE)
SELECT
BRANCH_NAME,
N'Tầng' + CONVERT(VARCHAR, FLOOR_NO) AS FLOOR_NO,
CONVERT(VARCHAR,CAST((REMAIN_AREA / 1000) AS DECIMAL(18,2))) + N' ngàn m2' AS REMAIN_AREA
FROM @EMPTY_AREA_TABLE
WHERE REMAIN_AREA = @p_MAX_EMPTY_AREA
END
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Altering [dbo].[CM_DEPARTMENT_Upd]'
GO
ALTER PROCEDURE [dbo].[CM_DEPARTMENT_Upd]
@p_DEP_ID varchar(15) = null ,
@p_DEP_CODE varchar(15) = NULL ,
@p_DEP_NAME nvarchar(200) = NULL ,
@p_DAO_CODE varchar(40) = NULL ,
@p_DAO_NAME nvarchar(500) = NULL ,
@p_BRANCH_ID varchar(15) = NULL ,
@p_GROUP_ID varchar(15) = NULL ,
@p_TEL varchar(20) = NULL ,
@p_NOTES nvarchar(1000) = NULL ,
@p_RECORD_STATUS varchar(1) = NULL ,
@p_MAKER_ID varchar(12) = NULL ,
@p_CREATE_DT VARCHAR(20) = NULL,
@p_AUTH_STATUS varchar(50) = NULL ,
@p_CHECKER_ID varchar(12) = NULL ,
@p_APPROVE_DT VARCHAR(20) = NULL,
@p_FATHER_ID VARCHAR(15) = NULL,
@p_KHOI_ID VARCHAR(20)=NULL
AS
--Validation is here
DECLARE @ERRORSYS NVARCHAR(15) = ''
IF ( NOT EXISTS ( SELECT * FROM CM_DEPARTMENT WHERE DEP_ID = @p_DEP_ID))
SET @ERRORSYS = ''
IF @ERRORSYS <> ''
BEGIN
SELECT ErrorCode Result, '' ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS
RETURN '0'
END
BEGIN TRANSACTION
UPDATE CM_DEPARTMENT SET [DEP_CODE] = @p_DEP_CODE,[DEP_NAME] = @p_DEP_NAME,
[DAO_CODE] = @p_DAO_CODE,[DAO_NAME] = @p_DAO_NAME,[BRANCH_ID] = @p_BRANCH_ID,[GROUP_ID] = @p_GROUP_ID,
[TEL] = @p_TEL,[NOTES] = @p_NOTES,[RECORD_STATUS] = @p_RECORD_STATUS,[KHOI_ID]=@p_KHOI_ID,
[MAKER_ID] = @p_MAKER_ID,[CREATE_DT] = CONVERT(DATETIME, @p_CREATE_DT, 103),[AUTH_STATUS] = @p_AUTH_STATUS,
[CHECKER_ID] = @p_CHECKER_ID,[APPROVE_DT] = CONVERT(DATETIME, @p_APPROVE_DT, 103), [FATHER_ID] = @p_FATHER_ID
WHERE DEP_ID= @p_DEP_ID
IF @@Error <> 0 GOTO ABORT
COMMIT TRANSACTION
SELECT '0' as Result, @p_DEP_ID ID, '' ErrorDesc
RETURN '0'
ABORT:
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' ID, '' ErrorDesc
RETURN '-1'
End
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Creating [dbo].[RET_TAX_SCHEDULE_BYID]'
GO
create PROCEDURE [dbo].[RET_TAX_SCHEDULE_BYID]
@RET_ID varchar(15)
AS
SELECT A.*
FROM RET_TAX_SCHEDULE A
WHERE A.RET_ID= @RET_ID
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Altering [dbo].[CM_MAPPING_CHUCDANH_ROLE_Search]'
GO
ALTER PROCEDURE [dbo].[CM_MAPPING_CHUCDANH_ROLE_Search]
@p_MA_CHUC_DANH nvarchar(255)= NULL,
@p_TEN_CHUC_DANH nvarchar(255) =NULL,
@p_NHOM_CHUC_DANH nvarchar(255)= NULL,
@p_ROLE_ID nvarchar(255)= NULL,
@p_TOP INT = NULL
AS
BEGIN -- PAGING
IF(@p_TOP IS NULL OR @P_TOP = '' OR @P_TOP = 0)
-- PAGING BEGIN
--SELECT A.*, B.ROLE_DESC AS ROLE_NAME
--FROM CM_MAPPING_CHUCDANH_ROLE A
--LEFT JOIN TL_SYSROLE B ON A.ROLE_ID = B.ROLE_ID
SELECT A.*,B.DisplayName as ROLE_NAME
-- SELECT END
FROM CM_MAPPING_CHUCDANH_ROLE A
LEFT JOIN AbpRoles B ON A.ROLE_ID = B.Id --PHONGNT 07/01/2022 Hiển thị tên quyền
WHERE 1 = 1
AND (A.MA_CHUC_DANH LIKE '%' + @p_MA_CHUC_DANH + '%' OR @p_MA_CHUC_DANH IS NULL OR @p_MA_CHUC_DANH = '')
AND (A.TEN_CHUC_DANH LIKE '%' + @p_TEN_CHUC_DANH + '%' OR @p_TEN_CHUC_DANH IS NULL OR @p_TEN_CHUC_DANH = '')
AND (A.NHOM_CHUC_DANH LIKE '%' + @p_NHOM_CHUC_DANH + '%' OR @p_NHOM_CHUC_DANH IS NULL OR @p_NHOM_CHUC_DANH = '')
AND (A.ROLE_ID LIKE '%' + @p_ROLE_ID + '%' OR @p_ROLE_ID IS NULL OR @p_ROLE_ID = '')
-- PAGING END
ELSE
-- PAGING BEGIN
SELECT TOP(CONVERT(INT,@P_TOP))A.*,B.DisplayName as ROLE_NAME
-- SELECT END
FROM CM_MAPPING_CHUCDANH_ROLE A
LEFT JOIN AbpRoles B ON A.ROLE_ID = B.Id --PHONGNT 07/01/2022 Hiển thị tên quyền
WHERE 1 = 1
AND (A.MA_CHUC_DANH LIKE '%' + @p_MA_CHUC_DANH + '%' OR @p_MA_CHUC_DANH IS NULL OR @p_MA_CHUC_DANH = '')
AND (A.TEN_CHUC_DANH LIKE '%' + @p_TEN_CHUC_DANH + '%' OR @p_TEN_CHUC_DANH IS NULL OR @p_TEN_CHUC_DANH = '')
AND (A.NHOM_CHUC_DANH LIKE '%' + @p_NHOM_CHUC_DANH + '%' OR @p_NHOM_CHUC_DANH IS NULL OR @p_NHOM_CHUC_DANH = '')
AND (A.ROLE_ID LIKE '%' + @p_ROLE_ID + '%' OR @p_ROLE_ID IS NULL OR @p_ROLE_ID = '')
-- PAGING END
END -- PAGING
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Creating [dbo].[RET_REPAIR_SUGGEST_BYID]'
GO
create PROCEDURE [dbo].[RET_REPAIR_SUGGEST_BYID]
@RET_ID varchar(15)
AS
SELECT A.*
FROM RET_REPAIR_SUGGEST A
WHERE A.RET_ID= @RET_ID
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Altering [dbo].[TR_REQ_PAYMENT_KT_Upd]'
GO
ALTER PROCEDURE [dbo].[TR_REQ_PAYMENT_KT_Upd]
@p_REQ_PAY_ID varchar(15)= NULL,
@p_REQ_PAY_CODE varchar(50) = NULL,
@p_REQ_DT VARCHAR(20)= NULL,
@p_BRANCH_ID varchar(15) = NULL,
@p_DEP_ID varchar(15) = NULL,
@p_REQ_REASON nvarchar(MAX) = NULL,
@p_REQ_TYPE varchar(15) = NULL,
@P_REQ_ENTRIES nvarchar(MAX) = NULL,
@p_REQ_DESCRIPTION nvarchar(MAX) = NULL,
@p_REF_ID varchar(15) = NULL,
@p_RECEIVER_PO nvarchar(250) = NULL,
@p_REQ_PAY_TYPE varchar(15) = NULL,
@p_REQ_TYPE_CURRENCY nvarchar(50) = NULL,
@p_REQ_AMT decimal(18, 0) = NULL,
@p_REQ_TEMP_AMT decimal(18, 0) = NULL,
@p_MAKER_ID varchar(15) = NULL,
@p_CREATE_DT varchar(25) = NULL,
@p_EDITOR_ID varchar(15) = NULL,
@p_AUTH_STATUS varchar(1) = NULL,
@p_CHECKER_ID varchar(15) = NULL,
@p_APPROVE_DT varchar(25) = NULL,
@p_CREATE_DT_KT varchar(25) = NULL,
@p_MAKER_ID_KT varchar(15) = NULL,
@p_AUTH_STATUS_KT varchar(1) = NULL,
@p_CHECKER_ID_KT varchar(1) = NULL,
@p_APPROVE_DT_KT varchar(25)= null,
@p_CONFIRM_NOTE nvarchar(500) = NULL,
@p_BRANCH_CREATE varchar(15) = NULL,
@p_NOTES varchar(15) = NULL,
@p_RECORD_STATUS varchar(1) = NULL,
@p_TRANSFER_MAKER nvarchar(50) = NULL,
@p_TRANSFER_DT varchar(25) = NULL,
@p_TRASFER_USER_RECIVE varchar(15) = NULL,
@p_PROCESS varchar(15) = NULL,
@p_PAY_PHASE VARCHAR(15) = NULL,
@p_IS_SEND_APPR VARCHAR(15) = NULL,
@p_XMP_TEMP_DATA_ENTRIES XML = NULL,
@p_XMP_TEMP_INVOICE XML = NULL,
@p_XMP_TEMP_VAT_INVOICE XML = NULL
AS
--Validation is here
IF ((SELECT AUTH_STATUS FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID) ='R')
BEGIN
SELECT '-1' Result,'' REQ_PAY_ID,N'Phiếu đề nghị thanh toán đang được trả về đơn vị. Vui lòng chờ đơn vị cập nhật thông tin và duyệt lại!' ErrorDesc
RETURN '-1'
END
DECLARE @ENTRY_PAIR varchar(20),@DR_CR varchar(20),@ACCT VARCHAR(50), @ACCT_NAME VARCHAR(500), @AMT decimal(18,2),@CURRENCY VARCHAR(15), @EXC_RATE DECIMAL(18,0),
@BRANCH_ID VARCHAR(15), @DEP_ID VARCHAR(15),@TRN_DESC nvarchar(255),@GL_CODE VARCHAR(100), @BRANCH_CODE VARCHAR(15), @DEP_CODE VARCHAR(15)
DECLARE @VAT decimal(18, 0) =NULL, @TRANS_NO nvarchar(50)=NULL, @TRANS_DT VARCHAR(20)=NULL,@INVOICE_SIGN nvarchar(50) = NULL,@INVOICE_NO_SIGN nvarchar(50)=null,
@INVOICE_NO nvarchar(50) = NULL,@INVOICE_DT VARCHAR(20) = NULL,@SELLER nvarchar(250) = NULL,@TAX_NO nvarchar(15) = NULL,@GOODS_NAME nvarchar(250) = NULL,
@PRICE decimal(18, 0) = NULL,@TAX decimal(18, 0) = NULL,@NOTES NVARCHAR(MAX) = NULL,@VAT_RATE decimal(18,2),
@ACC_NO VARCHAR(25),@ACC_NAME NVARCHAR(250),@ISSUED_BY NVARCHAR(250),@ISSUED_DT VARCHAR(20),@RATE DECIMAL(18,2),@PRICE_KT DECIMAL(18,2) =0,@TOTAL_AMT_KT DECIMAL(18,2) =0,@VAT_KT DECIMAL(18,2) =0,
@TYPE_VAT VARCHAR(15),@TYPE_FUNC VARCHAR(15)
DECLARE @hdoc INT;
DECLARE @hdocInvoice INT;
DECLARE @hdocVATInvoice INT;
EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XMP_TEMP_DATA_ENTRIES;
EXEC sp_xml_preparedocument @hdocInvoice OUTPUT, @p_XMP_TEMP_INVOICE;
EXEC sp_xml_preparedocument @hdocVATInvoice OUTPUT, @p_XMP_TEMP_VAT_INVOICE;
-- hach toan
DECLARE XmlDataEntries CURSOR FOR
SELECT *
FROM
OPENXML(@hdoc, '/Root/XmlDataEntries', 2)
WITH(ENTRY_PAIR varchar(20),DR_CR varchar(20),ACCT VARCHAR(50), ACCT_NAME VARCHAR(500), AMT decimal(18,2),CURRENCY VARCHAR(15), EXC_RATE DECIMAL(18,0),
BRANCH_ID VARCHAR(15), DEP_ID VARCHAR(15),TRN_DESC nvarchar(1000),GL_CODE VARCHAR(100))
OPEN XmlDataEntries;
--hoa don khong co VAT
DECLARE XmlData CURSOR FOR
SELECT *
FROM
OPENXML(@hdocInvoice, '/Root/XmlData', 2)
WITH(TRANS_NO nvarchar(50),TRANS_DT VARCHAR(20),INVOICE_SIGN nvarchar(50),INVOICE_NO_SIGN nvarchar(50),
INVOICE_NO nvarchar(50),INVOICE_DT VARCHAR(20) ,SELLER nvarchar(250),TAX_NO nvarchar(15),GOODS_NAME nvarchar(250) ,
PRICE decimal(18,2),TAX decimal(18, 2),VAT decimal(18,2),NOTE NVARCHAR(MAX),VAT_RATE decimal(18,2),CURRENCY VARCHAR(15), RATE DECIMAL(18,2),PRICE_KT DECIMAL(18,2),VAT_KT DECIMAL(18,2),TOTAL_AMT_KT DECIMAL(18,2),TYPE_VAT VARCHAR(15), TYPE_FUNC VARCHAR(15))
OPEN XmlData;
-- hoa don co VAT
DECLARE XmlVATInvoice CURSOR FOR
SELECT *
FROM
OPENXML(@hdocVATInvoice, '/Root/XmlVATInvoice', 2)
WITH(TRANS_NO nvarchar(50),TRANS_DT VARCHAR(20),INVOICE_SIGN nvarchar(50),INVOICE_NO_SIGN nvarchar(50),
INVOICE_NO nvarchar(50),INVOICE_DT VARCHAR(20) ,SELLER nvarchar(250),TAX_NO nvarchar(15),GOODS_NAME nvarchar(250) ,
PRICE decimal(18,2),TAX decimal(18, 2),VAT decimal(18,2),NOTE NVARCHAR(MAX),VAT_RATE decimal(18,2),CURRENCY VARCHAR(15), RATE DECIMAL(18,2),PRICE_KT DECIMAL(18,2),VAT_KT DECIMAL(18,2),TOTAL_AMT_KT DECIMAL(18,2),TYPE_VAT VARCHAR(15), TYPE_FUNC VARCHAR(15))
OPEN XmlVATInvoice;
DECLARE @INDEX INT =0, @INDEX_IV INT =0, @INDEX_VAT INT =0
BEGIN TRANSACTION
-- KHAI BAO CAC BUOC DUYET- XAC NHAN
DECLARE @LEVEL_JOB VARCHAR(5), @LEVEL_JOB_PREV INT
SET @LEVEL_JOB =(SELECT LEVEL_JOB FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_REQ_PAY_ID AND TLNAME=@p_MAKER_ID_KT AND STATUS_JOB='C')
SET @LEVEL_JOB_PREV = CONVERT(INT,@LEVEL_JOB) -1
----
--IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID AND MAKER_ID_KT IS NULL))
IF(@p_XMP_TEMP_DATA_ENTRIES IS NOT NULL)
BEGIN
UPDATE TR_REQ_PAYMENT SET
AUTH_STATUS_KT ='U', CREATE_DT_KT = GETDATE(),MAKER_ID_KT =@p_MAKER_ID_KT,CHECKER_ID_KT=NULL,APPROVE_DT_KT = NULL, CONFIRM_NOTE=@p_CONFIRM_NOTE
WHERE REQ_PAY_ID =@p_REQ_PAY_ID
DELETE FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID = @p_REQ_PAY_ID
DELETE FROM TR_REQ_PAY_INVOICE WHERE REQ_PAY_ID= @p_REQ_PAY_ID
IF @@Error <> 0 GOTO ABORT
DECLARE @DR_CR_NAME NVARCHAR(50),@ACC_NAME_FN NVARCHAR(500)
FETCH NEXT FROM XmlDataEntries INTO @ENTRY_PAIR ,@DR_CR,@ACCT, @ACCT_NAME, @AMT ,@CURRENCY, @EXC_RATE,@BRANCH_ID, @DEP_ID,@TRN_DESC,@GL_CODE
WHILE @@fetch_status=0 BEGIN
SET @INDEX = @INDEX +1
SET @GL_CODE = RIGHT(@GL_CODE,9)
SET @ACC_NAME =UPPER(dbo.fChuyenCoDauThanhKhongDau(@ACCT_NAME))
IF(@DR_CR='D')
BEGIN
SET @DR_CR_NAME =N'Nợ'
END
ELSE
BEGIN
SET @DR_CR_NAME =N'Có'
END
SET @BRANCH_CODE =(SELECT TOP 1 BRANCH_CODE FROM CM_BRANCH WHERE BRANCH_ID =@BRANCH_ID)
SET @DEP_CODE =(SELECT TOP 1 DEP_CODE FROM CM_DEPARTMENT WHERE DEP_ID =@DEP_ID)
--SET @ACC_NAME_FN =(SELECT TOP 1 ACC_NAME FROM CM_ACCOUNT WHERE ACC_NO =@ACCT)
IF(@ACCT_NAME IS NULL OR @ACCT_NAME ='' OR @ACC_NAME ='0')
BEGIN
ROLLBACK TRANSACTION
CLOSE XmlDataEntries;
DEALLOCATE XmlDataEntries;
SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Tên tài khoản hạch toán chưa đúng. Vui lòng bấm vào nút Check GL & Check CASA để đồng bộ tài khoản từ Core' ErrorDesc
RETURN '-1'
END
IF(@GL_CODE IS NULL OR @GL_CODE ='')
BEGIN
IF (LEN(@ACCT) >9 AND ((SELECT ISNULL(TK_GL,'') FROM CM_ACCOUNT WHERE ACC_NO =@ACCT) ='' OR (SELECT ISNULL(TK_GL_NAME,'') FROM CM_ACCOUNT WHERE ACC_NO =@ACCT) =''))
BEGIN
ROLLBACK TRANSACTION
CLOSE XmlDataEntries;
DEALLOCATE XmlDataEntries;
SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Tài khoản CASA chưa có thông tin GL Mapping. Vui lòng bấm vào nút Kiểm tra tài khoản để đồng bộ tài khoản từ Core' ErrorDesc
RETURN '-1'
END
END
IF(@DR_CR IS NULL OR @DR_CR ='')
BEGIN
ROLLBACK TRANSACTION
CLOSE XmlDataEntries;
DEALLOCATE XmlDataEntries;
SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Tài khoản nợ không được phép để trống' ErrorDesc
RETURN '-1'
END
IF(@BRANCH_ID IS NULL OR @BRANCH_ID ='')
BEGIN
ROLLBACK TRANSACTION
CLOSE XmlDataEntries;
DEALLOCATE XmlDataEntries;
SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Đơn vị nhận không được phép để trống' ErrorDesc
RETURN '-1'
END
IF(@ACCT IS NULL OR @ACCT ='')
BEGIN
ROLLBACK TRANSACTION
CLOSE XmlDataEntries;
DEALLOCATE XmlDataEntries;
SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Tài khoản có không được phép để trống' ErrorDesc
RETURN '-1'
END
IF(@ACCT IS NOT NULL AND @ACCT <> '' AND LEFT(@ACCT,1) IN ('7','8') AND (@DEP_ID IS NULL OR @DEP_ID =''))
BEGIN
ROLLBACK TRANSACTION
CLOSE XmlDataEntries;
DEALLOCATE XmlDataEntries;
SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Tài khoản hạch toán đầu số 7 & 8 vui lòng chọn mã phòng ban' ErrorDesc
RETURN '-1'
END
IF(@TRN_DESC IS NULL OR @TRN_DESC ='')
BEGIN
ROLLBACK TRANSACTION
CLOSE XmlDataEntries;
DEALLOCATE XmlDataEntries;
SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Diễn giải hạch toán không được phép để trống' ErrorDesc
RETURN '-1'
END
-- NEU HACH TOAN CASA THI 3 KI TU DAU PHAI KHOP VOI BRANCH CODE CUA DON VI CHIU CHI PHI
IF(LEN(@ACCT) >9 AND (SUBSTRING(@ACCT,1,3) <> (SELECT ISNULL(BRANCH_CODE,'') FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_ID)))
BEGIN
ROLLBACK TRANSACTION
CLOSE XmlDataEntries;
DEALLOCATE XmlDataEntries;
SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N'Nếu bạn đang hạch toán CASA trong hệ thống. Vui lòng chọn mã đơn vị khớp với mã đơn vị tương ứng với 3 kí tự đầu của tài khoản CASA' ErrorDesc
RETURN '-1'
---
END
--IF(@DEP_ID IS NOT NULL AND @DEP_ID <> '' AND NOT EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_ID =@DEP_ID AND BRANCH_ID =@BRANCH_ID))
--BEGIN
--ROLLBACK TRANSACTION
-- --CLOSE XmlDataEntries;
-- --DEALLOCATE XmlDataEntries;
-- SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Vui lòng chọn mã phòng ban khớp với mã đơn vị tương ứng với 3 kí tự đầu của tài khoản CASA' ErrorDesc
-- RETURN '-1'
-- ---
--END
IF(@DEP_ID IS NOT NULL AND @DEP_ID <> '' AND (LEFT(@DEP_CODE,3) <> @BRANCH_CODE))
BEGIN
ROLLBACK TRANSACTION
CLOSE XmlDataEntries;
DEALLOCATE XmlDataEntries;
SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Vui lòng chọn mã phòng ban khớp với mã đơn vị tương ứng với 3 kí tự đầu của tài khoản CASA' ErrorDesc
RETURN '-1'
---
END
--IF(NOT EXISTS(SELECT * FROM TR_REQ_PAY_INVOICE WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND ISNULL(TAX,0) >0 AND ISNULL(VAT,0) >0 AND TYPE_FUNC ='KT'))
--BEGIN
-- IF(@ACCT ='353200002' OR @ACCT ='353200001')
-- BEGIN
-- SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N'Bạn không được phép hạch toán tài khoản 353200002,353200001 giao dịch không chứa các hóa đơn có VAT do kế toán lưu trữ ' ErrorDesc
-- RETURN '-1'
-- END
--END select * from TR_REQ_PAY_ENTRIES
DECLARE @p_ET_ID VARCHAR(15);
EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_ENTRIES', @p_ET_ID OUT;
IF @p_ET_ID='' OR @p_ET_ID IS NULL GOTO ABORT;
INSERT INTO TR_REQ_PAY_ENTRIES (REQ_PAY_DT_ID,REQ_PAY_ID,ENTRY_PAIR,DR_CR,DR_CR_NAME,ACCT,ACCT_NAME,AMT,CURRENCY,EXC_RATE,BRANCH_ID,DEP_ID,TRN_DESC,TRN_DATE,MAKER_ID_KT)
VALUES (@p_ET_ID,@p_REQ_PAY_ID,@ENTRY_PAIR,@DR_CR,@DR_CR_NAME,@ACCT,@ACCT_NAME, @AMT ,@CURRENCY, @EXC_RATE, @BRANCH_ID, @DEP_ID,@TRN_DESC,GETDATE(),@p_MAKER_ID_KT)
-- NEU CHUA CO TAI KHOAN THI THEM VO CM_ACCOUNT
IF(NOT EXISTS(SELECT * FROM CM_ACCOUNT WHERE ACC_NO =@ACCT))
BEGIN
INSERT INTO CM_ACCOUNT (ACC_NO, ACC_NAME, TK_GL, TK_GL_NAME, MAKER_ID, CHECKER_ID,CREATE_DT) VALUES
(@ACCT,@ACCT_NAME,@GL_CODE,(SELECT TOP 1 ACC_NAME FROM CM_ACCOUNT WHERE ACC_NO =@GL_CODE),'admin','admin',GETDATE())
END
ELSE
BEGIN
IF(@GL_CODE IS NOT NULL AND @GL_CODE <> '')
BEGIN
UPDATE CM_ACCOUNT SET ACC_NAME =@ACC_NAME, TK_GL =@GL_CODE, TK_GL_NAME =(SELECT TOP 1 ACC_NAME FROM CM_ACCOUNT WHERE ACC_NO =@GL_CODE)
WHERE ACC_NO=@ACCT
END
--UPDATE CM_ACCOUNT SET ACC_NAME =@ACCT_NAME, TK_GL =@GL_CODE, TK_GL_NAME =(SELECT TOP 1 ACC_NAME FROM CM_ACCOUNT WHERE ACC_NO =@GL_CODE), CREATE_DT = GETDATE()
--WHERE ACC_NO=@ACCT
END
IF @@error<>0 GOTO ABORT;
FETCH NEXT FROM XmlDataEntries INTO @ENTRY_PAIR ,@DR_CR,@ACCT, @ACCT_NAME, @AMT ,@CURRENCY, @EXC_RATE,@BRANCH_ID, @DEP_ID,@TRN_DESC,@GL_CODE
END;
CLOSE XmlDataEntries;
DEALLOCATE XmlDataEntries;
-- UPDATE INVOICE
--Insert XmlDataEntries
-- CAP NHAT TAI KHOAN GL
UPDATE CM_ACCOUNT
SET TK_GL ='361200001', TK_GL_NAME =(SELECT ACC_NAME FROM CM_ACCOUNT WHERE ACC_NO ='361200001')
WHERE LEN (ACC_NO) >9 AND ISNULL(TK_GL,'') =''
AND SUBSTRING(ACC_NO,4,4) ='7048'
UPDATE CM_ACCOUNT
SET TK_GL ='519200002', TK_GL_NAME =(SELECT ACC_NAME FROM CM_ACCOUNT WHERE ACC_NO ='519200002')
WHERE LEN (ACC_NO) >9 AND ISNULL(TK_GL,'') =''
AND SUBSTRING(ACC_NO,4,4) ='7044' AND SUBSTRING(ACC_NO,12,2) ='19'
UPDATE CM_ACCOUNT
SET TK_GL ='421100001', TK_GL_NAME =(SELECT ACC_NAME FROM CM_ACCOUNT WHERE ACC_NO ='421100001')
WHERE LEN (ACC_NO) >9 AND ISNULL(TK_GL,'') =''
AND SUBSTRING(ACC_NO,4,4) ='7041'
--UPDATE TR_REQ_PAY_ENTRIES SET ACCT_NAME = UPPER(dbo.fChuyenCoDauThanhKhongDau(ACCT_NAME)) WHERE REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM PAY_ENTRIES_POST WHERE ISNULL(REF_NO,'') ='')
-- CAP NHAT TAI KHOAN GL
FETCH NEXT FROM XmlData INTO @TRANS_NO , @TRANS_DT ,@INVOICE_SIGN ,@INVOICE_NO_SIGN,@INVOICE_NO ,@INVOICE_DT ,@SELLER ,
@TAX_NO ,@GOODS_NAME ,@PRICE ,@TAX,@VAT,@NOTES,@VAT_RATE,@CURRENCY,@RATE,@PRICE_KT ,@VAT_KT,@TOTAL_AMT_KT,@TYPE_VAT,@TYPE_FUNC
WHILE @@fetch_status=0 BEGIN
SET @INDEX_IV = @INDEX_IV+1
IF(LEN(@INVOICE_NO) >7)
BEGIN
ROLLBACK TRANSACTION
CLOSE XmlData;
DEALLOCATE XmlData;
SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Số hóa đơn '+ @INVOICE_NO +N' không được lớn hơn 7 kí tự' ErrorDesc
RETURN '-1'
END
IF(LEN(@INVOICE_NO) <7)
BEGIN
ROLLBACK TRANSACTION
CLOSE XmlData;
DEALLOCATE XmlData;
SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Số hóa đơn '+ @INVOICE_NO +N' phải đủ 7 kí tự' ErrorDesc
RETURN '-1'
END
IF(@TYPE_FUNC ='HC')
BEGIN
IF(EXISTS(SELECT * FROM TR_REQ_PAY_INVOICE WHERE INVOICE_NO =@INVOICE_NO AND INVOICE_NO_SIGN = @INVOICE_NO_SIGN AND INVOICE_SIGN =@INVOICE_SIGN AND
TAX_NO =@TAX_NO AND TAX =@TAX AND TYPE_FUNC ='HC' AND AUTH_STATUS <>'D' AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS NOT IN ('E','D') AND MAKER_ID NOT IN (SELECT TLNANME FROM TL_USER WHERE RoleName ='DISABLE' OR AUTH_STATUS ='U'))))
BEGIN
ROLLBACK TRANSACTION
CLOSE XmlData;
DEALLOCATE XmlData;
SELECT '-1' as Result, '' REQ_PAY_ID,N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Số hóa đơn '+ @INVOICE_NO +N' đã tồn tại trong hệ thống' ErrorDesc
RETURN '-1'
END
END
IF(@TYPE_FUNC ='KT')
BEGIN
IF(EXISTS(SELECT * FROM TR_REQ_PAY_INVOICE WHERE INVOICE_NO =@INVOICE_NO AND INVOICE_NO_SIGN = @INVOICE_NO_SIGN
AND INVOICE_SIGN =@INVOICE_SIGN AND TAX_NO =@TAX_NO AND TAX =@TAX AND TYPE_FUNC ='KT' AND AUTH_STATUS <>'D' AND
REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS NOT IN ('E','D') AND MAKER_ID NOT IN (SELECT TLNANME FROM TL_USER WHERE RoleName ='DISABLE' OR AUTH_STATUS ='U'))))
BEGIN
ROLLBACK TRANSACTION
CLOSE XmlData;
DEALLOCATE XmlData;
SELECT '-1' as Result, '' REQ_PAY_ID,N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Số hóa đơn '+ @INVOICE_NO +N' đã tồn tại trong hệ thống' ErrorDesc
RETURN '-1'
END
END
DECLARE @p_REQ_INV_ID VARCHAR(15);
EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_INVOICE', @p_REQ_INV_ID OUT;
IF @p_REQ_INV_ID='' OR @p_REQ_INV_ID IS NULL GOTO ABORT;
INSERT INTO TR_REQ_PAY_INVOICE(REQ_PAYDT_ID,REQ_PAY_ID,TRANS_NO,TRANS_DT,INVOICE_SIGN,INVOICE_NO,INVOICE_DT,SELLER,TAX_NO,GOODS_NAME,PRICE,TAX,VAT,NOTE,
MAKER_ID,CREATE_DT,EDITOR_ID,AUTH_STATUS,CHECKER_ID,APPROVE_DT,
CREATE_DT_KT,MAKER_ID_KT,AUTH_STATUS_KT,CHECKER_ID_KT,APPROVE_DT_KT,RECORD_STATUS,INVOICE_NO_SIGN,VAT_RATE,CURRENCY,RATE,PRICE_KT ,VAT_KT,TOTAL_AMT_KT,TYPE_VAT,TYPE_FUNC)
VALUES (@p_REQ_INV_ID,@p_REQ_PAY_ID , @TRANS_NO , CONVERT(DATE,@TRANS_DT,103) ,@INVOICE_SIGN ,@INVOICE_NO ,CONVERT(DATE,@INVOICE_DT,103) ,@SELLER ,@TAX_NO ,@GOODS_NAME ,@PRICE ,@TAX,@VAT,@NOTES,
@p_MAKER_ID,GETDATE(),NULL,'U',NULL,NULL,GETDATE(),@p_MAKER_ID_KT,'U',NULL,NULL,'1',@INVOICE_NO_SIGN,@VAT_RATE,@CURRENCY,@RATE,@PRICE_KT ,@VAT_KT,@TOTAL_AMT_KT,@TYPE_VAT,@TYPE_FUNC)
IF @@error<>0 GOTO ABORT;
FETCH NEXT FROM XmlData
INTO @TRANS_NO , @TRANS_DT,@INVOICE_SIGN,@INVOICE_NO_SIGN,@INVOICE_NO ,@INVOICE_DT ,@SELLER ,@TAX_NO ,@GOODS_NAME ,@PRICE ,
@TAX,@VAT,@NOTES,@VAT_RATE,@CURRENCY,@RATE,@PRICE_KT ,@VAT_KT,@TOTAL_AMT_KT,@TYPE_VAT,@TYPE_FUNC
END;
CLOSE XmlData;
DEALLOCATE XmlData;
-- CAP NHAT HOA DON CO VAT
FETCH NEXT FROM XmlVATInvoice INTO @TRANS_NO , @TRANS_DT ,@INVOICE_SIGN ,@INVOICE_NO_SIGN,@INVOICE_NO ,@INVOICE_DT ,@SELLER ,
@TAX_NO ,@GOODS_NAME ,@PRICE ,@TAX,@VAT,@NOTES,@VAT_RATE,@CURRENCY,@RATE,@PRICE_KT ,@VAT_KT,@TOTAL_AMT_KT,@TYPE_VAT,@TYPE_FUNC
WHILE @@fetch_status=0 BEGIN
SET @INDEX_VAT = @INDEX_VAT+1
IF(LEN(@INVOICE_NO) >7)
BEGIN
ROLLBACK TRANSACTION
CLOSE XmlVATInvoice;
DEALLOCATE XmlVATInvoice;
SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_VAT)+N': Số hóa đơn '+ @INVOICE_NO +N' không được lớn hơn 7 kí tự' ErrorDesc
RETURN '-1'
END
IF(LEN(@INVOICE_NO) <7)
BEGIN
ROLLBACK TRANSACTION
CLOSE XmlVATInvoice;
DEALLOCATE XmlVATInvoice;
SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_VAT)+N': Số hóa đơn '+ @INVOICE_NO +N' phải đủ 7 kí tự' ErrorDesc
RETURN '-1'
END
IF(@TYPE_FUNC ='HC')
BEGIN
IF(EXISTS(SELECT * FROM TR_REQ_PAY_INVOICE WHERE INVOICE_NO =@INVOICE_NO AND INVOICE_NO_SIGN = @INVOICE_NO_SIGN AND INVOICE_SIGN =@INVOICE_SIGN AND
TAX_NO =@TAX_NO AND TAX =@TAX AND TYPE_FUNC ='HC' AND AUTH_STATUS <>'D' AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS NOT IN ('E','D') AND MAKER_ID NOT IN (SELECT TLNANME FROM TL_USER WHERE RoleName ='DISABLE' OR AUTH_STATUS ='U'))))
BEGIN
ROLLBACK TRANSACTION
CLOSE XmlVATInvoice;
DEALLOCATE XmlVATInvoice;
SELECT '-1' as Result, '' REQ_PAY_ID,N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_VAT)+N': Số hóa đơn '+ @INVOICE_NO +N' đã tồn tại trong hệ thống' ErrorDesc
RETURN '-1'
END
END
IF(@TYPE_FUNC ='KT')
BEGIN
IF(EXISTS(SELECT * FROM TR_REQ_PAY_INVOICE WHERE INVOICE_NO =@INVOICE_NO AND INVOICE_NO_SIGN = @INVOICE_NO_SIGN
AND INVOICE_SIGN =@INVOICE_SIGN AND TAX_NO =@TAX_NO AND TAX =@TAX AND TYPE_FUNC ='KT' AND AUTH_STATUS <>'D' AND
REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS NOT IN ('E','D') AND MAKER_ID NOT IN (SELECT TLNANME FROM TL_USER WHERE RoleName ='DISABLE' OR AUTH_STATUS ='U'))))
BEGIN
ROLLBACK TRANSACTION
CLOSE XmlVATInvoice;
DEALLOCATE XmlVATInvoice;
SELECT '-1' as Result, '' REQ_PAY_ID,N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_VAT)+N': Số hóa đơn '+ @INVOICE_NO +N' đã tồn tại trong hệ thống' ErrorDesc
RETURN '-1'
END
END
DECLARE @p_REQ_INV_VAT_ID VARCHAR(15);
EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_INVOICE', @p_REQ_INV_VAT_ID OUT;
IF @p_REQ_INV_VAT_ID='' OR @p_REQ_INV_VAT_ID IS NULL GOTO ABORT;
INSERT INTO TR_REQ_PAY_INVOICE(REQ_PAYDT_ID,REQ_PAY_ID,TRANS_NO,TRANS_DT,INVOICE_SIGN,INVOICE_NO,INVOICE_DT,SELLER,TAX_NO,GOODS_NAME,PRICE,TAX,VAT,NOTE,
MAKER_ID,CREATE_DT,EDITOR_ID,AUTH_STATUS,CHECKER_ID,APPROVE_DT,
CREATE_DT_KT,MAKER_ID_KT,AUTH_STATUS_KT,CHECKER_ID_KT,APPROVE_DT_KT,RECORD_STATUS,INVOICE_NO_SIGN,VAT_RATE,CURRENCY,RATE,PRICE_KT ,VAT_KT,TOTAL_AMT_KT,TYPE_VAT,TYPE_FUNC)
VALUES (@p_REQ_INV_VAT_ID,@p_REQ_PAY_ID , @TRANS_NO , CONVERT(DATE,@TRANS_DT,103) ,@INVOICE_SIGN ,@INVOICE_NO ,CONVERT(DATE,@INVOICE_DT,103) ,@SELLER ,@TAX_NO ,@GOODS_NAME ,@PRICE ,@TAX,@VAT,@NOTES,
@p_MAKER_ID,GETDATE(),NULL,'U',NULL,NULL,GETDATE(),@p_MAKER_ID_KT,'U',NULL,NULL,'1',@INVOICE_NO_SIGN,@VAT_RATE,@CURRENCY,@RATE,@PRICE_KT ,@VAT_KT,@TOTAL_AMT_KT,@TYPE_VAT,'KT')
IF @@error<>0 GOTO ABORT;
FETCH NEXT FROM XmlVATInvoice
INTO @TRANS_NO , @TRANS_DT,@INVOICE_SIGN,@INVOICE_NO_SIGN,@INVOICE_NO ,@INVOICE_DT ,@SELLER ,@TAX_NO ,@GOODS_NAME ,@PRICE ,
@TAX,@VAT,@NOTES,@VAT_RATE,@CURRENCY,@RATE,@PRICE_KT ,@VAT_KT,@TOTAL_AMT_KT,@TYPE_VAT,@TYPE_FUNC
END;
CLOSE XmlVATInvoice;
DEALLOCATE XmlVATInvoice;
--- Luu log chinh sua select * from TR_REQ_PAY_INVOICE
INSERT INTO TR_REQ_PAY_INVOICE_LOG SELECT * FROM TR_REQ_PAY_INVOICE WHERE REQ_PAY_ID =@p_REQ_PAY_ID
-----
--- BAT DAU CAP NHAT XAC DINH CAC BUOC DUYET SAU KHI KE TOAN CAP NHAT THONG TIN
END
COMMIT TRANSACTION
IF(@p_IS_SEND_APPR = 'Y')
BEGIN
---BAT DAU VALIDATE
DECLARE @REQ_PAY_ID varchar(15), @ET_ID varchar(15), @AMT_ET DECIMAL(18,0), @ACC_ET varchar(25), @DRCR_ET varchar(25), @SUM_ET DECIMAL(18,0) =0
DECLARE cursorProduct CURSOR LOCAL FOR
SELECT REQ_PAY_ID,ENTRY_PAIR,AMT,ACCT,DR_CR FROM TR_REQ_PAY_ENTRIES A WHERE A.REQ_PAY_ID =@p_REQ_PAY_ID
Open cursorProduct
FETCH NEXT FROM cursorProduct INTO @REQ_PAY_ID , @ET_ID, @AMT_ET, @ACC_ET , @DRCR_ET
WHILE @@FETCH_STATUS = 0
BEGIN
IF(@DRCR_ET='C' AND EXISTS(SELECT * FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND ACC_NO =@ACC_ET))
BEGIN
SET @SUM_ET =(SELECT SUM(AMT) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND DR_CR ='C' AND ACCT =@ACC_ET)
IF(ISNULL(@SUM_ET,0) <> (SELECT SUM(TOTAL_AMT) FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND ACC_NO =@ACC_ET))
BEGIN
SELECT '-1' as Result, '' REQ_PAY_ID, N' Số tiền hạch toán có của tài khoản: '+@ACC_ET + N' phải bằng với số tiền trên phương thức thanh toán của tài khoản đó là: '+FORMAT((SELECT ISNULL(SUM(TOTAL_AMT),0) FROM TR_REQ_PAY_METHOD WHERE ACC_NO =@ACC_ET AND REQ_PAY_ID =@p_REQ_PAY_ID),'#,###') ErrorDesc
RETURN '-1'
END
END
-- KIEM TRA SO TIEN NO CO
IF (ISNULL((SELECT SUM(AMT) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND DR_CR ='C' AND ENTRY_PAIR =@ET_ID),0)
<> ISNULL((SELECT SUM(AMT) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND DR_CR ='D' AND ENTRY_PAIR =@ET_ID),0)
)
BEGIN
SELECT '-1' as Result, '' REQ_PAY_ID, N'Mã bút toán: ' + @ET_ID + N' Số tiền bút toán Nợ phải bằng với số tiền bút toán Có' ErrorDesc
RETURN '-1'
END
FETCH NEXT FROM cursorProduct INTO @REQ_PAY_ID , @ET_ID, @AMT_ET, @ACC_ET , @DRCR_ET
END
-- KET THUC VIEC VALIDATE
IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'S'))
BEGIN
SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đang được được đề xuất từ chối! Vui lòng đợi KSV xử lý phiếu' ErrorDesc
RETURN '-1'
END
IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'P'))
BEGIN
SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đã được gửi phê duyệt thành công trước đó! Vui lòng đợi KSV xử lý phiếu' ErrorDesc
RETURN '-1'
END
-- CHAN NEU CHI CO 1 BUT NO 1 BUT CO THI KHONG DUOC DI TIEP
IF(EXISTS(SELECT * FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID))
BEGIN
DECLARE @SUM_CR DECIMAL(18,2), @SUM_DR DECIMAL(18,2)
SET @SUM_CR =ISNULL((SELECT SUM(AMT*ISNULL(EXC_RATE,1)) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND DR_CR ='C'),0)
SET @SUM_DR =ISNULL((SELECT SUM(AMT*ISNULL(EXC_RATE,1)) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND DR_CR ='D'),0)
IF(@SUM_CR <> @SUM_DR)
BEGIN
--ROLLBACK TRANSACTION
--CLOSE XmlDataEntries;
--DEALLOCATE XmlDataEntries;
SELECT '-1' as Result, '' REQ_PAY_ID, N'Tổng hạch toán nợ phải bằng tổng hạch toán có' ErrorDesc
RETURN '-1'
END
END
UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P' WHERE REQ_ID=@p_REQ_PAY_ID AND TLNAME=@p_MAKER_ID_KT
UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='C' WHERE REQ_ID=@p_REQ_PAY_ID AND LEVEL_JOB = CONVERT(VARCHAR(5),@LEVEL_JOB_PREV)
-- CAP NHAT TINH TRANG DUYET KE TOAN LA DANG XU LY
UPDATE TR_REQ_PAYMENT SET AUTH_STATUS_KT='P',CREATE_DT_KT = GETDATE() WHERE REQ_PAY_ID=@p_REQ_PAY_ID
INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
VALUES(@p_REQ_PAY_ID,'SEND',@p_MAKER_ID_KT,GETDATE(), N'Giao dịch viên gửi phê duyệt',N'Giao dịch viên cập nhật thông tin')
SELECT '4' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+N' đã được gửi phê duyệt thành công! Vui lòng đợi kiểm soát viên phê duyệt phiếu' ErrorDesc
RETURN '4'
END
SELECT '0' as Result, @p_REQ_PAY_ID REQ_PAY_ID, '' ErrorDesc
RETURN '0'
ABORT:
BEGIN
ROLLBACK TRANSACTION
CLOSE XmlDataEntries;
DEALLOCATE XmlDataEntries;
CLOSE XmlData;
DEALLOCATE XmlData;
CLOSE XmlVATInvoice;
DEALLOCATE XmlVATInvoice;
SELECT '-1' as Result, '' REQ_PAY_ID, '' ErrorDesc
RETURN '-1'
End
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Creating [dbo].[RET_REPAIR_REAL_BYID]'
GO
create PROCEDURE [dbo].[RET_REPAIR_REAL_BYID]
@RET_ID varchar(15)
AS
SELECT A.*
FROM RET_REPAIR_REAL A
WHERE A.RET_ID= @RET_ID
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Creating [dbo].[ADVANCE_CODE_GenKey]'
GO
/*
DECLARE @l_REQ_ID VARCHAR(15)
--EXEC SYS_CodeMasters_Gen 'TR_REQUEST_DOC', @l_REQ_ID out
exec [ADVANCE_CODE_GenKey] 'TR_REQ_ADVANCE_PAYMENT', '','d', @l_REQ_ID out
SELECT @l_REQ_ID
*/
CREATE PROCEDURE [dbo].[ADVANCE_CODE_GenKey]
@p_TYPE_ID varchar(50),
@p_YEAR varchar(50),
@p_DEFAULT VARCHAR(100),
@p_KeyGen nvarchar(100) OUT
AS
DECLARE @REQTYPE VARCHAR(15);
SELECT @REQTYPE =(
CASE
WHEN @p_DEFAULT = 'I' THEN 'NBO'
WHEN @p_DEFAULT = 'P'THEN 'NCC'
WHEN @p_DEFAULT = 'D' THEN 'XLN'
ELSE 'NO'
END);
DECLARE @CurValue AS Numeric
DECLARE @CODE_YEAR VARCHAR(50) = @REQTYPE + '.'+ CONVERT(VARCHAR,YEAR(GETDATE()))
BEGIN TRANSACTION
IF NOT EXISTS(SELECT 1 FROM TR_CODE_GEN WHERE CODE_TYPE = @p_TYPE_ID AND CUR_YEAR = @CODE_YEAR)
BEGIN
INSERT TR_CODE_GEN (
CODE_TYPE,
CUR_YEAR,
CUR_VALUE
)VALUES(
@p_TYPE_ID,
@CODE_YEAR,
1
)
IF @@ERROR <> 0 GOTO ABORT
SET @CurValue = 1
END
ELSE
BEGIN
IF EXISTS(SELECT 1 FROM TR_CODE_GEN WHERE CODE_TYPE = @p_TYPE_ID AND CUR_YEAR = @CODE_YEAR)
UPDATE TR_CODE_GEN
SET CUR_VALUE =CUR_VALUE + 1
WHERE CODE_TYPE = @p_TYPE_ID AND CUR_YEAR = @CODE_YEAR
IF @@ERROR <> 0 GOTO ABORT
SELECT @CurValue = CUR_VALUE FROM TR_CODE_GEN WHERE CODE_TYPE = @p_TYPE_ID AND CUR_YEAR = @CODE_YEAR
END
SET @p_KeyGen = @CODE_YEAR+'.'+right('00000000' + convert(varchar(20),@CurValue), 6)
IF @@ERROR <> 0 GOTO ABORT
COMMIT TRANSACTION
RETURN 0
ABORT:
BEGIN
ROLLBACK TRANSACTION
SET @p_KeyGen = ''
RETURN -1
END
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Altering [dbo].[PL_REQUEST_DOC_ById_Report]'
GO
ALTER PROCEDURE [dbo].[PL_REQUEST_DOC_ById_Report]
@P_REQ_ID varchar(15)
AS
DECLARE @STEP_KT_PROCESS_ID VARCHAR(1)
SET @STEP_KT_PROCESS_ID= (SELECT MAX(ID) FROM PL_REQUEST_PROCESS WHERE PROCESS_ID ='KT')
DECLARE @listTRADE TABLE
(
GOODS_ID VARCHAR(20),
TRADE_ID VARCHAR(20),
PLAN_ID VARCHAR(20),
AMT_APP DECIMAL(18,2),
AMT_EXE DECIMAL (18,2),
AMT_ETM DECIMAL (18,2),
AMT_TF DECIMAL (18,2),
AMT_RECEIVE_TF DECIMAL (18,2)
)
IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@P_REQ_ID AND PROCESS_ID='APPROVE'))
BEGIN
IF(EXISTS(SELECT * FROM dbo.PL_TRADEDETAIL_HIST WHERE REQ_ID=@P_REQ_ID))
BEGIN
INSERT INTO @listTRADE
( GOODS_ID,TRADE_ID,PLAN_ID,AMT_APP,AMT_EXE,AMT_ETM,AMT_TF,AMT_RECEIVE_TF)
SELECT GOODS_ID,TRADE_ID,PLAN_ID,AMT_APP,AMT_EXE,AMT_ETM,AMT_TF,AMT_RECEIVE_TF FROM dbo.PL_TRADEDETAIL_HIST WHERE REQ_ID=@P_REQ_ID
END
ELSE
BEGIN
INSERT INTO @listTRADE
( GOODS_ID,TRADE_ID,PLAN_ID,AMT_APP,AMT_EXE,AMT_ETM,AMT_TF,AMT_RECEIVE_TF)
SELECT PT.GOODS_ID,PT.TRADE_ID,PT.PLAN_ID,PT.AMT_APP,PT.AMT_EXE,PT.AMT_ETM-PLDT.TOTAL_AMT,PT.AMT_TF-PLFT.TOTAL_AMT,PT.AMT_RECEIVE_TF-PLTT.TOTAL_AMT FROM dbo.PL_TRADEDETAIL PT
LEFT JOIN
(
SELECT TRADE_ID, SUM(TOTAL_AMT) TOTAL_AMT FROM
dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@P_REQ_ID
GROUP BY TRADE_ID
) PLDT ON PLDT.TRADE_ID = PT.TRADE_ID
LEFT JOIN
(
SELECT FR_TRADE_ID, SUM(TOTAL_AMT) TOTAL_AMT FROM
dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@P_REQ_ID
GROUP BY FR_TRADE_ID
) PLFT ON PLFT.FR_TRADE_ID = PT.TRADE_ID
LEFT JOIN
(
SELECT TO_TRADE_ID, SUM(TOTAL_AMT) TOTAL_AMT FROM
dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@P_REQ_ID
GROUP BY TO_TRADE_ID
) PLTT ON PLTT.TO_TRADE_ID = PT.TRADE_ID
WHERE (PT.TRADE_ID IN (SELECT TRADE_ID FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID) OR PT.TRADE_ID IN (SELECT FR_TRADE_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID))
END
END
ELSE
BEGIN
INSERT INTO @listTRADE
( GOODS_ID,TRADE_ID,PLAN_ID,AMT_APP,AMT_EXE,AMT_ETM,AMT_TF,AMT_RECEIVE_TF)
SELECT GOODS_ID,TRADE_ID,PLAN_ID,AMT_APP,AMT_EXE,AMT_ETM,AMT_TF,AMT_RECEIVE_TF FROM dbo.PL_TRADEDETAIL WHERE (TRADE_ID IN (SELECT TRADE_ID FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID) OR TRADE_ID IN (SELECT FR_TRADE_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID))
END
DECLARE @DV_QLNS NVARCHAR(1000)
DECLARE @TB_DV TABLE ( ID INT IDENTITY NOT NULL PRIMARY KEY,DV_QL_NS NVARCHAR(1000))
INSERT INTO @TB_DV SELECT B.TLFullName +N' chấp thuận '+ ISNULL(FORMAT(A.APPROVE_DT,'dd/MM/yyyy,hh:mm:ss tt'),'') AS TEN_DVCM FROM PL_REQUEST_PROCESS A
INNER JOIN TL_USER B ON A.CHECKER_ID = B.TLNANME
WHERE REQ_ID =@P_REQ_ID AND A.PROCESS_ID ='DVCM'
SET @DV_QLNS = (SELECT DV_QL_NS FROM @TB_DV WHERE ID =1) + ISNULL(' , ' + (SELECT DV_QL_NS FROM @TB_DV WHERE ID =2) ,'')+ ISNULL( ', '+ (SELECT DV_QL_NS FROM @TB_DV WHERE ID =3),'') + ISNULL(', '+ (SELECT DV_QL_NS FROM @TB_DV WHERE ID =4),'')
DECLARE @TABLE1 TABLE (
STT INT,
GD_NAME NVARCHAR(200),
AMT_APP DECIMAL(18, 2),
AMT_EXE DECIMAL(18, 2),
AMT_REMAIN DECIMAL(18, 2),
TOTAL_AMT DECIMAL(18, 2),
TOTAL_AMT_FN DECIMAL(18, 2),
CHECKER_NAME NVARCHAR(200),
XN_NAME VARCHAR(15)
)
INSERT INTO @TABLE1(STT,GD_NAME,AMT_APP,AMT_EXE,AMT_REMAIN,TOTAL_AMT,TOTAL_AMT_FN,CHECKER_NAME,XN_NAME)
SELECT ROW_NUMBER() OVER (ORDER BY CG.GD_NAME) AS STT ,CG.GD_NAME,
ISNULL(PT.AMT_APP,0) + ISNULL(PT.AMT_RECEIVE_TF,0) - ISNULL(PT.AMT_TF,0) AS AMT_APP,
ISNULL(PT.AMT_ETM,0) AS AMT_EXE,
ISNULL(PT.AMT_APP,0) + ISNULL(PT.AMT_RECEIVE_TF,0) - ISNULL(PT.AMT_TF,0) - ISNULL(PT.AMT_ETM,0) AS AMT_REMAIN,
SUM(ISNULL(PLDT.TOTAL_AMT,0)) AS TOTAL_AMT,
ISNULL(PT.AMT_APP,0) + ISNULL(PT.AMT_RECEIVE_TF,0) - ISNULL(PT.AMT_TF,0) -ISNULL(PT.AMT_ETM,0) -SUM(ISNULL(PLDT.TOTAL_AMT,0)) AS TOTAL_AMT_FN,
CASE
WHEN PL.PROCESS_ID='APPROVE' THEN USC.TLFullName
ELSE N''
END AS CHECKER_NAME,
'' AS XN_NAME
FROM
dbo.PL_REQUEST_DOC_DT PLDT
LEFT JOIN @listTRADE PT ON PT.TRADE_ID=PLDT.TRADE_ID
LEFT JOIN dbo.PL_MASTER PM ON PM.PLAN_ID=PLDT.PLAN_ID
LEFT JOIN dbo.CM_GOODS CG ON CG.GD_ID=PLDT.GOODS_ID
LEFT JOIN dbo.TL_USER USC ON USC.TLNANME=PLDT.CHECKER_ID
LEFT JOIN dbo.PL_REQUEST_DOC PL ON PL.REQ_ID=PLDT.REQ_ID
WHERE PLDT.REQ_ID=@P_REQ_ID
GROUP BY PT.GOODS_ID,PT.AMT_APP,PT.AMT_ETM,PT.AMT_RECEIVE_TF,PT.AMT_TF,CG.GD_NAME,PLDT.REQ_ID,USC.TLFullName,PL.PROCESS_ID
DECLARE @TABLE TABLE (
FR_AMT_APP DECIMAL(18,2),
FR_AMT_REMAIN DECIMAL(18,2),
TO_AMT_APP DECIMAL(18,2),
TO_AMT_EXE DECIMAL(18,2),
TO_AMT_REMAIN DECIMAL(18,2),
TOTAL_AMT DECIMAL(18,2),
FR_AMT_APP_FINAL DECIMAL(18,2),
FR_AMT_REMAIN_FINAL DECIMAL(18,2),
TO_AMT_APP_FINAL DECIMAL(18,2),
TOTAL_AMT_SIGN DECIMAL(18,2),
TOTAL_AMT_SIGN_FN DECIMAL(18,2)
)
INSERT INTO @TABLE(FR_AMT_APP,FR_AMT_REMAIN, TO_AMT_APP,TO_AMT_EXE, TO_AMT_REMAIN,
TOTAL_AMT, FR_AMT_APP_FINAL,FR_AMT_REMAIN_FINAL,TO_AMT_APP_FINAL,
TOTAL_AMT_SIGN,TOTAL_AMT_SIGN_FN)
SELECT ISNULL(PTF.AMT_APP,0) + ISNULL(PTF.AMT_RECEIVE_TF,0) - ISNULL(PTF.AMT_TF,0) AS FR_AMT_APP,
ISNULL(PTF.AMT_APP,0) + ISNULL(PTF.AMT_RECEIVE_TF,0) - ISNULL(PTF.AMT_TF,0)-ISNULL(PTF.AMT_ETM,0) AS FR_AMT_REMAIN,
ISNULL(PTT.AMT_APP,0) + ISNULL(PTT.AMT_RECEIVE_TF,0) - ISNULL(PTT.AMT_TF,0) AS TO_AMT_APP,
ISNULL(PTT.AMT_ETM,0) AS TO_AMT_EXE,
ISNULL(PTT.AMT_APP,0) + ISNULL(PTT.AMT_RECEIVE_TF,0) - ISNULL(PTT.AMT_TF,0) -ISNULL(PTT.AMT_ETM,0) AS TO_AMT_REMAIN,
ISNULL(PLTF.TOTAL_AMT,0) AS TOTAL_AMT,
ISNULL(PTF.AMT_APP, 0) + ISNULL(PTF.AMT_RECEIVE_TF,0) - ISNULL(PTF.AMT_TF,0) - ISNULL((SELECT SUM(T.TOTAL_AMT) FROM dbo.PL_REQUEST_TRANSFER T WHERE T.FR_TRADE_ID=PLTF.FR_TRADE_ID AND T.REQ_DOC_ID=PLTF.REQ_DOC_ID), 0) AS FR_AMT_APP_FINAL,
ISNULL(PTF.AMT_APP,0) + ISNULL(PTF.AMT_RECEIVE_TF,0) - ISNULL(PTF.AMT_TF,0)-ISNULL(PTF.AMT_ETM,0) - ISNULL((SELECT SUM(T.TOTAL_AMT) FROM dbo.PL_REQUEST_TRANSFER T WHERE T.FR_TRADE_ID=PLTF.FR_TRADE_ID AND T.REQ_DOC_ID=PLTF.REQ_DOC_ID), 0) AS FR_AMT_REMAIN_FINAL,
CASE WHEN ISNULL(PLTF.TO_TRADE_ID,'') <> '' THEN
ISNULL(PTT.AMT_APP,0) + ISNULL(PTT.AMT_RECEIVE_TF,0) - ISNULL(PTT.AMT_TF,0) - ISNULL(PTT.AMT_ETM,0) +
ISNULL((SELECT SUM(T.TOTAL_AMT) FROM dbo.PL_REQUEST_TRANSFER T WHERE T.TO_TRADE_ID=PLTF.TO_TRADE_ID AND T.REQ_DOC_ID=PLTF.REQ_DOC_ID), 0)
ELSE
ISNULL(PLTF.TOTAL_AMT, 0)
END
AS TO_AMT_APP_FINAL,
CASE WHEN ISNULL(PLTF.TO_TRADE_ID,'') <> '' THEN ISNULL(PLDT.TOTAL_AMT, 0) ELSE PLDT.TOTAL_AMT END AS TOTAL_AMT_SIGN, -- Số tiền trình sử dụng
-- LUCTV 23042021 BO SUNG NEU DIEU CHUYEN NGOAI KE HOACH (KHONG CO TRADE ID THI SO TIEN CON LAI SAU KHI TRINH LUON =0)
CASE WHEN ISNULL(PLTF.TO_TRADE_ID,'') <> '' THEN
ISNULL(PTT.AMT_APP,0) + ISNULL(PTT.AMT_RECEIVE_TF,0) - ISNULL(PTT.AMT_TF,0) -ISNULL(PTT.AMT_ETM,0) + ISNULL((SELECT SUM(T.TOTAL_AMT) FROM dbo.PL_REQUEST_TRANSFER T WHERE T.TO_TRADE_ID=PLTF.TO_TRADE_ID AND T.REQ_DOC_ID=PLTF.REQ_DOC_ID), 0) - PLDT.TOTAL_AMT
ELSE
0
END
AS TOTAL_AMT_SIGN_FN
FROM dbo.PL_REQUEST_TRANSFER PLTF
LEFT JOIN @listTRADE PTF ON PTF.TRADE_ID=PLTF.FR_TRADE_ID
LEFT JOIN @listTRADE PTT ON PTT.TRADE_ID=PLTF.TO_TRADE_ID
LEFT JOIN dbo.CM_GOODS CGF ON CGF.GD_ID=PLTF.FR_GOOD_ID
LEFT JOIN dbo.CM_GOODS CGT ON CGT.GD_ID=PLTF.TO_GOOD_ID
LEFT JOIN dbo.PL_REQUEST_PROCESS PR ON PR.REQ_ID=PLTF.REQ_DOC_ID AND PR.PROCESS_ID='TC'
LEFT JOIN dbo.TL_USER US ON US .TLNANME=PR.CHECKER_ID
LEFT JOIN dbo.TL_USER USC ON USC.TLNANME=PLTF.CHECKER_ID
LEFT JOIN dbo.PL_REQUEST_DOC PL ON PL.REQ_ID=PLTF.REQ_DOC_ID
LEFT JOIN
(
SELECT GOODS_ID,REQ_ID, SUM(TOTAL_AMT) AS TOTAL_AMT FROM
dbo.PL_REQUEST_DOC_DT
WHERE REQ_ID=@P_REQ_ID
GROUP BY GOODS_ID,REQ_ID ) PLDT ON PLDT.REQ_ID = PL.REQ_ID AND PLDT.GOODS_ID = PLTF.TO_GOOD_ID
WHERE PLTF.REQ_DOC_ID=@P_REQ_ID
SELECT * FROM @TABLE
SELECT TOP 1 RD.REQ_ID,
RD.REQ_CODE,
RD.REQ_NAME,
RD.REQ_DT,
RD.REQ_TYPE,
RD.REQ_CONTENT,
RD.REQ_REASON,
RD.BRANCH_ID,
(SELECT SUM(TOTAL_AMT)
FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@P_REQ_ID ) AS TOTAL_AMT,
RD.NOTES,
RD.RECORD_STATUS,
RD.MAKER_ID,
RD.CREATE_DT,
RD.AUTH_STATUS,
RD.CHECKER_ID,
CASE WHEN (SELECT ISNULL(FORMAT(RD.APPROVE_DT,'dd/MM/yyyy,hh:mm:ss tt'),'')) <>'' THEN N'Đã chấp thuận '+ ISNULL(FORMAT(RD.APPROVE_DT,'dd/MM/yyyy,hh:mm:ss tt'),'') ELSE '' END AS RP_APPROVE_DT,
CASE WHEN (SELECT ISNULL(FORMAT(PKT.APPROVE_DT,'dd/MM/yyyy,hh:mm:ss tt'),'')) <> '' THEN N'Đã chấp thuận '+ ISNULL(FORMAT(PKT.APPROVE_DT,'dd/MM/yyyy,hh:mm:ss tt'),'') + CHAR (10) +
ISNULL((SELECT PROCESS_DESC FROM PL_PROCESS WHERE PROCESS_ID ='KT' AND REQ_ID =@P_REQ_ID AND NOTES =N'Trưởng đơn vị đã phê duyệt' AND ID =(SELECT MAX(ID) FROM PL_PROCESS WHERE REQ_ID =@P_REQ_ID AND PROCESS_ID ='KT') ),'')
ELSE '' END AS APPROVE_DT_KT,
RD.PROCESS_ID,
RD.DVDM_APP_ID,
RD.REQ_PARENT_ID,
RD.BRANCH_FEE,
RD.EFFEC_DT,
RD.IS_BACKDAY,
RD.DEP_ID,
RD.BASED_CONTENT,
BR.BRANCH_NAME AS BRANCH_FEE_NAME,
RD.DEP_FEE, CASE WHEN RD.NOTES IS NOT NULL AND RD.NOTES <> '' THEN RD.NOTES ELSE BR.BRANCH_NAME END AS BRANCH_NAME,BR.BRANCH_CODE,
(SELECT SUM(AMT_APP) FROM @TABLE1) AS TOTAL_AMT_APP,
(SELECT SUM(AMT_EXE) FROM @TABLE1) AS TOTAL_AMT_EXE,
(SELECT SUM(AMT_REMAIN) FROM @TABLE1) AS TOTAL_AMT_REMAIN,
--(SELECT SUM(TOTAL_AMT) FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@P_REQ_ID) - (SELECT SUM(TOTAL_AMT) FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@P_REQ_ID AND REQDT_TYPE='O') AS AMT_IN,
(SELECT SUM(TOTAL_AMT) FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@P_REQ_ID) AS AMT_IN,
CASE WHEN ((SELECT SUM(TOTAL_AMT) FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@P_REQ_ID) - ISNULL((SELECT SUM(TOTAL_AMT) FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@P_REQ_ID ),0)) <0 THEN 0
ELSE ((SELECT SUM(TOTAL_AMT) FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@P_REQ_ID) - ISNULL((SELECT SUM(TOTAL_AMT) FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@P_REQ_ID ),0)) END AS AMT_IN_TKH,
(SELECT SUM(TOTAL_AMT_FN) FROM @TABLE1) AS TOTAL_AMT_ETM,
CASE
WHEN NOT EXISTS(SELECT * FROM PL_REQUEST_DOC_DT WHERE REQ_ID=@P_REQ_ID AND TRADE_TYPE ='VCCB') THEN CAST(0 AS BIT)
WHEN EXISTS(SELECT * FROM PL_REQUEST_DOC_DT WHERE REQ_ID=@P_REQ_ID AND TRADE_TYPE ='VCCB') THEN CAST(1 AS BIT)
END AS IS_VCCB,
CASE
WHEN NOT EXISTS(SELECT * FROM PL_REQUEST_DOC_DT WHERE REQ_ID=@P_REQ_ID AND TRADE_TYPE ='VCCB') THEN CAST(1 AS BIT)
WHEN EXISTS(SELECT * FROM PL_REQUEST_DOC_DT WHERE REQ_ID=@P_REQ_ID AND TRADE_TYPE ='VCCB') THEN CAST(0 AS BIT)
END AS IS_OTHER,
(SELECT SUM(TOTAL_AMT) FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@P_REQ_ID AND REQDT_TYPE='O') AS AMT_OUT,
(SELECT SUM(TOTAL_AMT) FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@P_REQ_ID) AS AMT_TRANSFER, -- Số tiền nhận điều chuyển
DAY(RD.REQ_DT) AS DATE,
MONTH(RD.REQ_DT) AS MONTH,
YEAR(RD.REQ_DT) AS YEAR,
--CASE WHEN DP.DEP_NAME IS NULL THEN BR.BRANCH_NAME ELSE DP.DEP_NAME END AS BRANCH_DEP,
--'' BRANCH_DEP,
DP.DEP_NAME AS BRANCH_DEP ,
--BR.BRANCH_NAME AS BRANCH_NAME,
CASE WHEN PRC.ID IS NULL THEN UPRD.TLFullName ELSE UPRC.TLFullName END AS TDV_NAME,
UTGD.TLFullName AS TGD_NAME,
UHDQT.TLFullName AS HDQT_NAME,
UPKT.TLFullName AS PKT_NAME,
RD.IS_CHECKALL,RD.BASED_CONTENT,RD.PL_BASED_ID, '' AS PL_BASED_CONTENT, '' AS PL_BASED_CODE,
CASE WHEN DP_C.DEP_NAME IS NULL THEN BR_C.BRANCH_NAME ELSE DP_C.DEP_NAME END AS DV_CREATE, (SELECT @DV_QLNS) AS DV_QL_CONFIRM,
--UPTC.TLFullName + N' Đã chấp thuận '+ ISNULL(FORMAT(PTC.APPROVE_DT,'dd/MM/yyyy,hh:mm:ss tt'),'') AS TC_CONFIRM,
'' AS TC_CONFIRM,
UPTC.TLFullName + N' Đã chấp thuận lúc: '+ ISNULL(FORMAT(PTC.APPROVE_DT,'dd/MM/yyyy,hh:mm:ss tt'),'') AS TAI_CHINH_CONFIRM,
CASE WHEN EXISTS(SELECT * FROM PL_REQUEST_DOC_DT WHERE REQ_ID = @p_REQ_ID AND CURRENCY <>'VND') THEN (SELECT TOP 1 CURRENCY FROM PL_REQUEST_DOC_DT WHERE REQ_ID = @p_REQ_ID AND CURRENCY <>'VND') ELSE 'VND' END AS CURR
--,(SELECT FORMAT(SUM(ISNULL(FR_AMT_APP, 0)),'#,0') FROM @TABLE) AS SUM_FR_AMT_APP,
--(SELECT FORMAT(SUM(ISNULL(FR_AMT_REMAIN, 0)),'#,0') FROM @TABLE) AS SUM_FR_AMT_REMAIN,
--(SELECT FORMAT(SUM(ISNULL(TO_AMT_APP, 0)),'#,0') FROM @TABLE) AS SUM_TO_AMT_APP,
--(SELECT FORMAT(SUM(ISNULL(TO_AMT_EXE, 0)),'#,0') FROM @TABLE) AS SUM_TO_AMT_EXE,
--(SELECT FORMAT(SUM(ISNULL(TO_AMT_REMAIN, 0)),'#,0') FROM @TABLE) AS SUM_TO_AMT_REMAIN,
--(SELECT FORMAT(SUM(ISNULL(TOTAL_AMT, 0)),'#,0') FROM @TABLE) AS SUM_TOTAL_AMT,
--(SELECT FORMAT(SUM(ISNULL(FR_AMT_APP_FINAL, 0)),'#,0') FROM @TABLE) AS SUM_FR_AMT_APP_FINAL,
--(SELECT FORMAT(SUM(ISNULL(FR_AMT_REMAIN_FINAL, 0)),'#,0') FROM @TABLE) AS SUM_FR_AMT_REMAIN_FINAL,
--(SELECT FORMAT(SUM(ISNULL(TO_AMT_APP_FINAL, 0)),'#,0') FROM @TABLE) AS SUM_TO_AMT_APP_FINAL,
--(SELECT FORMAT(SUM(ISNULL(TOTAL_AMT_SIGN, 0)),'#,0') FROM @TABLE) AS SUM_TOTAL_AMT_SIGN,
--(SELECT FORMAT(SUM(ISNULL(TOTAL_AMT_SIGN_FN, 0)),'#,0') FROM @TABLE) AS SUM_TOTAL_AMT_SIGN_FN,
,(SELECT FORMAT(SUM(ISNULL(FR_AMT_APP, 0)),'0') FROM @TABLE) AS SUM_FR_AMT_APP,
(SELECT FORMAT(SUM(ISNULL(FR_AMT_REMAIN, 0)),'0') FROM @TABLE) AS SUM_FR_AMT_REMAIN,
(SELECT FORMAT(SUM(ISNULL(TO_AMT_APP, 0)),'0') FROM @TABLE) AS SUM_TO_AMT_APP,
(SELECT FORMAT(SUM(ISNULL(TO_AMT_EXE, 0)),'0') FROM @TABLE) AS SUM_TO_AMT_EXE,
(SELECT FORMAT(SUM(ISNULL(TO_AMT_REMAIN, 0)),'0') FROM @TABLE) AS SUM_TO_AMT_REMAIN,
(SELECT FORMAT(SUM(ISNULL(TOTAL_AMT, 0)),'0') FROM @TABLE) AS SUM_TOTAL_AMT,
(SELECT FORMAT(SUM(ISNULL(FR_AMT_APP_FINAL, 0)),'0') FROM @TABLE) AS SUM_FR_AMT_APP_FINAL,
(SELECT FORMAT(SUM(ISNULL(FR_AMT_REMAIN_FINAL, 0)),'0') FROM @TABLE) AS SUM_FR_AMT_REMAIN_FINAL,
(SELECT FORMAT(SUM(ISNULL(TO_AMT_APP_FINAL, 0)),'0') FROM @TABLE) AS SUM_TO_AMT_APP_FINAL,
(SELECT FORMAT(SUM(ISNULL(TOTAL_AMT_SIGN, 0)),'0') FROM @TABLE) AS SUM_TOTAL_AMT_SIGN,
(SELECT FORMAT(SUM(ISNULL(TOTAL_AMT_SIGN_FN, 0)),'0') FROM @TABLE) AS SUM_TOTAL_AMT_SIGN_FN,
CASE WHEN RD.NOTES IS NOT NULL AND RD.NOTES <> '' THEN RD.NOTES ELSE ISNULL(DP.DEP_NAME,'') +' '+ ISNULL(BR.BRANCH_NAME,'') END AS DV_CP,
CASE WHEN HDQT.ID IS NOT NULL AND ISNULL(RD.OTHER_NOTES,'') <> '' THEN N'Thay mặt Hội Đồng Quản Trị' WHEN HDQT.ID IS NOT NULL AND ISNULL(RD.OTHER_NOTES,'') ='' THEN N'Phê duyệt cấp HĐQT (6)' ELSE N'' END AS HDQT_TITLE,
CASE WHEN PRHDQT.ID IS NOT NULL AND ISNULL(RD.OTHER_NOTES,'') <> '' THEN N'Thay mặt Hội Đồng Quản Trị' + CHAR(10)+ N'Đã chấp thuận '+ ISNULL(FORMAT(PRHDQT.APPROVE_DT,'dd/MM/yyyy,hh:mm:ss tt'),'')
WHEN PRHDQT.ID IS NOT NULL AND ISNULL(RD.OTHER_NOTES,'') = '' THEN N'Chủ Tịch Hội Đồng Quản Trị' + CHAR(10)+ N'Đã chấp thuận '+ ISNULL(FORMAT(PRHDQT.APPROVE_DT,'dd/MM/yyyy,hh:mm:ss tt'),'') ELSE '' END AS HDQT_APPROVE_DT,
CASE WHEN PRTGD.ID IS NOT NULL THEN N'Phê duyệt cấp TGĐ (5)'
ELSE N'' END AS TGD_TITLE,
CASE WHEN TGD.ID IS NOT NULL THEN N'Tổng Giám Đốc' + CHAR(10)+ N'Đã chấp thuận '+ ISNULL(FORMAT(TGD.APPROVE_DT,'dd/MM/yyyy,hh:mm:ss tt'),'') ELSE '' END AS TGD_APPROVE_DT,
CASE WHEN DVDC.ID IS NOT NULL THEN (SELECT TLFullName FROM TL_USER WHERE TLNANME =DVDC.CHECKER_ID) + N' đã chấp thuận '+ ISNULL(FORMAT(DVDC.APPROVE_DT,'dd/MM/yyyy,hh:mm:ss tt'),'') ELSE '' END AS DV_DC_NS_CONFIRM,
CASE WHEN DVDM_DC.ID IS NOT NULL THEN (SELECT TLFullName FROM TL_USER WHERE TLNANME =DVDM_DC.CHECKER_ID) + N' đã chấp thuận '+
ISNULL(FORMAT(DVDM_DC.APPROVE_DT,'dd/MM/yyyy,hh:mm:ss tt'),'') ELSE '' END AS DV_QL_NS_CONFIRM
--CASE WHEN PRHDQT.ID IS NOT NULL THEN UHDQT.TLFullName ELSE '' END AS HDQT_TITLE,
FROM dbo.PL_REQUEST_DOC RD
LEFT JOIN dbo.CM_BRANCH BR ON BR.BRANCH_ID=RD.BRANCH_FEE
LEFT JOIN dbo.CM_DEPARTMENT DP ON DP.DEP_ID=RD.DEP_FEE
LEFT JOIN dbo.TL_USER UD ON UD.TLNANME=RD.CHECKER_ID
LEFT JOIN dbo.PL_REQUEST_PROCESS PRC ON PRC.REQ_ID=RD.REQ_ID AND PRC.PROCESS_ID='DVC'
LEFT JOIN dbo.PL_REQUEST_PROCESS PRD ON PRD.REQ_ID=RD.REQ_ID AND PRD.PROCESS_ID='APPNEW'
LEFT JOIN dbo.TL_USER UPRC ON UPRC.TLNANME=PRC.CHECKER_ID
LEFT JOIN dbo.TL_USER UPRD ON UPRD.TLNANME=PRD.CHECKER_ID
LEFT JOIN dbo.PL_REQUEST_PROCESS PRTGD ON PRTGD.REQ_ID=RD.REQ_ID AND PRTGD.PROCESS_ID LIKE 'TGD%'
LEFT JOIN dbo.TL_USER UTGD ON UTGD.TLNANME=PRTGD.CHECKER_ID
LEFT JOIN dbo.PL_REQUEST_PROCESS PRHDQT ON PRHDQT.REQ_ID=RD.REQ_ID AND PRHDQT.PROCESS_ID='HDQT' AND PRHDQT.STATUS='P'
LEFT JOIN dbo.PL_REQUEST_PROCESS TGD ON TGD.REQ_ID=RD.REQ_ID AND TGD.PROCESS_ID LIKE 'TGD%' AND TGD.STATUS ='P'
LEFT JOIN dbo.PL_REQUEST_PROCESS HDQT ON HDQT.REQ_ID=RD.REQ_ID AND HDQT.PROCESS_ID='HDQT'
LEFT JOIN dbo.TL_USER UHDQT ON UHDQT.TLNANME=PRHDQT.CHECKER_ID
LEFT JOIN dbo.PL_REQUEST_PROCESS PKT ON PKT.REQ_ID=RD.REQ_ID AND PKT.PROCESS_ID='KT'
LEFT JOIN dbo.PL_REQUEST_PROCESS PTC ON PTC.REQ_ID=RD.REQ_ID AND PTC.PROCESS_ID='TC'
LEFT JOIN dbo.PL_REQUEST_PROCESS DVDM_DC ON DVDM_DC.REQ_ID=RD.REQ_ID AND DVDM_DC.PROCESS_ID='DVDM_DC' AND DVDM_DC.STATUS ='P'
LEFT JOIN dbo.TL_USER UPKT ON UPKT.TLNANME=PKT.CHECKER_ID
LEFT JOIN dbo.TL_USER UPTC ON UPTC.TLNANME=PTC.CHECKER_ID
LEFT JOIN CM_BRANCH BR_C ON RD.BRANCH_CREATE = BR_C.BRANCH_ID
LEFT JOIN CM_DEPARTMENT DP_C ON RD.DEP_CREATE = DP_C.DEP_ID
-- điều chuyển ngân sách
LEFT JOIN dbo.PL_REQUEST_TRANSFER PLTF ON PLTF.REQ_DOC_ID = RD.REQ_ID
LEFT JOIN @listTRADE PTF ON PTF.TRADE_ID=PLTF.FR_TRADE_ID
LEFT JOIN @listTRADE PTT ON PTT.TRADE_ID=PLTF.TO_TRADE_ID
LEFT JOIN dbo.CM_GOODS CGF ON CGF.GD_ID=PLTF.FR_GOOD_ID
LEFT JOIN dbo.CM_GOODS CGT ON CGT.GD_ID=PLTF.TO_GOOD_ID
LEFT JOIN dbo.PL_REQUEST_PROCESS PR ON PR.REQ_ID=PLTF.REQ_DOC_ID AND PR.PROCESS_ID='TC'
LEFT JOIN dbo.TL_USER US ON US .TLNANME=PR.CHECKER_ID
LEFT JOIN dbo.TL_USER USC ON USC.TLNANME=PLTF.CHECKER_ID
LEFT JOIN dbo.PL_REQUEST_DOC PL ON PL.REQ_ID=PLTF.REQ_DOC_ID
LEFT JOIN dbo.PL_REQUEST_PROCESS DVDC ON DVDC.REQ_ID=RD.REQ_ID AND DVDC.PROCESS_ID LIKE 'DVDC%' AND DVDC.STATUS ='P'
-- DON VI QUAN LY NGAN SACH
WHERE RD.REQ_ID=@P_REQ_ID
ORDER BY RD.REQ_ID
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Creating [dbo].[TR_REQ_ADVANCE_PAYMENT_Ins]'
GO
CREATE PROCEDURE [dbo].[TR_REQ_ADVANCE_PAYMENT_Ins]
@p_REQ_PAY_ID varchar(15)= NULL,
@p_REQ_PAY_CODE varchar(50) = NULL,
@p_REQ_DT VARCHAR(10)= NULL,
@p_BRANCH_ID varchar(15) = NULL,
@p_DEP_ID varchar(15) = NULL,
@p_REQ_REASON nvarchar(MAX) = NULL,
@p_REQ_TYPE varchar(15) = NULL,
@P_REQ_ENTRIES nvarchar(MAX) = NULL,
@p_REQ_DESCRIPTION nvarchar(MAX) = NULL,
@p_REF_ID varchar(15) = NULL,
@p_RECEIVER_PO nvarchar(250) = NULL,
@p_RECEIVER_DEBIT nvarchar(250) = NULL,
@p_REQ_PAY_TYPE varchar(15) = NULL,
@p_REQ_TYPE_CURRENCY nvarchar(50) = NULL,
@p_REQ_AMT decimal(18, 0) = NULL,
@p_REQ_TEMP_AMT decimal(18, 0) = NULL,
@p_MAKER_ID varchar(15) = NULL,
@p_CREATE_DT varchar(25) = NULL,
@p_EDITOR_ID varchar(15) = NULL,
@p_AUTH_STATUS varchar(1) = NULL,
@p_CHECKER_ID varchar(15) = NULL,
@p_APPROVE_DT varchar(25) = NULL,
@p_CREATE_DT_KT varchar(25) = NULL,
@p_MAKER_ID_KT varchar(15) = NULL,
@p_AUTH_STATUS_KT varchar(1) = NULL,
@p_CHECKER_ID_KT varchar(1) = NULL,
@p_APPROVE_DT_KT varchar(25)= null,
@p_CONFIRM_NOTE nvarchar(500) = NULL,
@p_BRANCH_CREATE varchar(15) = NULL,
@p_NOTES varchar(15) = NULL,
@p_RECORD_STATUS varchar(1) = NULL,
@p_TRANSFER_MAKER nvarchar(50) = NULL,
@p_TRANSFER_DT varchar(25) = NULL,
@p_TRASFER_USER_RECIVE varchar(15) = NULL,
@p_PROCESS varchar(15) = NULL,
@p_PAY_PHASE VARCHAR(15)= NULL,
@p_DVDM_ID VARCHAR(15) = NULL,
@p_RATE DECIMAL(18,0)= NULL,
@p_RECIVER_MONEY VARCHAR(15) = NULL,
@p_IS_PERIOD VARCHAR(5) = NULL,
@p_TYPE_FUNCTION VARCHAR(15) = NULL,
--doanptt 19/01/2022
@p_XMP_TEMP XML = NULL,
@p_XMP_CUS XML = NULL,
@p_XMP_PAY_ATTACH XML = NULL,
@p_XMP_PAY_INVOICE XML = NULL,
@p_XMP_ADVANCE_DT_2 XML = NULL,
@p_XMP_PAY_SCHEDULE XML = NULL,
@p_XMP_PAY_PERIOD XML = NULL,
@p_XMP_PAY_METHOD XML = NULL,
@p_XMP_PAY_BUDGET XML = NULL,
@p_XMP_ADVANCE_DT XML = NULL
AS
--Validation is here
/*
DECLARE @ERRORSYS NVARCHAR(15) = ''
IF ( NOT EXISTS ( SELECT * FROM ASS_COLLECT WHERE ))
SET @ERRORSYS = ''
IF @ERRORSYS <> ''
BEGIN
SELECT ErrorCode Result, '' CAR_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS
RETURN '0'
END
*/
--DECLARE @ERRORSYS NVARCHAR(15) = ''
--IF EXISTS(SELECT * FROM TR_PO_MASTER WHERE REF_ID = @p_REF_ID )
--BEGIN
-- SET @ERRORSYS = 'ASSC-00005'
-- SELECT ErrorCode Result, '' COLLECT_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS
-- RETURN '0'
--END
IF(@p_REQ_TYPE ='I')
BEGIN
DECLARE @AMT_AD_PAY DECIMAL(18,0) =0
DECLARE @AMT_AD_PAY_BACK DECIMAL(18,0) =0
DECLARE @AMT_AD_PAY_REMAIN DECIMAL(18,0) =0
SET @AMT_AD_PAY = (SELECT SUM(REQ_AMT*ISNULL(RATE,1)) FROM TR_REQ_ADVANCE_PAYMENT WHERE REF_ID=@p_MAKER_ID AND AUTH_STATUS_KT='A' AND REQ_TYPE ='I')
SET @AMT_AD_PAY_BACK = (SELECT SUM(D.AMT_USE) +SUM(D.AMT_REVERT) - SUM (D.AMT_ADD)
FROM TR_REQ_PAYMENT_DT D
LEFT JOIN TR_REQ_ADVANCE_PAYMENT X ON D.PAY_ADV_ID = X.REQ_PAY_ID AND D.AUTH_STATUS_KT ='A'
WHERE X.REF_ID =@p_REF_ID)
SET @AMT_AD_PAY_REMAIN =ISNULL(@AMT_AD_PAY,0) -ISNULL(@AMT_AD_PAY_BACK,0)
SET @p_REQ_TEMP_AMT =ISNULL(@AMT_AD_PAY_REMAIN,0)
END
BEGIN TRANSACTION
-- LUCTV 17H51 BO SUNG LAY SO TIEN DA TAM UNG CUA NHAN VIEN --
--SET @AMT_DO =(SELECT * FROM [dbo].TR_RE)
--THIEUVQ 281119---
DECLARE @REC_DEBIT_AUTO VARCHAR(15),@ROLE_KI_NHAY VARCHAR(50)
SET @REC_DEBIT_AUTO =(SELECT TOP 1 ACC_NUM FROM CM_ACCOUNT_PAY WHERE REF_ID = @p_REF_ID)
--IF (@p_REQ_TYPE='I')
--BEGIN
-- --SET @p_REF_ID = @p_MAKER_ID
-- --IF(NOT EXISTS(SELECT * FROM CM_ACCOUNT_PAY WHERE ACC_NUM = @p_RECEIVER_DEBIT))
-- --BEGIN
-- -- SET @p_RECEIVER_DEBIT = @p_RECEIVER_DEBIT+''
-- --END
-- --ELSE
-- --BEGIN
-- -- IF(EXISTS(SELECT * FROM CM_ACCOUNT_PAY WHERE ACC_NUM = @p_RECEIVER_DEBIT AND REF_ID != @p_REF_ID ) AND @p_TYPE_FUNCTION ='SEND')
-- -- BEGIN
-- -- SET @p_RECEIVER_DEBIT =(SELECT ACC_NUM FROM CM_ACCOUNT_PAY WHERE ACC_NUM = @p_RECEIVER_DEBIT)
-- -- END
-- --END
-- IF(@p_RECEIVER_DEBIT IS NOT NULL AND @p_RECEIVER_DEBIT <>'')
-- BEGIN
-- IF(@REC_DEBIT_AUTO IS NOT NULL AND @REC_DEBIT_AUTO <>'' AND @REC_DEBIT_AUTO <> @p_RECEIVER_DEBIT)
-- BEGIN
-- SET @p_RECEIVER_DEBIT =@REC_DEBIT_AUTO
-- END
-- --IF(EXISTS(SELECT * FROM CM_ACCOUNT_PAY WHERE REF_ID <> @p_REF_ID AND ACC_NUM =@p_RECEIVER_DEBIT))
-- --BEGIN
-- -- ROLLBACK TRANSACTION
-- -- SELECT '-1' Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Tài khoản tạm ứng này đã tồn tại và thuộc về nhân viên khác' ErrorDesc
-- -- RETURN '-1'
-- --END
-- END
-- ELSE
-- BEGIN
-- SET @p_RECEIVER_DEBIT =(SELECT TOP 1 ACC_NUM FROM CM_ACCOUNT_PAY WHERE REF_ID =@p_REF_ID)
-- END
--END
-- doanptt 19/01/2022 Khai báo lưới danh sách
DECLARE @hdocTemp INT, @hdocCus INT, @hdocPayAtach INT, @hdocPayInvoice INT, @hdocPayAcvanceDT2 INT,
@hdocPaySchedule INT, @hdocPayPeriod INT, @hdocPayMethod INT, @hdocPayBudget INT, @hdocPayAcvanceDT INT
EXEC sp_xml_preparedocument @hdocTemp OUTPUT, @p_XMP_TEMP;
EXEC sp_xml_preparedocument @hdocCus OUTPUT, @p_XMP_CUS;
EXEC sp_xml_preparedocument @hdocPayAtach OUTPUT, @p_XMP_PAY_ATTACH;
--EXEC sp_xml_preparedocument @hdocPayInvoice OUTPUT, @p_XMP_PAY_INVOICE;
EXEC sp_xml_preparedocument @hdocPayAcvanceDT2 OUTPUT, @p_XMP_ADVANCE_DT_2;
EXEC sp_xml_preparedocument @hdocPaySchedule OUTPUT, @p_XMP_PAY_SCHEDULE;
EXEC sp_xml_preparedocument @hdocPayAcvanceDT OUTPUT, @p_XMP_ADVANCE_DT;
EXEC sp_xml_preparedocument @hdocPayPeriod OUTPUT, @p_XMP_PAY_PERIOD;
EXEC sp_xml_preparedocument @hdocPayMethod OUTPUT, @p_XMP_PAY_METHOD;
EXEC sp_xml_preparedocument @hdocPayBudget OUTPUT, @p_XMP_PAY_BUDGET;
EXEC [dbo].[ADVANCE_CODE_GenKey] 'TR_REQ_ADVANCE_PAYMENT', '',@p_REQ_TYPE, @p_REQ_PAY_CODE out
--END--
IF @p_REQ_PAY_CODE IS NULL OR @p_REQ_PAY_CODE =''
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Mã số phiếu không được để trống' ErrorDesc
RETURN '-1'
END
IF (@p_REQ_TYPE='I' AND (@p_RECEIVER_DEBIT IS NULL OR @p_RECEIVER_DEBIT ='') AND @p_TYPE_FUNCTION ='SEND')
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Tài khoản nhân viên tạm ứng không được để trống' ErrorDesc
RETURN '-1'
END
IF EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_CODE = @p_REQ_PAY_CODE )
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Số phiếu tạm ứng đã tồn tại trong hệ thống' ErrorDesc
RETURN '-1'
END
IF(LEN(ISNULL(@p_RECEIVER_DEBIT,''))>15 AND @p_REQ_TYPE ='I')
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Tài khoản tạm ứng này không được vượt quá 15 kí tự' ErrorDesc
RETURN '-1'
END
-- START 19-11-2019
-- LUCTV BO SUNG VALIDATE TRONG QUA TRINH TEST SAU UAT- KIEM TRA NEU DOT THANH TOAN CHUA CO THI KHONG DUOC THEM MOI
--IF(@p_REQ_TYPE='P' AND (@p_PAY_PHASE IS NULL OR @p_PAY_PHASE =''))
--BEGIN
-- ROLLBACK TRANSACTION
-- SELECT '-1' as Result, '' REQ_PAY_ID, N'Đợt thanh toán không được phép để trống' ErrorDesc
-- RETURN '-1'
--END
---- NEU THANH TOAN XU LY NO THI NHAN VIEN NHAN TIEN TAM UNG KHONG DUOC PHEP TRONG
--IF(@p_REQ_TYPE='D' AND (@p_RECEIVER_DEBIT IS NULL OR @p_RECEIVER_DEBIT =''))
--BEGIN
-- ROLLBACK TRANSACTION
-- SELECT '-1' as Result, '' REQ_PAY_ID, N'Nhân viên nhận tạm ứng không được phép để trống' ErrorDesc
-- RETURN '-1'
--END
-- SO TIEN THANH TOÁN PHAI LON HON KHONG
IF(@p_REQ_AMT <=0)
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Số tiền tạm ứng phải lớn hơn 0' ErrorDesc
RETURN '-1'
END
-----
---- KIEM TRA NEU CHUA CHON KHOI PHE DUYET THI TU DONG CHUYEN VÊ KHOI TAI CHINH
--IF(@p_DVDM_ID IS NULL OR @p_DVDM_ID ='')
--BEGIN
-- SET @p_DVDM_ID = (SELECT TOP 1 DVDM_ID FROM CM_DVDM WHERE DVDM_NAME ='KHOI TAI CHINH')
--END
--
--KIEM TRA NEU TAI KHOAN NHAN VIEN TAM UNG NEU CHUA TON TAI TRONG HE THONG THI BAO LOI
--IF(NOT EXISTS(SELECT * FROM CM_ACCOUNT_PAY WHERE REF_ID =@p_REF_ID) AND @p_REQ_TYPE='I')
--BEGIN
-- INSERT INTO CM_ACCOUNT_PAY (REF_ID,ACC_TYPE,ACC_NUM,ACC_NAME,FUNTION,MAKER_ID,AUTH_STATUS,CREATE_DT,TK_GL,TK_GL_NAME) VALUES (@p_REF_ID,'ADV_PAY',@p_RECEIVER_DEBIT,'TK TAM UNG CUA NHAN VIEN ' +@p_REF_ID,'I',@p_MAKER_ID,'U',GETDATE(),'361200001','TAM UNG DE HOAT DONG NGHIEP VU')
--END
--ELSE
--BEGIN
-- IF(((SELECT TOP 1 ACC_NUM FROM CM_ACCOUNT_PAY WHERE REF_ID =@p_REF_ID)<>@p_RECEIVER_DEBIT) AND @p_REQ_TYPE='I')
-- BEGIN
-- ROLLBACK TRANSACTION
-- SELECT '-1' as Result, '' REQ_PAY_ID, '' AS REQ_PAY_CODE, N'Tài khoản tạm ứng của nhân viên đã tồn tại trong hệ thống! Bạn không được phép chỉnh sửa' ErrorDesc
-- RETURN '-1'
-- END
--END
--SET @ROLE_KI_NHAY =(SELECT RoleName FROM TL_USER_V2 WHERE TLNANME =@p_TRASFER_USER_RECIVE)
--IF(@ROLE_KI_NHAY IS NOT NULL AND @ROLE_KI_NHAY <> '' AND @ROLE_KI_NHAY IN ('TP','GDDV','KTT','TPTC','TC'))
--BEGIN
-- ROLLBACK TRANSACTION
-- SELECT '-1' Result, '' REQ_PAY_ID, N'Bạn không được phép chọn cấp trưởng đơn vị làm cấp phê duyệt trung gian. Vui lòng bỏ qua hoặc chọn cấp phó phòng, trưởng bộ phận' ErrorDesc
-- RETURN '-1'
--END
--DECLARE @ROLE_KI_NHAY VARCHAR(50)
IF(NOT EXISTS(SELECT * FROM CM_ACCOUNT_PAY WHERE ACC_NUM =@p_RECEIVER_DEBIT AND REF_ID = @p_REF_ID) AND @p_REQ_TYPE='I')
BEGIN
ROLLBACK TRANSACTION
SELECT '-11' as Result, '' REQ_PAY_ID, N'Tài khoản tạm ứng số '+ @p_RECEIVER_DEBIT + N' không phải tài khoản của user: '+@p_REF_ID ErrorDesc
RETURN '-11'
END
SET @ROLE_KI_NHAY =(SELECT TOP 1 RoleName FROM TL_USER WHERE TLNANME =@p_TRASFER_USER_RECIVE)
IF(@ROLE_KI_NHAY IS NOT NULL AND @ROLE_KI_NHAY <>'' AND @ROLE_KI_NHAY IN ('TPGD','GDDV','PGD','PTGD','TGD','HDQT','TP','PP','TBP','KTT','GDK','KSV','TC','NVTC','TPTC'))
BEGIN
PRINT @ROLE_KI_NHAY
END
ELSE
BEGIN
SET @ROLE_KI_NHAY =(SELECT TOP 1 RoleName FROM TL_USER_V2 WHERE TLNANME =@p_TRASFER_USER_RECIVE)
IF(@ROLE_KI_NHAY IS NULL OR @ROLE_KI_NHAY ='')
BEGIN
SET @ROLE_KI_NHAY =(SELECT TOP 1 ROLE_NEW FROM TL_SYS_ROLE_MAPPING WHERE ROLE_OLD =(SELECT TOP 1 ROLENAME FROM TL_USER WHERE TLNANME=@p_TRASFER_USER_RECIVE))
END
END
--SET @ROLE_KI_NHAY =(SELECT RoleName FROM TL_USER_V2 WHERE TLNANME =@p_TRASFER_USER_RECIVE)
IF(@ROLE_KI_NHAY IS NOT NULL AND @ROLE_KI_NHAY <> '' AND @ROLE_KI_NHAY IN ('TP','GDDV','KTT','TPTC','TC','TPGD') AND @p_REQ_TYPE <> 'I')
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' Result, '' REQ_PAY_ID, N'Bạn không được phép chọn cấp trưởng đơn vị làm cấp phê duyệt trung gian. Vui lòng bỏ qua hoặc chọn cấp phó phòng, trưởng bộ phận' ErrorDesc
RETURN '-1'
END
EXEC SYS_CodeMasters_Gen 'TR_REQ_ADVANCE_PAMENT', @p_REQ_PAY_ID out
IF @p_REQ_PAY_ID='' OR @p_REQ_PAY_ID IS NULL GOTO ABORT
INSERT INTO [dbo].[TR_REQ_ADVANCE_PAYMENT]
([REQ_PAY_ID]
,[REQ_PAY_CODE]
,[BRANCH_ID],[REQ_DT],
[DEP_ID]
,[REQ_REASON]
,[REQ_TYPE],REQ_ENTRIES,
[REQ_DESCRIPTION]
,REF_ID,
RECEIVER_PO, RECEIVER_DEBIT
,[REQ_PAY_TYPE]
,[REQ_TYPE_CURRENCY]
,[REQ_AMT]
,[REQ_TEMP_AMT]
,[MAKER_ID]
,[CREATE_DT]
,[EDITOR_ID]
,[AUTH_STATUS]
,[CHECKER_ID]
,[APPROVE_DT]
,[CREATE_DT_KT]
,[MAKER_ID_KT]
,[AUTH_STATUS_KT]
,[CHECKER_ID_KT]
,[APPROVE_DT_KT]
,[CONFIRM_NOTES]
,[BRANCH_CREATE]
,[NOTES],RECORD_STATUS,TRANSFER_MAKER,TRANSFER_DT,TRASFER_USER_RECIVE,PROCESS,PAY_PHASE,DVDM_ID,RATE,RECIVER_MONEY,IS_PERIOD)
VALUES
(@p_REQ_PAY_ID,
@p_REQ_PAY_CODE,
@p_BRANCH_ID,CONVERT(DATE,GETDATE(),103),
@p_DEP_ID,
@p_REQ_REASON,
@p_REQ_TYPE,
@P_REQ_ENTRIES,
@p_REQ_DESCRIPTION,
@p_REF_ID,
@p_RECEIVER_PO,
@p_RECEIVER_DEBIT,
@p_REQ_PAY_TYPE,
@p_REQ_TYPE_CURRENCY,
@p_REQ_AMT,
@p_REQ_TEMP_AMT,
@p_MAKER_ID,
GETDATE(),
@p_EDITOR_ID,
'E',
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
@p_BRANCH_CREATE,
@p_NOTES,'1',
@p_TRANSFER_MAKER,
NULL,
@p_TRASFER_USER_RECIVE,
@p_PROCESS,@p_PAY_PHASE,@p_DVDM_ID,@p_RATE,@p_RECIVER_MONEY,@p_IS_PERIOD)
IF @@Error <> 0 GOTO ABORT
--- INSERT VÀO BẢNG DETAIL NÊU TẠM ỨNG LÀ TẠM ỨNG THANH TOÁN
-- KIEM TRA NEU TAM UNG THANH TOAN
IF((@p_REQ_TYPE='P' AND (@p_IS_PERIOD <>'Y' OR @p_IS_PERIOD IS NULL)) OR @p_REQ_TYPE='D')
BEGIN
DECLARE @PO_ID varchar(15),@TERM_PAY varchar(15),@AMT_PAY_SCHEDULE decimal(18,0),@REQ_ADV_ID_SCHE VARCHAR(15),@AMT_ADVANCE_SCHEDULE decimal(18,0),@AMT_PAY_DO decimal(18,2),
@AMT_REMAIN_SCHEDULE decimal(18,0),@REQ_AD_DT varchar(20),@PROCESS varchar(15),@PAY_ID VARCHAR(15),
@REF_ID VARCHAR(15),@REQ_PAY_DESC NVARCHAR(500), @REQ_PAY_ENTRIES NVARCHAR(250),@CURRENCY VARCHAR(15),@RATE DECIMAL(18,0),@CUST_ID VARCHAR(15), @EMP_ID VARCHAR(15),
@AMT_PAY_REAL DECIMAL(18,2), @IS_CLOSED VARCHAR(1)= NULL,@INDEX_NS INT =0,@REASON NVARCHAR(1000), @REF_TYPE VARCHAR(15)
DECLARE @TYPE_COST VARCHAR(5) , @FR_LEVEL INT ,@TO_LEVEL INT
DECLARE XmlDataPO CURSOR FOR
SELECT *
FROM
OPENXML(@hdocPayAcvanceDT2, '/Root/XmlDataPO', 2)
WITH(REF_ID varchar(15),IS_CLOSED VARCHAR(1),REF_TYPE VARCHAR(15))
OPEN XmlDataPO;
DECLARE @INDEX_PO INT =0
SET @INDEX_PO = 0
FETCH NEXT FROM XmlDataPO INTO @REF_ID,@IS_CLOSED,@REF_TYPE
WHILE @@fetch_status=0
BEGIN
SET @INDEX_PO = @INDEX_PO +1
-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
--IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL) AND REQ_PAY_ID <>@p_REQ_PAY_ID))
--BEGIN
-- ROLLBACK TRANSACTION
-- SELECT '-1' as Result, '' REQ_PAY_ID, '' AS REQ_PAY_CODE,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO/ hợp đồng số '+(SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' đang được tạm ứng. Vui lòng đợi giao dịch hoàn tất' ErrorDesc
-- RETURN '-1'
--END
---- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
--IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL)))
--BEGIN
-- ROLLBACK TRANSACTION
-- SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO/ hợp đồng số '+(SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' đang được thanh toán. Vui lòng đợi giao dịch hoàn tất' ErrorDesc
-- RETURN '-1'
--END
-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
-- KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE
IF(@p_TYPE_FUNCTION ='SEND')
BEGIN
IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND TYPE ='C' AND REQ_PAY_ID
IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL)))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID, '' AS REQ_PAY_CODE,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': Hợp đồng số '+
(SELECT CONTRACT_ID FROM TR_CONTRACT WHERE CONTRACT_ID = @REF_ID)+N' đang được tạm ứng. Vui lòng đợi giao dịch hoàn tất' ErrorDesc
RETURN '-1'
END
-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND TYPE ='C' AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL) AND REQ_PAY_ID <>@p_REQ_PAY_ID))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': Hợp đồng số '+
(SELECT CONTRACT_ID FROM TR_CONTRACT WHERE CONTRACT_ID = @REF_ID)+N' đang được thanh toán. Vui lòng đợi giao dịch hoàn tất' ErrorDesc
RETURN '-1'
END
-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND TYPE ='P' AND REQ_PAY_ID
IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL)))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID, '' AS REQ_PAY_CODE,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO số '+
(SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' đang được tạm ứng. Vui lòng đợi giao dịch hoàn tất' ErrorDesc
RETURN '-1'
END
-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND TYPE ='P' AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL) AND REQ_PAY_ID <>@p_REQ_PAY_ID))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO số '+
(SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' đang được thanh toán. Vui lòng đợi giao dịch hoàn tất' ErrorDesc
RETURN '-1'
END
END
DECLARE @REQ_PAYDTID VARCHAR(15);
EXEC SYS_CodeMasters_Gen 'TR_REQ_ADVANCE_DT', @REQ_PAYDTID OUT;
IF @REQ_PAYDTID='' OR @REQ_PAYDTID IS NULL GOTO ABORT;
INSERT INTO TR_REQ_ADVANCE_DT (REQ_PAYDTID,REQ_PAY_ID,REF_ID,TYPE,MAKER_ID,CREATE_DT,IS_CLOSED,REF_TYPE) VALUES
(@REQ_PAYDTID,@p_REQ_PAY_ID,@REF_ID,'ADV_PAY',@p_MAKER_ID,GETDATE(),@IS_CLOSED,@REF_TYPE)
IF @@error<>0 GOTO ABORT;
FETCH NEXT FROM XmlDataPO INTO @REF_ID,@IS_CLOSED,@REF_TYPE
END
CLOSE XmlDataPO;
DEALLOCATE XmlDataPO;
--- CUSOR DANH SACH LICH THANH TOAN PO - HD
DECLARE XmlDataSchedule CURSOR FOR
SELECT *
FROM
OPENXML(@hdocPaySchedule, '/Root/XmlDataSchedule',2)
WITH(PO_ID varchar(15),TERM_PAY varchar(15),AMT_PAY_SCHEDULE decimal(18,0),REQ_ADV_ID varchar(15),AMT_ADVANCE_SCHEDULE decimal(18,0), AMT_PAY_DO decimal(18,0),
AMT_REMAIN_SCHEDULE decimal(18,0),REQ_AD_DT varchar(20),PROCESS varchar(15), PAY_ID VARCHAR(15),REF_ID VARCHAR(15),
REQ_PAY_DESC NVARCHAR(500), REQ_PAY_ENTRIES NVARCHAR(250),CURRENCY VARCHAR(15),RATE DECIMAL(18,0),AMT_PAY_REAL DECIMAL(18,2))
OPEN XmlDataSchedule
FETCH NEXT FROM XmlDataSchedule INTO @PO_ID,@TERM_PAY,@AMT_PAY_SCHEDULE,@REQ_ADV_ID_SCHE,@AMT_ADVANCE_SCHEDULE,@AMT_PAY_DO,
@AMT_REMAIN_SCHEDULE,@REQ_AD_DT,@PROCESS,@PAY_ID,@REF_ID,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@CURRENCY,@RATE,@AMT_PAY_REAL
WHILE @@fetch_status=0
BEGIN
DECLARE @p_REQ_PAY_SCHEDULE_ID VARCHAR(15);
EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_SCHEDULE', @p_REQ_PAY_SCHEDULE_ID OUT;
IF @p_REQ_PAY_SCHEDULE_ID='' OR @p_REQ_PAY_SCHEDULE_ID IS NULL GOTO ABORT;
INSERT INTO TR_REQ_PAY_SCHEDULE(
SCHEDULE_ID,REQ_PAY_ID,PAY_ID,AMT_PAY,PAY_PHASE,REQ_ADV_ID,AMT_ADVANCE,AMT_PAY_DO,AMT_REMAIN,REQ_PAY_DT,REQ_AD_DT,PROCESS,MAKER_ID,
CREATE_DT,AUTH_STATUS_KT,PAYMENT_STATUS,TRN_TYPE,REF_ID,REQ_PAY_DESC,REQ_PAY_ENTRIES,CURRENCY,RATE,AMT_PAY_REAL)
VALUES (@p_REQ_PAY_SCHEDULE_ID,@p_REQ_PAY_ID,@PAY_ID,@AMT_PAY_SCHEDULE,@TERM_PAY,@p_REQ_PAY_ID,@AMT_ADVANCE_SCHEDULE,@AMT_PAY_DO,@AMT_REMAIN_SCHEDULE,
GETDATE(),CONVERT(DATETIME,@REQ_AD_DT,103),NULL,@p_MAKER_ID,GETDATE(),'U','','ADV_PAY',@REF_ID,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@CURRENCY,@RATE,@AMT_PAY_REAL)
--- END KHAI BAO CURSOR
IF @@error<>0 GOTO ABORT;
FETCH NEXT FROM XmlDataSchedule INTO @PO_ID,@TERM_PAY,@AMT_PAY_SCHEDULE,@REQ_ADV_ID_SCHE,@AMT_ADVANCE_SCHEDULE,@AMT_PAY_DO,
@AMT_REMAIN_SCHEDULE,@REQ_AD_DT,@PROCESS,@PAY_ID,@REF_ID,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@CURRENCY,@RATE,@AMT_PAY_REAL
END
CLOSE XmlDataSchedule;
DEALLOCATE XmlDataSchedule;
END
--- END TẠM ỨNG THANH TOÁN
--- TẠM ỨNG HĐ ĐỊNH KỲ
IF(@p_REQ_TYPE = 'P' AND @p_IS_PERIOD='Y')
BEGIN
DECLARE XmlDataRecurring CURSOR FOR
SELECT *
FROM
OPENXML(@hdocPayAcvanceDT, '/Root/XmlDataRecurring', 2)
WITH(CONTRACT_ID varchar(15),IS_CLOSED VARCHAR(1),REF_TYPE VARCHAR(15))
OPEN XmlDataRecurring;
SET @INDEX_PO = 0
FETCH NEXT FROM XmlDataRecurring INTO @REF_ID,@IS_CLOSED,@REF_TYPE
WHILE @@fetch_status=0
BEGIN
SET @INDEX_PO = @INDEX_PO +1
DECLARE @REQ_PAYDTID_C VARCHAR(15);
EXEC SYS_CodeMasters_Gen 'TR_REQ_ADVANCE_DT', @REQ_PAYDTID_C OUT;
IF @REQ_PAYDTID_C='' OR @REQ_PAYDTID_C IS NULL GOTO ABORT;
INSERT INTO TR_REQ_ADVANCE_DT (REQ_PAYDTID,REQ_PAY_ID,REF_ID,TYPE,MAKER_ID,CREATE_DT,IS_CLOSED,REF_TYPE) VALUES
(@REQ_PAYDTID_C,@p_REQ_PAY_ID,@REF_ID,'ADV_PAY',@p_MAKER_ID,GETDATE(),@IS_CLOSED,@REF_TYPE)
IF @@error<>0 GOTO ABORT;
FETCH NEXT FROM XmlDataRecurring INTO @REF_ID,@IS_CLOSED,@REF_TYPE
END
CLOSE XmlDataRecurring;
DEALLOCATE XmlDataRecurring;
--- CUSOR DANH SACH LICH THANH TOAN PO - HD
----------------------------
--INSERT FROM PERIOD
DECLARE XmlDataPeriod CURSOR FOR
SELECT *
FROM
OPENXML(@hdocPayPeriod, '/Root/XmlDataPeriod', 2)
WITH(CONTRACT_ID varchar(15),PAY_DT_REAL VARCHAR(20),PAY_TYPE VARCHAR(5),
OLD_INDEX DECIMAL(18,0),NEW_INDEX DECIMAL(18,0),AMT_PAY DECIMAL(18,2),CURRENCY VARCHAR(5), RATE DECIMAL(18,0), FROM_DATE VARCHAR(20), TO_DATE VARCHAR(20),PAY_PHASE NVARCHAR(250),REASON NVARCHAR(2000))
OPEN XmlDataPeriod;
DECLARE @CONTRACT_ID varchar(15),@PAY_DT_REAL VARCHAR(20),@PAY_TYPE VARCHAR(5),
@OLD_INDEX DECIMAL(18,0),@NEW_INDEX DECIMAL(18,0),@AMT_PAY_PERIOD DECIMAL(18,2),@FROM_DATE VARCHAR(20),@TO_DATE VARCHAR(20),@PAY_PHASE NVARCHAR(250),@REASON_TTDK NVARCHAR(2000)
FETCH NEXT FROM XmlDataPeriod INTO @CONTRACT_ID ,@PAY_DT_REAL ,@PAY_TYPE ,
@OLD_INDEX ,@NEW_INDEX ,@AMT_PAY_PERIOD,@CURRENCY, @RATE,@FROM_DATE,@TO_DATE,@PAY_PHASE,@REASON_TTDK
WHILE @@fetch_status=0
BEGIN
-- KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE
IF(@p_TYPE_FUNCTION ='SEND')
BEGIN
IF(EXISTS(SELECT CONTRACT_ID
FROM TR_CONTRACT
WHERE CONTRACT_ID = @REF_ID
AND IS_CLOSED='Y' ))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID, '' AS REQ_PAY_CODE,N'Tạm ứng hợp đồng định kì đã đóng' ErrorDesc
RETURN '-1'
END
IF(@NEW_INDEX <=@OLD_INDEX AND @NEW_INDEX >0 AND @OLD_INDEX >0 )
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Chỉ số mới phải lớn hơn chỉ số cũ' ErrorDesc
RETURN '-1'
END
-- NEU LÀ DINH KI THI HD PHAI KHAC NULL
IF(@CONTRACT_ID IS NULL OR @CONTRACT_ID ='' )
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin thanh toán hợp đồng định kì: Cột Số hợp đồng không được phép để trống' ErrorDesc
RETURN '-1'
END
-- KIEM TRA CHI TIET HOP DONG PHAI NAM TRONG DANH SACH CAC HOP DONG
IF(@CONTRACT_ID IS NOT NULL AND @CONTRACT_ID <> '' )
BEGIN
IF(NOT EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND REF_ID =@CONTRACT_ID))
ROLLBACK TRANSACTION
SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin thanh toán hợp đồng định kì - Số hợp đồng phải nằm trong danh sách các hợp đồng được chọn trên lưới Hợp đồng định kì' ErrorDesc
RETURN '-1'
END
END
DECLARE @PERIOD_ID VARCHAR(15);
EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_PERIOD', @PERIOD_ID OUT;
IF @PERIOD_ID='' OR @PERIOD_ID IS NULL GOTO ABORT;
INSERT INTO TR_REQ_PAY_PERIOD(PERIOD_ID,REQ_PAY_ID,PAY_TYPE, CONTRACT_ID,PAY_DT_REAL,OLD_INDEX,NEW_INDEX,AMT_PAY,AUTH_STATUS_KT,CURRENCY,RATE,FROM_DATE, TO_DATE,AD_PAY_ID,PROCESS,PAY_PHASE,REASON)
VALUES (@PERIOD_ID,@p_REQ_PAY_ID,'ADV_PAY',@CONTRACT_ID,CONVERT(DATE,@PAY_DT_REAL,103),
@OLD_INDEX ,@NEW_INDEX ,@AMT_PAY_PERIOD,'U',@CURRENCY, @RATE,CONVERT(DATE,@FROM_DATE,103),CONVERT(DATE,@TO_DATE,103),@p_REQ_PAY_ID,'0',@PAY_PHASE,@REASON_TTDK)
IF @@error<>0 GOTO ABORT;
FETCH NEXT FROM XmlDataPeriod INTO @CONTRACT_ID ,@PAY_DT_REAL ,@PAY_TYPE ,
@OLD_INDEX ,@NEW_INDEX ,@AMT_PAY_PERIOD,@CURRENCY, @RATE,@FROM_DATE,@TO_DATE,@PAY_PHASE,@REASON_TTDK
END
CLOSE XmlDataPeriod;
DEALLOCATE XmlDataPeriod;
-- VALIDATE SO TIEN
--IF(@p_REQ_AMT >= @TOTAL_SCHEDULE_AMT)
--BEGIN
-- ROLLBACK TRANSACTION
-- SELECT '-1' as Result, '' REQ_PAY_ID, N'Số tiền thanh toán phải nhỏ hơn hoặc bằng tổng số tiền còn lại cần thanh toán: '+FORMAT(SUM(@TOTAL_SCHEDULE_AMT),'#,#', 'vi-VN') ErrorDesc
-- RETURN '-1'
--END
----
END
---- END TẠM ỨNG HỢP ĐỒNG ĐỊNH KÌ
--- INSERT PHƯƠNG THỨC THANH TOÁN
----MethodCursor
DECLARE @RECEIVE_ID varchar(15),@RECEIVE_NAME nvarchar(100),@REQ_PAY_REASON nvarchar(MAX),@TOTAL_AMT_METHOD decimal(18,2),@REQ_PAY_TYPE varchar(1),
@ACC_NO VARCHAR(50), @ACC_NAME NVARCHAR(200), @ISSED_BY NVARCHAR(250), @ISSUED_DT VARCHAR(20),@CHECK_IN VARCHAR(15)
DECLARE XmlDataMethod CURSOR FOR
SELECT *
FROM
OPENXML(@hdocPayMethod, '/Root/XmlDataMethod',2)
WITH(RECEIVE_ID varchar(15),RECEIVE_NAME nvarchar(100),REQ_PAY_REASON nvarchar(MAX),TOTAL_AMT decimal(18,2),REQ_PAY_TYPE varchar(1),
REQ_PAY_DESC nvarchar(MAX),REQ_PAY_ENTRIES nvarchar(MAX),ACC_NO VARCHAR(50),
ACC_NAME NVARCHAR(200), ISSUED_BY NVARCHAR(250), ISSUED_DT VARCHAR(20),CURRENCY VARCHAR(15),RATE DECIMAL(18,0),CHECK_IN VARCHAR(15))
OPEN XmlDataMethod
FETCH NEXT FROM XmlDataMethod
INTO @RECEIVE_ID,@RECEIVE_NAME,@REQ_PAY_REASON,@TOTAL_AMT_METHOD,@REQ_PAY_TYPE,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@ACC_NO,@ACC_NAME ,@ISSED_BY , @ISSUED_DT,@CURRENCY,@RATE,@CHECK_IN
WHILE @@fetch_status=0
BEGIN
IF(@REQ_PAY_TYPE <>'1')
BEGIN
SET @ISSUED_DT = NULL
END
DECLARE @p_REQ_PAY_METHOD_ID VARCHAR(15);
EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_METHOD', @p_REQ_PAY_METHOD_ID OUT;
IF @p_REQ_PAY_METHOD_ID='' OR @p_REQ_PAY_METHOD_ID IS NULL GOTO ABORT;
INSERT INTO TR_REQ_PAY_METHOD(METHOD_ID,REQ_PAY_ID,EMP_ID,REQ_PAY_REASON,TOTAL_AMT,REQ_PAY_TYPE,REQ_PAY_DESC,REQ_PAY_ENTRIES, TEMP,MAKER_ID,
CREATE_DT,ACC_NO,ACC_NAME,ISSUED_BY,ISSUED_DT,CURRENCY,RATE,CHECK_IN)
VALUES (@p_REQ_PAY_METHOD_ID,@p_REQ_PAY_ID,@RECEIVE_ID,@REQ_PAY_REASON,@TOTAL_AMT_METHOD,@REQ_PAY_TYPE,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,'',
@p_MAKER_ID,GETDATE(),@ACC_NO,@ACC_NAME,@ISSED_BY, CONVERT(DATE, @ISSUED_DT, 103),@CURRENCY,@RATE,@CHECK_IN)
IF @@error<>0 GOTO ABORT;
FETCH NEXT FROM XmlDataMethod
INTO @RECEIVE_ID,@RECEIVE_NAME,@REQ_PAY_REASON,@TOTAL_AMT_METHOD,@REQ_PAY_TYPE,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@ACC_NO,@ACC_NAME , @ISSED_BY , @ISSUED_DT,@CURRENCY,@RATE,@CHECK_IN
END
CLOSE XmlDataMethod;
DEALLOCATE XmlDataMethod
----END INSERT PHƯƠNG THỨC THANH TOÁN
----INSERT VAO BANG DS KHACH HANG
DECLARE XmlDataCus CURSOR FOR
SELECT *
FROM
OPENXML(@hdocCus, '/Root/XmlDataCus', 2)
WITH(CUST_ID varchar(15), EMP_ID VARCHAR(15), AMT_PAY_DO DECIMAL(18,2),CURRENCY VARCHAR(15),RATE DECIMAL(18,0))
OPEN XmlDataCus;
FETCH NEXT FROM XmlDataCus INTO @CUST_ID, @EMP_ID,@AMT_PAY_DO,@CURRENCY,@RATE
print @CUST_ID;
WHILE @@fetch_status=0
BEGIN
INSERT INTO TR_REQ_ADVANCE_CUS(REQ_PAY_ID,CUST_ID,EMP_ID,AMT_PAY_DO,CURRENCY,RATE,MAKER_ID,CREATE_DT)
VALUES (@p_REQ_PAY_ID, @CUST_ID, @EMP_ID,@AMT_PAY_DO,@CURRENCY,@RATE,@p_MAKER_ID,GETDATE())
--- END KHAI BAO CURSOR
IF @@error<>0 GOTO ABORT;
FETCH NEXT FROM XmlDataCus INTO @CUST_ID, @EMP_ID,@AMT_PAY_DO,@CURRENCY,@RATE
END
CLOSE XmlDataCus;
DEALLOCATE XmlDataCus;
----END
-- HANG MUC CHI PHI VA NGAN SACH
DECLARE @TRADE_ID varchar(15),@GD_ID varchar(15),@AMT_APP decimal(18,2), @AMT_DO decimal(18,2), @AMT_EXE decimal(18,2),@AMT_REMAIN_GD decimal(18,2)
DECLARE XmlDataGood CURSOR FOR
SELECT *
FROM
OPENXML(@hdocPayBudget, '/Root/XmlDataGood',2)
WITH(TRADE_ID varchar(15),GD_ID varchar(15),AMT_APP decimal(18,2),AMT_DO decimal(18,2),AMT_EXE decimal(18,2),AMT_REMAIN decimal(18,2),CURRENCY VARCHAR(15), RATE DECIMAL(18,2),REASON NVARCHAR(1000),TYPE_COST VARCHAR(5) , FR_LEVEL INT ,TO_LEVEL INT)
OPEN XmlDataGood
FETCH NEXT FROM XmlDataGood INTO @TRADE_ID,@GD_ID ,@AMT_APP ,@AMT_DO,@AMT_EXE ,@AMT_REMAIN_GD,@CURRENCY,@RATE,@REASON,@TYPE_COST, @FR_LEVEL,@TO_LEVEL
WHILE @@fetch_status=0 BEGIN
--- KIEM TRA NEU NGAN SACH SU DUNG THUC THE LON HON NGAN SACH CON LAI
SET @INDEX_NS = @INDEX_NS +1
-- KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE
--IF(@p_TYPE_FUNCTION ='SEND')
--BEGIN
--IF((@AMT_EXE > @AMT_REMAIN_GD))
--BEGIN
-- ROLLBACK TRANSACTION
-- SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng thực tế không được vượt quá ngân sách còn lại.' ErrorDesc
-- RETURN '-1'
--END
--END
IF(@p_TYPE_FUNCTION ='SEND')
BEGIN
IF(ISNULL(@AMT_EXE,0) =0)
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng thực tế phải lớn hơn không.' ErrorDesc
RETURN '-1'
END
IF((@AMT_EXE > @AMT_REMAIN_GD) AND ((SELECT GD_TYPE_ID FROM CM_GOODS WHERE GD_ID =@GD_ID) ='NS'))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng thực tế không được vượt quá ngân sách còn lại.' ErrorDesc
RETURN '-1'
END
END
DECLARE @p_BUDGET_ID VARCHAR(15);
EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_BUDGET', @p_BUDGET_ID OUT;
IF @p_BUDGET_ID='' OR @p_BUDGET_ID IS NULL GOTO ABORT;
INSERT INTO TR_REQ_PAY_BUDGET(BUDG_ID,GD_ID,REQ_PAY_ID,TRADE_ID,AMT_APP,AMT_DO, AMT_EXE,AMT_REMAIN,MAKER_ID,CREATE_DT,CURRENCY,RATE,REASON,TYPE_COST, FR_LEVEL,TO_LEVEL)
VALUES (@p_BUDGET_ID,@GD_ID,@p_REQ_PAY_ID,@TRADE_ID,@AMT_APP,@AMT_DO, @AMT_EXE,@AMT_REMAIN_GD,@p_MAKER_ID, GETDATE(),@CURRENCY,@RATE,@REASON,@TYPE_COST, @FR_LEVEL,@TO_LEVEL)
IF @@error<>0 GOTO ABORT;
FETCH NEXT FROM XmlDataGood INTO @TRADE_ID,@GD_ID ,@AMT_APP ,@AMT_DO,@AMT_EXE ,@AMT_REMAIN_GD,@CURRENCY,@RATE,@REASON,@TYPE_COST, @FR_LEVEL,@TO_LEVEL
END;
CLOSE XmlDataGood;
DEALLOCATE XmlDataGood;
--- END INSERT NGAN SACH
DECLARE @ATTACH_ID varchar(15),@CON_ID varchar(100),@CONT_CODE VARCHAR(50), @CON_NOTES VARCHAR(1000),@CON_DESC NVARCHAR(1000),@CON_TYPE VARCHAR(15),@AMT_ATT DECIMAL(18,2),@REF_DT VARCHAR(20),@NOTES_ATT NVARCHAR(1000)
DECLARE XmlAttach CURSOR FOR
SELECT *
FROM
OPENXML(@hdocPayAtach, '/Root/XmlAttach',2)
WITH(ATTACH_ID varchar(15),CON_ID varchar(100),CONT_CODE VARCHAR(50), CON_NOTES NVARCHAR(1000),CON_DESC NVARCHAR(1000),CON_TYPE VARCHAR(15),AMT_ATT DECIMAL(18,2),REF_DT VARCHAR(20))
OPEN XmlAttach
--INSERT CHUNG TU DINH KEM
FETCH NEXT FROM XmlAttach INTO @ATTACH_ID,@CON_ID,@CONT_CODE,@NOTES_ATT,@CON_DESC,@CON_TYPE,@AMT_ATT,@REF_DT
WHILE @@fetch_status=0
BEGIN
IF (@REF_DT='')
BEGIN
SET @REF_DT = NULL
END
EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_ATTACH', @ATTACH_ID OUT;
IF @ATTACH_ID='' OR @ATTACH_ID IS NULL GOTO ABORT;
INSERT INTO TR_REQ_PAY_ATTACH(ATTACH_ID,REQ_PAY_ID,REF_ID,REF_CODE,NOTES,[DESCRIPTION],[TYPE],AMT,REF_DT) VALUES
(@ATTACH_ID,@p_REQ_PAY_ID,@CON_ID,@CONT_CODE,@NOTES_ATT,@CON_DESC,@CON_TYPE,@AMT_ATT, CONVERT(DATE, @REF_DT,103))
IF @@error<>0 GOTO ABORT;
FETCH NEXT FROM XmlAttach INTO @ATTACH_ID,@CON_ID,@CONT_CODE,@NOTES_ATT,@CON_DESC,@CON_TYPE,@AMT_ATT,@REF_DT
END
CLOSE XmlAttach;
DEALLOCATE XmlAttach;
----END
--- BAT DAU VALIDATE
IF(@p_TYPE_FUNCTION ='SEND')
BEGIN
DECLARE @SUM_PTTT DECIMAL(18,0), @SUM_NS DECIMAL(18,0),@SUM_LICH_TT DECIMAL(18,0)
SET @SUM_PTTT =(SELECT SUM(TOTAL_AMT * ISNULL(RATE,1)) FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
IF(EXISTS(SELECT * FROM TR_REQ_PAY_SCHEDULE WHERE REQ_PAY_ID =@p_REQ_PAY_ID) AND @p_REQ_TYPE ='D')
BEGIN
SET @SUM_LICH_TT =(SELECT SUM(AMT_PAY_REAL* ISNULL(RATE,1)) FROM TR_REQ_PAY_SCHEDULE WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
IF(@p_REQ_AMT*ISNULL(@p_RATE,1) != ISNULL(@SUM_LICH_TT,0))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID, '' AS REQ_PAY_CODE,N'Tổng số tiền lịch thanh toán PO và hợp đồng liên quan đến khách hàng xử lý nợ phải bằng số tiền tạm ứng' ErrorDesc
RETURN '-1'
END
END
IF(EXISTS(SELECT * FROM TR_REQ_PAY_BUDGET WHERE REQ_PAY_ID =@p_REQ_PAY_ID))
BEGIN
SET @SUM_NS =(SELECT SUM(AMT_EXE * ISNULL(RATE,1)) FROM TR_REQ_PAY_BUDGET WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
IF(@p_REQ_AMT*ISNULL(@p_RATE,1) != ISNULL(@SUM_PTTT,0))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID, '' AS REQ_PAY_CODE,N'Tổng số tiền sử dụng ngân sách và chi phí phải bằng số tiền tạm ứng' ErrorDesc
RETURN '-1'
END
END
ELSE
IF(@p_REQ_AMT*ISNULL(@p_RATE,1) != ISNULL(@SUM_PTTT,0))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID, '' AS REQ_PAY_CODE,N'Tổng số tiền phương thức thanh toán phải bằng số tiền tạm ứng' ErrorDesc
RETURN '-1'
END
END
----END
--- INSERT SẴN VÀO BẢNG TR_REQUEST_PROCESS
IF(@p_REQ_TYPE ='I')
BEGIN
DECLARE @tmp table(ROLE_ID VARCHAR(25),BRANCH_ID varchar(15),AMT DECIMAL(18,0))
IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID= @p_BRANCH_CREATE) ='HS')
BEGIN
--INSERT INTO @tmp SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001'
IF EXISTS(SELECT * FROM CM_DEPARTMENT WHERE (DEP_CODE LIKE '%06908%' OR DEP_CODE ='0690605') AND DEP_ID =@p_DEP_ID)
BEGIN
-- KHOI TAI CHINH SE KHONG CO PTGD NUA MA CHI CO KDK - LUCTV 29032021
INSERT INTO @tmp SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001' AND A.ROLE_ID <>'PTGD'
--INSERT INTO @tmp SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001' AND A.ROLE_ID <>'GDK'
END
ELSE IF EXISTS(SELECT * FROM CM_DEPARTMENT WHERE (DEP_CODE LIKE '%06910%' OR DEP_CODE ='0690405') AND DEP_ID =@p_DEP_ID)
BEGIN
INSERT INTO @tmp SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001' AND A.ROLE_ID <>'GDK'
END
ELSE IF (EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06900%' AND DEP_ID =@p_DEP_ID) OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06901%' AND DEP_ID =@p_DEP_ID)
OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06902%' AND DEP_ID =@p_DEP_ID) OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06903%' AND DEP_ID =@p_DEP_ID)
OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06904%' AND DEP_ID =@p_DEP_ID) OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06920%' AND DEP_ID =@p_DEP_ID)
OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%799%' AND DEP_ID =@p_DEP_ID)
OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%899%' AND DEP_ID =@p_DEP_ID))
BEGIN
INSERT INTO @tmp SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001' AND A.ROLE_ID NOT IN ('GDK','PTGD')
END
ELSE IF (EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06907%' AND DEP_ID =@p_DEP_ID) OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06909%' AND DEP_ID =@p_DEP_ID)
OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06911%' AND DEP_ID =@p_DEP_ID) OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06921%' AND DEP_ID =@p_DEP_ID)
OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06922%' AND DEP_ID =@p_DEP_ID))
BEGIN
INSERT INTO @tmp SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001' AND A.ROLE_ID <>'PTGD'
END
ELSE
BEGIN
INSERT INTO @tmp SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001'
END
END
ELSE
BEGIN
IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID= @p_BRANCH_CREATE) ='CN')
BEGIN
--- BAO GOM DON VI & 3 CAP DUYET CUA HOI SO
INSERT INTO @tmp SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY' AND BRANCH_ID =@p_BRANCH_CREATE AND ROLE_ID ='GDDV'
--INSERT INTO @tmp SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001'
END
ELSE IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID= @p_BRANCH_CREATE) ='PGD')
BEGIN
INSERT INTO @tmp SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY' AND BRANCH_ID =@p_BRANCH_CREATE AND ROLE_ID ='TPGD'
--AND BRANCH_ID =(SELECT FATHER_ID FROM CM_BRANCH WHERE BRANCH_ID= @p_BRANCH_CREATE)AND BRANCH_ID = @p_BRANCH_CREATE
--INSERT INTO @tmp SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001'
END
END
DECLARE @ROLE_ID VARCHAR(20), @BRANCH_ID VARCHAR(20), @INDEX INT =0, @SL_ROLE INT =0,@LIMIT_VALUE DECIMAL(18,0)
SET @SL_ROLE = (SELECT COUNT(*) FROM @tmp)
DECLARE @ISLEAF VARCHAR(1) = 'Y', @PARENT_ID VARCHAR(10) = '', @STATUS VARCHAR(1) = 'C', @NOTES NVARCHAR(500)
DECLARE CUR_PR CURSOR FOR SELECT A.ROLE_ID, A.BRANCH_ID,A.AMT FROM @tmp A ORDER BY A.AMT ASC
OPEN CUR_PR
FETCH NEXT FROM CUR_PR INTO @ROLE_ID,@BRANCH_ID,@LIMIT_VALUE
WHILE @@FETCH_STATUS =0 --AND @STOP=0
BEGIN
SET @INDEX= @INDEX+1
IF @INDEX = @SL_ROLE
SET @ISLEAF = 'Y'
ELSE
SET @ISLEAF = 'N'
SET @NOTES = (SELECT N'Đợi '+ ROLE_DESC + N' phê duyệt' FROM TL_SYSROLE WHERE ROLE_ID = @ROLE_ID)
IF(@INDEX=1 )
BEGIN
SET @PARENT_ID = NULL
SET @STATUS = 'C'
--INSERT INTO TR_REQUEST_PROCESS VALUES (@p_REQ_PAY_ID,CONVERT(VARCHAR(5), @INDEX),'C',@ROLE_ID,@BRANCH_ID,NULL,NULL,NULL,@ISLEAF)
END
ELSE
BEGIN
SET @PARENT_ID = CONVERT(VARCHAR(5),@INDEX -1)
SET @STATUS = 'U'
END
IF(@LIMIT_VALUE >= @p_REQ_AMT)
BEGIN
INSERT INTO dbo.PL_REQUEST_PROCESS
(
REQ_ID,
PROCESS_ID,
STATUS,
ROLE_USER,
BRANCH_ID,
CHECKER_ID,
APPROVE_DT,
PARENT_PROCESS_ID,
IS_LEAF, COST_ID, DVDM_ID, NOTES
)
VALUES (@p_REQ_PAY_ID,CONVERT(VARCHAR(5), @INDEX),@STATUS,@ROLE_ID,@BRANCH_ID,NULL,NULL, @PARENT_ID,'Y', '',@p_DVDM_ID,@NOTES)
--INSERT INTO PL_REQUEST_PROCESS VALUES (@p_REQ_PAY_ID,CONVERT(VARCHAR(5), @INDEX),@STATUS,@ROLE_ID,@BRANCH_ID,NULL,NULL, @PARENT_ID,'Y')
IF(@ROLE_ID <> 'TKTGD' AND @ROLE_ID <> 'TKHDQT')
BEGIN
BREAK;
END
END
ELSE
INSERT INTO PL_REQUEST_PROCESS (
REQ_ID,
PROCESS_ID,
STATUS,
ROLE_USER,
BRANCH_ID,
CHECKER_ID,
APPROVE_DT,
PARENT_PROCESS_ID,
IS_LEAF, COST_ID, DVDM_ID, NOTES
) VALUES (@p_REQ_PAY_ID,CONVERT(VARCHAR(5), @INDEX),@STATUS,@ROLE_ID,@BRANCH_ID,NULL,NULL, @PARENT_ID,@ISLEAF, '', @p_DVDM_ID, @NOTES)
--END
FETCH NEXT FROM CUR_PR INTO @ROLE_ID,@BRANCH_ID,@LIMIT_VALUE
END
CLOSE CUR_PR
DEALLOCATE CUR_PR
END
--- CAP NHAT THANG CUOI CUNG LA Y
--UPDATE TR_REQUEST_PROCESS SET IS_LEAF='Y' WHERE ID = (SELECT MAX(ID) FROM TR_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_PAY_ID)
COMMIT TRANSACTION
IF(@p_TYPE_FUNCTION ='SEND')-- BAT DAU GUI PHE DUYET
BEGIN
--ROLLBACK TRANSACTION
-- CAP NHAT TINH TRANG DUYET KE TOAN LA DANG XU LY
--UPDATE TR_REQ_ADVANCE_PAYMENT SET AUTH_STATUS ='U' WHERE REQ_PAY_ID =@p_REQ_PAY_ID
--INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
--VALUES(@p_REQ_PAY_ID,'SEND',@p_MAKER_ID,GETDATE(), N'Đơn vị gửi phê duyệt',N'Đơn vị tạo phiếu tạm ứng và gửi phê duyệt')
--SELECT '4' as Result, @p_REQ_PAY_ID AS REQ_PAY_ID, N'Gửi phê duyệt thành công' ErrorDesc
--RETURN '4'
DECLARE @SUM_TEMP_PAY DECIMAL, @SUM_PAY DECIMAL
IF (@p_REQ_TYPE ='I')
BEGIN
SET @SUM_TEMP_PAY = (SELECT SUM(REQ_AMT*ISNULL(RATE,1))
FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_TYPE=@p_REQ_TYPE AND REF_ID =@p_REF_ID AND AUTH_STATUS ='A' AND REQ_TYPE ='I')
SET @SUM_PAY = (SELECT SUM (ISNULL(PAY_AMT,0)) FROM TR_REQ_ADVANCE_PAYMENT WHERE REF_ID =@p_REF_ID AND AUTH_STATUS_KT ='A' AND REQ_TYPE ='I')
UPDATE TR_REQ_ADVANCE_PAYMENT SET REQ_TEMP_AMT =ISNULL(@SUM_TEMP_PAY,0) -ISNULL(@SUM_PAY,0),
RECEIVER_DEBIT =(SELECT TOP 1 ISNULL(ACC_NUM,'') FROM CM_ACCOUNT_PAY WHERE REF_ID =@p_REF_ID AND ACC_TYPE ='ADV_PAY' ) WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND REQ_TYPE ='I'
END
IF(@p_TYPE_FUNCTION ='SEND') -- KIEM TRA NEU 2 BIEN XML KHAC NULL TUC LA DANG TRONG QUA TRINH LUU NHAP
BEGIN
DECLARE @BRANCH_TYPE_CR VARCHAR(15)
SET @BRANCH_TYPE_CR =(SELECT TOP 1 BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@p_BRANCH_CREATE)
IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE TRASFER_USER_RECIVE ='' OR TRASFER_USER_RECIVE IS NULL AND REQ_PAY_ID =@p_REQ_PAY_ID) AND @BRANCH_TYPE_CR ='HS' AND @p_REQ_TYPE ='I')
BEGIN
DECLARE @USER_TP VARCHAR(15) =''
--SET @USER_TP =(SELECT TOP 1 TLNANME FROM TL_USER WHERE SECUR_CODE =@p_DEP_ID
-- AND (RoleName IN ('GDDV','TPTC','TC','KTT') OR RoleName IN (SELECT ROLE_OLD FROM TL_SYS_ROLE_MAPPING WHERE ROLE_NEW ='GDDV')))
IF(@USER_TP IS NULL OR @USER_TP ='')
BEGIN
SET @USER_TP = (SELECT TOP 1 TLNANME FROM TL_USER_V2 WHERE SECUR_CODE =@p_DEP_ID
AND (RoleName IN ('GDDV','TPTC','TC','KTT')))
END
UPDATE TR_REQ_ADVANCE_PAYMENT SET TRASFER_USER_RECIVE =@USER_TP WHERE REQ_PAY_ID =@p_REQ_PAY_ID
END
--ELSE IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE TRASFER_USER_RECIVE ='' OR TRASFER_USER_RECIVE IS NULL AND REQ_PAY_ID =@p_REQ_PAY_ID) AND @BRANCH_TYPE_CR ='PGD' AND @p_REQ_TYPE ='I')
--BEGIN
-- DECLARE @USER_TPGD VARCHAR(15) =''
-- SET @USER_TPGD =(SELECT TOP 1 TLNANME FROM TL_USER WHERE SECUR_CODE =@p_DEP_ID AND RoleName IN ('TPGD'))
-- --SET @USER_TPGD =(SELECT TOP 1 TLNANME FROM TL_USER WHERE SECUR_CODE =@p_DEP_ID AND (RoleName IN ('TPGD') OR
-- --RoleName IN (SELECT ROLE_OLD FROM TL_SYS_ROLE_MAPPING WHERE ROLE_NEW ='TPGD')))
-- IF(@USER_TPGD IS NULL OR @USER_TPGD ='')
-- BEGIN
-- SET @USER_TPGD = (SELECT TOP 1 TLNANME FROM TL_USER_V2 WHERE TLSUBBRID =@p_BRANCH_CREATE
-- AND RoleName ='TPGD')
-- END
-- UPDATE TR_REQ_ADVANCE_PAYMENT SET TRASFER_USER_RECIVE =@USER_TPGD WHERE REQ_PAY_ID =@p_REQ_PAY_ID
--END
IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS='U'))
BEGIN
SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng đã được gửi phê duyệt trước đó! Vui lòng đợi các cấp phê duyệt' ErrorDesc
RETURN '-1'
END
IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE TRASFER_USER_RECIVE <> '' AND TRASFER_USER_RECIVE IS NOT NULL AND REQ_PAY_ID =@p_REQ_PAY_ID) AND @BRANCH_TYPE_CR ='PGD' AND @p_REQ_TYPE <>'I')
BEGIN
SELECT '-1' as Result, '' REQ_PAY_ID, N'Ở cấp độ phòng giao dịch. Vui lòng không được chọn cấp phê duyệt trung gian' ErrorDesc
RETURN '-1'
END
-- CAP NHAT TINH TRANG DUYET KE TOAN LA DANG XU LY
UPDATE TR_REQ_ADVANCE_PAYMENT SET AUTH_STATUS ='U', PROCESS = NULL WHERE REQ_PAY_ID =@p_REQ_PAY_ID
UPDATE PL_REQUEST_PROCESS SET ROLE_USER ='GDDV' WHERE REQ_ID =@p_REQ_PAY_ID AND ROLE_USER ='PGD'
UPDATE PL_REQUEST_PROCESS SET ROLE_USER ='TPGD' WHERE REQ_ID =@p_REQ_PAY_ID AND ROLE_USER ='PPGD'
INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
VALUES(@p_REQ_PAY_ID,'SEND',@p_MAKER_ID,GETDATE(), N'Đơn vị gửi phê duyệt',N'Đơn vị tạo phiếu tạm ứng và gửi phê duyệt')
IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE (TRASFER_USER_RECIVE <> '' OR TRASFER_USER_RECIVE IS NOT NULL) AND REQ_PAY_ID =@p_REQ_PAY_ID))
BEGIN
SELECT '4' as Result, @p_REQ_PAY_ID REQ_PAY_ID, N'Đơn vị gửi phiếu phê duyệt phiếu đề nghị tạm ứng số: ' + ISNULL(@p_REQ_PAY_CODE,'') + N' thành công. Vui lòng đợi cấp phê duyệt trung gian xác nhận phiếu' ErrorDesc
RETURN '4'
END
ELSE
BEGIN
SELECT '4' as Result, @p_REQ_PAY_ID REQ_PAY_ID, N'Đơn vị gửi phiếu phê duyệt phiếu đề nghị tạm ứng số: ' + ISNULL(@p_REQ_PAY_CODE,'') + N' thành công. Vui lòng đợi trưởng đơn vị phê duyệt phiếu' ErrorDesc
RETURN '4'
END
END
END
-- FIX PHONG HO LOI LIEN QUAN DEN VIEC TAI KHOAN TAM UNG BI SAI
DECLARE @REQ_PAY_ID varchar(15), @l_REF_ID varchar(15)
DECLARE cursorProduct CURSOR LOCAL FOR
SELECT REQ_PAY_ID,REF_ID FROM TR_REQ_ADVANCE_PAYMENT A WHERE A.REQ_TYPE ='I'
Open cursorProduct
FETCH NEXT FROM cursorProduct INTO @REQ_PAY_ID, @l_REF_ID
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE TR_REQ_ADVANCE_PAYMENT SET RECEIVER_DEBIT =(SELECT TOP 1 ISNULL(ACC_NUM,'') FROM CM_ACCOUNT_PAY WHERE REF_ID =@l_REF_ID AND ACC_TYPE ='ADV_PAY' ) WHERE REQ_PAY_ID =@REQ_PAY_ID
FETCH NEXT FROM cursorProduct INTO @REQ_PAY_ID, @l_REF_ID
END
SELECT '0' as Result, @p_REQ_PAY_ID REQ_PAY_ID,@p_REQ_PAY_CODE AS REQ_PAY_CODE, N'Thêm mới thành công' ErrorDesc
RETURN '0'
ABORT:
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, '' ErrorDesc
RETURN '-1'
End
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Creating [dbo].[TR_REQ_ADVANCE_PAYMENT_Upd]'
GO
CREATE PROCEDURE [dbo].[TR_REQ_ADVANCE_PAYMENT_Upd]
@p_REQ_PAY_ID varchar(15)= NULL,
@p_REQ_PAY_CODE varchar(50) = NULL,
@p_REQ_DT VARCHAR(20)= NULL,
@p_BRANCH_ID varchar(15) = NULL,
@p_DEP_ID varchar(15) = NULL,
@p_REQ_REASON nvarchar(MAX) = NULL,
@p_REQ_TYPE varchar(15) = NULL,
@P_REQ_ENTRIES nvarchar(MAX) = NULL,
@p_REQ_DESCRIPTION nvarchar(MAX) = NULL,
@p_REF_ID varchar(15) = NULL,
@p_RECEIVER_PO nvarchar(250) = NULL,
@p_RECEIVER_DEBIT nvarchar(250) = NULL,
@p_REQ_PAY_TYPE varchar(15) = NULL,
@p_REQ_TYPE_CURRENCY nvarchar(50) = NULL,
@p_REQ_AMT decimal(18, 0) = NULL,
@p_REQ_TEMP_AMT decimal(18, 0) = NULL,
@p_MAKER_ID varchar(15) = NULL,
@p_CREATE_DT varchar(25) = NULL,
@p_EDITOR_ID varchar(15) = NULL,
@p_AUTH_STATUS varchar(1) = NULL,
@p_CHECKER_ID varchar(15) = NULL,
@p_APPROVE_DT varchar(25) = NULL,
@p_CREATE_DT_KT varchar(25) = NULL,
@p_MAKER_ID_KT varchar(15) = NULL,
@p_AUTH_STATUS_KT varchar(1) = NULL,
@p_CHECKER_ID_KT varchar(1) = NULL,
@p_APPROVE_DT_KT varchar(25)= null,
@p_CONFIRM_NOTE nvarchar(500) = NULL,
@p_BRANCH_CREATE varchar(15) = NULL,
@p_NOTES varchar(15) = NULL,
@p_RECORD_STATUS varchar(1) = NULL,
@p_TRANSFER_MAKER nvarchar(50) = NULL,
@p_TRANSFER_DT varchar(25) = NULL,
@p_TRASFER_USER_RECIVE varchar(15) = NULL,
@p_PROCESS varchar(15) = NULL,
@p_PAY_PHASE VARCHAR(15)= NULL,
@p_DVDM_ID VARCHAR(15)= NULL,
@p_RATE DECIMAL(18,0) =0,
@p_RECIVER_MONEY VARCHAR(15)= NULL,
@p_TYPE_FUNCTION VARCHAR(15) = NULL,
@p_IS_PERIOD VARCHAR(5) = NULL,
--doanptt 19/01/2022
@p_XMP_TEMP XML = NULL,
@p_XMP_CUS XML = NULL,
@p_XMP_PAY_ATTACH XML = NULL,
@p_XMP_PAY_INVOICE XML = NULL,
@p_XMP_ADVANCE_DT_2 XML = NULL,
@p_XMP_PAY_SCHEDULE XML = NULL,
@p_XMP_PAY_PERIOD XML = NULL,
@p_XMP_PAY_METHOD XML = NULL,
@p_XMP_PAY_BUDGET XML = NULL,
@p_XMP_ADVANCE_DT XML = NULL
AS
--Validation is here
IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT where AUTH_STATUS = 'U' AND REQ_PAY_ID = @p_REQ_PAY_ID ))
BEGIN
SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng đã được gửi phê duyệt trước đó! Vui lòng đợi các cấp phê duyệt' ErrorDesc
RETURN '-1'
END
/*
DECLARE @ERRORSYS NVARCHAR(15) = ''
IF ( NOT EXISTS ( SELECT * FROM ASS_COLLECT WHERE ))
SET @ERRORSYS = ''
IF @ERRORSYS <> ''
BEGIN
SELECT ErrorCode Result, '' CAR_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS
RETURN '0'
END
*/
--Luanlt-2019/10/15 Disable Validation
--DECLARE @ERRORSYS NVARCHAR(15) = ''
--IF EXISTS(SELECT * FROM TR_PO_MASTER WHERE REF_ID = @p_REF_ID )
--BEGIN
-- SET @ERRORSYS = 'ASSC-00005'
-- SELECT ErrorCode Result, '' REQ_PAY_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS
-- RETURN '-1'
--END
DECLARE @BRANCH_TYPE_CR VARCHAR(15), @ROLE_KI_NHAY VARCHAR(50)
--SET @ROLE_KI_NHAY =(SELECT RoleName FROM TL_USER_V2 WHERE TLNANME =@p_TRASFER_USER_RECIVE)
--IF(@ROLE_KI_NHAY IS NOT NULL AND @ROLE_KI_NHAY <> '' AND @ROLE_KI_NHAY IN ('TP','GDDV','KTT','TPTC','TC'))
--BEGIN
-- SELECT '-1' Result, '' REQ_PAY_ID, N'Bạn không được phép chọn cấp trưởng đơn vị làm cấp phê duyệt trung gian. Vui lòng bỏ qua hoặc chọn cấp phó phòng, trưởng bộ phận' ErrorDesc
-- RETURN '-1'
--END
SET @ROLE_KI_NHAY =(SELECT TOP 1 RoleName FROM TL_USER WHERE TLNANME =@p_TRASFER_USER_RECIVE)
IF(@ROLE_KI_NHAY IS NOT NULL AND @ROLE_KI_NHAY <>'' AND @ROLE_KI_NHAY IN ('TPGD','GDDV','PGD','PTGD','TGD','HDQT','TP','PP','TBP','KTT','GDK','KSV','TC','NVTC','TPTC'))
BEGIN
PRINT @ROLE_KI_NHAY
END
ELSE
BEGIN
SET @ROLE_KI_NHAY =(SELECT TOP 1 RoleName FROM TL_USER_V2 WHERE TLNANME =@p_TRASFER_USER_RECIVE)
IF(@ROLE_KI_NHAY IS NULL OR @ROLE_KI_NHAY ='')
BEGIN
SET @ROLE_KI_NHAY =(SELECT TOP 1 ROLE_NEW FROM TL_SYS_ROLE_MAPPING WHERE ROLE_OLD =(SELECT TOP 1 ROLENAME FROM TL_USER WHERE TLNANME=@p_TRASFER_USER_RECIVE))
END
END
--SET @ROLE_KI_NHAY =(SELECT RoleName FROM TL_USER_V2 WHERE TLNANME =@p_TRASFER_USER_RECIVE)
IF(@ROLE_KI_NHAY IS NOT NULL AND @ROLE_KI_NHAY <> '' AND @ROLE_KI_NHAY IN ('TP','GDDV','KTT','TPTC','TC','TPGD') AND @p_REQ_TYPE <> 'I')
BEGIN
SELECT '-1' Result, '' REQ_PAY_ID, N'Bạn không được phép chọn cấp trưởng đơn vị làm cấp phê duyệt trung gian. Vui lòng bỏ qua hoặc chọn cấp phó phòng, trưởng bộ phận' ErrorDesc
RETURN '-1'
END
SET @BRANCH_TYPE_CR =(SELECT TOP 1 BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@p_BRANCH_CREATE)
DECLARE @ACC_NUM VARCHAR(15)
SET @ACC_NUM = (SELECT TOP 1 ACC_NUM FROM CM_ACCOUNT_PAY WHERE REF_ID =@p_REF_ID)
IF @p_REQ_PAY_CODE IS NULL OR @p_REQ_PAY_CODE =''
BEGIN
SELECT '-1' Result, '' REQ_PAY_ID, N'Mã số phiếu không được để trống' ErrorDesc
RETURN '-1'
END
IF (@p_REQ_TYPE='I' AND (@p_RECEIVER_DEBIT IS NULL OR @p_RECEIVER_DEBIT =''))
BEGIN
SELECT '-1' Result, '' REQ_PAY_ID, N'Tài khoản nhân viên tạm ứng không được để trống' ErrorDesc
RETURN '-1'
END
IF EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_CODE = @p_REQ_PAY_CODE AND REQ_PAY_ID <> @p_REQ_PAY_ID)
BEGIN
SELECT '-1' Result, '' REQ_PAY_ID, N'Mã số phiếu đã tồn tại trong hệ thống' ErrorDesc
RETURN '-1'
END
-- doanptt 19/01/2022 Khai báo lưới danh sách
DECLARE @hdocTemp INT, @hdocCus INT, @hdocPayAtach INT, @hdocPayInvoice INT, @hdocPayAcvanceDT2 INT,
@hdocPaySchedule INT, @hdocPayPeriod INT, @hdocPayMethod INT, @hdocPayBudget INT, @hdocPayAcvanceDT INT
EXEC sp_xml_preparedocument @hdocTemp OUTPUT, @p_XMP_TEMP;
EXEC sp_xml_preparedocument @hdocCus OUTPUT, @p_XMP_CUS;
EXEC sp_xml_preparedocument @hdocPayAtach OUTPUT, @p_XMP_PAY_ATTACH;
--EXEC sp_xml_preparedocument @hdocPayInvoice OUTPUT, @p_XMP_PAY_INVOICE;
EXEC sp_xml_preparedocument @hdocPayAcvanceDT2 OUTPUT, @p_XMP_ADVANCE_DT_2;
EXEC sp_xml_preparedocument @hdocPaySchedule OUTPUT, @p_XMP_PAY_SCHEDULE;
EXEC sp_xml_preparedocument @hdocPayAcvanceDT OUTPUT, @p_XMP_ADVANCE_DT;
EXEC sp_xml_preparedocument @hdocPayPeriod OUTPUT, @p_XMP_PAY_PERIOD;
EXEC sp_xml_preparedocument @hdocPayMethod OUTPUT, @p_XMP_PAY_METHOD;
EXEC sp_xml_preparedocument @hdocPayBudget OUTPUT, @p_XMP_PAY_BUDGET;
--IF(((SELECT TOP 1 ACC_NUM FROM CM_ACCOUNT_PAY WHERE REF_ID =@p_REF_ID)<>@p_RECEIVER_DEBIT) AND @p_REQ_TYPE='I')
--IF(@ACC_NUM <>@p_RECEIVER_DEBIT AND @p_REQ_TYPE='I' AND LEN(ISNULL(@ACC_NUM,''))>0)
--BEGIN
-- SELECT '-1' as Result, '' REQ_PAY_ID, N'Tài khoản tạm ứng của nhân viên đã tồn tại trong hệ thống! Bạn không được phép chỉnh sửa' ErrorDesc
-- RETURN '-1'
--END
--IF(NOT EXISTS(SELECT * FROM CM_ACCOUNT_PAY WHERE REF_ID =@p_REF_ID) AND @p_REQ_TYPE='I')
-- BEGIN
-- INSERT INTO CM_ACCOUNT_PAY (REF_ID,ACC_TYPE,ACC_NUM,ACC_NAME,FUNTION,MAKER_ID,AUTH_STATUS,CREATE_DT,TK_GL,TK_GL_NAME) VALUES (@p_REF_ID,'ADV_PAY',@p_RECEIVER_DEBIT,'TK TAM UNG CUA NHAN VIEN ' +@p_REF_ID,'I',@p_MAKER_ID,'U',GETDATE(),'361200001','TAM UNG DE HOAT DONG NGHIEP VU')
-- END
--ELSE
-- BEGIN
-- IF(@ACC_NUM <>@p_RECEIVER_DEBIT AND @p_REQ_TYPE='I' AND LEN(ISNULL(@ACC_NUM,''))>0)
-- BEGIN
-- --ROLLBACK TRANSACTION
-- SELECT '-1' as Result, '' REQ_PAY_ID, N'Tài khoản tạm ứng của nhân viên đã tồn tại trong hệ thống! Bạn không được phép chỉnh sửa' ErrorDesc
-- RETURN '-1'
-- END
--END
--IF(NOT EXISTS(SELECT * FROM CM_ACCOUNT_PAY WHERE ACC_NUM =@p_RECEIVER_DEBIT AND REF_ID = @p_REF_ID AND @p_REQ_TYPE='I'))
--BEGIN
-- SELECT '-1' as Result, '' REQ_PAY_ID, N'Tài khoản tạm ứng số '+ @p_RECEIVER_DEBIT + N' không phải tài khoản của user: '+@p_REF_ID ErrorDesc
-- RETURN '-1'
--END
IF(NOT EXISTS(SELECT * FROM CM_ACCOUNT_PAY WHERE ACC_NUM =@p_RECEIVER_DEBIT AND REF_ID = @p_REF_ID) AND @p_REQ_TYPE='I')
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID, N'Tài khoản tạm ứng số '+ @p_RECEIVER_DEBIT + N' không phải tài khoản của user: '+@p_REF_ID ErrorDesc
RETURN '-1'
END
IF(LEN(ISNULL(@p_RECEIVER_DEBIT,''))>15 AND @p_REQ_TYPE ='I')
BEGIN
SELECT '-1' as Result, '' REQ_PAY_ID, N'Tài khoản tạm ứng này không được vượt quá 15 kí tự' ErrorDesc
RETURN '-1'
END
-- 19-11-2019 LUCTV BO SUNG VALIDATE TRONG QUA TRINH TEST SAU KHI UAT
-- NEU TAM UNG CHO NHA CUNG CAP THI DOT THANH TOAN KHONG DUOC PHEP NULL
-- SO TIEN THANH TOÁN PHAI LON HON KHONG
IF(@p_REQ_AMT <=0)
BEGIN
SELECT '-1' as Result, '' REQ_PAY_ID, N'Số tiền tạm ứng phải lớn hơn 0' ErrorDesc
RETURN '-1'
END
-- END VALIDATE TRONG QUA TRINH TEST UAT
BEGIN TRANSACTION
--IF(@p_DVDM_ID IS NULL OR @p_DVDM_ID ='')
--BEGIN
-- SET @p_DVDM_ID = (SELECT TOP 1 DVDM_ID FROM CM_DVDM WHERE DVDM_NAME ='KHOI TAI CHINH')
--END
UPDATE TR_REQ_ADVANCE_PAYMENT SET
REF_ID = @p_REF_ID,
DEP_ID= @p_DEP_ID,REQ_REASON = @p_REQ_REASON, REQ_PAY_TYPE = @p_REQ_PAY_TYPE,
REQ_AMT = @p_REQ_AMT,
NOTES= @p_NOTES,
REQ_TYPE= @p_REQ_TYPE,REQ_DESCRIPTION = @p_REQ_DESCRIPTION,RECEIVER_PO =@p_RECEIVER_PO, RECEIVER_DEBIT= @p_RECEIVER_DEBIT,
REQ_TEMP_AMT=@p_REQ_TEMP_AMT,REQ_ENTRIES = @P_REQ_ENTRIES,BRANCH_ID = @p_BRANCH_ID,REQ_PAY_CODE = @p_REQ_PAY_CODE, PAY_PHASE =@p_PAY_PHASE,
AUTH_STATUS='E', DVDM_ID=@p_DVDM_ID, RATE =@p_RATE,REQ_TYPE_CURRENCY =@p_REQ_TYPE_CURRENCY, RECIVER_MONEY= @p_RECIVER_MONEY, TRASFER_USER_RECIVE =@p_TRASFER_USER_RECIVE,IS_PERIOD =@p_IS_PERIOD
WHERE REQ_PAY_ID =@p_REQ_PAY_ID
IF @@Error <> 0 GOTO ABORT
--- INSERT VÀO BẢNG DETAIL NÊU TẠM ỨNG LÀ TẠM ỨNG THANH TOÁN
-- KIEM TRA NEU TAM UNG THANH TOAN
IF((@p_REQ_TYPE='P' AND (@p_IS_PERIOD <>'Y' OR @p_IS_PERIOD IS NULL)) OR @p_REQ_TYPE='D')
BEGIN
DELETE FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID=@p_REQ_PAY_ID
DELETE FROM TR_REQ_PAY_SCHEDULE WHERE REQ_PAY_ID=@p_REQ_PAY_ID
DECLARE @PO_ID varchar(15),@TERM_PAY varchar(15),@AMT_PAY_SCHEDULE decimal(18,0),@REQ_ADV_ID_SCHE VARCHAR(15),@AMT_ADVANCE_SCHEDULE decimal(18,0),@AMT_PAY_DO decimal(18,2),
@AMT_REMAIN_SCHEDULE decimal(18,0),@REQ_AD_DT varchar(20),@PROCESS varchar(15),@PAY_ID VARCHAR(15),
@REF_ID VARCHAR(15),@REQ_PAY_DESC NVARCHAR(500), @REQ_PAY_ENTRIES NVARCHAR(250),@CURRENCY VARCHAR(15),@RATE DECIMAL(18,0),@CUST_ID VARCHAR(15),
@EMP_ID VARCHAR(15),@AMT_PAY_REAL DECIMAL(18,2),@CHECK_IN VARCHAR(15),@IS_CLOSED VARCHAR(1)= NULL,@INDEX_NS INT =0,@REASON NVARCHAR(1000),@REF_TYPE VARCHAR(15)
DECLARE @TYPE_COST VARCHAR(25), @FR_LEVEL INT ,@TO_LEVEL INT
DECLARE XmlDataPO CURSOR FOR
SELECT *
FROM
OPENXML(@hdocPayAcvanceDT2, '/Root/XmlDataPO', 2)--Thông tin PO/ hợp đồng
WITH(REF_ID varchar(15),IS_CLOSED VARCHAR(1),REF_TYPE VARCHAR(15))
OPEN XmlDataPO;
DECLARE @INDEX_PO INT =0
SET @INDEX_PO = 0
FETCH NEXT FROM XmlDataPO INTO @REF_ID,@IS_CLOSED,@REF_TYPE
WHILE @@fetch_status=0
BEGIN
SET @INDEX_PO = @INDEX_PO +1
-- KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE
IF(@p_TYPE_FUNCTION ='SEND')
BEGIN
-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND TYPE ='C' AND REQ_PAY_ID
IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL)))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID, '' AS REQ_PAY_CODE,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO/ hợp đồng số '+
(SELECT CONTRACT_ID FROM TR_CONTRACT WHERE CONTRACT_ID = @REF_ID)+N' đang được tạm ứng. Vui lòng đợi giao dịch hoàn tất' ErrorDesc
RETURN '-1'
END
-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND TYPE ='C' AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL) AND REQ_PAY_ID <>@p_REQ_PAY_ID))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': Hợp đồng số '+
(SELECT CONTRACT_ID FROM TR_CONTRACT WHERE CONTRACT_ID = @REF_ID)+N' đang được thanh toán. Vui lòng đợi giao dịch hoàn tất' ErrorDesc
RETURN '-1'
END
-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND TYPE ='P' AND REQ_PAY_ID
IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL)))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID, '' AS REQ_PAY_CODE,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO số '+
(SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' đang được tạm ứng. Vui lòng đợi giao dịch hoàn tất' ErrorDesc
RETURN '-1'
END
-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND TYPE ='P' AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL) AND REQ_PAY_ID <>@p_REQ_PAY_ID))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO số '+
(SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' đang được thanh toán. Vui lòng đợi giao dịch hoàn tất' ErrorDesc
RETURN '-1'
END
--- KIEM TRA XEM PO NAY DUOC THANH TOAN HAY CHUA
IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND TYPE ='P' AND REF_ID IN (SELECT PO_ID FROM TR_PO_MASTER WHERE IS_CLOSED ='Y' )))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO số '+
(SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' đã được thanh toán. Vui lòng hủy bản nháp!' ErrorDesc
RETURN '-1'
END
END
DECLARE @REQ_PAYDTID VARCHAR(15);
EXEC SYS_CodeMasters_Gen 'TR_REQ_ADVANCE_DT', @REQ_PAYDTID OUT;
IF @REQ_PAYDTID='' OR @REQ_PAYDTID IS NULL GOTO ABORT;
INSERT INTO TR_REQ_ADVANCE_DT (REQ_PAYDTID,REQ_PAY_ID,REF_ID,TYPE,MAKER_ID,CREATE_DT,IS_CLOSED,REF_TYPE) VALUES
(@REQ_PAYDTID,@p_REQ_PAY_ID,@REF_ID,'ADV_PAY',@p_MAKER_ID,GETDATE(),@IS_CLOSED,@REF_TYPE)
IF @@error<>0 GOTO ABORT;
FETCH NEXT FROM XmlDataPO INTO @REF_ID,@IS_CLOSED,@REF_TYPE
END
CLOSE XmlDataPO;
DEALLOCATE XmlDataPO;
--- CUSOR DANH SACH LICH THANH TOAN PO - HD
DECLARE XmlDataSchedule CURSOR FOR
SELECT *
FROM
OPENXML(@hdocPaySchedule, '/Root/XmlDataSchedule',2)
WITH(PO_ID varchar(15),TERM_PAY varchar(15),AMT_PAY_SCHEDULE decimal(18,0),REQ_ADV_ID varchar(15),AMT_ADVANCE_SCHEDULE decimal(18,0), AMT_PAY_DO decimal(18,2),
AMT_REMAIN_SCHEDULE decimal(18,0),REQ_AD_DT varchar(20),PROCESS varchar(15), PAY_ID VARCHAR(15),REF_ID VARCHAR(15),
REQ_PAY_DESC NVARCHAR(500), REQ_PAY_ENTRIES NVARCHAR(250),CURRENCY VARCHAR(15),RATE DECIMAL(18,0),AMT_PAY_REAL DECIMAL(18,2))
OPEN XmlDataSchedule
FETCH NEXT FROM XmlDataSchedule INTO @PO_ID,@TERM_PAY,@AMT_PAY_SCHEDULE,@REQ_ADV_ID_SCHE,@AMT_ADVANCE_SCHEDULE,@AMT_PAY_DO,
@AMT_REMAIN_SCHEDULE,@REQ_AD_DT,@PROCESS,@PAY_ID,@REF_ID,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@CURRENCY,@RATE,@AMT_PAY_REAL
WHILE @@fetch_status=0
BEGIN
DECLARE @p_REQ_PAY_SCHEDULE_ID VARCHAR(15);
EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_SCHEDULE', @p_REQ_PAY_SCHEDULE_ID OUT;
IF @p_REQ_PAY_SCHEDULE_ID='' OR @p_REQ_PAY_SCHEDULE_ID IS NULL GOTO ABORT;
INSERT INTO TR_REQ_PAY_SCHEDULE(
SCHEDULE_ID,REQ_PAY_ID,PAY_ID,AMT_PAY,PAY_PHASE,REQ_ADV_ID,AMT_ADVANCE,AMT_PAY_DO,AMT_REMAIN,REQ_PAY_DT,REQ_AD_DT,PROCESS,MAKER_ID,
CREATE_DT,AUTH_STATUS_KT,PAYMENT_STATUS,TRN_TYPE,REF_ID,REQ_PAY_DESC,REQ_PAY_ENTRIES,CURRENCY,RATE, AMT_PAY_REAL)
VALUES (@p_REQ_PAY_SCHEDULE_ID,@p_REQ_PAY_ID,@PAY_ID,@AMT_PAY_SCHEDULE,@TERM_PAY,@p_REQ_PAY_ID,@AMT_ADVANCE_SCHEDULE,@AMT_PAY_DO,@AMT_REMAIN_SCHEDULE,
GETDATE(),CONVERT(DATETIME,@REQ_AD_DT,103),NULL,@p_MAKER_ID,GETDATE(),'U','','ADV_PAY',@REF_ID,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@CURRENCY,@RATE,@AMT_PAY_REAL)
--- END KHAI BAO CURSOR
IF @@error<>0 GOTO ABORT;
FETCH NEXT FROM XmlDataSchedule INTO @PO_ID,@TERM_PAY,@AMT_PAY_SCHEDULE,@REQ_ADV_ID_SCHE,@AMT_ADVANCE_SCHEDULE,@AMT_PAY_DO,
@AMT_REMAIN_SCHEDULE,@REQ_AD_DT,@PROCESS,@PAY_ID,@REF_ID,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@CURRENCY,@RATE,@AMT_PAY_REAL
END
CLOSE XmlDataSchedule;
DEALLOCATE XmlDataSchedule;
END
--- END TẠM ỨNG THANH TOÁN
---- TẠM ỨNG HĐ ĐỊNH KÌ
IF(@p_REQ_TYPE = 'P' AND @p_IS_PERIOD='Y')
BEGIN
DELETE FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID =@p_REQ_PAY_ID
DELETE FROM TR_REQ_PAY_PERIOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID
DECLARE XmlDataRecurring CURSOR FOR
SELECT *
FROM
OPENXML(@hdocPayAcvanceDT, '/Root/XmlDataRecurring', 2)
WITH(CONTRACT_ID varchar(15),IS_CLOSED VARCHAR(1),REF_TYPE VARCHAR(15))
OPEN XmlDataRecurring;
SET @INDEX_PO = 0
FETCH NEXT FROM XmlDataRecurring INTO @REF_ID,@IS_CLOSED,@REF_TYPE
WHILE @@fetch_status=0
BEGIN
SET @INDEX_PO = @INDEX_PO +1
DECLARE @REQ_PAYDTID_C VARCHAR(15);
EXEC SYS_CodeMasters_Gen 'TR_REQ_ADVANCE_DT', @REQ_PAYDTID_C OUT;
IF @REQ_PAYDTID_C='' OR @REQ_PAYDTID_C IS NULL GOTO ABORT;
INSERT INTO TR_REQ_ADVANCE_DT (REQ_PAYDTID,REQ_PAY_ID,REF_ID,TYPE,MAKER_ID,CREATE_DT,IS_CLOSED,REF_TYPE) VALUES
(@REQ_PAYDTID_C,@p_REQ_PAY_ID,@REF_ID,'ADV_PAY',@p_MAKER_ID,GETDATE(),@IS_CLOSED,@REF_TYPE)
IF @@error<>0 GOTO ABORT;
FETCH NEXT FROM XmlDataRecurring INTO @REF_ID,@IS_CLOSED,@REF_TYPE
END
CLOSE XmlDataRecurring;
DEALLOCATE XmlDataRecurring;
--- CUSOR DANH SACH LICH THANH TOAN PO - HD
----------------------------
--INSERT FROM PERIOD
DECLARE XmlDataPeriod CURSOR FOR
SELECT *
FROM
OPENXML(@hdocPayPeriod, '/Root/XmlDataPeriod', 2)
WITH(CONTRACT_ID varchar(15),PAY_DT_REAL VARCHAR(20),PAY_TYPE VARCHAR(5),
OLD_INDEX DECIMAL(18,0),NEW_INDEX DECIMAL(18,0),AMT_PAY DECIMAL(18,2),CURRENCY VARCHAR(5), RATE DECIMAL(18,0), FROM_DATE VARCHAR(20), TO_DATE VARCHAR(20),PAY_PHASE NVARCHAR(250),REASON NVARCHAR(2000) )
OPEN XmlDataPeriod;
DECLARE @CONTRACT_ID varchar(15),@PAY_DT_REAL VARCHAR(20),@PAY_TYPE VARCHAR(5),
@OLD_INDEX DECIMAL(18,0),@NEW_INDEX DECIMAL(18,0),@AMT_PAY_PERIOD DECIMAL(18,2),@FROM_DATE VARCHAR(20),@TO_DATE VARCHAR(20),@PAY_PHASE NVARCHAR(250), @REASON_TTDK NVARCHAR(2000)
FETCH NEXT FROM XmlDataPeriod INTO @CONTRACT_ID ,@PAY_DT_REAL ,@PAY_TYPE ,
@OLD_INDEX ,@NEW_INDEX ,@AMT_PAY_PERIOD,@CURRENCY, @RATE,@FROM_DATE,@TO_DATE,@PAY_PHASE,@REASON_TTDK
WHILE @@fetch_status=0
BEGIN
-- KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE
IF(@p_TYPE_FUNCTION ='SEND')
BEGIN
--IF(EXISTS(SELECT CONTRACT_ID
--FROM TR_CONTRACT
--WHERE CONTRACT_ID = @REF_ID AND CONVERT(DATE,END_DT,103) < CONVERT(DATE,GETDATE(),103) AND END_DT IS NOT NULL AND CONT_TYPE ='DK' AND CONT_TYPE IS NOT NULL AND CONT_TYPE <>''))
----AND IS_CLOSED='Y' ))
--BEGIN
-- ROLLBACK TRANSACTION
-- SELECT '-1' as Result, '' REQ_PAY_ID, '' AS REQ_PAY_CODE,N'Tạm ứng hợp đồng định kì đã đóng' ErrorDesc
-- RETURN '-1'
--END
IF(@NEW_INDEX <=@OLD_INDEX AND @NEW_INDEX >0 AND @OLD_INDEX >0)
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Chỉ số mới phải lớn hơn chỉ số cũ' ErrorDesc
RETURN '-1'
END
-- NEU LÀ DINH KI THI HD PHAI KHAC NULL
IF(@CONTRACT_ID IS NULL OR @CONTRACT_ID ='' )
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin thanh toán hợp đồng định kì: Cột Số hợp đồng không được phép để trống' ErrorDesc
RETURN '-1'
END
-- KIEM TRA CHI TIET HOP DONG PHAI NAM TRONG DANH SACH CAC HOP DONG
IF(@CONTRACT_ID IS NOT NULL AND @CONTRACT_ID <> '' )
BEGIN
IF(NOT EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND REF_ID =@CONTRACT_ID))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin thanh toán hợp đồng định kì - Số hợp đồng phải nằm trong danh sách các hợp đồng được chọn trên lưới Hợp đồng định kì' ErrorDesc
RETURN '-1'
END
END
END
DECLARE @PERIOD_ID VARCHAR(15);
EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_PERIOD', @PERIOD_ID OUT;
IF @PERIOD_ID='' OR @PERIOD_ID IS NULL GOTO ABORT;
INSERT INTO TR_REQ_PAY_PERIOD(PERIOD_ID,REQ_PAY_ID,PAY_TYPE, CONTRACT_ID,PAY_DT_REAL,OLD_INDEX,NEW_INDEX,AMT_PAY,AUTH_STATUS_KT,CURRENCY,RATE,FROM_DATE, TO_DATE,AD_PAY_ID,PROCESS,PAY_PHASE, REASON)
VALUES (@PERIOD_ID,@p_REQ_PAY_ID,'ADV_PAY',@CONTRACT_ID,CONVERT(DATE,@PAY_DT_REAL,103),
@OLD_INDEX ,@NEW_INDEX ,@AMT_PAY_PERIOD,'U',@CURRENCY, @RATE,CONVERT(DATE,@FROM_DATE,103),CONVERT(DATE,@TO_DATE,103),@p_REQ_PAY_ID,'0',@PAY_PHASE,@REASON_TTDK)
IF @@error<>0 GOTO ABORT;
FETCH NEXT FROM XmlDataPeriod INTO @CONTRACT_ID ,@PAY_DT_REAL ,@PAY_TYPE ,
@OLD_INDEX ,@NEW_INDEX ,@AMT_PAY_PERIOD,@CURRENCY, @RATE,@FROM_DATE,@TO_DATE,@PAY_PHASE,@REASON_TTDK
END
CLOSE XmlDataPeriod;
DEALLOCATE XmlDataPeriod;
-- VALIDATE SO TIEN
--IF(@p_REQ_AMT >= @TOTAL_SCHEDULE_AMT)
--BEGIN
-- ROLLBACK TRANSACTION
-- SELECT '-1' as Result, '' REQ_PAY_ID, N'Số tiền thanh toán phải nhỏ hơn hoặc bằng tổng số tiền còn lại cần thanh toán: '+FORMAT(SUM(@TOTAL_SCHEDULE_AMT),'#,#', 'vi-VN') ErrorDesc
-- RETURN '-1'
--END
----
END
---- END TẠM ỨNG HĐ ĐỊNH KÌ
--- INSERT PHƯƠNG THỨC THANH TOÁN
----MethodCursor
DELETE FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID
DECLARE @RECEIVE_ID varchar(15),@RECEIVE_NAME nvarchar(100),@REQ_PAY_REASON nvarchar(MAX),@TOTAL_AMT_METHOD decimal(18,2),@REQ_PAY_TYPE varchar(1),
@ACC_NO VARCHAR(50), @ACC_NAME NVARCHAR(250), @ISSED_BY NVARCHAR(250), @ISSUED_DT VARCHAR(20)
DECLARE XmlDataMethod CURSOR FOR
SELECT *
FROM
OPENXML(@hdocPayMethod, '/Root/XmlDataMethod',2)
WITH(RECEIVE_ID varchar(15),RECEIVE_NAME nvarchar(100),REQ_PAY_REASON nvarchar(MAX),TOTAL_AMT decimal(18,2),REQ_PAY_TYPE varchar(1),
REQ_PAY_DESC nvarchar(MAX),REQ_PAY_ENTRIES nvarchar(MAX),ACC_NO VARCHAR(50), ACC_NAME NVARCHAR(250),
ISSUED_BY NVARCHAR(250), ISSUED_DT VARCHAR(20),CURRENCY VARCHAR(15),RATE DECIMAL(18,0),CHECK_IN VARCHAR(15))
OPEN XmlDataMethod
FETCH NEXT FROM XmlDataMethod
INTO @RECEIVE_ID,@RECEIVE_NAME,@REQ_PAY_REASON,@TOTAL_AMT_METHOD,@REQ_PAY_TYPE,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@ACC_NO,@ACC_NAME,@ISSED_BY,@ISSUED_DT,@CURRENCY,@RATE,@CHECK_IN
WHILE @@fetch_status=0
BEGIN
IF(@REQ_PAY_TYPE<>'1')
BEGIN
SET @ISSUED_DT = NULL
END
DECLARE @p_REQ_PAY_METHOD_ID VARCHAR(15);
EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_METHOD', @p_REQ_PAY_METHOD_ID OUT;
IF @p_REQ_PAY_METHOD_ID='' OR @p_REQ_PAY_METHOD_ID IS NULL GOTO ABORT;
INSERT INTO TR_REQ_PAY_METHOD(METHOD_ID,REQ_PAY_ID,EMP_ID,REQ_PAY_REASON,TOTAL_AMT,REQ_PAY_TYPE,REQ_PAY_DESC,REQ_PAY_ENTRIES, TEMP,MAKER_ID,
CREATE_DT,ACC_NO,ACC_NAME,ISSUED_BY,ISSUED_DT,CURRENCY,RATE,CHECK_IN)
VALUES (@p_REQ_PAY_METHOD_ID,@p_REQ_PAY_ID,@RECEIVE_ID,@REQ_PAY_REASON,@TOTAL_AMT_METHOD,@REQ_PAY_TYPE,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,'',
@p_MAKER_ID,GETDATE(),@ACC_NO,@ACC_NAME,@ISSED_BY, CONVERT(DATE, @ISSUED_DT, 103),@CURRENCY,@RATE,@CHECK_IN)
IF @@error<>0 GOTO ABORT;
FETCH NEXT FROM XmlDataMethod
INTO @RECEIVE_ID,@RECEIVE_NAME,@REQ_PAY_REASON,@TOTAL_AMT_METHOD,@REQ_PAY_TYPE,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@ACC_NO,@ACC_NAME , @ISSED_BY , @ISSUED_DT,@CURRENCY,@RATE,@CHECK_IN
END
CLOSE XmlDataMethod;
DEALLOCATE XmlDataMethod
----END INSERT PHƯƠNG THỨC THANH TOÁN
----INSERT VAO BANG DS KHACH HANG
DELETE FROM TR_REQ_ADVANCE_CUS WHERE REQ_PAY_ID = @p_REQ_PAY_ID
DECLARE XmlDataCus CURSOR FOR
SELECT *
FROM
OPENXML(@hdocCus, '/Root/XmlDataCus', 2)
WITH(CUST_ID varchar(15), EMP_ID VARCHAR(15), AMT_PAY_DO decimal(18,2),CURRENCY VARCHAR(15),RATE DECIMAL(18,0))
OPEN XmlDataCus;
FETCH NEXT FROM XmlDataCus INTO @CUST_ID, @EMP_ID,@AMT_PAY_DO,@CURRENCY,@RATE
WHILE @@fetch_status=0
BEGIN
INSERT INTO TR_REQ_ADVANCE_CUS(REQ_PAY_ID,CUST_ID,EMP_ID,AMT_PAY_DO,CURRENCY,RATE,MAKER_ID,CREATE_DT)
VALUES (@p_REQ_PAY_ID, @CUST_ID, @EMP_ID,@AMT_PAY_DO,@CURRENCY,@RATE,@p_MAKER_ID,GETDATE())
--- END KHAI BAO CURSOR
IF @@error<>0 GOTO ABORT;
FETCH NEXT FROM XmlDataCus INTO @CUST_ID, @EMP_ID,@AMT_PAY_DO,@CURRENCY,@RATE
END
CLOSE XmlDataCus;
DEALLOCATE XmlDataCus;
----END
-- HANG MUC CHI PHI VA NGAN SACH
DELETE FROM TR_REQ_PAY_BUDGET WHERE REQ_PAY_ID =@p_REQ_PAY_ID
DECLARE @TRADE_ID varchar(15),@GD_ID varchar(15),@AMT_APP decimal(18,2),@AMT_DO decimal(18,2),@AMT_EXE decimal(18,2),@AMT_REMAIN_GD decimal(18,2)
DECLARE XmlDataGood CURSOR LOCAL FOR
SELECT *
FROM
OPENXML(@hdocPayBudget, '/Root/XmlDataGood',2)
WITH(TRADE_ID varchar(15),GD_ID varchar(15),AMT_APP decimal(18,2),AMT_DO decimal(18,2), AMT_EXE decimal(18,2),AMT_REMAIN decimal(18,2),CURRENCY VARCHAR(15), RATE DECIMAL(18,2),REASON NVARCHAR(1000),TYPE_COST VARCHAR(25) , FR_LEVEL INT ,TO_LEVEL INT)
OPEN XmlDataGood
FETCH NEXT FROM XmlDataGood INTO @TRADE_ID,@GD_ID ,@AMT_APP ,@AMT_DO,@AMT_EXE ,@AMT_REMAIN_GD,@CURRENCY,@RATE,@REASON,@TYPE_COST , @FR_LEVEL ,@TO_LEVEL
WHILE @@fetch_status=0 BEGIN
--- KIEM TRA NEU NGAN SACH SU DUNG THUC THE LON HON NGAN SACH CON LAI
SET @INDEX_NS = @INDEX_NS +1
-- KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE
--IF(@p_TYPE_FUNCTION ='SEND')
--BEGIN
--IF((@AMT_EXE > @AMT_REMAIN_GD))
--BEGIN
-- ROLLBACK TRANSACTION
-- SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng thực tế không được vượt quá ngân sách còn lại.' ErrorDesc
-- RETURN '-1'
--END
--END
IF(@p_TYPE_FUNCTION ='SEND')
BEGIN
IF(ISNULL(@AMT_EXE,0) =0)
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID,@p_REQ_PAY_CODE AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng thực tế phải lớn hơn không.' ErrorDesc
RETURN '-1'
END
--IF((@AMT_EXE > @AMT_REMAIN_GD) AND ((SELECT GD_TYPE_ID FROM CM_GOODS WHERE GD_ID =@GD_ID) ='NS'))
--BEGIN
-- ROLLBACK TRANSACTION
-- SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng thực tế không được vượt quá ngân sách còn lại.' ErrorDesc
-- RETURN '-1'
--END
END
DECLARE @p_BUDGET_ID VARCHAR(15);
EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_BUDGET', @p_BUDGET_ID OUT;
IF @p_BUDGET_ID='' OR @p_BUDGET_ID IS NULL GOTO ABORT;
INSERT INTO TR_REQ_PAY_BUDGET(BUDG_ID,GD_ID,REQ_PAY_ID,TRADE_ID,AMT_APP,AMT_DO,AMT_EXE,AMT_REMAIN,MAKER_ID,CREATE_DT,CURRENCY,RATE,REASON,TYPE_COST , FR_LEVEL ,TO_LEVEL)
VALUES (@p_BUDGET_ID,@GD_ID,@p_REQ_PAY_ID,@TRADE_ID,@AMT_APP,@AMT_DO,@AMT_EXE,@AMT_REMAIN_GD,@p_MAKER_ID, GETDATE(),@CURRENCY,@RATE,@REASON,@TYPE_COST , @FR_LEVEL ,@TO_LEVEL)
IF @@error<>0 GOTO ABORT;
FETCH NEXT FROM XmlDataGood INTO @TRADE_ID,@GD_ID ,@AMT_APP ,@AMT_DO,@AMT_EXE ,@AMT_REMAIN_GD,@CURRENCY,@RATE,@REASON,@TYPE_COST , @FR_LEVEL ,@TO_LEVEL
END;
CLOSE XmlDataGood;
DEALLOCATE XmlDataGood;
--- END INSERT NGAN SACH
DELETE FROM TR_REQ_PAY_ATTACH WHERE REQ_PAY_ID =@p_REQ_PAY_ID
DECLARE @ATTACH_ID varchar(15),@CON_ID varchar(100),@CONT_CODE VARCHAR(50), @CON_NOTES VARCHAR(1000),@CON_DESC NVARCHAR(1000),@CON_TYPE VARCHAR(15),@AMT_ATT DECIMAL(18,2),@REF_DT VARCHAR(20),@NOTES_ATT NVARCHAR(1000)
DECLARE XmlAttach CURSOR FOR
SELECT *
FROM
OPENXML(@hdocPayAtach, '/Root/XmlAttach',2)
WITH(ATTACH_ID varchar(15),CON_ID varchar(100),CONT_CODE VARCHAR(50), CON_NOTES NVARCHAR(1000),CON_DESC NVARCHAR(1000),CON_TYPE VARCHAR(15),AMT_ATT DECIMAL(18,2),REF_DT VARCHAR(20))
OPEN XmlAttach
--INSERT CHUNG TU DINH KEM
FETCH NEXT FROM XmlAttach INTO @ATTACH_ID,@CON_ID,@CONT_CODE,@NOTES_ATT,@CON_DESC,@CON_TYPE,@AMT_ATT,@REF_DT
WHILE @@fetch_status=0
BEGIN
IF (@REF_DT='')
BEGIN
SET @REF_DT = NULL
END
EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_ATTACH', @ATTACH_ID OUT;
IF @ATTACH_ID='' OR @ATTACH_ID IS NULL GOTO ABORT;
INSERT INTO TR_REQ_PAY_ATTACH(ATTACH_ID,REQ_PAY_ID,REF_ID,REF_CODE,NOTES,[DESCRIPTION],[TYPE],AMT,REF_DT) VALUES
(@ATTACH_ID,@p_REQ_PAY_ID,@CON_ID,@CONT_CODE,@NOTES_ATT,@CON_DESC,@CON_TYPE,@AMT_ATT, CONVERT(DATE, @REF_DT,103))
IF @@error<>0 GOTO ABORT;
FETCH NEXT FROM XmlAttach INTO @ATTACH_ID,@CON_ID,@CONT_CODE,@NOTES_ATT,@CON_DESC,@CON_TYPE,@AMT_ATT,@REF_DT
END
CLOSE XmlAttach;
DEALLOCATE XmlAttach;
----END
--- BAT DAU VALIDATE
IF(@p_TYPE_FUNCTION ='SEND')
BEGIN
DECLARE @SUM_PTTT DECIMAL(18,0), @SUM_NS DECIMAL(18,0),@SUM_LICH_TT DECIMAL(18,0)
SET @SUM_PTTT =(SELECT SUM(TOTAL_AMT * ISNULL(RATE,1)) FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
IF(EXISTS(SELECT * FROM TR_REQ_PAY_SCHEDULE WHERE REQ_PAY_ID =@p_REQ_PAY_ID) AND @p_REQ_TYPE ='D')
BEGIN
SET @SUM_LICH_TT =(SELECT SUM(AMT_PAY_REAL* ISNULL(RATE,1)) FROM TR_REQ_PAY_SCHEDULE WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
IF(@p_REQ_AMT*ISNULL(@p_RATE,1) != ISNULL(@SUM_LICH_TT,0))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID, '' AS REQ_PAY_CODE,N'Tổng số tiền lịch thanh toán PO và hợp đồng liên quan đến khách hàng xử lý nợ phải bằng số tiền tạm ứng' ErrorDesc
RETURN '-1'
END
END
IF(EXISTS(SELECT * FROM TR_REQ_PAY_BUDGET WHERE REQ_PAY_ID =@p_REQ_PAY_ID))
BEGIN
SET @SUM_NS =(SELECT SUM(AMT_EXE * ISNULL(RATE,1)) FROM TR_REQ_PAY_BUDGET WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
IF(@p_REQ_AMT*ISNULL(@p_RATE,1) != ISNULL(@SUM_NS,0))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID, '' AS REQ_PAY_CODE,N'Tổng số tiền sử dụng ngân sách và chi phí phải bằng số tiền tạm ứng' ErrorDesc
RETURN '-1'
END
END
ELSE
IF(@p_REQ_AMT*ISNULL(@p_RATE,1) != ISNULL(@SUM_PTTT,0))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID, '' AS REQ_PAY_CODE,N'Tổng số tiền phương thức thanh toán phải bằng số tiền tạm ứng' ErrorDesc
RETURN '-1'
END
END
----END
IF(@p_REQ_TYPE ='I')
BEGIN
DELETE FROM PL_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_PAY_ID
DECLARE @tmp table(ROLE_ID VARCHAR(25),BRANCH_ID varchar(15),AMT decimal(18,2))
IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID= @p_BRANCH_CREATE) ='HS')
BEGIN
--DECLARE @DEP_CODE VARCHAR(15)
--SET @DEP_CODE =(SELECT * FROM CM_DEPARTMENT WHERE DEP_ID =@p_DEP_ID)
IF EXISTS(SELECT * FROM CM_DEPARTMENT WHERE (DEP_CODE LIKE '%06908%' OR DEP_CODE ='0690605') AND DEP_ID =@p_DEP_ID)
BEGIN
-- KHOI TAI CHINH SE KHONG CO PTGD NUA MA CHI CO KDK - LUCTV 29032021
INSERT INTO @tmp SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001' AND A.ROLE_ID <>'PTGD'
--INSERT INTO @tmp SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001' AND A.ROLE_ID <>'GDK'
--INSERT INTO @tmp SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001' AND A.ROLE_ID <>'GDK' ORDER BY LIMIT_VALUE ASC
END
IF EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE ='0690405' AND DEP_ID =@p_DEP_ID)
BEGIN
-- KHOI TAI CHINH SE KHONG CO PTGD NUA MA CHI CO KDK - LUCTV 29032021
INSERT INTO @tmp SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001' AND A.ROLE_ID <>'GDK'
--INSERT INTO @tmp SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001' AND A.ROLE_ID <>'GDK'
--INSERT INTO @tmp SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001' AND A.ROLE_ID <>'GDK' ORDER BY LIMIT_VALUE ASC
END
ELSE IF EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06910%' AND DEP_ID =@p_DEP_ID)
BEGIN
INSERT INTO @tmp SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001' AND A.ROLE_ID <>'GDK' ORDER BY LIMIT_VALUE ASC
END
ELSE IF (EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06900%' AND DEP_ID =@p_DEP_ID) OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06901%' AND DEP_ID =@p_DEP_ID)
OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06902%' AND DEP_ID =@p_DEP_ID) OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06903%' AND DEP_ID =@p_DEP_ID)
OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06904%' AND DEP_ID =@p_DEP_ID) OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06920%' AND DEP_ID =@p_DEP_ID)
OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%799%' AND DEP_ID =@p_DEP_ID)
OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%899%' AND DEP_ID =@p_DEP_ID))
BEGIN
INSERT INTO @tmp SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001' AND A.ROLE_ID NOT IN ('GDK','PTGD') ORDER BY LIMIT_VALUE ASC
END
ELSE IF (EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06907%' AND DEP_ID =@p_DEP_ID) OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06909%' AND DEP_ID =@p_DEP_ID)
OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06911%' AND DEP_ID =@p_DEP_ID) OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06921%' AND DEP_ID =@p_DEP_ID)
OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06922%' AND DEP_ID =@p_DEP_ID))
BEGIN
INSERT INTO @tmp SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001' AND A.ROLE_ID <>'PTGD' ORDER BY LIMIT_VALUE ASC
END
ELSE
BEGIN
INSERT INTO @tmp SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001' ORDER BY LIMIT_VALUE ASC
END
END
ELSE
BEGIN
IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID= @p_BRANCH_CREATE) ='CN')
BEGIN
--- BAO GOM DON VI & 3 CAP DUYET CUA HOI SO
INSERT INTO @tmp SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY' AND BRANCH_ID =@p_BRANCH_CREATE AND ROLE_ID ='GDDV'
--INSERT INTO @tmp SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001'
END
ELSE IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID= @p_BRANCH_CREATE) ='PGD')
BEGIN
INSERT INTO @tmp SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY' AND BRANCH_ID =@p_BRANCH_CREATE AND ROLE_ID ='TPGD'
--BRANCH_ID =(SELECT FATHER_ID FROM CM_BRANCH WHERE BRANCH_ID= @p_BRANCH_CREATE)
--INSERT INTO @tmp SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001'
END
END
DECLARE @ROLE_ID VARCHAR(20), @BRANCH_ID VARCHAR(20), @INDEX INT =0, @SL_ROLE INT =0,@LIMIT_VALUE DECIMAL(18,0)
SET @SL_ROLE = (SELECT COUNT(*) FROM @tmp)
DECLARE @ISLEAF VARCHAR(1) = 'Y', @PARENT_ID VARCHAR(10) = '', @STATUS VARCHAR(1) = 'C', @NOTES NVARCHAR(500)
DECLARE CUR_PR CURSOR FOR SELECT A.ROLE_ID, A.BRANCH_ID,A.AMT FROM @tmp A ORDER BY A.AMT ASC
OPEN CUR_PR
FETCH NEXT FROM CUR_PR INTO @ROLE_ID,@BRANCH_ID,@LIMIT_VALUE
WHILE @@FETCH_STATUS =0 --AND @STOP=0
BEGIN
SET @INDEX= @INDEX+1
IF @INDEX = @SL_ROLE
SET @ISLEAF = 'Y'
ELSE
SET @ISLEAF = 'N'
SET @NOTES = (SELECT N'Đợi '+ ROLE_DESC + N' phê duyệt' FROM TL_SYSROLE WHERE ROLE_ID = @ROLE_ID)
IF(@INDEX=1 )
BEGIN
SET @PARENT_ID = NULL
SET @STATUS = 'C'
--INSERT INTO TR_REQUEST_PROCESS VALUES (@p_REQ_PAY_ID,CONVERT(VARCHAR(5), @INDEX),'C',@ROLE_ID,@BRANCH_ID,NULL,NULL,NULL,@ISLEAF)
END
ELSE
BEGIN
SET @PARENT_ID = CONVERT(VARCHAR(5),@INDEX -1)
SET @STATUS = 'U'
END
IF(@LIMIT_VALUE >= @p_REQ_AMT)
BEGIN
INSERT INTO dbo.PL_REQUEST_PROCESS
(
REQ_ID,
PROCESS_ID,
STATUS,
ROLE_USER,
BRANCH_ID,
CHECKER_ID,
APPROVE_DT,
PARENT_PROCESS_ID,
IS_LEAF, COST_ID, DVDM_ID, NOTES
)
VALUES (@p_REQ_PAY_ID,CONVERT(VARCHAR(5), @INDEX),@STATUS,@ROLE_ID,@BRANCH_ID,NULL,NULL, @PARENT_ID,'Y', '',@p_DVDM_ID,@NOTES)
--INSERT INTO PL_REQUEST_PROCESS VALUES (@p_REQ_PAY_ID,CONVERT(VARCHAR(5), @INDEX),@STATUS,@ROLE_ID,@BRANCH_ID,NULL,NULL, @PARENT_ID,'Y','')
IF(@ROLE_ID <> 'TKTGD' AND @ROLE_ID <> 'TKHDQT')
BEGIN
BREAK;
END
END
ELSE
INSERT INTO PL_REQUEST_PROCESS (
REQ_ID,
PROCESS_ID,
STATUS,
ROLE_USER,
BRANCH_ID,
CHECKER_ID,
APPROVE_DT,
PARENT_PROCESS_ID,
IS_LEAF, COST_ID, DVDM_ID, NOTES
) VALUES (@p_REQ_PAY_ID,CONVERT(VARCHAR(5), @INDEX),@STATUS,@ROLE_ID,@BRANCH_ID,NULL,NULL, @PARENT_ID,@ISLEAF, '', @p_DVDM_ID, @NOTES)
--END
FETCH NEXT FROM CUR_PR INTO @ROLE_ID,@BRANCH_ID,@LIMIT_VALUE
END
CLOSE CUR_PR
DEALLOCATE CUR_PR
END
COMMIT TRANSACTION
IF(@p_TYPE_FUNCTION ='SEND')-- BAT DAU GUI PHE DUYET
BEGIN
IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT where AUTH_STATUS = 'U' AND REQ_PAY_ID = @p_REQ_PAY_ID ))
BEGIN
SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng đã được gửi phê duyệt trước đó! Vui lòng đợi các cấp phê duyệt' ErrorDesc
RETURN '-1'
END
--ROLLBACK TRANSACTION
-- CAP NHAT TINH TRANG DUYET KE TOAN LA DANG XU LY
IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE (TRASFER_USER_RECIVE ='' OR TRASFER_USER_RECIVE IS NULL) AND REQ_PAY_ID =@p_REQ_PAY_ID ) AND @BRANCH_TYPE_CR ='HS' AND @p_REQ_TYPE ='I')
BEGIN
DECLARE @USER_TP VARCHAR(15) =''
--SET @USER_TP =(SELECT TOP 1 TLNANME FROM TL_USER WHERE SECUR_CODE =@p_DEP_ID
-- AND (RoleName IN ('GDDV','TPTC','TC','KTT') OR RoleName IN (SELECT ROLE_OLD FROM TL_SYS_ROLE_MAPPING WHERE ROLE_NEW ='GDDV')))
IF(@USER_TP IS NULL OR @USER_TP ='')
BEGIN
SET @USER_TP = (SELECT TOP 1 TLNANME FROM TL_USER_V2 WHERE SECUR_CODE =@p_DEP_ID
AND (RoleName IN ('TBP','PP')))
END
--UPDATE TR_REQ_ADVANCE_PAYMENT SET TRASFER_USER_RECIVE =@USER_TP WHERE REQ_PAY_ID =@p_REQ_PAY_ID
END
DECLARE @SUM_TEMP_PAY DECIMAL, @SUM_PAY DECIMAL
IF (@p_REQ_TYPE ='I')
BEGIN
SET @SUM_TEMP_PAY = (SELECT SUM(REQ_AMT*ISNULL(RATE,1))
FROM TR_REQ_ADVANCE_PAYMENT WHERE REF_ID =@p_REF_ID AND AUTH_STATUS ='A' AND REQ_TYPE ='I')
SET @SUM_PAY = (SELECT SUM (ISNULL(PAY_AMT,0)) FROM TR_REQ_ADVANCE_PAYMENT WHERE REF_ID =@p_REF_ID AND AUTH_STATUS_KT ='A' AND REQ_TYPE ='I')
UPDATE TR_REQ_ADVANCE_PAYMENT SET REQ_TEMP_AMT =ISNULL(@SUM_TEMP_PAY,0) -ISNULL(@SUM_PAY,0) WHERE REQ_PAY_ID =@p_REQ_PAY_ID
END
DECLARE @SUM_THANH_TOAN DECIMAL(18,0) =0, @SUM_PHUONG_THUC DECIMAL(18,0) =0
SET @SUM_THANH_TOAN =(SELECT ISNULL(SUM(REQ_AMT * ISNULL(RATE,1)),0) FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
SET @SUM_PHUONG_THUC =(SELECT ISNULL(SUM(TOTAL_AMT * ISNULL(RATE,1)),0) FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
IF(ROUND(@SUM_THANH_TOAN,0) <> ROUND(@SUM_PHUONG_THUC,0))
BEGIN
SELECT '-1' as Result, '' REQ_PAY_ID, N'Số tiền phương thức thanh toán phải bằng số tiền bạn cần thanh toán là: ' + FORMAT(SUM(@SUM_THANH_TOAN),'#,#', 'vi-VN') ErrorDesc
RETURN '-1'
END
IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE TRASFER_USER_RECIVE <>'' AND TRASFER_USER_RECIVE IS NOT NULL AND REQ_PAY_ID =@p_REQ_PAY_ID) AND @BRANCH_TYPE_CR ='PGD' AND @p_REQ_TYPE <>'I')
BEGIN
SELECT '-1' as Result, '' REQ_PAY_ID, N'Ở cấp độ phòng giao dịch. Vui lòng không được chọn cấp phê duyệt trung gian' ErrorDesc
RETURN '-1'
END
--IF(NOT EXISTS(SELECT * FROM TR_REQ_PAY_BUDGET WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND @p_REQ_TYPE='P' AND (@p_IS_PERIOD IS NULL OR @p_IS_PERIOD ='' OR @p_IS_PERIOD ='N')))
--BEGIN
-- SELECT '-1' as Result, '' REQ_PAY_ID, N'Thông tin hạng mục ngân sách và chi phí không được để trống. Vui lòng chọn ngân sách và chi phí' ErrorDesc
-- RETURN '-1'
--END
UPDATE TR_REQ_ADVANCE_PAYMENT SET AUTH_STATUS ='U',CREATE_DT = GETDATE() WHERE REQ_PAY_ID =@p_REQ_PAY_ID
UPDATE PL_REQUEST_PROCESS SET ROLE_USER ='GDDV' WHERE REQ_ID =@p_REQ_PAY_ID AND ROLE_USER ='PGD'
UPDATE PL_REQUEST_PROCESS SET ROLE_USER ='TPGD' WHERE REQ_ID =@p_REQ_PAY_ID AND ROLE_USER ='PPGD'
INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
VALUES(@p_REQ_PAY_ID,'SEND',@p_MAKER_ID,GETDATE(), N'Đơn vị gửi phê duyệt',N'Đơn vị tạo phiếu tạm ứng và gửi phê duyệt')
IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE (TRASFER_USER_RECIVE <> '' OR TRASFER_USER_RECIVE IS NOT NULL) AND REQ_PAY_ID =@p_REQ_PAY_ID))
BEGIN
SELECT '4' as Result, @p_REQ_PAY_ID REQ_PAY_ID, N'Đơn vị gửi phiếu phê duyệt phiếu đề nghị tạm ứng số: ' + ISNULL(@p_REQ_PAY_CODE,'') + N' thành công. Vui lòng đợi cấp phê duyệt trung gian xác nhận phiếu' ErrorDesc
RETURN '4'
END
ELSE
BEGIN
SELECT '4' as Result, @p_REQ_PAY_ID REQ_PAY_ID, N'Đơn vị gửi phiếu phê duyệt phiếu đề nghị tạm ứng số: ' + ISNULL(@p_REQ_PAY_CODE,'') + N' thành công. Vui lòng đợi trưởng đơn vị phê duyệt phiếu' ErrorDesc
RETURN '4'
END
--SELECT '4' as Result, @p_REQ_PAY_ID AS REQ_PAY_ID, N'Gửi phê duyệt thành công' ErrorDesc
--RETURN '4'
END
-- FIX PHONG HO LOI LIEN QUAN DEN VIEC TAI KHOAN TAM UNG BI SAI
----DECLARE @REQ_PAY_ID varchar(15), @l_REF_ID varchar(15)
----DECLARE cursorProduct CURSOR LOCAL FOR
----SELECT REQ_PAY_ID,REF_ID FROM TR_REQ_ADVANCE_PAYMENT A WHERE A.REQ_TYPE ='I'
----Open cursorProduct
----FETCH NEXT FROM cursorProduct INTO @REQ_PAY_ID, @l_REF_ID
----WHILE @@FETCH_STATUS = 0
----BEGIN
---- UPDATE TR_REQ_ADVANCE_PAYMENT SET RECEIVER_DEBIT =(SELECT TOP 1 ISNULL(ACC_NUM,'') FROM CM_ACCOUNT_PAY WHERE REF_ID =@l_REF_ID AND ACC_TYPE ='ADV_PAY' ) WHERE REQ_PAY_ID =@REQ_PAY_ID
----FETCH NEXT FROM cursorProduct INTO @REQ_PAY_ID, @l_REF_ID
----END
SELECT '0' as Result, @p_REQ_PAY_ID REQ_PAY_ID, '' ErrorDesc
RETURN '0'
ABORT:
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID, '' ErrorDesc
RETURN '-1'
End
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Creating [dbo].[TR_REQ_ADVANCE_PAYMENT_Byid]'
GO
/*
INSERT INTO [dbo].[SYS_PREFIX](ID,Prefix,Description) VALUES('TR_REQUEST_PAMENT','TRPY','NONE')
*/
CREATE PROCEDURE [dbo].[TR_REQ_ADVANCE_PAYMENT_Byid]
@p_REQ_PAY_ID varchar(15)= NULL
AS
SELECT A.*,ISNULL(B.AUTH_STATUS_NAME,N'Chờ duyệt') AS AUTH_STATUS_NAME, C.AUTH_STATUS_NAME AUTH_STATUS_NAME_KT, TL.TLFullName CREATE_FULLNAME,
TL1.TLFullName APPROVE_FULLNAME,TL2.TLFullName CREATE_FULLNAME_KT,TL3.TLFullName APPROVE_FULLNAME_KT,
BR.BRANCH_NAME BRANCH_NAME, BR1.BRANCH_NAME BRANCH_NAME_CRE, DP.DEP_NAME AS DEP_NAME, DP.DEP_CODE AS DEP_CODE, BR.BRANCH_CODE BRANCH_CODE_REQ,
--Luanlt--2019/10/15-Sửa AL,AL1
BR1.BRANCH_CODE BRANCH_CODE_CRE, AL.CONTENT REQ_TYPE_NAME,AL1.CONTENT REQ_PAY_TYPE_NAME,
A.REQ_AMT AS TOTAL_AMT_TEMP,CASE WHEN H.SOTIEN_TT IS NULL THEN ISNULL(A.PAY_AMT,0) ELSE ISNULL(H.SOTIEN_TT,0) END AS TOTAL_AMT_PAY_HIS,
TL4.TLFullName AS TRANSFER_FULLNAME,TL5.TLFullName AS TRANSFER_RECIEVER_FULLNAME,
TL6.TLFullName AS REC_DEBIT_NAME, TL6.TLNANME AS REC_DEBIT_CODE, TL7.TLFullName AS ACC_NAME, TL7.TLNANME AS EMP_CODE,
PO.PO_CODE, PO.PO_NAME AS ACC_NAME,SUP.SUP_NAME,SUP.TAX_NO AS SUP_TAX_NO,CUS.CUSTOMER_CODE AS CUST_CODE, CUS.CUSTOMER_NAME AS ACC_NAME,PM.PAY_PHASE AS KY_TAM_UNG,
DV.DVDM_CODE, DV.DVDM_NAME, PR.PROCESS_DESC +N' vào lúc '+ CONVERT(VARCHAR(30), CONVERT(DATETIME, PR.APP_DT,103)) AS CONF_STATUS, PC1.NOTES AS NEXT_STEP,
PC3.LEVEL_JOB, PC3.STATUS_JOB,PC3.TYPE_JOB,PC3.TLNAME AS EXEC_USER,TL8.TLFullName AS RECIVER_MONEY_FULLNAME, BR1.BRANCH_TYPE AS BRANCH_TYPE_CR, BR.BRANCH_TYPE
FROM TR_REQ_ADVANCE_PAYMENT A
LEFT JOIN CM_AUTH_STATUS B ON A.AUTH_STATUS=B.AUTH_STATUS
LEFT JOIN CM_AUTH_STATUS C ON A.AUTH_STATUS_KT=C.AUTH_STATUS
LEFT JOIN TL_USER TL ON A.MAKER_ID=TL.TLNANME
LEFT JOIN TL_USER TL1 ON A.CHECKER_ID=TL1.TLNANME
LEFT JOIN TL_USER TL2 ON A.MAKER_ID_KT=TL2.TLNANME
LEFT JOIN TL_USER TL3 ON A.CHECKER_ID_KT=TL3.TLNANME
LEFT JOIN dbo.CM_BRANCH BR ON A.BRANCH_ID=BR.BRANCH_ID
LEFT JOIN dbo.CM_BRANCH BR1 ON A.BRANCH_CREATE=BR1.BRANCH_ID
LEFT JOIN dbo.CM_DEPARTMENT DP ON A.DEP_ID= DP.DEP_ID
--Luanlt--2019/10/15-Sửa AL,AL1
LEFT JOIN CM_ALLCODE AL ON A.REQ_TYPE = AL.CDVAL AND AL.CDNAME='REQ_TYPE'
LEFT JOIN CM_ALLCODE AL1 ON A.REQ_PAY_TYPE = AL1.CDVAL AND AL1.CDNAME='REQ_PAY_TYPE'
LEFT JOIN TL_USER TL4 ON A.TRANSFER_MAKER = TL4.TLNANME
LEFT JOIN TL_USER TL5 ON A.TRASFER_USER_RECIVE = TL5.TLNANME
LEFT JOIN TL_USER TL6 ON A.RECEIVER_DEBIT = TL6.TLNANME AND A.REQ_TYPE='D'
LEFT JOIN
(
SELECT PAY_ADV_ID,(ISNULL(SUM(AMT_USE),0) - ISNULL(SUM(AMT_ADD),0) + ISNULL(SUM(AMT_REVERT),0)) AS SOTIEN_TT FROM TR_REQ_PAYMENT_DT WHERE AUTH_STATUS_KT ='A' GROUP BY PAY_ADV_ID
) H ON A.REQ_PAY_ID = H.PAY_ADV_ID
LEFT JOIN TL_USER TL7 ON TL7.TLNANME = A.REF_ID AND A.REQ_TYPE='I'
LEFT JOIN TR_PO_MASTER PO ON A.REF_ID = PO.PO_ID AND A.REQ_TYPE='P'
LEFT JOIN CM_SUPPLIER SUP ON PO.SUP_ID = SUP.SUP_ID AND A.REQ_TYPE='P'
LEFT JOIN LS_CUSTOMER CUS ON A.REF_ID = CUS.CUSTOMER_ID AND A.REQ_TYPE='D'
LEFT JOIN TR_PO_PAYMENT PM ON A.PAY_PHASE = PM.PAY_ID AND A.REQ_TYPE='P'
LEFT JOIN CM_DVDM DV ON A.DVDM_ID = DV.DVDM_ID
--LEFT JOIN PL_PROCESS PR ON A.PROCESS = PR.PROCESS_ID AND A.REQ_PAY_ID = PR.REQ_ID
LEFT JOIN
(
SELECT MAX(PR.PROCESS_ID) AS PROCESS_ID , MAX(PR.REQ_ID) AS REQ_ID, MAX(PR.PROCESS_DESC) AS PROCESS_DESC, MAX(APPROVE_DT) AS APP_DT FROM PL_PROCESS PR
GROUP BY PR.PROCESS_ID, PR.REQ_ID
) AS PR ON A.PROCESS = PR.PROCESS_ID AND A.REQ_PAY_ID = PR.REQ_ID
--LEFT JOIN PL_REQUEST_PROCESS PC ON PC.REQ_ID= A.REQ_PAY_ID AND PC.ROLE_USER = @ROLE_ID AND PC.STATUS='C'
LEFT JOIN PL_REQUEST_PROCESS PC1 ON PC1.REQ_ID= A.REQ_PAY_ID AND PC1.STATUS='C'
LEFT JOIN PL_REQUEST_PROCESS_CHILD PC3 ON PC3.REQ_ID = A.REQ_PAY_ID AND PC3.STATUS_JOB ='C'
LEFT JOIN PL_REQUEST_PROCESS_CHILD PC4 ON PC4.REQ_ID = A.REQ_PAY_ID AND PC4.STATUS_JOB ='C'
LEFT JOIN TL_USER TL8 ON A.RECIVER_MONEY = TL8.TLNANME
LEFT JOIN TL_SYSROLE SR ON TL.RoleName = SR.ROLE_ID
WHERE 1=1
AND(A.REQ_PAY_ID =@p_REQ_PAY_ID OR @p_REQ_PAY_ID='' OR @p_REQ_PAY_ID IS NULL)
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Creating [dbo].[TR_REQ_ADVANCE_PAYMENT_Appr]'
GO
CREATE PROCEDURE [dbo].[TR_REQ_ADVANCE_PAYMENT_Appr]
--Luanlt 2019/17/10 - Sửa params
@p_REQ_PAY_ID varchar(15)= NULL,
@p_CHECKER_ID varchar(15) = NULL,
@p_AUTH_STATUS varchar(15) = NULL,
@p_COST_ID VARCHAR(15) = NULL
AS
BEGIN TRANSACTION
-- KHAI BAO THEM ROLE NHAN UY QUYEN
DECLARE @TABLE_ROLE TABLE (ROLE_AUTH VARCHAR(50))
INSERT INTO @TABLE_ROLE SELECT (SELECT ROLENAME FROM TL_USER WHERE TLNANME =@p_CHECKER_ID)
INSERT INTO @TABLE_ROLE SELECT ROLE_NEW FROM TL_SYS_ROLE_MAPPING WHERE ROLE_OLD =(SELECT ROLENAME FROM TL_USER WHERE TLNANME =@p_CHECKER_ID)
AND (CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) OR EFF_DATE IS NULL)
AND (CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103) OR EXP_DATE IS NULL)
AND TLNAME =@p_CHECKER_ID
-- KHAI BAO NHUNG PHONG BAN MA 1 USER KIEM NHIEM
DECLARE @DEP_AUTH TABLE (DEP_AUTH VARCHAR(15))
INSERT INTO @DEP_AUTH SELECT DEP_ID FROM TL_SYS_ROLE_MAPPING WHERE TLNAME =@p_CHECKER_ID
--AND CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) AND CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103)
AND (CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) OR EFF_DATE IS NULL)
AND (CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103) OR EXP_DATE IS NULL)
DECLARE @BRANCH_CREATE VARCHAR(15), @p_DEP_ID VARCHAR(15)
--PRINT @BRANCH_CREATE
SET @BRANCH_CREATE =(SELECT BRANCH_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
DECLARE @DEP_CODE_NEXT VARCHAR(15)
IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@BRANCH_CREATE)<>'HS')
BEGIN
SET @p_DEP_ID =(SELECT TOP 1 DEP_ID FROM CM_DEPARTMENT WHERE LEFT(DEP_CODE,5) IN (SELECT TOP 1 LEFT(DVDM_CODE,5) FROM CM_DVDM WHERE DVDM_ID =@p_COST_ID))
SET @DEP_CODE_NEXT = (SELECT DEP_CODE FROM CM_DEPARTMENT WHERE DEP_ID =@p_DEP_ID)
--PRINT @DEP_CODE_NEXT
END
ELSE
BEGIN
SET @p_DEP_ID =(SELECT DEP_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID=@p_REQ_PAY_ID)
SET @DEP_CODE_NEXT = (SELECT DEP_CODE FROM CM_DEPARTMENT WHERE DEP_ID =@p_DEP_ID)
END
IF EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE MAKER_ID =@p_CHECKER_ID AND REQ_PAY_ID =@p_REQ_PAY_ID)
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID, N'Người phê duyệt phiếu phải khác với người tạo phiếu! Bạn không được phép duyệt đối tượng này' ErrorDesc
RETURN '-1'
END
-- KIEM TRA NEU DANG TRA VE THI PHAI CHO CAP NHAT LAI THONG TIN MOI DUOC PHEP DUYET
IF EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS ='R' AND REQ_PAY_ID =@p_REQ_PAY_ID)
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng đang được trả về bộ phận yêu cầu. Vui lòng cập nhật lại thông tin trước khi duyệt' ErrorDesc
RETURN '-1'
END
-- KIEM TRA NEU DANG TRA VE THI PHAI CHO CAP NHAT LAI THONG TIN MOI DUOC PHEP DUYET
IF EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT ='R' AND REQ_PAY_ID =@p_REQ_PAY_ID)
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng đang được trả về bộ phận yêu cầu. Vui lòng cập nhật lại thông tin trước khi duyệt' ErrorDesc
RETURN '-1'
END
-- KIEM TRA NEU DANG TRA VE THI PHAI CHO CAP NHAT LAI THONG TIN MOI DUOC PHEP DUYET
IF EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT ='A' AND REQ_PAY_ID =@p_REQ_PAY_ID)
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng đã được KSV phê duyệt trước đó' ErrorDesc
RETURN '-1'
END
IF EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS ='A' AND REQ_PAY_ID =@p_REQ_PAY_ID)
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng đã được phê duyệt trước đó' ErrorDesc
RETURN '-1'
END
--- KHAI BAO CHUUNG
DECLARE @ROLE_ID VARCHAR(200), @BRANCH_TYPE VARCHAR(15), @TOTAL_ADVANCE DECIMAL(18,0), @TOTAL_PAYBACK DECIMAL(18,0), @BRANCH_ID VARCHAR(15),
@DEP_ID VARCHAR(15), @COSTCENTER_ID VARCHAR(15)= NULL, @BRANCH_RQ VARCHAR(15) = NULL,@DEP_ID_RQ VARCHAR(15), @BRANCH_LOGIN VARCHAR(15),@LIMIT_ONE_OF DECIMAL(18,2)
DECLARE @LIMIT_AMT DECIMAL(18,0), @REQ_AMT DECIMAL(18,2) =0, @TONG_PGD DECIMAL(18,0), @TONG_PGD_HOAN DECIMAL(18,0)
SET @REQ_AMT = (SELECT REQ_AMT *ISNULL(RATE,1) FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
--SET @ROLE_ID = (SELECT ROLENAME FROM TL_USER WHERE TLNANME=@p_CHECKER_ID)
SET @ROLE_ID = (SELECT ROLENAME FROM TL_USER WHERE TLNANME=@p_CHECKER_ID)
--SET @ROLE_ID =(SELECT TOP 1 RoleName FROM TL_USER WHERE TLNANME =@p_USER_LOGIN)
IF(@ROLE_ID IS NOT NULL AND @ROLE_ID <>'' AND @ROLE_ID IN ('TPGD','GDDV','PGD','PTGD','TGD','HDQT','TP','PP','TBP','KTT','GDK','KSV','TC','NVTC','TPTC'))
BEGIN
PRINT @ROLE_ID
END
ELSE
BEGIN
SET @ROLE_ID =(SELECT TOP 1 RoleName FROM TL_USER_V2 WHERE TLNANME =@p_CHECKER_ID)
IF(@ROLE_ID IS NULL OR @ROLE_ID ='')
BEGIN
SET @ROLE_ID =(SELECT TOP 1 ROLE_NEW FROM TL_SYS_ROLE_MAPPING WHERE ROLE_OLD =(SELECT TOP 1 ROLENAME FROM TL_USER WHERE TLNANME=@p_CHECKER_ID))
END
END
SET @BRANCH_ID = (SELECT TLSUBBRID FROM TL_USER WHERE TLNANME =@p_CHECKER_ID)
SET @BRANCH_RQ =(SELECT BRANCH_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
SET @DEP_ID_RQ =(SELECT DEP_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@BRANCH_RQ)
DECLARE @tmp table(BRANCH_ID varchar(15))
INSERT into @tmp SELECT BRANCH_ID FROM [dbo].[CM_BRANCH_GETCHILDID](@BRANCH_ID)
DECLARE @tmp_CN table(BRANCH_ID varchar(15))
IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@BRANCH_RQ)='CN')
BEGIN
--INSERT into @tmp_CN SELECT BRANCH_ID FROM [dbo].[CM_BRANCH_GETCHILDID](@BRANCH_RQ)
INSERT into @tmp_CN VALUES (@BRANCH_RQ)
END
ELSE IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@BRANCH_RQ)='PGD')
BEGIN
--DECLARE @FATHER_ID VARCHAR(15) = NULL
--SET @FATHER_ID =(SELECT FATHER_ID FROM CM_BRANCH WHERE BRANCH_ID =@BRANCH_RQ)
--INSERT into @tmp_CN SELECT BRANCH_ID FROM [dbo].[CM_BRANCH_GETCHILDID](@FATHER_ID)
INSERT into @tmp_CN VALUES (@BRANCH_RQ)
END
--DECLARE @DEP_ID_LG VARCHAR(15) = NULL
--SET @DEP_ID_LG =(SELECT SECUR_CODE FROM TL_USER WHERE TLNANME=@p_CHECKER_ID)
DECLARE @TMP_DVDM TABLE(DVDM_ID VARCHAR(15))
INSERT INTO @TMP_DVDM
SELECT A.DVDM_ID--, A.COST_CODE, A.COST_NAME, B.DEP_ID --, C.DEP_CODE, C.DEP_NAME
FROM PL_COSTCENTER A
LEFT JOIN PL_COSTCENTER_DT B ON A.COST_ID = B.COST_ID
WHERE B.DEP_ID = @DEP_ID_RQ
GROUP BY A.DVDM_ID
-- KHAI BAO BRANCH CUA USER DUYET
SET @BRANCH_LOGIN = (SELECT TLSUBBRID FROM TL_USER WHERE TLNANME =@p_CHECKER_ID)
DECLARE @LIMIT_REMAIN DECIMAL(18,0)
--CAP NHAT CODE TRONG QUA TRINH TEST UAT
INSERT INTO @TABLE_ROLE SELECT @ROLE_ID
IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND REQ_TYPE='I'))
BEGIN
IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@BRANCH_CREATE) ='HS')
BEGIN
IF(EXISTS(SELECT * FROM @TABLE_ROLE WHERE ISNULL(ROLE_AUTH,'') IN ('GDDV','TP') AND (SELECT ISNULL(PROCESS,'') FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID) =''))
BEGIN
UPDATE TR_REQ_ADVANCE_PAYMENT SET PROCESS='0' WHERE REQ_PAY_ID =@p_REQ_PAY_ID
INSERT INTO PL_PROCESS VALUES (@p_REQ_PAY_ID,'0',@p_CHECKER_ID, GETDATE(),N'Trưởng đơn vị xác nhận phiếu',N'Xác nhận phiếu tạm ứng')
COMMIT TRANSACTION
SELECT '1' as Result, @p_REQ_PAY_ID REQ_PAY_ID ,N'' ErrorDesc
RETURN '1'
END
END
IF NOT EXISTS (SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_PAY_ID AND ROLE_USER IN (SELECT * FROM @TABLE_ROLE) AND STATUS = 'C')
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng đã được bạn phê duyệt xong trước đó! Vui lòng đợi cấp tiếp theo phê duyệt tạm ứng' ErrorDesc
RETURN '-1'
END
IF(NOT EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE ROLE_USER IN (SELECT * FROM @TABLE_ROLE) AND REQ_ID = @p_REQ_PAY_ID))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID, N'Bạn không có quyền phê duyệt phiếu tạm ứng nội bộ. Vui lòng chọn giao dịch khác để duyệt' ErrorDesc
RETURN '-1'
END
--IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE ROLE_USER=@ROLE_ID AND REQ_ID = @p_REQ_PAY_ID AND BRANCH_ID= @BRANCH_ID AND STATUS ='P'))
--BEGIN
-- ROLLBACK TRANSACTION
-- SELECT '-1' as Result, '' REQ_PAY_ID, N'Bạn đã thực hiện xác nhận phiếu tạm ứng trước đó' ErrorDesc
-- RETURN '-1'
--END
-- KIEM TRA AUTH_STATUS TRUYEN XUONG LA GI, A: DUYET, C: CONFIRM
IF(@p_AUTH_STATUS='U') -- KIEM TRA HAN MUC CON LAI CUA USER VA THONG BAO CHO NGUOI DUYET
BEGIN
-- KIEM TRA NEU ROLE CHUA CO HAN MUC PHE DUYET THI PHAI THONG BAO
IF(NOT EXISTS(SELECT * FROM TL_SYSROLE_LIMIT WHERE ROLE_ID =@ROLE_ID AND LIMIT_TYPE ='ADV_PAY' AND BRANCH_ID =@BRANCH_LOGIN))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID, N'Bạn chưa được cấu hình hạn mức phê duyệt tạm ứng nội bộ. Vui lòng thông báo Admin cấu hình hạn mức phê duyệt' ErrorDesc
RETURN '-1'
END
-- BAT DAU DUYET THEO NGAN SACH
--- LAY HAN MUC CUA USER
SET @LIMIT_AMT =(SELECT LIMIT_VALUE FROM TL_SYSROLE_LIMIT WHERE ROLE_ID=@ROLE_ID AND LIMIT_TYPE='ADV_PAY' AND BRANCH_ID =@BRANCH_LOGIN)
print @LIMIT_AMT
--
SET @LIMIT_ONE_OF =(SELECT LIMIT_PERCENT FROM TL_SYSROLE_LIMIT WHERE ROLE_ID=@ROLE_ID AND LIMIT_TYPE='ADV_PAY' AND BRANCH_ID =@BRANCH_LOGIN)
IF(@ROLE_ID ='GDK' AND ((SELECT SECUR_CODE FROM TL_USER WHERE TLNANME =@p_CHECKER_ID) ='DEP000000000011'))
BEGIN
SET @LIMIT_AMT =1000000000
END
IF(@ROLE_ID ='PTGD' AND ((SELECT SECUR_CODE FROM TL_USER WHERE TLNANME =@p_CHECKER_ID) ='DEP000000000011'))
BEGIN
SET @LIMIT_AMT =3000000000
END
-- NEU LA HOI SO THI LAY TONG SO TIEN TAM UNG CUA CAC PHONG BAN CHUNG VOI KHOI CUA PHIEU DANG DUOC DUYET
SET @TONG_PGD =(SELECT SUM(REQ_AMT*ISNULL(RATE,1)) FROM TR_REQ_ADVANCE_PAYMENT WHERE BRANCH_ID = @BRANCH_RQ
AND REQ_TYPE ='I' AND AUTH_STATUS ='A') + @REQ_AMT
SET @TONG_PGD_HOAN =(
--SELECT (SUM(B.AMT_USE) - SUM(B.AMT_ADD) + SUM (B.AMT_REVERT))
--FROM TR_REQ_PAYMENT_DT B
--INNER JOIN TR_REQ_PAYMENT A ON B.PAY_ID = A.REQ_PAY_ID
--INNER JOIN TR_REQ_ADVANCE_PAYMENT C ON C.REQ_PAY_ID = B.PAY_ADV_ID
SELECT SUM (ISNULL(A.PAY_AMT,0)) FROM TR_REQ_ADVANCE_PAYMENT A
WHERE A.BRANCH_ID = @BRANCH_RQ
AND A.AUTH_STATUS_KT ='A' AND A.REQ_TYPE='I')
IF(@BRANCH_TYPE='HS')
BEGIN
SET @TOTAL_ADVANCE =ISNULL((SELECT SUM(REQ_AMT*ISNULL(RATE,1)) FROM TR_REQ_ADVANCE_PAYMENT WHERE
DEP_ID IN
(SELECT A.DEP_ID FROM PL_COSTCENTER_DT A
LEFT JOIN PL_COSTCENTER B ON A.COST_ID = B.COST_ID
WHERE B.DVDM_ID IN (SELECT DVDM_ID FROM @TMP_DVDM) AND A.BRANCH_ID =@BRANCH_RQ)
AND REQ_TYPE ='I' AND AUTH_STATUS ='A'),0)
SET @TOTAL_PAYBACK =
ISNULL(
(
SELECT (SUM(ISNULL(C.PAY_AMT,0)))
FROM TR_REQ_ADVANCE_PAYMENT C
WHERE C.DEP_ID IN
(SELECT A.DEP_ID FROM PL_COSTCENTER_DT A
LEFT JOIN PL_COSTCENTER B ON A.COST_ID = B.COST_ID
WHERE B.DVDM_ID IN (SELECT DVDM_ID FROM @TMP_DVDM) AND A.BRANCH_ID =@BRANCH_RQ)
AND C.AUTH_STATUS_KT ='A' AND C.REQ_TYPE='I'
),0)
END
-- NEU PHIEU DUOC TAO KHAC VOI HOI SO THI TIEN HANH TINH TONG SO TIEN TAM UNG CUA CN VA PHONG GIAO DICH TRUC THUOC
ELSE IF(@BRANCH_TYPE <>'HS')
BEGIN
SET @TOTAL_ADVANCE =(SELECT SUM(REQ_AMT*ISNULL(RATE,1)) FROM TR_REQ_ADVANCE_PAYMENT WHERE BRANCH_ID IN (SELECT BRANCH_ID FROM @tmp_CN)
AND REQ_TYPE ='I' AND AUTH_STATUS='A')
SET @TOTAL_PAYBACK =
(
SELECT (SUM(ISNULL(B.PAY_AMT,0)))
FROM TR_REQ_ADVANCE_PAYMENT B
WHERE B.BRANCH_ID IN
(SELECT BRANCH_ID FROM @tmp_CN)
AND B.AUTH_STATUS_KT ='A' AND B.REQ_TYPE='I'
)
END
SET @LIMIT_REMAIN =ISNULL(@TOTAL_ADVANCE,0) - ISNULL(@TOTAL_PAYBACK,0)
-- KIEM TRA NEU LA CHU TICH HDQT THI PHE DUYET LUON, KHONG CAN XET HAN MUC GI
IF(EXISTS(SELECT * FROM TL_USER WHERE TLNANME=@p_CHECKER_ID AND RoleName ='HDQT'))
BEGIN
ROLLBACK TRANSACTION
SELECT '-4' as Result, @p_REQ_PAY_ID REQ_PAY_ID,
--N'Tổng hạn mức phê duyệt của bạn là: '+FORMAT(@LIMIT_AMT,'#,#', 'vi-VN')
--+ CHAR(10) +
--N'Hạn mức trên một lần phê duyệt là: '+ FORMAT(@LIMIT_ONE_OF,'#,#', 'vi-VN')
--+ CHAR(10) + CHAR(13) +
N'Số dư tạm ứng lũy kế của đơn vị tính tới thời điểm này là : '+ FORMAT(@LIMIT_REMAIN+@REQ_AMT,'#,#', 'vi-VN')
+ CHAR(10) +
N'Bạn có muốn tiếp tục duyệt hay không' ErrorDesc
RETURN '-4'
END
IF(@LIMIT_AMT <(SELECT REQ_AMT * ISNULL(RATE,1) FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID) + @LIMIT_REMAIN)
BEGIN
ROLLBACK TRANSACTION
SELECT '-2' as Result, @p_REQ_PAY_ID REQ_PAY_ID,
N'Tổng hạn mức phê duyệt là: '+ FORMAT(@LIMIT_AMT,'#,#', 'vi-VN') + CHAR(10)+
N'Hạn mức trên một lần phê duyệt là: '+ FORMAT(@LIMIT_ONE_OF,'#,#', 'vi-VN')
+ CHAR(10) + CHAR(13)+
N'Số dư tạm ứng lũy kế của đơn vị tính tới thời điểm này là : '+ FORMAT(@LIMIT_REMAIN +@REQ_AMT ,'#,#', 'vi-VN')
+ CHAR(10) +
N'Số tiền tạm ứng đã vượt mức phê duyệt là: '+ FORMAT((@LIMIT_REMAIN +@REQ_AMT) -@LIMIT_AMT,'#,#', 'vi-VN')
+ CHAR(10) +
N'Bạn muốn chuyển giao dịch lên cấp cao hơn để duyệt hay tiếp tục chờ duyệt' ErrorDesc
RETURN '-2'
END
--- NEU DU HAN MUC THI THONG BAO DE NGUOI DUYET CAN NHAC CO NEN DUYET PHIEU HAY KHONG
IF(@LIMIT_AMT >=(SELECT REQ_AMT * ISNULL(RATE,1) FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID) +@LIMIT_REMAIN)
BEGIN
IF(@REQ_AMT >@LIMIT_ONE_OF)
BEGIN
ROLLBACK TRANSACTION
SELECT '-2' as Result, @p_REQ_PAY_ID REQ_PAY_ID,
N'Tổng hạn mức phê duyệt là: '+ FORMAT(@LIMIT_AMT,'#,#', 'vi-VN')
+ CHAR(10)+
N'Hạn mức trên một lần phê duyệt là: '+ FORMAT(@LIMIT_ONE_OF,'#,#', 'vi-VN')
+ CHAR(10) + CHAR(13) +
N'Số dư tạm ứng lũy kế của đơn vị tính tới thời điểm này là : '+ FORMAT(@LIMIT_REMAIN +@REQ_AMT ,'#,#', 'vi-VN')
+ CHAR(10) +
N'Số tiền tạm ứng đã vượt mức so với số tiền của một lần phê duyệt là: '+ FORMAT(@LIMIT_ONE_OF,'#,#', 'vi-VN')
+ CHAR(10) +
N'Bạn muốn chuyển giao dịch lên cấp cao hơn để duyệt hay tiếp tục chờ duyệt' ErrorDesc
RETURN '-2'
END
ELSE
BEGIN
-- KIEM TRA NEU LA PGD THI CANH BAO
IF(@BRANCH_TYPE ='HS')
BEGIN
IF(EXISTS(SELECT * FROM TL_USER WHERE TLNANME=@p_CHECKER_ID AND RoleName NOT IN('TGD','HQDT')))
BEGIN
ROLLBACK TRANSACTION
SELECT '-4' as Result, @p_REQ_PAY_ID REQ_PAY_ID,
N'Tổng hạn mức phê duyệt của bạn là: '+FORMAT(@LIMIT_AMT,'#,#', 'vi-VN')
+ CHAR(10) + CHAR(13) +
N'Hạn mức trên một lần phê duyệt là: '+ FORMAT(@LIMIT_ONE_OF,'#,#', 'vi-VN')
+ CHAR(10) +
N'Số dư tạm ứng lũy kế của đơn vị tính tới thời điểm này là : '+ FORMAT(@LIMIT_REMAIN+@REQ_AMT,'#,#', 'vi-VN')
+ CHAR(10) +
N'Bạn có muốn tiếp tục duyệt hay không' ErrorDesc
RETURN '-4'
END
ELSE
BEGIN
ROLLBACK TRANSACTION
SELECT '-4' as Result, @p_REQ_PAY_ID REQ_PAY_ID,
--N'Tổng hạn mức phê duyệt của bạn là: '+FORMAT(@LIMIT_AMT,'#,#', 'vi-VN')
--+ CHAR(10) + CHAR(13) +
--N'Hạn mức trên một lần phê duyệt là: '+ FORMAT(@LIMIT_ONE_OF,'#,#', 'vi-VN')
--+ CHAR(10) +
N'Số dư tạm ứng lũy kế của đơn vị tính tới thời điểm này là : '+ FORMAT(@LIMIT_REMAIN+@REQ_AMT,'#,#', 'vi-VN')
+ CHAR(10) +
N'Bạn có muốn tiếp tục duyệt hay không' ErrorDesc
RETURN '-4'
END
END
ELSE IF(@BRANCH_TYPE ='CN')
BEGIN
IF(ISNULL(@TONG_PGD,0) -ISNULL(@TONG_PGD_HOAN,0) > 40000000)
BEGIN
ROLLBACK TRANSACTION
SELECT '-4' as Result, @p_REQ_PAY_ID REQ_PAY_ID,
N'Tổng hạn mức phê duyệt của bạn là: '+FORMAT(@LIMIT_AMT,'#,#', 'vi-VN')
+ CHAR(10) +
N'Hạn mức trên một lần phê duyệt là: '+ FORMAT(@LIMIT_ONE_OF,'#,#', 'vi-VN')
+ CHAR(10) + CHAR(13) +
N'Số dư tạm ứng lũy kế của đơn vị tính tới thời điểm này là : '+ FORMAT(@LIMIT_REMAIN+@REQ_AMT,'#,#', 'vi-VN')
+ CHAR(10) +
N'Số tiền tạm ứng đang vượt quá số tổng hạn mức tạm ứng của 1 CN: '+ FORMAT(40000000,'#,#', 'vi-VN') +N'. Số tiền vượt là: '+ FORMAT(ISNULL(@TONG_PGD,0) -ISNULL(@TONG_PGD_HOAN,0)-40000000,'#,#', 'vi-VN')
+ CHAR(10) +
N'Bạn có muốn tiếp tục duyệt hay không' ErrorDesc
RETURN '-4'
END
ELSE
BEGIN
IF(EXISTS(SELECT * FROM TL_USER WHERE TLNANME=@p_CHECKER_ID AND RoleName NOT IN('TGD','HQDT')))
BEGIN
ROLLBACK TRANSACTION
SELECT '-4' as Result, @p_REQ_PAY_ID REQ_PAY_ID,
N'Tổng hạn mức phê duyệt của bạn là: '+FORMAT(@LIMIT_AMT,'#,#', 'vi-VN')
+ CHAR(10) +
N'Hạn mức trên một lần phê duyệt là: '+ FORMAT(@LIMIT_ONE_OF,'#,#', 'vi-VN')
+ CHAR(10) + CHAR(13) +
N'Số dư tạm ứng lũy kế của đơn vị tính tới thời điểm này là : '+ FORMAT(@LIMIT_REMAIN+@REQ_AMT,'#,#', 'vi-VN')
+ CHAR(10) +
N'Bạn có muốn tiếp tục duyệt hay không' ErrorDesc
RETURN '-4'
END
ELSE
BEGIN
ROLLBACK TRANSACTION
SELECT '-4' as Result, @p_REQ_PAY_ID REQ_PAY_ID,
--N'Tổng hạn mức phê duyệt của bạn là: '+FORMAT(@LIMIT_AMT,'#,#', 'vi-VN')
--+ CHAR(10) +
--N'Hạn mức trên một lần phê duyệt là: '+ FORMAT(@LIMIT_ONE_OF,'#,#', 'vi-VN')
--+ CHAR(10) + CHAR(13) +
N'Số dư tạm ứng lũy kế của đơn vị tính tới thời điểm này là : '+ FORMAT(@LIMIT_REMAIN+@REQ_AMT,'#,#', 'vi-VN')
+ CHAR(10) +
N'Bạn có muốn tiếp tục duyệt hay không' ErrorDesc
RETURN '-4'
END
END
END
ELSE IF(@BRANCH_TYPE ='PGD')
BEGIN
IF(ISNULL(@TONG_PGD,0) -ISNULL(@TONG_PGD_HOAN,0) > 10000000)
BEGIN
ROLLBACK TRANSACTION
SELECT '-4' as Result, @p_REQ_PAY_ID REQ_PAY_ID,
N'Tổng hạn mức phê duyệt của bạn là: '+FORMAT(@LIMIT_AMT,'#,#', 'vi-VN')+ CHAR(10) +
N'Hạn mức trên một lần phê duyệt là: '+ FORMAT(@LIMIT_ONE_OF,'#,#', 'vi-VN')
+ CHAR(10) + CHAR(13) +
N'Số dư tạm ứng lũy kế của đơn vị tính tới thời điểm này là : '+ FORMAT(@LIMIT_REMAIN+@REQ_AMT,'#,#', 'vi-VN')
+ CHAR(10) +
N'Số tiền tạm ứng đang vượt quá số tổng hạn mức tạm ứng của 1 PGD: '+ FORMAT(10000000,'#,#', 'vi-VN') +N'. Số tiền vượt là: '+ FORMAT(ISNULL(@TONG_PGD,0) -ISNULL(@TONG_PGD_HOAN,0)-10000000,'#,#', 'vi-VN')
+ CHAR(10) +
N'Bạn có muốn tiếp tục duyệt hay không' ErrorDesc
RETURN '-4'
END
ELSE
BEGIN
ROLLBACK TRANSACTION
SELECT '-4' as Result, @p_REQ_PAY_ID REQ_PAY_ID,
N'Tổng hạn mức phê duyệt của bạn là: '+FORMAT(@LIMIT_AMT,'#,#', 'vi-VN')
+ CHAR(10) +
N'Hạn mức trên một lần phê duyệt là: '+ FORMAT(@LIMIT_ONE_OF,'#,#', 'vi-VN')
+ CHAR(10) + CHAR(13) +
N'Số dư tạm ứng lũy kế của đơn vị tính tới thời điểm này là : '+ FORMAT(@LIMIT_REMAIN+@REQ_AMT,'#,#', 'vi-VN')
+ CHAR(10) +
N'Bạn có muốn tiếp tục duyệt hay không' ErrorDesc
RETURN '-4'
END
END
END
END
-- NEU THOA MAN CAC DIEU KIEN SE TIEN HANH DUYET
END -- END DU HAN MUC DUYET
ELSE IF(@p_AUTH_STATUS='A')
BEGIN
UPDATE TR_REQ_ADVANCE_PAYMENT
SET AUTH_STATUS='A', CHECKER_ID = @p_CHECKER_ID, APPROVE_DT = GETDATE(), AUTH_STATUS_KT='U'
WHERE REQ_PAY_ID = @p_REQ_PAY_ID
--- CAP NHAT LAI TINH TRANG TRONG REQUEST_PROCESS
DECLARE @PROCESS_CURR VARCHAR(5)
SET @PROCESS_CURR =(SELECT PROCESS_ID FROM PL_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_PAY_ID AND ROLE_USER =@ROLE_ID)
INSERT INTO PL_PROCESS VALUES (@p_REQ_PAY_ID,@PROCESS_CURR,@p_CHECKER_ID, GETDATE(),(SELECT ROLE_DESC + N' duyệt' FROM TL_SYSROLE WHERE ROLE_ID = @ROLE_ID),N'Các cấp phê duyệt theo hạn mức')
--- CAP NHAT PROCESS CUA PHIEU DE NGHI TAM UNG LA DA DUYET
UPDATE TR_REQ_ADVANCE_PAYMENT SET PROCESS=@PROCESS_CURR WHERE REQ_PAY_ID=@p_REQ_PAY_ID
--
UPDATE PL_REQUEST_PROCESS SET STATUS ='A', NOTES = (SELECT ROLE_DESC + N' duyệt' FROM TL_SYSROLE WHERE ROLE_ID = @ROLE_ID) WHERE ROLE_USER =@ROLE_ID AND REQ_ID = @p_REQ_PAY_ID
DECLARE @l_REQ_AMT DECIMAL(18,0) = (SELECT REQ_AMT*ISNULL(RATE,1) FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID=@p_REQ_PAY_ID)
SET @LIMIT_AMT =(SELECT LIMIT_VALUE FROM TL_SYSROLE_LIMIT WHERE ROLE_ID=@ROLE_ID AND LIMIT_TYPE='ADV_PAY' AND BRANCH_ID =@BRANCH_LOGIN)
--
SET @LIMIT_ONE_OF =(SELECT LIMIT_PERCENT FROM TL_SYSROLE_LIMIT WHERE ROLE_ID=@ROLE_ID AND LIMIT_TYPE='ADV_PAY' AND BRANCH_ID =@BRANCH_LOGIN)
IF(@ROLE_ID ='GDK' AND ((SELECT SECUR_CODE FROM TL_USER WHERE TLNANME =@p_CHECKER_ID) ='DEP000000000011'))
BEGIN
SET @LIMIT_AMT =1000000000
END
IF(@ROLE_ID ='PTGD' AND ((SELECT SECUR_CODE FROM TL_USER WHERE TLNANME =@p_CHECKER_ID) ='DEP000000000011'))
BEGIN
SET @LIMIT_AMT =3000000000
END
-- NEU LA HOI SO THI LAY TONG SO TIEN TAM UNG CUA CAC PHONG BAN CHUNG VOI KHOI CUA PHIEU DANG DUOC DUYET
SET @TONG_PGD =(SELECT SUM(REQ_AMT*ISNULL(RATE,1)) FROM TR_REQ_ADVANCE_PAYMENT WHERE BRANCH_ID = @BRANCH_RQ
AND REQ_TYPE ='I' AND AUTH_STATUS ='A') + @REQ_AMT
SET @TONG_PGD_HOAN =(
--SELECT (SUM(B.AMT_USE) - SUM(B.AMT_ADD) + SUM (B.AMT_REVERT))
--FROM TR_REQ_PAYMENT_DT B
--INNER JOIN TR_REQ_PAYMENT A ON B.PAY_ID = A.REQ_PAY_ID
--INNER JOIN TR_REQ_ADVANCE_PAYMENT C ON C.REQ_PAY_ID = B.PAY_ADV_ID
SELECT SUM (ISNULL(A.PAY_AMT,0)) FROM TR_REQ_ADVANCE_PAYMENT A
WHERE A.BRANCH_ID = @BRANCH_RQ
AND A.AUTH_STATUS_KT ='A' AND A.REQ_TYPE='I')
IF(@BRANCH_TYPE='HS')
BEGIN
SET @TOTAL_ADVANCE =ISNULL((SELECT SUM(REQ_AMT*ISNULL(RATE,1)) FROM TR_REQ_ADVANCE_PAYMENT WHERE
DEP_ID IN
(SELECT A.DEP_ID FROM PL_COSTCENTER_DT A
LEFT JOIN PL_COSTCENTER B ON A.COST_ID = B.COST_ID
WHERE B.DVDM_ID IN (SELECT DVDM_ID FROM @TMP_DVDM) AND A.BRANCH_ID =@BRANCH_RQ)
AND REQ_TYPE ='I' AND AUTH_STATUS ='A'),0)
SET @TOTAL_PAYBACK =
ISNULL(
(
SELECT (SUM(ISNULL(C.PAY_AMT,0)))
FROM TR_REQ_ADVANCE_PAYMENT C
WHERE C.DEP_ID IN
(SELECT A.DEP_ID FROM PL_COSTCENTER_DT A
LEFT JOIN PL_COSTCENTER B ON A.COST_ID = B.COST_ID
WHERE B.DVDM_ID IN (SELECT DVDM_ID FROM @TMP_DVDM) AND A.BRANCH_ID =@BRANCH_ID)
AND C.AUTH_STATUS_KT ='A' AND C.REQ_TYPE='I'
),0)
END
-- NEU PHIEU DUOC TAO KHAC VOI HOI SO THI TIEN HANH TINH TONG SO TIEN TAM UNG CUA CN VA PHONG GIAO DICH TRUC THUOC
ELSE IF(@BRANCH_TYPE <>'HS')
BEGIN
SET @TOTAL_ADVANCE =(SELECT SUM(REQ_AMT*ISNULL(RATE,1)) FROM TR_REQ_ADVANCE_PAYMENT WHERE BRANCH_ID IN (SELECT BRANCH_ID FROM @tmp_CN)
AND REQ_TYPE ='I' AND AUTH_STATUS='A')
SET @TOTAL_PAYBACK =
(
SELECT (SUM(ISNULL(B.PAY_AMT,0)))
FROM TR_REQ_ADVANCE_PAYMENT B
WHERE B.BRANCH_ID IN
(SELECT BRANCH_ID FROM @tmp_CN)
AND B.AUTH_STATUS_KT ='A' AND B.REQ_TYPE='I'
)
END
SET @LIMIT_REMAIN =ISNULL(@TOTAL_ADVANCE,0) - ISNULL(@TOTAL_PAYBACK,0)
--- INSERT VAO BANG LOG
INSERT INTO TR_REQ_ADVANCE_LIMIT_LOG VALUES (@p_REQ_PAY_ID,@LIMIT_REMAIN,GETDATE())
----
END
--ELSE IF (@p_AUTH_STATUS='T')
--BEGIN
---- NEU AUTH_STATUS = T LA THU KI TGD / HDQT
-- IF( @ROLE_ID ='TKTGD')
-- BEGIN
-- UPDATE PL_REQUEST_PROCESS SET STATUS ='C' WHERE ROLE_USER ='TGD' AND REQ_ID =@p_REQ_PAY_ID
-- UPDATE PL_REQUEST_PROCESS SET STATUS ='P' WHERE ROLE_USER ='TKTGD' AND REQ_ID =@p_REQ_PAY_ID
-- INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
-- VALUES(@p_REQ_PAY_ID,'TKTGD',@p_CHECKER_ID,GETDATE(), N'Thư kí văn phòng Tổng Giám Đốc đã phê duyệt',N'Thư kí văn phòng Tổng Giám Đốc phê duyệt')
-- END
-- ELSE IF( @ROLE_ID ='TKHDQT')
-- BEGIN
-- UPDATE PL_REQUEST_PROCESS SET STATUS ='C' WHERE ROLE_USER ='HDQT' AND REQ_ID =@p_REQ_PAY_ID
-- UPDATE PL_REQUEST_PROCESS SET STATUS ='P' WHERE ROLE_USER ='TKHDQT' AND REQ_ID =@p_REQ_PAY_ID
-- INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
-- VALUES(@p_REQ_PAY_ID,'TKHDQT',@p_CHECKER_ID,GETDATE(), N'Thư kí văn phòng Hội Đồng Quản Trị đã phê duyệt',N'Thư kí văn phòng Hội Đồng Quản Trị phê duyệt')
-- END
--ENDr
ELSE -- NEW KHONG DU HAN MUC THI BAT DAU XAC NHAN VA DUYET THEO HAN MUC
BEGIN
DECLARE @t_REQ_AMT DECIMAL(18,0) = (SELECT REQ_AMT*ISNULL(RATE,1) FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID=@p_REQ_PAY_ID)
--PRINT @t_REQ_AMT
--- NEU GIAM DOC KHOI VAN CHUA DU HAN MUC THI GIAM DOC KHOI XAC NHAN VÀ TIEP TUC BUOC TIEP THEO LA PHO TONG GIAM DOC
DECLARE @MAX_STEP INT, @NEXT_ROLE VARCHAR(20), @MESSAGE NVARCHAR(100), @PROCESS_ID_NEXT VARCHAR(5), @PROCESS_PARENT VARCHAR(5),
@BRANCH_ID_PROC VARCHAR(15), @NEX_ROLE_STEP VARCHAR(25), @CURRENT_PROCESS VARCHAR(15)
SET @CURRENT_PROCESS =(SELECT PROCESS_ID FROM PL_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_PAY_ID AND ROLE_USER=@ROLE_ID)
SET @NEX_ROLE_STEP = (SELECT ROLE_USER FROM PL_REQUEST_PROCESS WHERE PARENT_PROCESS_ID =@CURRENT_PROCESS AND REQ_ID = @p_REQ_PAY_ID )
--PRINT @NEX_ROLE_STEP
--SET @MAX_STEP = CONVERT(INT,(SELECT MAX(PROCESS_ID) FROM TR_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_PAY_ID))
SET @PROCESS_ID_NEXT = CONVERT(VARCHAR(5),@CURRENT_PROCESS+1)
--SET @PROCESS_PARENT = CONVERT(VARCHAR(5),@MAX_STEP)
DECLARE @TMP_ROLE TABLE (ROLE_ID VARCHAR(15), BRANCH_ID VARCHAR(15), LIMIT_VALUE DECIMAL(18,0),LIMIT_TYPE VARCHAR(15))
--IF EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06908%' AND DEP_ID =@p_DEP_ID)
IF(LEFT(@DEP_CODE_NEXT,5) ='06908' OR @DEP_CODE_NEXT ='0690605')
BEGIN
--LUCTV 29032021: KHOI TAI CHINH SE KHONG CO PTGD NUA, CHI CO GDK TAI CHINH
INSERT INTO @TMP_ROLE SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE,A.LIMIT_TYPE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001' AND A.ROLE_ID <>'PTGD'
--INSERT INTO @TMP_ROLE SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE,A.LIMIT_TYPE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001' AND A.ROLE_ID <>'GDK'
END
IF( @DEP_CODE_NEXT ='0690405')
BEGIN
--LUCTV 29032021: KHOI TAI CHINH SE KHONG CO PTGD NUA, CHI CO GDK TAI CHINH
INSERT INTO @TMP_ROLE SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE,A.LIMIT_TYPE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001' AND A.ROLE_ID <>'GDK'
--INSERT INTO @TMP_ROLE SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE,A.LIMIT_TYPE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001' AND A.ROLE_ID <>'GDK'
END
--ELSE IF EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06910%' AND DEP_ID =@p_DEP_ID)
ELSE IF(LEFT(@DEP_CODE_NEXT,5) ='06910')
BEGIN
INSERT INTO @TMP_ROLE SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE,A.LIMIT_TYPE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001' AND A.ROLE_ID <>'GDK'
END
--ELSE IF (EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06900%' AND DEP_ID =@p_DEP_ID) OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06901%' AND DEP_ID =@p_DEP_ID)
--OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06902%' AND DEP_ID =@p_DEP_ID) OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06903%' AND DEP_ID =@p_DEP_ID)
--OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06904%' AND DEP_ID =@p_DEP_ID) OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06920%' AND DEP_ID =@p_DEP_ID))
ELSE IF((LEFT(@DEP_CODE_NEXT,5) ='06900') OR (LEFT(@DEP_CODE_NEXT,5)) ='06901' OR (LEFT(@DEP_CODE_NEXT,5))='06904'
OR (LEFT(@DEP_CODE_NEXT,5))='06902' OR (LEFT(@DEP_CODE_NEXT,5))='06903' OR (LEFT(@DEP_CODE_NEXT,5))='06920')
BEGIN
INSERT INTO @TMP_ROLE SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE,A.LIMIT_TYPE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001' AND A.ROLE_ID NOT IN ('GDK','PTGD')
END
--ELSE IF (EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06907%' AND DEP_ID =@p_DEP_ID) OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06909%' AND DEP_ID =@p_DEP_ID)
--OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06911%' AND DEP_ID =@p_DEP_ID) OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06921%' AND DEP_ID =@p_DEP_ID)
--OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06922%' AND DEP_ID =@p_DEP_ID))
ELSE IF((LEFT(@DEP_CODE_NEXT,5) ='06907') OR (LEFT(@DEP_CODE_NEXT,5)) ='06909' OR (LEFT(@DEP_CODE_NEXT,5))='06911'
OR (LEFT(@DEP_CODE_NEXT,5))='06922' OR (LEFT(@DEP_CODE_NEXT,5))='06921' OR (LEFT(@DEP_CODE_NEXT,5))='06920')
BEGIN
INSERT INTO @TMP_ROLE SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE,A.LIMIT_TYPE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001' AND A.ROLE_ID <>'PTGD'
END
ELSE
BEGIN
INSERT INTO @TMP_ROLE SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE,A.LIMIT_TYPE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001'
END
SET @BRANCH_ID_PROC= (SELECT BRANCH_ID FROM @TMP_ROLE WHERE ROLE_ID=@NEXT_ROLE AND LIMIT_TYPE='ADV_PAY')
print @DEP_CODE_NEXT
print @BRANCH_ID_PROC
print @NEX_ROLE_STEP
IF(NOT EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE ROLE_USER=@NEX_ROLE_STEP AND REQ_ID= @p_REQ_PAY_ID))
BEGIN
--SET @NEXT_ROLE =(SELECT TOP 1 ROLE_ID FROM @TMP_ROLE WHERE LIMIT_VALUE >@t_REQ_AMT
SET @NEXT_ROLE =(SELECT TOP 1 ROLE_ID FROM @TMP_ROLE WHERE 1 =1
AND ROLE_ID NOT IN (SELECT ROLE_USER FROM PL_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_PAY_ID) AND LIMIT_TYPE ='ADV_PAY')
--print @NEXT_ROLE
SET @BRANCH_ID_PROC= (SELECT BRANCH_ID FROM @TMP_ROLE WHERE ROLE_ID=@NEXT_ROLE AND LIMIT_TYPE='ADV_PAY')
SET @MESSAGE = (SELECT N'Đợi '+ ROLE_DESC + N' phê duyệt' FROM TL_SYSROLE WHERE ROLE_ID = @NEXT_ROLE)
INSERT INTO PL_REQUEST_PROCESS (REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF, COST_ID, DVDM_ID, NOTES)
VALUES (@p_REQ_PAY_ID,@PROCESS_ID_NEXT,'C',@NEXT_ROLE,@BRANCH_ID_PROC,@NEXT_ROLE,GETDATE(),@PROCESS_PARENT,'Y',NULL,@p_COST_ID,@MESSAGE)
INSERT INTO PL_PROCESS VALUES (@p_REQ_PAY_ID,@CURRENT_PROCESS,@p_CHECKER_ID, GETDATE(),(SELECT ROLE_DESC + N' xác nhận' FROM TL_SYSROLE WHERE ROLE_ID = @ROLE_ID),N'Các cấp phê duyệt theo hạn mức')
END
ELSE
BEGIN
--print @NEX_ROLE_STEP
SET @NEXT_ROLE =@NEX_ROLE_STEP
UPDATE PL_REQUEST_PROCESS SET STATUS='C',DVDM_ID=@p_COST_ID WHERE ROLE_USER =@NEXT_ROLE AND REQ_ID = @p_REQ_PAY_ID
INSERT INTO PL_PROCESS VALUES (@p_REQ_PAY_ID,@CURRENT_PROCESS,@p_CHECKER_ID, GETDATE(),(SELECT ROLE_DESC + N' xác nhận' FROM TL_SYSROLE WHERE ROLE_ID = @ROLE_ID),N'Các cấp phê duyệt theo hạn mức')
END
--
IF @@Error <> 0 GOTO ABORT
-- UPDATE STATUS CUA STEP HIEN TAI
UPDATE PL_REQUEST_PROCESS SET STATUS='P',IS_LEAF ='N', NOTES = (SELECT TOP 1 ROLE_DESC + N' xác nhận' FROM TL_SYSROLE WHERE ROLE_ID =@ROLE_ID)
WHERE ROLE_USER IN(SELECT * FROM @TABLE_ROLE) AND REQ_ID = @p_REQ_PAY_ID
--INSERT VAO TR_PROCESS
UPDATE TR_REQ_ADVANCE_PAYMENT SET PROCESS =@CURRENT_PROCESS , AUTH_STATUS='U',DVDM_ID = @p_COST_ID WHERE REQ_PAY_ID =@p_REQ_PAY_ID
---
UPDATE PL_REQUEST_PROCESS SET DVDM_ID= @p_COST_ID WHERE REQ_ID =@p_REQ_PAY_ID AND ROLE_USER <>@ROLE_ID
END
END
ELSE
BEGIN
--- NEU LA TAM UNG NHA CUNG CAP THI CHECK XEM KI TAM UNG DO DA HOAN THANH HAY CHUA, NEU DA HOAN THANH THI KHONG CHO DUYET
DECLARE @PAY_ID VARCHAR(15), @SUM_OF_PAY_ID DECIMAL(18,2), @SUM_ADVANCE DECIMAL(18,2),
@AMOUNT DECIMAL(18,2),@AMT_PAY_DO DECIMAL(18,2),@SCH_ID VARCHAR(15),@AMT_ADVANCE DECIMAL(18,0)
DECLARE CUR_SH CURSOR FOR SELECT A.PAY_ID,A.AMT_PAY, A.AMT_PAY_DO,A.SCHEDULE_ID,A.AMT_ADVANCE FROM TR_REQ_PAY_SCHEDULE A WHERE A.REQ_PAY_ID= @p_REQ_PAY_ID
OPEN CUR_SH
FETCH NEXT FROM CUR_SH INTO @PAY_ID,@AMOUNT,@AMT_PAY_DO,@SCH_ID,@AMT_ADVANCE
WHILE @@FETCH_STATUS =0
BEGIN
SET @SUM_OF_PAY_ID =(SELECT SUM(AMT_PAY_DO) FROM TR_REQ_PAY_SCHEDULE WHERE PAY_ID =@PAY_ID AND AUTH_STATUS_KT='A')
SET @SUM_ADVANCE =(SELECT SUM(AMT_ADVANCE) FROM TR_REQ_PAY_SCHEDULE WHERE PAY_ID =@PAY_ID AND AUTH_STATUS_KT='A')
IF(@SUM_OF_PAY_ID +@AMT_PAY_DO >@AMOUNT)
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID, N'Số tiền tạm ứng đã vượt mức số tiền còn lại cần phải thanh toán'
RETURN '-1'
END
IF(@SUM_OF_PAY_ID+@AMT_PAY_DO+@SUM_ADVANCE < @AMOUNT)
BEGIN
UPDATE TR_REQ_PAY_SCHEDULE SET PAYMENT_STATUS ='DTU' WHERE SCHEDULE_ID=@SCH_ID
END
ELSE IF(@SUM_OF_PAY_ID+@AMT_PAY_DO+@SUM_ADVANCE = @AMOUNT)
BEGIN
UPDATE TR_REQ_PAY_SCHEDULE SET PAYMENT_STATUS ='DTT' WHERE SCHEDULE_ID=@SCH_ID
END
ELSE IF(@SUM_OF_PAY_ID=0 AND @SUM_ADVANCE =0 )
BEGIN
UPDATE TR_REQ_PAY_SCHEDULE SET PAYMENT_STATUS ='CTT' WHERE SCHEDULE_ID=@SCH_ID
END
FETCH NEXT FROM CUR_SH INTO @PAY_ID,@AMOUNT,@AMT_PAY_DO,@SCH_ID,@AMT_ADVANCE
END
CLOSE CUR_SH
DEALLOCATE CUR_SH
UPDATE TR_REQ_ADVANCE_PAYMENT SET AUTH_STATUS='A', CHECKER_ID=@p_CHECKER_ID, APPROVE_DT = GETDATE(),AUTH_STATUS_KT='U' WHERE REQ_PAY_ID =@p_REQ_PAY_ID
UPDATE PL_REQUEST_PROCESS SET [STATUS] ='A' WHERE [STATUS] ='C' AND REQ_ID =@p_REQ_PAY_ID
SET @p_AUTH_STATUS ='A'
--- INSERT 1 DONG VAO PL_PROCESS
-- INSERT VAO BANG PL_PROCESS 1 DONG TRA VE
INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
VALUES(@p_REQ_PAY_ID,'APP',@p_CHECKER_ID,GETDATE(), N'Trưởng đơn vị đã phê duyệt',N'Trưởng đơn vị phê duyệt')
END
IF @@Error <> 0 GOTO ABORT
COMMIT TRANSACTION
IF(@p_AUTH_STATUS='A')
BEGIN
SELECT '0' as Result, @p_REQ_PAY_ID REQ_PAY_ID ,N'12345' +@DEP_CODE_NEXT ErrorDesc
RETURN '0'
END
--ELSE IF(@p_AUTH_STATUS='T' AND @ROLE_ID ='TKTGD')
--BEGIN
-- SELECT '5' as Result, @p_REQ_PAY_ID REQ_PAY_ID ,N'Thư kí văn phòng Tổng Giám Đốc phê duyệt phiếu đề nghị tạm ứng số: ' +(SELECT TOP 1 REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+ N' thành công' +@DEP_CODE_NEXT ErrorDesc
-- RETURN '5'
--END
--ELSE IF(@p_AUTH_STATUS='T' AND @ROLE_ID ='TKHDQT')
--BEGIN
-- SELECT '5' as Result, @p_REQ_PAY_ID REQ_PAY_ID ,N'Thư kí văn phòng Hội Đồng Quản Trị phê duyệt phiếu đề nghị tạm ứng số: ' +(SELECT TOP 1 REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+ N' thành công' +@DEP_CODE_NEXT ErrorDesc
-- RETURN '5'
--END
ELSE
BEGIN
SELECT '1' as Result, @p_REQ_PAY_ID REQ_PAY_ID ,'' ErrorDesc
RETURN '1'
END
ABORT:
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID, '' ErrorDesc
RETURN '-1'
END
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Creating [dbo].[CM_ACCOUNT_PAY_BYID]'
GO
CREATE PROC [dbo].[CM_ACCOUNT_PAY_BYID]
@p_REF_ID VARCHAR(15) = NULL,
@p_ACC_TYPE VARCHAR(50) = NULL
AS
BEGIN
SELECT TOP 1 A.*,'' AS REF_CODE, '' AS REF_NAME
FROM CM_ACCOUNT_PAY A
WHERE A.REF_ID = @p_REF_ID
END
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Creating [dbo].[TR_REQ_ADVANCE_CUS_BYID]'
GO
CREATE PROC [dbo].[TR_REQ_ADVANCE_CUS_BYID]
@p_REQ_PAY_ID VARCHAR(15)= NULL
AS
BEGIN
SELECT A.*, B.TLNANME, C.CUSTOMER_CODE, C.CUSTOMER_NAME,C.EMAIL,C.PHONE,
C.ADDR,C.CONTACT_PERSON,C.DESCRIPTION,C.BUSINESS_TYPE, '' BUSINESS_TYPE_NAME, C.CONTACT_PERSON
FROM TR_REQ_ADVANCE_CUS A
LEFT JOIN TL_USER B ON A.EMP_ID= B.TLNANME
LEFT JOIN LS_CUSTOMER C ON A.CUST_ID = C.CUSTOMER_ID
WHERE A.REQ_PAY_ID=@p_REQ_PAY_ID
END
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Creating [dbo].[CM_ACCOUNT_PAY_Search]'
GO
CREATE PROCEDURE [dbo].[CM_ACCOUNT_PAY_Search]
@p_USER_ID VARCHAR(15) = NULL,
@p_ACC_TYPE VARCHAR(15)= NULL,
@p_ACCNO varchar(100) = NULL,
@p_ACCNAME NVARCHAR(500) = NULL,
@p_AUTH_STATUS VARCHAR(1) = NULL,
@p_MAKER_ID VARCHAR(15)= NULL,
@p_CHECKER_ID VARCHAR(15) = NULL,
@p_TOP INT = 100
AS
BEGIN -- PAGING
IF(@p_TOP IS NULL OR @p_TOP = '' OR @P_TOP = 0)
IF(@p_ACC_TYPE <> 'ET')
BEGIN
-- PAGING BEGIN
SELECT A.ID, A.ACC_NUM AS ACC_NO,A.ACC_NAME,A.ACC_TYPE,A.REF_ID,'' AS BRANCH_ID, '' AS BRANCH_CODE, '' AS BRANCH_NAME,A.MAKER_ID,A.CREATE_DT,A.EDITOR_ID,A.EDITOR_DT,A.CHECKER_ID,A.APPROVE_DT,A.AUTH_STATUS,A.TK_GL,A.TK_GL_NAME
-- SELECT END
FROM CM_ACCOUNT_PAY A
WHERE (A.ACC_NUM LIKE N'%'+@p_ACCNO+'%' OR @p_ACCNO IS NULL OR @p_ACCNO = '')
AND (A.ACC_NAME LIKE N'%'+@p_ACCNAME+'%' OR @p_ACCNAME IS NULL OR @p_ACCNAME = '')
AND (A.REF_ID = @p_USER_ID OR @p_USER_ID IS NULL OR @p_USER_ID ='')
AND (A.AUTH_STATUS =@p_AUTH_STATUS OR @p_AUTH_STATUS ='' OR @p_AUTH_STATUS IS NULL)
AND (A.CHECKER_ID =@p_CHECKER_ID OR @p_CHECKER_ID ='' OR @p_CHECKER_ID IS NULL)
-- PAGING END
END;
ELSE IF(@p_ACC_TYPE = 'ET')
BEGIN
-- PAGING BEGIN
SELECT A.ID, A.ACC_NO ,A.ACC_NAME, 'ET' AS ACC_TYPE,'' AS REF_ID , '' AS BRANCH_ID, '' AS BRANCH_CODE, '' AS BRANCH_NAME,a.MAKER_ID MAKER_ID,a.CREATE_DT AS CREATE_DT,
A.EDITOR_ID AS EDITOR_ID,A.EDITOR_DT AS EDITOR_DT,A.CHECKER_ID AS CHECKER_ID,A.APPROVE_DT AS APPROVE_DT,A.AUTH_STATUS AS AUTH_STATUS,A.TK_GL,A.TK_GL_NAME
-- SELECT END
FROM CM_ACCOUNT A
WHERE (A.ACC_NO LIKE N'%'+@p_ACCNO+'%' OR @p_ACCNO IS NULL OR @p_ACCNO = '')
AND (A.ACC_NAME LIKE N'%'+@p_ACCNAME+'%' OR @p_ACCNAME IS NULL OR @p_ACCNAME = '')
AND (A.AUTH_STATUS =@p_AUTH_STATUS OR @p_AUTH_STATUS ='' OR @p_AUTH_STATUS IS NULL)
AND (A.CHECKER_ID =@p_CHECKER_ID OR @p_CHECKER_ID ='' OR @p_CHECKER_ID IS NULL)
-- PAGING END
END;
ELSE
IF(@p_ACC_TYPE <> 'ET')
BEGIN
-- PAGING BEGIN
SELECT TOP (isnull((CONVERT(INT,@p_TOP)), 10 )) A.ID, A.ACC_NUM AS ACC_NO,A.ACC_NAME,A.ACC_TYPE,A.REF_ID,'' AS BRANCH_ID, '' AS BRANCH_CODE, '' AS BRANCH_NAME,A.MAKER_ID,A.CREATE_DT,A.EDITOR_ID,A.EDITOR_DT,A.CHECKER_ID,A.APPROVE_DT,A.AUTH_STATUS,A.TK_GL,A.TK_GL_NAME
-- SELECT END
FROM CM_ACCOUNT_PAY A
WHERE (A.ACC_NUM LIKE N'%'+@p_ACCNO+'%' OR @p_ACCNO IS NULL OR @p_ACCNO = '')
AND (A.ACC_NAME LIKE N'%'+@p_ACCNAME+'%' OR @p_ACCNAME IS NULL OR @p_ACCNAME = '')
AND (A.REF_ID = @p_USER_ID OR @p_USER_ID IS NULL OR @p_USER_ID ='')
AND (A.AUTH_STATUS =@p_AUTH_STATUS OR @p_AUTH_STATUS ='' OR @p_AUTH_STATUS IS NULL)
AND (A.CHECKER_ID =@p_CHECKER_ID OR @p_CHECKER_ID ='' OR @p_CHECKER_ID IS NULL)
-- PAGING END
END;
ELSE
BEGIN
-- PAGING BEGIN
SELECT TOP (isnull((CONVERT(INT,@p_TOP)), 100)) A.ID, A.ACC_NO ,A.ACC_NAME, 'ET' AS ACC_TYPE,'' AS REF_ID , '' AS BRANCH_ID, '' AS BRANCH_CODE, '' AS BRANCH_NAME,a.MAKER_ID MAKER_ID,a.CREATE_DT AS CREATE_DT,
A.EDITOR_ID AS EDITOR_ID,A.EDITOR_DT AS EDITOR_DT,A.CHECKER_ID AS CHECKER_ID,A.APPROVE_DT AS APPROVE_DT,A.AUTH_STATUS AS AUTH_STATUS,A.TK_GL,A.TK_GL_NAME
-- SELECT END
FROM CM_ACCOUNT A
WHERE (A.ACC_NO LIKE N'%'+@p_ACCNO+'%' OR @p_ACCNO IS NULL OR @p_ACCNO = '')
AND (A.ACC_NAME LIKE N'%'+@p_ACCNAME+'%' OR @p_ACCNAME IS NULL OR @p_ACCNAME = '')
AND (A.AUTH_STATUS =@p_AUTH_STATUS OR @p_AUTH_STATUS ='' OR @p_AUTH_STATUS IS NULL)
AND (A.CHECKER_ID =@p_CHECKER_ID OR @p_CHECKER_ID ='' OR @p_CHECKER_ID IS NULL)
-- PAGING END
END;
END -- PAGING
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Creating [dbo].[TR_REQ_ADVANCE_PAYMENT_GetCost]'
GO
CREATE PROC [dbo].[TR_REQ_ADVANCE_PAYMENT_GetCost]
@p_REF_ID VARCHAR(15) = NULL, -- CO THE LA MA NHAN VIEN, MA PO, MA CUSTOMER
@p_REQ_TYPE VARCHAR(15) = NULL,
@p_CREATE_DT VARCHAR(25)= NULL
AS
BEGIN
DECLARE @SUM_TEMP_PAY DECIMAL, @SUM_PAY DECIMAL
IF (@p_REQ_TYPE ='I')
BEGIN
SET @SUM_TEMP_PAY = (SELECT SUM(REQ_AMT*ISNULL(RATE,1))
FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_TYPE=@p_REQ_TYPE AND REF_ID =@p_REF_ID AND AUTH_STATUS ='A' AND REQ_TYPE ='I')
--SET @SUM_PAY = (SELECT SUM(D.AMT_USE) +SUM(D.AMT_REVERT) - SUM (D.AMT_ADD)
--FROM TR_REQ_PAYMENT_DT D
--LEFT JOIN TR_REQ_ADVANCE_PAYMENT X ON D.PAY_ADV_ID = X.REQ_PAY_ID AND D.AUTH_STATUS_KT ='A'
--WHERE X.REF_ID =@p_REF_ID)
SET @SUM_PAY = (SELECT SUM (ISNULL(PAY_AMT,0)) FROM TR_REQ_ADVANCE_PAYMENT WHERE REF_ID =@p_REF_ID AND AUTH_STATUS_KT ='A' AND REQ_TYPE ='I')
END
ELSE IF (@p_REQ_TYPE ='P')
BEGIN
SET @SUM_TEMP_PAY = (SELECT SUM(REQ_AMT)
FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_TYPE=@p_REQ_TYPE AND REF_ID =@p_REF_ID AND AUTH_STATUS_KT ='A')
SET @SUM_PAY = (SELECT SUM(REQ_AMT)
FROM TR_REQ_PAYMENT WHERE REQ_TYPE=@p_REQ_TYPE AND REF_ID =@p_REF_ID AND AUTH_STATUS_KT ='A')
END
ELSE IF (@p_REQ_TYPE ='D')
BEGIN
SET @SUM_TEMP_PAY = (SELECT SUM(REQ_AMT)
FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_TYPE=@p_REQ_TYPE AND REF_ID =@p_REF_ID AND AUTH_STATUS_KT ='A')
SET @SUM_PAY = (SELECT SUM(REQ_AMT)
FROM TR_REQ_PAYMENT WHERE REQ_TYPE=@p_REQ_TYPE AND REF_ID =@p_REF_ID AND AUTH_STATUS_KT ='A')
END
SELECT ISNULL(@SUM_TEMP_PAY,0) - ISNULL(@SUM_PAY,0) AS REQ_TEMP_AMT, ISNULL(@SUM_PAY,0) AS REQ_AMT_FINISH
END
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Creating [dbo].[TR_REQ_ADVANCE_PAYMENT_Log]'
GO
/*
INSERT INTO [dbo].[SYS_PREFIX](ID,Prefix,Description) VALUES('TR_REQUEST_PAMENT','TRPY','NONE')
*/
CREATE PROCEDURE [dbo].[TR_REQ_ADVANCE_PAYMENT_Log]
@p_REQ_PAY_ID varchar(15)= NULL,
@p_REQ_PAY_CODE varchar(50) = NULL,
@p_BRANCH_ID varchar(15) = NULL,
@p_DEP_ID varchar(15) = NULL,
@p_REQ_REASON nvarchar(MAX) = NULL,
@p_REQ_TYPE varchar(15) = NULL,
@P_REQ_ENTRIES nvarchar(MAX) = NULL,
@p_REQ_DESCRIPTION nvarchar(MAX) = NULL,
@p_REF_ID varchar(15) = NULL,
@p_RECEIVER_PO nvarchar(250) = NULL,
@p_RECEIVER_DEBIT nvarchar(250) = NULL,
@p_REQ_PAY_TYPE varchar(15) = NULL,
@p_REQ_TYPE_CURRENCY nvarchar(50) = NULL,
@p_REQ_AMT decimal(18, 0) = NULL,
@p_REQ_TEMP_AMT decimal(18, 0) = NULL,
@p_MAKER_ID varchar(15) = NULL,
@p_CREATE_DT varchar(25) = NULL,
@p_EDITOR_ID varchar(15) = NULL,
@p_AUTH_STATUS varchar(1) = NULL,
@p_CHECKER_ID varchar(15) = NULL,
@p_APPROVE_DT varchar(25) = NULL,
@p_CREATE_DT_KT varchar(25) = NULL,
@p_MAKER_ID_KT varchar(15) = NULL,
@p_AUTH_STATUS_KT varchar(1) = NULL,
@p_CHECKER_ID_KT varchar(1) = NULL,
@p_APPROVE_DT_KT varchar(25)= null,
@p_CORE_NOTE nvarchar(500) = NULL,
@p_BRANCH_CREATE varchar(15) = NULL,
@p_NOTES varchar(15) = NULL,
@p_RECORD_STATUS varchar(1) = NULL,
@p_TRANSFER_MAKER nvarchar(50) = NULL,
@p_TRANSFER_DT varchar(25) = NULL,
@p_TRASFER_USER_RECIVE varchar(15) = NULL,
@p_PROCESS varchar(15) = NULL,
@p_XMP_TEMP XML = NULL,
@p_TOP INT = 10,
@p_LEVEL varchar(10) = NULL,
@p_FRMDATE VARCHAR(20)= NULL,
@p_TO_DATE VARCHAR(20) = NULL,
@p_BRANCH_LOGIN VARCHAR(15) = NULL,
@p_IS_UPDATE_KT VARCHAR(15) = NULL,
@p_IS_TRANSFER VARCHAR(15)= NULL,
@p_PAY_PHASE VARCHAR(15)= NULL
AS
BEGIN -- PAGING
SET @p_TOP = NULL
declare @tmp table(BRANCH_ID varchar(15))
insert into @tmp SELECT BRANCH_ID FROM [dbo].[CM_BRANCH_GETCHILDID](@p_BRANCH_LOGIN)
IF(@p_TOP IS NULL OR @p_TOP=0)
BEGIN
-- PAGING BEGIN
SELECT A.*,B.AUTH_STATUS_NAME, C.AUTH_STATUS_NAME AUTH_STATUS_NAME_KT, TL.TLFullName CREATE_FULLNAME,
TL1.TLFullName APPROVE_FULLNAME,TL2.TLFullName CREATE_FULLNAME_KT,TL3.TLFullName APPROVE_FULLNAME_KT,
BR.BRANCH_NAME BRANCH_NAME_REQ, BR1.BRANCH_NAME BRANCH_NAME_CRE, DP.DEP_NAME, DP.DEP_CODE, BR.BRANCH_CODE BRANCH_CODE_REQ,
--Luanlt--2019/10/15-Sửa AL,AL1
BR1.BRANCH_CODE BRANCH_CODE_CRE, AL.CONTENT REQ_TYPE_NAME,AL1.CONTENT REQ_PAY_TYPE_NAME,
(A.REQ_AMT -ISNULL(A.PAY_AMT,0)) AS AMT_REMAIN,
--CASE WHEN H.SO_TIEN_THANH_TOAN IS NOT NULL THEN (ISNULL(H.SO_TIEN_THANH_TOAN,0)) ELSE A.PAY_AMT END TOTAL_AMT_PAY,
--0.00 AS TOTAL_AMT_PAY,
ISNULL(A.PAY_AMT,0) TOTAL_AMT_PAY,
TL4.TLFullName AS TRANSFER_FULLNAME,TL5.TLFullName AS TRANSFER_RECIEVER_FULLNAME,
TL6.TLFullName AS REC_DEBIT_NAME, TL6.TLNANME AS REC_DEBIT_CODE,
TL7.TLFullName AS EMP_NAME, TL7.TLNANME AS EMP_CODE,
ISNULL(PO.PO_CODE, CT.CONTRACT_CODE) AS PO_CODE ,ISNULL(PO.PO_NAME, CT.[CONTRACT_NAME]) AS PO_NAME,
PO.SUP_NAME,
SUP.TAX_NO AS SUP_TAX_NO,
CUS.CUSTOMER_CODE AS CUST_CODE,
CUS.CUSTOMER_NAME AS CUST_NAME,
PM.PAY_PHASE KY_TAM_UNG,H1.REQ_PAY_CODE AS SO_PHIEU_HOAN_UNG, H1.APPROVE_DT_KT AS NGAY_HOAN_UNG
-- SELECT END
--H.APPROVE_DT_KT NGAY_HOAN_UNG
FROM TR_REQ_ADVANCE_PAYMENT A
LEFT JOIN CM_AUTH_STATUS B ON A.AUTH_STATUS=B.AUTH_STATUS
LEFT JOIN CM_AUTH_STATUS C ON A.AUTH_STATUS_KT=C.AUTH_STATUS
LEFT JOIN TL_USER TL ON A.MAKER_ID=TL.TLNANME
LEFT JOIN TL_USER TL1 ON A.CHECKER_ID=TL1.TLNANME
LEFT JOIN TL_USER TL2 ON A.MAKER_ID_KT=TL2.TLNANME
LEFT JOIN TL_USER TL3 ON A.CHECKER_ID_KT=TL3.TLNANME
LEFT JOIN dbo.CM_BRANCH BR ON A.BRANCH_ID=BR.BRANCH_ID
LEFT JOIN dbo.CM_BRANCH BR1 ON A.BRANCH_CREATE=BR1.BRANCH_ID
LEFT JOIN dbo.CM_DEPARTMENT DP ON DP.DEP_ID=A.DEP_ID
--Luanlt--2019/10/15-Sửa AL,AL1
LEFT JOIN CM_ALLCODE AL ON A.REQ_TYPE = AL.CDVAL AND AL.CDNAME='REQ_TYPE' AND AL.CDTYPE = 'REQ_PAY_ADVANCE'
LEFT JOIN CM_ALLCODE AL1 ON A.REQ_PAY_TYPE = AL1.CDVAL AND AL1.CDNAME='REQ_PAY_TYPE' AND AL1.CDTYPE = 'REQ_PAY_METHOD'
LEFT JOIN TL_USER TL4 ON A.TRANSFER_MAKER = TL4.TLNANME
LEFT JOIN TL_USER TL5 ON A.TRASFER_USER_RECIVE = TL5.TLNANME
LEFT JOIN
(
SELECT X.PAY_ADV_ID,(ISNULL(SUM(AMT_USE),0) - ISNULL(SUM(AMT_ADD),0) + ISNULL(SUM(AMT_REVERT),0)) SO_TIEN_THANH_TOAN
FROM TR_REQ_PAYMENT_DT X
WHERE AUTH_STATUS_KT ='A'
--LEFT JOIN TR_REQ_ADVANCE_PAYMENT Y ON X.PAY_ADV_ID = Y.REQ_PAY_ID
--WHERE Y.REF_ID = @p_REF_ID
GROUP BY X.PAY_ADV_ID
) H ON A.REQ_PAY_ID = H.PAY_ADV_ID
-- LAY SO PHIEU THANH TOAN VA NGAY THANH TOAN
LEFT JOIN
(
SELECT TOP 1 X.PAY_ADV_ID, B.REQ_PAY_CODE , B.APPROVE_DT_KT
FROM TR_REQ_PAYMENT_DT X
INNER JOIN TR_REQ_PAYMENT B ON X.PAY_ID = B.REQ_PAY_ID
WHERE X.AUTH_STATUS_KT ='A'
--LEFT JOIN TR_REQ_ADVANCE_PAYMENT Y ON X.PAY_ADV_ID = Y.REQ_PAY_ID
--WHERE Y.REF_ID = @p_REF_ID
GROUP BY X.PAY_ADV_ID, B.REQ_PAY_CODE,B.APPROVE_DT_KT
) H1 ON A.REQ_PAY_ID = H1.PAY_ADV_ID
LEFT JOIN TL_USER TL6 ON A.RECEIVER_DEBIT = TL6.TLNANME AND A.REQ_TYPE='D'
LEFT JOIN TL_USER TL7 ON TL7.TLNANME = A.REF_ID AND A.REQ_TYPE='I'
LEFT JOIN TR_PO_PAYMENT PM ON A.PAY_PHASE = PM.PAY_ID AND A.REQ_TYPE='P'
LEFT JOIN TR_REQ_ADVANCE_DT DT ON A.REQ_PAY_ID = DT.REQ_PAY_ID AND A.REQ_TYPE IN ('D','P') AND DT.[TYPE]='ADV_PAY'
LEFT JOIN TR_PO_MASTER PO ON DT.REF_ID = PO.PO_ID AND A.REQ_TYPE='P'
LEFT JOIN TR_CONTRACT CT ON DT.REF_ID = CT.CONTRACT_ID AND A.REQ_TYPE='P' AND DT.[TYPE]='ADV_PAY'
LEFT JOIN CM_SUPPLIER SUP ON PO.SUP_ID = SUP.SUP_ID AND A.REQ_TYPE='P'
LEFT JOIN TR_REQ_ADVANCE_CUS CS ON A.REQ_PAY_ID= CS.REQ_PAY_ID
LEFT JOIN LS_CUSTOMER CUS ON CS.CUST_ID = CUS.CUSTOMER_ID AND A.REQ_TYPE='D'
WHERE 1=1
AND((A.REF_ID =@p_REF_ID AND A.REQ_TYPE='I') OR (DT.REF_ID = @p_REF_ID AND A.REQ_TYPE IN('D','P'))
OR (CS.CUST_ID = @p_REF_ID AND A.REQ_TYPE='D') OR @p_REF_ID IS NULL OR @p_REF_ID ='' )
--AND(A.REQ_PAY_ID =@p_REQ_PAY_ID OR @p_REQ_PAY_ID IS NULL OR @p_REQ_PAY_ID ='' )
--AND (A.REQ_PAY_ID <@p_REQ_PAY_ID OR @p_REQ_PAY_ID IS NULL OR @p_REQ_PAY_ID ='')
AND (A.AUTH_STATUS_KT ='A')
-- AND (DT.REF_ID = @p_REF_ID OR @p_REF_ID IS NULL OR @p_REF_ID ='')
ORDER BY A.CREATE_DT DESC
-- PAGING END
END;
ELSE
BEGIN
-- PAGING BEGIN
SELECT TOP(CONVERT(INT, @p_TOP)) A.*,B.AUTH_STATUS_NAME, C.AUTH_STATUS_NAME AUTH_STATUS_NAME_KT, TL.TLFullName CREATE_FULLNAME,
TL1.TLFullName APPROVE_FULLNAME,TL2.TLFullName CREATE_FULLNAME_KT,TL3.TLFullName APPROVE_FULLNAME_KT,
BR.BRANCH_NAME BRANCH_NAME_REQ, BR1.BRANCH_NAME BRANCH_NAME_CRE, DP.DEP_NAME, DP.DEP_CODE, BR.BRANCH_CODE BRANCH_CODE_REQ,
--Luanlt--2019/10/15-Sửa AL,AL1
BR1.BRANCH_CODE BRANCH_CODE_CRE, AL.CONTENT REQ_TYPE_NAME,AL1.CONTENT REQ_PAY_TYPE_NAME,
(A.REQ_AMT -ISNULL(A.PAY_AMT,0)) AS AMT_REMAIN,
--CASE WHEN H.SO_TIEN_THANH_TOAN IS NOT NULL THEN (ISNULL(H.SO_TIEN_THANH_TOAN,0)) ELSE A.PAY_AMT END TOTAL_AMT_PAY,
--0.00 AS TOTAL_AMT_PAY,
ISNULL(A.PAY_AMT,0) TOTAL_AMT_PAY,
TL4.TLFullName AS TRANSFER_FULLNAME,TL5.TLFullName AS TRANSFER_RECIEVER_FULLNAME,
TL6.TLFullName AS REC_DEBIT_NAME, TL6.TLNANME AS REC_DEBIT_CODE,
TL7.TLFullName AS EMP_NAME, TL7.TLNANME AS EMP_CODE,
ISNULL(PO.PO_CODE, CT.CONTRACT_CODE) AS PO_CODE ,ISNULL(PO.PO_NAME, CT.[CONTRACT_NAME]) AS PO_NAME,
PO.SUP_NAME,
SUP.TAX_NO AS SUP_TAX_NO,
CUS.CUSTOMER_CODE AS CUST_CODE,
CUS.CUSTOMER_NAME AS CUST_NAME,
PM.PAY_PHASE KY_TAM_UNG,H1.REQ_PAY_CODE AS SO_PHIEU_HOAN_UNG, H1.APPROVE_DT_KT AS NGAY_HOAN_UNG
-- SELECT END
--H.APPROVE_DT_KT NGAY_HOAN_UNG
FROM TR_REQ_ADVANCE_PAYMENT A
LEFT JOIN CM_AUTH_STATUS B ON A.AUTH_STATUS=B.AUTH_STATUS
LEFT JOIN CM_AUTH_STATUS C ON A.AUTH_STATUS_KT=C.AUTH_STATUS
LEFT JOIN TL_USER TL ON A.MAKER_ID=TL.TLNANME
LEFT JOIN TL_USER TL1 ON A.CHECKER_ID=TL1.TLNANME
LEFT JOIN TL_USER TL2 ON A.MAKER_ID_KT=TL2.TLNANME
LEFT JOIN TL_USER TL3 ON A.CHECKER_ID_KT=TL3.TLNANME
LEFT JOIN dbo.CM_BRANCH BR ON A.BRANCH_ID=BR.BRANCH_ID
LEFT JOIN dbo.CM_BRANCH BR1 ON A.BRANCH_CREATE=BR1.BRANCH_ID
LEFT JOIN dbo.CM_DEPARTMENT DP ON DP.DEP_ID=A.DEP_ID
--Luanlt--2019/10/15-Sửa AL,AL1
LEFT JOIN CM_ALLCODE AL ON A.REQ_TYPE = AL.CDVAL AND AL.CDNAME='REQ_TYPE' AND AL.CDTYPE = 'REQ_PAY_ADVANCE'
LEFT JOIN CM_ALLCODE AL1 ON A.REQ_PAY_TYPE = AL1.CDVAL AND AL1.CDNAME='REQ_PAY_TYPE' AND AL1.CDTYPE = 'REQ_PAY_METHOD'
LEFT JOIN TL_USER TL4 ON A.TRANSFER_MAKER = TL4.TLNANME
LEFT JOIN TL_USER TL5 ON A.TRASFER_USER_RECIVE = TL5.TLNANME
LEFT JOIN
(
SELECT X.PAY_ADV_ID,(ISNULL(SUM(AMT_USE),0) - ISNULL(SUM(AMT_ADD),0) + ISNULL(SUM(AMT_REVERT),0)) SO_TIEN_THANH_TOAN
FROM TR_REQ_PAYMENT_DT X
WHERE AUTH_STATUS_KT ='A'
--LEFT JOIN TR_REQ_ADVANCE_PAYMENT Y ON X.PAY_ADV_ID = Y.REQ_PAY_ID
--WHERE Y.REF_ID = @p_REF_ID
GROUP BY X.PAY_ADV_ID
) H ON A.REQ_PAY_ID = H.PAY_ADV_ID
-- LAY SO PHIEU THANH TOAN VA NGAY THANH TOAN
LEFT JOIN
(
SELECT TOP 1 X.PAY_ADV_ID, B.REQ_PAY_CODE , B.APPROVE_DT_KT
FROM TR_REQ_PAYMENT_DT X
INNER JOIN TR_REQ_PAYMENT B ON X.PAY_ID = B.REQ_PAY_ID
WHERE X.AUTH_STATUS_KT ='A'
--LEFT JOIN TR_REQ_ADVANCE_PAYMENT Y ON X.PAY_ADV_ID = Y.REQ_PAY_ID
--WHERE Y.REF_ID = @p_REF_ID
GROUP BY X.PAY_ADV_ID, B.REQ_PAY_CODE,B.APPROVE_DT_KT
) H1 ON A.REQ_PAY_ID = H1.PAY_ADV_ID
LEFT JOIN TL_USER TL6 ON A.RECEIVER_DEBIT = TL6.TLNANME AND A.REQ_TYPE='D'
LEFT JOIN TL_USER TL7 ON TL7.TLNANME = A.REF_ID AND A.REQ_TYPE='I'
LEFT JOIN TR_PO_PAYMENT PM ON A.PAY_PHASE = PM.PAY_ID AND A.REQ_TYPE='P'
LEFT JOIN TR_REQ_ADVANCE_DT DT ON A.REQ_PAY_ID = DT.REQ_PAY_ID AND A.REQ_TYPE IN ('D','P') AND DT.[TYPE]='ADV_PAY'
LEFT JOIN TR_PO_MASTER PO ON DT.REF_ID = PO.PO_ID AND A.REQ_TYPE='P'
LEFT JOIN TR_CONTRACT CT ON DT.REF_ID = CT.CONTRACT_ID AND A.REQ_TYPE='P' AND DT.[TYPE]='ADV_PAY'
LEFT JOIN CM_SUPPLIER SUP ON PO.SUP_ID = SUP.SUP_ID AND A.REQ_TYPE='P'
LEFT JOIN TR_REQ_ADVANCE_CUS CS ON A.REQ_PAY_ID= CS.REQ_PAY_ID
LEFT JOIN LS_CUSTOMER CUS ON CS.CUST_ID = CUS.CUSTOMER_ID AND A.REQ_TYPE='D'
WHERE 1=1
AND((A.REF_ID =@p_REF_ID AND A.REQ_TYPE='I') OR (DT.REF_ID = @p_REF_ID AND A.REQ_TYPE IN('D','P'))
OR (CS.CUST_ID = @p_REF_ID AND A.REQ_TYPE='D') OR @p_REF_ID IS NULL OR @p_REF_ID ='' )
--AND(A.REQ_PAY_ID =@p_REQ_PAY_ID OR @p_REQ_PAY_ID IS NULL OR @p_REQ_PAY_ID ='' )
--AND (A.REQ_PAY_ID <@p_REQ_PAY_ID OR @p_REQ_PAY_ID IS NULL OR @p_REQ_PAY_ID ='')
AND (A.AUTH_STATUS_KT ='A')
-- AND (DT.REF_ID = @p_REF_ID OR @p_REF_ID IS NULL OR @p_REF_ID ='')
ORDER BY A.CREATE_DT DESC
-- PAGING END
END;
END -- PAGING
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Altering [dbo].[REAL_ESTATE_R_H_Ins]'
GO
ALTER PROCEDURE [dbo].[REAL_ESTATE_R_H_Ins]
@p_BRANCH_MANAGE nvarchar(500) = NULL,
@p_BRANCH_USE nvarchar(500) = NULL,
@p_RET_ADDR nvarchar(MAX) = NULL,
@p_RET_R_H_TIME decimal = NULL,
@p_START_DT VARCHAR(20) = NULL,
@p_END_DT VARCHAR(20) = NULL,
@p_R_LAND_SQUARE decimal = NULL,
@p_SCALE NVARCHAR(500) = NULL,
@p_CONSTRUCT_SQUARE decimal = NULL,
@p_PRICE_DETAIL XML = NULL,
@p_DEPOSIT varchar(1) = NULL,
@p_DEPOSIT_PRICE decimal = NULL,
@p_DEPOSIT_RETURN_DT NVARCHAR(500) = NULL,
@p_PURCHASE_EACH_TERM decimal = NULL,
@p_PAY_AMT decimal = NULL,
@p_PAY_PAY_AMT decimal = NULL,
@p_PAY_MONTH_TIMES INT = NULL,
@p_NOTES nvarchar(1000) = NULL,
@p_RECORD_STATUS varchar(1) = NULL,
@p_AUTH_STATUS varchar(1) = NULL,
@p_MAKER_ID varchar(15) = NULL,
@p_CREATE_DT VARCHAR(20) = NULL,
@p_CHECKER_ID varchar(15) = NULL,
@p_APPROVE_DT VARCHAR(20) = NULL,
@p_MONTH_TIMES INT = NULL,
@p_BRANCH_CREATE varchar(15) = NULL,
----BAODNQ 7/2/2022: Thêm cột TR_CONTRACT_ID, EXTEND_DT, STRUCTURE------
@p_TR_CONTRACT_ID varchar(15) = NULL,
@p_EXTEND_DT varchar(20) = NULL,
@p_STRUCTURE nvarchar(500) = NULL
AS
DECLARE @l_ERROR_MESSAGE VARCHAR(1000)
BEGIN TRANSACTION
-- GEN ID
DECLARE @p_RET_R_H_ID VARCHAR(30)
DECLARE @p_KeyGen VARCHAR(15);
EXEC dbo.SYS_CodeMasters_Gen 'REAL_ESTATE_R_H', @p_RET_R_H_ID out
Declare @hdoc INT
Exec sp_xml_preparedocument @hdoc Output,@p_PRICE_DETAIL
DECLARE PriceDetail CURSOR FOR
SELECT *
FROM OPENXML(@hDoc,'/Root/RetPriceDetail',2)
WITH
(
RET_PRICE_ID varchar(15),
RET_R_H_ID varchar(15),
PRICE decimal(18,0),
PRICE_DT VARCHAR(20),
PRICE_END_DT VARCHAR(20)
)
OPEN PriceDetail
-- INSERT
----BAODNQ 7/2/2022: Thêm cột TR_CONTRACT_ID, EXTEND_DT, STRUCTURE------
INSERT INTO REAL_ESTATE_R_H (RET_R_H_ID, BRANCH_MANAGE, BRANCH_USE, RET_ADDR, RET_R_H_TIME, START_DT, END_DT, R_LAND_SQUARE, SCALE, CONSTRUCT_SQUARE, DEPOSIT, DEPOSIT_PRICE, DEPOSIT_RETURN_DT, PURCHASE_EACH_TERM, NOTES, RECORD_STATUS, AUTH_STATUS, MAKER_ID, CREATE_DT, CHECKER_ID, APPROVE_DT,BRANCH_CREATE, MONTH_TIMES, PAY_AMT, PAY_MONTH_TIMES, PAY_PAY_AMT, TR_CONTRACT_ID, EXTEND_DT, STRUCTURE)
VALUES (@p_RET_R_H_ID, @p_BRANCH_MANAGE, @p_BRANCH_USE, @p_RET_ADDR, @p_RET_R_H_TIME, CONVERT(DATETIME, @p_START_DT, 103), CONVERT(DATETIME, @p_END_DT, 103), @p_R_LAND_SQUARE, @p_SCALE, @p_CONSTRUCT_SQUARE, @p_DEPOSIT, @p_DEPOSIT_PRICE, @p_DEPOSIT_RETURN_DT, @p_PURCHASE_EACH_TERM, @p_NOTES, @p_RECORD_STATUS, @p_AUTH_STATUS, @p_MAKER_ID, CONVERT(DATETIME, @p_CREATE_DT, 103), @p_CHECKER_ID, CONVERT(DATETIME, @p_APPROVE_DT, 103),@p_BRANCH_CREATE,@p_MONTH_TIMES,@p_PAY_AMT, @p_PAY_MONTH_TIMES, @p_PAY_PAY_AMT, @p_TR_CONTRACT_ID, CONVERT(DATETIME, @p_EXTEND_DT, 103), @p_STRUCTURE)
IF @@Error <> 0 GOTO ABORT
DECLARE @RET_PRICE_ID varchar(15), @RET_R_H_ID varchar(15), @PRICE decimal(18,0), @PRICE_DT VARCHAR(20), @PRICE_END_DT VARCHAR(20)
FETCH NEXT FROM PriceDetail INTO @RET_PRICE_ID, @RET_R_H_ID, @PRICE, @PRICE_DT, @PRICE_END_DT
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC SYS_CodeMasters_Gen 'RET_PRICE', @RET_PRICE_ID out
IF @RET_PRICE_ID ='' OR @RET_PRICE_ID IS NULL GOTO ABORT
INSERT INTO RET_PRICE(RET_PRICE_ID, RET_R_H_ID, PRICE, PRICE_DT, PRICE_END_DT)
VALUES(@RET_PRICE_ID, @p_RET_R_H_ID, @PRICE, CONVERT(DATETIME, @PRICE_DT, 103), CONVERT(DATETIME, @PRICE_END_DT, 103))
IF @@ERROR <> 0 GOTO ABORT
FETCH NEXT FROM PriceDetail INTO @RET_PRICE_ID, @RET_R_H_ID, @PRICE, @PRICE_DT, @PRICE_END_DT
END
CLOSE PriceDetail
DEALLOCATE PriceDetail
COMMIT TRANSACTION
SELECT '0' as Result, @p_RET_R_H_ID RET_R_H_ID, '' ErrorDesc
RETURN '0'
ABORT:
BEGIN
SELECT '-1' as Result, '' RET_R_H_ID, @l_ERROR_MESSAGE ErrorDesc
RETURN '-1'
END
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Creating [dbo].[CM_BRANCH_ByCode]'
GO
CREATE PROCEDURE [dbo].[CM_BRANCH_ByCode] @BRANCH_CODE VARCHAR(15) AS
BEGIN
SELECT * FROM dbo.CM_BRANCH WHERE BRANCH_CODE = @BRANCH_CODE
END
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Altering [dbo].[BUD_MASTER_App]'
GO
ALTER PROCEDURE [dbo].[BUD_MASTER_App]
@p_BUILDING_ID varchar(15),
@P_AUTH_STATUS VARCHAR(1),
@P_CHECKER_ID VARCHAR(12),
@P_APPROVE_DT VARCHAR(20)
AS
/*
DECLARE @aStatus VARCHAR(1)
DECLARE @sErrorCode VARCHAR(20)
SET @sErrorCode = ''
SELECT @aStatus = [AUTH_STATUS] FROM BUD_MASTER WHERE BUILDING_ID=@p_BUILDING_ID
IF @aStatus = 'A'
SET @sErrorCode = ''
IF @ERRORSYS <> ''
BEGIN
SELECT ErrorCode Result, ''BUILDING_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS
RETURN '0'
END*/
BEGIN TRANSACTION
UPDATE BUD_MASTER SET
AUTH_STATUS = 'A',
CHECKER_ID = @P_CHECKER_ID,
APPROVE_DT = CONVERT(DATETIME,@P_APPROVE_DT,103)
WHERE BUILDING_ID=@p_BUILDING_ID
IF @@Error <> 0 GOTO ABORT
-- 29/12/2021:datmq Insert to table PL_PROCESS
INSERT INTO dbo.PL_PROCESS
(
REQ_ID,
PROCESS_ID,
CHECKER_ID,
APPROVE_DT,
PROCESS_DESC,
NOTES
)
VALUES
( @p_BUILDING_ID,
'APPROVE',
@p_CHECKER_ID,
GETDATE(),
N'Trưởng đơn vị phê duyệt thành công' ,
N'Trưởng đơn vị phê duyệt'
)
COMMIT TRANSACTION
SELECT '0' as Result, @p_BUILDING_ID BUILDING_ID, '' ErrorDesc
RETURN '0'
ABORT:
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' BUILDING_ID, '' ErrorDesc
RETURN '-1'
End
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Altering [dbo].[PL_REQUEST_DOC_Ins]'
GO
ALTER PROCEDURE [dbo].[PL_REQUEST_DOC_Ins]
@p_REQ_CODE nvarchar(100) = NULL,
@p_REQ_NAME nvarchar(200) = NULL,
@p_REQ_DT nvarchar(20) = NULL,
@p_REQ_TYPE int = NULL,
@p_REQ_CONTENT NVARCHAR(4000)=NULL,
@p_REQ_REASON NVARCHAR(4000)=NULL,
@p_TOTAL_AMT decimal = NULL,
@p_NOTES nvarchar(1000) = NULL,
@p_RECORD_STATUS varchar(1) = NULL,
@p_MAKER_ID varchar(20) = NULL,
@p_CREATE_DT varchar(20) = NULL,
@p_AUTH_STATUS varchar(50) = NULL,
@p_CHECKER_ID varchar(20) = NULL,
@p_APPROVE_DT nvarchar(20) = NULL,
@p_BRANCH_ID VARCHAR(15)=NULL,
@p_DVDM_ID VARCHAR(20) = NULL,
@p_REQ_PARENT_ID VARCHAR(20) = NULL,
@p_BRANCH_FEE NVARCHAR(500) = NULL,
@p_DEP_ID VARCHAR(20)=NULL,
@p_DEP_FEE_ID VARCHAR(20)= NULL,
@p_IS_BACKDAY BIT = NULL,
@p_REQ_LINE VARCHAR(20),
@p_SIGN_USER VARCHAR(20) = NULL,
@p_IS_CHECKALL BIT = NULL,
@p_BASED_CONTENT NVARCHAR(3000) = NULL,
@p_PL_BASED_ID VARCHAR(15) = NULL,
@p_ListGood XML,
@p_ListCostCenter XML,
@p_ListTransfer XML,
@p_ListAttachFile XML
AS
BEGIN TRANSACTION
DECLARE @DEP_ID VARCHAR(15) = (SELECT SECUR_CODE FROM TL_USER WHERE TLNANME = @p_MAKER_ID)
-- TABLE INSERT FILE
DECLARE @TEMP TABLE
(
[KEY] varchar(15),
[REF_ID] varchar(15),
[TYPE] varchar(50)
)
IF(@p_REQ_DT IS NULL)
BEGIN
SELECT 'REQ-00001' Result, '' REQ_ID, N'Ngày yêu cầu tờ trình không được phép để trống' ErrorDesc
ROLLBACK TRANSACTION
RETURN '-1'
END
--IF(CAST(@p_REQ_DT AS DATE) > CAST(GETDATE() AS DATE))
IF(CONVERT(DATETIME,@p_REQ_DT,103) > CONVERT(DATETIME,GETDATE(),103))
BEGIN
SELECT 'REQ-00001' Result, '' REQ_ID, N'Ngày yêu cầu không lớn hơn ngày hiện tại' ErrorDesc
ROLLBACK TRANSACTION
RETURN '-1'
END
exec [dbo].[PL_REQUEST_DOC_CODE_GenKey] @p_BRANCH_ID,@DEP_ID, @p_REQ_CODE out
IF(@p_REQ_CODE IS NULL OR @p_REQ_CODE ='')
BEGIN
SELECT 'REQ-00001' Result, '' REQ_ID, N'Mã tờ trình chủ trương bắc buộc nhập' ErrorDesc
ROLLBACK TRANSACTION
RETURN '-1'
END
IF EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE [REQ_CODE] = @p_REQ_CODE)
BEGIN
SELECT '-1' Result, '' REQ_ID, N'Tờ trình số:' + @p_REQ_CODE + N' đã tồn tại trong hệ thống!"' ErrorDesc
ROLLBACK TRANSACTION
RETURN '-1'
END
DECLARE @sErrorCode VARCHAR(20)
--insert master
DECLARE @l_REQ_ID VARCHAR(15)
EXEC SYS_CodeMasters_Gen 'PL_REQUEST_DOC', @l_REQ_ID out
IF @l_REQ_ID='' OR @l_REQ_ID IS NULL GOTO ABORT
DECLARE @BRANCH_CREATE VARCHAR(20),@DEP_CREATE VARCHAR(20)
SET @BRANCH_CREATE= (SELECT TLSUBBRID FROM dbo.TL_USER WHERE TLNANME=@p_MAKER_ID)
SET @DEP_CREATE=(SELECT SECUR_CODE FROM dbo.TL_USER WHERE TLNANME=@p_MAKER_ID)
IF(EXISTS(SELECT * FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_CREATE AND BRANCH_TYPE='HS')
OR EXISTS(SELECT DEP_ID FROM dbo.CM_DEPARTMENT WHERE DEP_ID=@DEP_CREATE AND DEP_CODE LIKE '069%'))
SET @DEP_CREATE=(SELECT SECUR_CODE FROM dbo.TL_USER WHERE TLNANME=@p_MAKER_ID)
ELSE
SET @DEP_CREATE=''
SET @DEP_ID=@DEP_CREATE
SET @p_BRANCH_ID=@BRANCH_CREATE
--IF(CAST(@p_REQ_DT AS DATE) < CAST(GETDATE() AS DATE))
IF(CONVERT(DATETIME,@p_REQ_DT,103) < CONVERT(DATETIME,GETDATE(),103))
SET @p_IS_BACKDAY=1;
ELSE
SET @p_IS_BACKDAY=0
INSERT INTO dbo.PL_REQUEST_DOC
(
REQ_ID,
REQ_CODE,
REQ_NAME,
REQ_DT,
REQ_TYPE,
REQ_CONTENT,
REQ_REASON,
BRANCH_ID,
TOTAL_AMT,
NOTES,
RECORD_STATUS,
MAKER_ID,
CREATE_DT,
AUTH_STATUS,
CHECKER_ID,
APPROVE_DT,
DVDM_APP_ID,
REQ_PARENT_ID,
BRANCH_FEE,
IS_BACKDAY,
PROCESS_ID,
DEP_ID,
DEP_FEE,
BRANCH_CREATE,
DEP_CREATE,
REQ_LINE,SIGN_USER,
IS_CHECKALL,
BASED_CONTENT,PL_BASED_ID
)
VALUES
( @l_REQ_ID, -- REQ_ID - varchar(15)
@p_REQ_CODE, -- REQ_CODE - varchar(100)
@p_REQ_NAME, -- REQ_NAME - nvarchar(200)
-- CAST(@p_REQ_DT AS DATE), -- REQ_DT - datetime
CONVERT(DATETIME,@p_REQ_DT,103),
@p_REQ_TYPE, -- REQ_TYPE - int
@p_REQ_CONTENT, -- REQ_CONTENT - nvarchar(1000)
@p_REQ_REASON, -- REQ_REASON - nvarchar(500)
@p_BRANCH_ID, -- BRANCH_ID - varchar(15)
@p_TOTAL_AMT, -- TOTAL_AMT - decimal(18, 0)
@p_NOTES, -- NOTES - nvarchar(1000)
@p_RECORD_STATUS, -- RECORD_STATUS - varchar(1)
@p_MAKER_ID, -- MAKER_ID - varchar(12)
CONVERT(DATETIME,@p_CREATE_DT,103),
--CAST(@p_CREATE_DT AS DATE), -- CREATE_DT - datetime
'E', -- AUTH_STATUS - varchar(50)
@p_CHECKER_ID, -- CHECKER_ID - varchar(12)
--CAST(@P_APPROVE_DT AS DATE), -- APPROVE_DT - datetime
CONVERT(DATETIME,@P_APPROVE_DT,103),
@p_DVDM_ID,
@p_REQ_PARENT_ID,
@p_BRANCH_FEE,
@p_IS_BACKDAY,
'',
@p_DEP_ID,
@p_DEP_FEE_ID,
@BRANCH_CREATE,
@DEP_CREATE,
@p_REQ_LINE,
@p_SIGN_USER,
@p_IS_CHECKALL,
@p_BASED_CONTENT,@p_PL_BASED_ID
)
IF @@Error <> 0 GOTO ABORT
DECLARE @TABLE TABLE(
PLAN_ID varchar(15) ,
TRADE_ID varchar(15) ,
GOODS_ID varchar(15) ,
[DESCRIPTION] nvarchar(2000),
UNIT_ID varchar(15) ,
QUANTITY decimal(18,0) ,
PRICE decimal(18,2) ,
TOTAL_AMT decimal(18,2),
NOTES nvarchar(1000),
REQDT_TYPE VARCHAR(1),
NAME NVARCHAR(500),
DVDM_ID VARCHAR(20),
HH_ID VARCHAR(20),
CURRENCY nvarchar(50),
EXCHANGE_RATE decimal(18,2),
TAXES decimal(18, 2),
SUP_ID VARCHAR(20),
TRADE_TYPE VARCHAR(20),
KHOI_ID VARCHAR(20),
UNIT_NAME nvarchar(200),
SUP_NAME NVARCHAR(250)
)
--Insert into TABLE PL_REQUEST_DOC_DT
Declare @hdoc INT
Exec sp_xml_preparedocument @hdoc Output,@p_ListGood
INSERT INTO @TABLE
SELECT PLAN_ID,
TRADE_ID,
GOODS_ID,
DESCRIPTION,
UNIT_ID,
QUANTITY,
PRICE,
TOTAL_AMT,
NOTES,
REQDT_TYPE,
NAME,
DVDM_ID,
HH_ID,
CURRENCY,
EXCHANGE_RATE,
TAXES,
SUP_ID,
TRADE_TYPE,
KHOI_ID,UNIT_NAME,SUP_NAME
FROM OPENXML(@hDoc,'/Root/ListGood',2)
WITH
(
PLAN_ID varchar(15) ,
TRADE_ID varchar(15) ,
GOODS_ID varchar(15) ,
[DESCRIPTION] nvarchar(2000),
UNIT_ID varchar(15) ,
QUANTITY decimal(18,0) ,
PRICE decimal(18,2) ,
TOTAL_AMT decimal(18,2),
NOTES nvarchar(1000),
REQDT_TYPE VARCHAR(1),
NAME NVARCHAR(500),
DVDM_ID VARCHAR(20),
HH_ID VARCHAR(20),
CURRENCY nvarchar(50),
EXCHANGE_RATE decimal(18,2),
TAXES decimal(18, 2),
SUP_ID VARCHAR(20),
TRADE_TYPE VARCHAR(20),
KHOI_ID VARCHAR(20),
UNIT_NAME nvarchar(200),
SUP_NAME NVARCHAR(250)
)
DECLARE @TABLE_TRANSFER TABLE (
FR_PLAN_ID varchar(15),
FR_TRADE_ID varchar(15),
FR_GOOD_ID varchar(15),
FR_BRN_ID varchar(15),
TO_BRN_ID varchar(15),
TO_PLAN_ID varchar(15),
TO_TRADE_ID varchar(15),
TO_GOOD_ID varchar(15),
QTY DECIMAL(18,0),
TOTAL_AMT decimal(18),
NOTES nvarchar(1000),
FR_DEP_ID VARCHAR(20),
TO_DEP_ID VARCHAR(20),
FR_DVDM_ID VARCHAR(20),
TO_DVDM_ID VARCHAR(20),
FR_KHOI_ID VARCHAR(20),
TO_KHOI_ID VARCHAR(20),
FR_GD_TYPE VARCHAR(20),
TO_GD_TYPE VARCHAR(20),
FR_AMT_REMAIN decimal(18),
FR_AMT_REMAIN_ETM_TF decimal(18)
)
Exec sp_xml_preparedocument @hdoc Output,@p_ListTransfer
INSERT INTO @TABLE_TRANSFER
SELECT FR_PLAN_ID,
FR_TRADE_ID,
FR_GOOD_ID,
FR_BRN_ID,
TO_BRN_ID,
TO_PLAN_ID,
TO_TRADE_ID,
TO_GOOD_ID,
QTY,
TOTAL_AMT,
NOTES,
FR_DEP_ID,
TO_DEP_ID,
FR_DVDM_ID,
TO_DVDM_ID,
FR_KHOI_ID,
TO_KHOI_ID,
FR_GD_TYPE,
TO_GD_TYPE,
FR_AMT_REMAIN,
FR_AMT_REMAIN_ETM_TF
FROM OPENXML(@hdoc,'/Root/ListTransfer',2)
WITH
(
FR_PLAN_ID varchar(15),
FR_TRADE_ID varchar(15),
FR_GOOD_ID varchar(15),
FR_BRN_ID varchar(15),
TO_BRN_ID varchar(15),
TO_PLAN_ID varchar(15),
TO_TRADE_ID varchar(15),
TO_GOOD_ID varchar(15),
QTY DECIMAL(18,0),
TOTAL_AMT decimal(18),
NOTES nvarchar(1000),
FR_DEP_ID VARCHAR(20),
TO_DEP_ID VARCHAR(20),
FR_DVDM_ID VARCHAR(20),
TO_DVDM_ID VARCHAR(20),
FR_KHOI_ID VARCHAR(20),
TO_KHOI_ID VARCHAR(20),
FR_GD_TYPE VARCHAR(20),
TO_GD_TYPE VARCHAR(20),
FR_AMT_REMAIN DECIMAL(18),
FR_AMT_REMAIN_ETM_TF DECIMAL(18)
)
--WHERE FR_BRN_ID !='' AND FR_BRN_ID IS NOT NULL
DECLARE ListGoods CURSOR FOR
SELECT PLAN_ID,
TRADE_ID,
GOODS_ID,
DESCRIPTION,
UNIT_ID,
QUANTITY,
PRICE,
TOTAL_AMT,
NOTES,
REQDT_TYPE,
NAME,
DVDM_ID,
HH_ID,
CURRENCY,
EXCHANGE_RATE,
TAXES,
SUP_ID,
TRADE_TYPE,KHOI_ID,UNIT_NAME,SUP_NAME FROM @TABLE
OPEN ListGoods
Declare
@PLAN_ID varchar(15),
@TRADE_ID varchar(15),
@GOODS_ID varchar(15),
@DESCRIPTION nvarchar(2000),
@UNIT_ID varchar(15),
@QUANTITY decimal(18),
@PRICE decimal(18,2),
@TOTAL_AMT decimal(18,2),
@NOTES nvarchar(1000),
@REQDT_TYPE VARCHAR(1),
@NAME NVARCHAR(500),
@DVDM_ID VARCHAR(20),
@HH_ID VARCHAR(20),
@CURRENCY nvarchar(50),
@EXCHANGE_RATE decimal(18, 2),
@TAXES decimal(18, 2),
@SUP_ID VARCHAR(20),
@TRADE_TYPE VARCHAR(20),
@KHOI_ID VARCHAR(20),
@UNIT_NAME nvarchar(200),
@SUP_NAME NVARCHAR(250),
@l_SUP_ID VARCHAR(15)
FETCH NEXT FROM ListGoods INTO @PLAN_ID,@TRADE_ID,@GOODS_ID,@DESCRIPTION,@UNIT_ID,@QUANTITY,
@PRICE,@TOTAL_AMT,@NOTES, @REQDT_TYPE, @NAME,@DVDM_ID,@HH_ID,@CURRENCY,@EXCHANGE_RATE,@TAXES,@SUP_ID,@TRADE_TYPE,@KHOI_ID,@UNIT_NAME,@SUP_NAME
WHILE @@FETCH_STATUS = 0
BEGIN
-- KIEM TRA NEU HINH THUC CHI DINH THAU LA THEO QUY DINH VCCB THI KHONG CHO PHEP CHON NHA CUNG CAP
--IF(@TRADE_TYPE IS NOT NULL AND @TRADE_TYPE <>'' AND @TRADE_TYPE ='VCCB' AND (@SUP_ID IS NOT NULL AND @SUP_ID <>''))
--BEGIN
-- SELECT 'REQ-00001' Result, '' REQ_ID, N'Lưới hàng hóa: Nếu chọn hình thức mua sắm theo quy định VCCB thì bạn không được phép chọn nhà cung cấp. Vui lòng để trống nhà cung cấp' ErrorDesc
-- ROLLBACK TRANSACTION
-- RETURN '-1'
--END
IF(@SUP_NAME IS NOT NULL AND @SUP_NAME <>'')
BEGIN
IF(NOT EXISTS(SELECT * FROM CM_SUPPLIER WHERE SUP_NAME =@SUP_NAME))
BEGIN
EXEC SYS_CodeMasters_Gen 'CM_SUPPLIER', @l_SUP_ID out
IF @l_SUP_ID='' OR @l_SUP_ID IS NULL GOTO ABORT
INSERT INTO CM_SUPPLIER([DISCIPLINES],[SUP_ID],[SUP_CODE],[SUP_NAME],[SUP_TYPE_ID],[REGION_ID],[ADDR],[EMAIL],[TAX_NO],[TEL],[CONTACT_PERSON],[NOTES],[RECORD_STATUS],[MAKER_ID],[CREATE_DT],[AUTH_STATUS],[CHECKER_ID],[APPROVE_DT],ACC_NUM)
VALUES('', @l_SUP_ID ,@l_SUP_ID ,@SUP_NAME ,NULL ,NULL ,'' ,'' ,'' ,'' ,'' ,'' ,'1' ,@p_MAKER_ID ,CONVERT(DATETIME, @p_CREATE_DT, 103) ,'U' ,NULL,NULL,NULL)
SET @SUP_ID =@l_SUP_ID
END
ELSE
BEGIN
SET @l_SUP_ID =(SELECT TOP 1 SUP_ID FROM CM_SUPPLIER WHERE SUP_NAME =@SUP_NAME)
IF(@l_SUP_ID <> '' AND @SUP_ID IS NOT NULL)
BEGIN
SET @SUP_ID =@l_SUP_ID
END
--END
END
END
DECLARE @l_REQDT_ID VARCHAR(15)
EXEC SYS_CodeMasters_Gen 'PL_REQUEST_DOC_DT', @l_REQDT_ID out
IF @l_REQDT_ID='' OR @l_REQDT_ID IS NULL GOTO ABORT
--SET @TOTAL_AMT=(@PRICE * @QUANTITY * @EXCHANGE_RATE) + (@TAXES * @EXCHANGE_RATE)
INSERT INTO dbo.PL_REQUEST_DOC_DT
(
REQDT_ID,
REQ_ID,
PLAN_ID,
TRADE_ID,
GOODS_ID,
NAME,
DESCRIPTION,
REQDT_TYPE,
UNIT_ID,
QUANTITY,
PRICE,
TOTAL_AMT,
RECORD_STATUS,
MAKER_ID,
CREATE_DT,
AUTH_STATUS,
CHECKER_ID,
APPROVE_DT,
DVDM_ID,
HANGHOA_ID,
CURRENCY,
EXCHANGE_RATE,
TAXES,SUP_ID,TRADE_TYPE,KHOI_ID,UNIT_NAME
)
VALUES
( @l_REQDT_ID, -- REQDT_ID - varchar(15)
@l_REQ_ID, -- REQ_ID - varchar(15)
@PLAN_ID, -- PLAN_ID - varchar(15)
@TRADE_ID, -- TRADE_ID - varchar(15)
@GOODS_ID, -- GOODS_ID - varchar(15)
@NAME, -- NAME - nvarchar(200)
@DESCRIPTION, -- DESCRIPTION - nvarchar(500)
@REQDT_TYPE, -- REQDT_TYPE - varchar(1)
@UNIT_ID, -- UNIT_ID - varchar(15)
@QUANTITY, -- QUANTITY - decimal(18, 0)
@PRICE, -- PRICE - decimal(18, 0)
@TOTAL_AMT, -- TOTAL_AMT - decimal(18, 0)
@p_RECORD_STATUS, -- RECORD_STATUS - varchar(1)
@p_MAKER_ID, -- MAKER_ID - varchar(15)
CONVERT(DATETIME, @p_CREATE_DT, 103),
--CAST(@p_CREATE_DT AS DATE) , -- CREATE_DT - datetime
@p_AUTH_STATUS, -- AUTH_STATUS - varchar(50)
@p_CHECKER_ID, -- CHECKER_ID - varchar(15)
CONVERT(DATETIME, @P_APPROVE_DT, 103),
--CAST(@P_APPROVE_DT AS DATE), -- APPROVE_DT - datetime
@DVDM_ID,
@HH_ID,
@CURRENCY,
@EXCHANGE_RATE,
@TAXES,@SUP_ID,@TRADE_TYPE,@KHOI_ID,@UNIT_NAME
)
IF @@ERROR <> 0 GOTO ABORT1
-- next Group_Id
FETCH NEXT FROM ListGoods INTO @PLAN_ID,@TRADE_ID,@GOODS_ID,@DESCRIPTION,@UNIT_ID,@QUANTITY,
@PRICE,@TOTAL_AMT,@NOTES, @REQDT_TYPE, @NAME,@DVDM_ID,@HH_ID,@CURRENCY,@EXCHANGE_RATE,@TAXES,@SUP_ID,@TRADE_TYPE,@KHOI_ID,@UNIT_NAME,@SUP_NAME
END
CLOSE ListGoods
DEALLOCATE ListGoods
IF @@Error <> 0 GOTO ABORT
--Insert into TABLE PL_REQUEST_DOC_DT
UPDATE dbo.PL_REQUEST_DOC SET TOTAL_AMT = (SELECT SUM(TOTAL_AMT) FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID =@l_REQ_ID) WHERE PL_REQUEST_DOC.REQ_ID=@l_REQ_ID
Exec sp_xml_preparedocument @hdoc Output,@p_ListTransfer
DECLARE ListTransfers CURSOR FOR
SELECT *
FROM @TABLE_TRANSFER
OPEN ListTransfers
Declare
@FR_PLAN_ID varchar(15),
@FR_TRADE_ID varchar(15),
@FR_GOOD_ID varchar(15),
@FR_BRN_ID varchar(15),
@TO_BRN_ID varchar(15),
@TO_PLAN_ID varchar(15),
@TO_TRADE_ID varchar(15),
@TO_GOOD_ID varchar(15),
@QTY DECIMAL(18,0),
@FR_DEP_ID VARCHAR(20),
@TO_DEP_ID VARCHAR(20),
@FR_DVDM_ID VARCHAR(20),
@TO_DVDM_ID VARCHAR(20),
@FR_KHOI_ID VARCHAR(20),
@TO_KHOI_ID VARCHAR(20),
@FR_GD_TYPE VARCHAR(20),
@TO_GD_TYPE VARCHAR(20),
@FR_AMT_REMAIN decimal(18),
@FR_AMT_REMAIN_ETM_TF decimal(18)
FETCH NEXT FROM ListTransfers INTO @FR_PLAN_ID,@FR_TRADE_ID,@FR_GOOD_ID,@FR_BRN_ID,@TO_BRN_ID,@TO_PLAN_ID,
@TO_TRADE_ID,@TO_GOOD_ID,@QTY,@TOTAL_AMT, @NOTES,@FR_DEP_ID,@TO_DEP_ID,@FR_DVDM_ID,@TO_DVDM_ID,@FR_KHOI_ID,@TO_KHOI_ID,@FR_GD_TYPE,@TO_GD_TYPE,@FR_AMT_REMAIN,@FR_AMT_REMAIN_ETM_TF
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE @l_REQ_TRANSFER_ID VARCHAR(15)
EXEC SYS_CodeMasters_Gen 'PL_REQUEST_TRANSFER', @l_REQ_TRANSFER_ID out
IF @l_REQ_TRANSFER_ID='' OR @l_REQ_TRANSFER_ID IS NULL GOTO ABORT
INSERT INTO dbo.PL_REQUEST_TRANSFER
(
REQ_TRANSFER_ID,
REQ_DOC_ID,
FR_PLAN_ID,
FR_TRADE_ID,
FR_GOOD_ID,
FR_BRN_ID,
TO_BRN_ID,
TO_PLAN_ID,
TO_TRADE_ID,
TO_GOOD_ID,
QTY,
TOTAL_AMT,
NOTES,
AUTH_STATUS,
MAKER_ID,
CREATE_DT,
CHECKER_ID,
APPROVE_DT,
FR_DEP_ID,
TO_DEP_ID,
FR_DVDM_ID,
TO_DVDM_ID,
FR_KHOI_ID,
TO_KHOI_ID,
FR_AMT_EXE,
FR_AMT_ETM
)
VALUES
( @l_REQ_TRANSFER_ID, -- REQ_TRANSFER_ID - varchar(15)
@l_REQ_ID, -- REQ_DOC_ID - varchar(15)
@FR_PLAN_ID, -- FR_PLAN_ID - varchar(15)
@FR_TRADE_ID, -- FR_TRADE_ID - varchar(15)
@FR_GOOD_ID, -- FR_GOOD_ID - varchar(15)
@FR_BRN_ID, -- FR_BRN_ID - varchar(15)
@TO_BRN_ID, -- TO_BRN_ID - varchar(15)
@TO_PLAN_ID, -- TO_PLAN_ID - varchar(15)
@TO_TRADE_ID, -- TO_TRADE_ID - varchar(15)
@TO_GOOD_ID, -- TO_GOOD_ID - varchar(15)
@QTY, -- QTY - decimal(18, 0)
@TOTAL_AMT, -- TOTAL_AMT - decimal(18, 0)
@NOTES, -- NOTES - nvarchar(500)
@p_AUTH_STATUS, -- AUTH_STATUS - varchar(1)
@p_MAKER_ID, -- MAKER_ID - varchar(15)
CONVERT(DATETIME, @p_CREATE_DT, 103),
--CAST(@p_CREATE_DT AS DATE), -- CREATE_DT - datetime
@p_CHECKER_ID, -- CHECKER_ID - varchar(15)
CONVERT(DATETIME, @p_APPROVE_DT, 103),
--CAST(@p_APPROVE_DT AS DATE),
@FR_DEP_ID,
@TO_DEP_ID,
@FR_DVDM_ID,
@TO_DVDM_ID,
@FR_KHOI_ID,
@TO_KHOI_ID, -- APPROVE_DT - datetime
@FR_AMT_REMAIN,
@FR_AMT_REMAIN_ETM_TF
)
IF @@ERROR <> 0 GOTO ABORT1
-- next Group_Id
FETCH NEXT FROM ListTransfers INTO @FR_PLAN_ID,@FR_TRADE_ID,@FR_GOOD_ID,@FR_BRN_ID,@TO_BRN_ID,@TO_PLAN_ID,
@TO_TRADE_ID,@TO_GOOD_ID,@QTY,@TOTAL_AMT, @NOTES,@FR_DEP_ID,@TO_DEP_ID,@FR_DVDM_ID,@TO_DVDM_ID,@FR_KHOI_ID,@TO_KHOI_ID,@FR_GD_TYPE,@TO_GD_TYPE,@FR_AMT_REMAIN,@FR_AMT_REMAIN_ETM_TF
END
CLOSE ListTransfers
DEALLOCATE ListTransfers
IF @@Error <> 0 GOTO ABORT
--Insert into TABLE PL_REQUEST_DOC_DT
Exec sp_xml_preparedocument @hdoc Output,@p_ListCostCenter
DECLARE ListCostCenters CURSOR FOR
SELECT *
FROM OPENXML(@hDoc,'/Root/ListCostCenter',2)
WITH
(
COST_ID varchar(15),
NOTES nvarchar(1000)
)
WHERE COST_ID <>'DVDM-CHUNG'
OPEN ListCostCenters
Declare
@COST_ID varchar(15)
FETCH NEXT FROM ListCostCenters INTO @COST_ID, @NOTES
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE @l_REQ_COST_ID VARCHAR(15)
EXEC SYS_CodeMasters_Gen 'PL_REQUEST_COSTCENTER', @l_REQ_COST_ID out
IF @l_REQ_COST_ID='' OR @l_REQ_COST_ID IS NULL GOTO ABORT
INSERT INTO dbo.PL_REQUEST_COSTCENTER
(
REQ_COST_ID,
COST_ID,
REQ_ID,
NOTES,
AUTH_STATUS,
MAKER_ID,
CREATE_DT,
CHECKER_ID,
APPROVE_DT
)
VALUES
( @l_REQ_COST_ID, -- REQ_COST_ID - varchar(15)
@COST_ID, -- COST_ID - varchar(15)
@l_REQ_ID, -- REQ_ID - varchar(15)
@NOTES, -- NOTES - nvarchar(500)
@p_AUTH_STATUS, -- AUTH_STATUS - varchar(1)
@p_MAKER_ID, -- MAKER_ID - varchar(15)
CONVERT(DATETIME, @p_CREATE_DT, 103),
--CAST(@p_CREATE_DT AS DATE) , -- CREATE_DT - datetime
@p_CHECKER_ID, -- CHECKER_ID - varchar(15)
CONVERT(DATETIME, @p_APPROVE_DT, 103)
--CAST(@p_APPROVE_DT AS DATE) -- APPROVE_DT - datetime
)
IF @@ERROR <> 0 GOTO ABORT1
-- next Group_Id
FETCH NEXT FROM ListCostCenters INTO @COST_ID, @NOTES
END
CLOSE ListCostCenters
DEALLOCATE ListCostCenters
-- Insert into TABLE PL_REQUEST_DOC_FILE
DECLARE @tableAttachFile TABLE(
TR_REQUEST_DOC_FILE_ID varchar(20) ,
IS_VIEW bit,
REQ_ID varchar(20),
NOTES nvarchar(200)
)
Declare @fdoc INT
Exec sp_xml_preparedocument @fdoc Output,@p_ListAttachFile
INSERT INTO @tableAttachFile
SELECT *
FROM OPENXML(@fDoc,'/Root/ListAttachFile',2)
WITH
(
PL_REQUEST_DOC_FILE_ID varchar(20) ,
IS_VIEW bit,
REQ_ID varchar(20),
NOTES nvarchar(200)
)
DECLARE ListAttachFile CURSOR FOR
SELECT * FROM @tableAttachFile
OPEN ListAttachFile
Declare
@PL_REQUEST_DOC_FILE_ID varchar(20) ,
@IS_VIEW bit,
@REQ_ID varchar(20),
@_NOTES nvarchar(200)
FETCH NEXT FROM ListAttachFile INTO @PL_REQUEST_DOC_FILE_ID,@IS_VIEW,@REQ_ID,@_NOTES
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE @l_File_ID VARCHAR(15)
EXEC SYS_CodeMasters_Gen 'PL_REQUEST_DOC_FILE', @l_File_ID out
IF @l_File_ID='' OR @l_File_ID IS NULL GOTO ABORT
INSERT INTO @TEMP([REF_ID],[TYPE]) VALUES (@l_File_ID, 'PL_REQUEST_DOC_FILE')
INSERT INTO dbo.PL_REQUEST_DOC_FILE
(
[PL_REQUEST_DOC_FILE_ID]
,[IS_VIEW]
,[REQ_ID]
,[NOTES]
)
VALUES
(
@l_File_ID
,isnull(@IS_VIEW,0)
,@l_REQ_ID
,@_NOTES
)
IF @@ERROR <> 0 GOTO ABORT1
FETCH NEXT FROM ListAttachFile INTO @PL_REQUEST_DOC_FILE_ID,@IS_VIEW,@REQ_ID,@_NOTES
END
CLOSE ListAttachFile
DEALLOCATE ListAttachFile
IF @@Error <> 0 GOTO ABORT
COMMIT TRANSACTION
IF (SELECT COUNT(*) FROM @TEMP) = 0
BEGIN
SELECT '0' as Result, @l_REQ_ID REQ_ID,'', '' , @p_REQ_CODE AS ErrorDesc
RETURN '0'
END
ELSE
BEGIN
SELECT '0' as Result, @l_REQ_ID REQ_ID,REF_ID, [TYPE] , @p_REQ_CODE AS ErrorDesc FROM @TEMP
RETURN '0'
END
ABORT:
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' AS Result ,'' REQ_ID, '' ErrorDesc
RETURN '-1'
End
ABORT1:
BEGIN
CLOSE ListGoods
DEALLOCATE ListGoods
CLOSE ListCostCenters
DEALLOCATE ListCostCenters
CLOSE ListCostCenters
DEALLOCATE ListCostCenters
ROLLBACK TRANSACTION
SELECT '-1' AS Result ,'' REQ_ID, '' ErrorDesc
RETURN '-1'
End
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Altering [dbo].[BUD_MASTER_Ins]'
GO
ALTER PROCEDURE [dbo].[BUD_MASTER_Ins]
@p_ASSET_ID varchar(15) = NULL,
@p_BUILDING_NAME nvarchar(1000) = NULL,
@p_BRANCH_ID varchar(15) = NULL,
@p_ADDRESS nvarchar(800) = NULL,
@p_OWNER_OR_RENT varchar(1) = NULL,
@p_NUM_FLOOR int = NULL,
@p_AREA numeric(18) = NULL,
@p_TOTAL_AREA numeric(18) = NULL,
@p_RENT_TOTAL_AREA numeric(18) = NULL,
@p_UTILZED_AREA numeric(18) = NULL,
@p_NOTES ntext = NULL,
@p_RECORD_STATUS varchar(1) = NULL,
@p_AUTH_STATUS varchar(1) = NULL,
@p_MAKER_ID varchar(15) = NULL,
@p_CREATE_DT VARCHAR(20) = NULL,
@p_CHECKER_ID varchar(15) = NULL,
@p_APPROVE_DT VARCHAR(20) = NULL,
@p_XML_TEMP xml = NULL,
@p_RENT_AMT DECIMAL(18,0) =NULL,
@p_DEPOSITS_AMT DECIMAL(18,0) =NULL,
@p_RENT_TIME int,
@p_IS_SEND_APPR VARCHAR(15),
@p_SEND_APPR_DT VARCHAR(20),
@p_SIGN_USER VARCHAR(15),
@p_SIGN_DT VARCHAR(15)
AS
/*
--Validation is here
DECLARE @ERRORSYS NVARCHAR(15) = ''
IF ( NOT EXISTS ( SELECT * FROM BUD_MASTER WHERE BUILDING_ID=@p_BUILDING_ID
SET @ERRORSYS = ''
IF @ERRORSYS <> ''
BEGIN
SELECT ErrorCode Result, '' BUILDING_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS
RETURN '0'
END
*/
BEGIN TRANSACTION
DECLARE @l_BUILDING_ID VARCHAR(15)
EXEC SYS_CodeMasters_Gen 'BUD_MASTER', @l_BUILDING_ID out
IF @l_BUILDING_ID='' OR @l_BUILDING_ID IS NULL GOTO ABORT
INSERT INTO BUD_MASTER([BUILDING_ID],[ASSET_ID],[BUILDING_NAME],[BRANCH_ID],[ADDRESS],[OWNER_OR_RENT],
[NUM_FLOOR],[AREA],[TOTAL_AREA],[RENT_TOTAL_AREA],[UTILZED_AREA],[NOTES],[RECORD_STATUS],
[AUTH_STATUS],[MAKER_ID],[CREATE_DT],[CHECKER_ID],[APPROVE_DT],[XML_TEMP],[RENT_AMT],[DEPOSITS_AMT],[RENT_TIME],[IS_SEND_APPR],[SEND_APPR_DT],
[SIGN_USER], [SIGN_DT]
)
VALUES(@l_BUILDING_ID ,@p_ASSET_ID ,@p_BUILDING_NAME ,@p_BRANCH_ID ,@p_ADDRESS ,
@p_OWNER_OR_RENT ,@p_NUM_FLOOR ,@p_AREA ,@p_TOTAL_AREA ,@p_RENT_TOTAL_AREA ,0 ,
@p_NOTES ,@p_RECORD_STATUS ,@p_AUTH_STATUS ,@p_MAKER_ID ,CONVERT(DATETIME, @p_CREATE_DT, 103) ,
@p_CHECKER_ID ,CONVERT(DATETIME, @p_APPROVE_DT, 103) ,@p_XML_TEMP,@p_RENT_AMT,@p_DEPOSITS_AMT,@p_RENT_TIME,@p_IS_SEND_APPR
, @p_SEND_APPR_DT ,@p_SIGN_USER,@p_SIGN_DT)
IF @@Error <> 0 GOTO ABORT
Declare @hdoc1 INT
DECLARE @d_BUILDING_AREA_ID VARCHAR(15),
@d_FLOOR_NO INT,
@d_FLOOR_AREA decimal,
@d_INTERNAL_AREA decimal,
@d_RENT_AREA decimal,
@d_UTILZED_AREA decimal,
@d_NOTES NVARCHAR(1000)
Exec sp_xml_preparedocument @hdoc1 Output,@p_XML_TEMP
DECLARE XmlDataDoc CURSOR FOR
SELECT *
FROM OPENXML(@hdoc1,'/Root/XmlData1',2)
WITH
(
BUILDING_AREA_ID VARCHAR(15),
FLOOR_NO INT,
FLOOR_AREA decimal,
INTERNAL_AREA decimal,
RENT_AREA decimal,
UTILZED_AREA decimal,
NOTES NVARCHAR(1000)
)
OPEN XmlDataDoc
FETCH NEXT FROM XmlDataDoc INTO
@d_BUILDING_AREA_ID ,
@d_FLOOR_NO ,
@d_FLOOR_AREA ,
@d_INTERNAL_AREA ,
@d_RENT_AREA ,
@d_UTILZED_AREA ,
@d_NOTES
WHILE @@FETCH_STATUS = 0
BEGIN
IF(LEN( @d_BUILDING_AREA_ID)=0)
EXEC SYS_CodeMasters_Gen 'BUD_AREA_DT', @d_BUILDING_AREA_ID out
IF @d_BUILDING_AREA_ID='' OR @d_BUILDING_AREA_ID IS NULL GOTO ABORT
INSERT INTO BUD_AREA_DT([BUILDING_AREA_ID],[BUILD_ID],[FLOOR_NO],[FLOOR_AREA],[INTERNAL_AREA],
[RENT_AREA],[UTILZED_AREA],[NOTES],[RECORD_STATUS],[AUTH_STATUS],[MAKER_ID],[CREATE_DT],[CHECKER_ID],[APPROVE_DT])
VALUES(@d_BUILDING_AREA_ID ,@l_BUILDING_ID ,@d_FLOOR_NO ,@d_FLOOR_AREA ,@d_INTERNAL_AREA ,@d_RENT_AREA ,
@d_UTILZED_AREA ,@d_NOTES,@p_RECORD_STATUS ,@p_AUTH_STATUS ,@p_MAKER_ID ,CONVERT(DATETIME, @p_CREATE_DT, 103) ,@p_CHECKER_ID ,CONVERT(DATETIME, @p_APPROVE_DT, 103) )
IF @@Error <> 0 GOTO ABORT
FETCH NEXT FROM XmlDataDoc INTO
@d_BUILDING_AREA_ID ,
@d_FLOOR_NO ,
@d_FLOOR_AREA ,
@d_INTERNAL_AREA ,
@d_RENT_AREA ,
@d_UTILZED_AREA ,
@d_NOTES
END
CLOSE XmlDataDoc
DEALLOCATE XmlDataDoc
-----**** UPDATE ------
--8/12/2021,datmq thêm UTILZED_AREA=(SELECT SUM(UTILZED_AREA))----
UPDATE BUD_MASTER
SET TOTAL_AREA = (SELECT SUM(FLOOR_AREA) FROM BUD_AREA_DT WHERE BUILD_ID=@l_BUILDING_ID)
WHERE BUILDING_ID=@l_BUILDING_ID
-- 29/12/2021:datmq Insert to table PL_PROCESS
INSERT INTO dbo.PL_PROCESS
(
REQ_ID,
PROCESS_ID,
CHECKER_ID,
APPROVE_DT,
PROCESS_DESC,
NOTES
)
VALUES
( @l_BUILDING_ID,
'INSERT',
@p_MAKER_ID,
GETDATE(),
N'Thêm mới quản lý trụ sở thành công' ,
N'Thêm mới quản lý trụ sở'
)
COMMIT TRANSACTION
SELECT '0' as Result, @l_BUILDING_ID BUILDING_ID, '' ErrorDesc
RETURN '0'
ABORT:
BEGIN
CLOSE XmlDataDoc
DEALLOCATE XmlDataDoc
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' BUILDING_ID, '' ErrorDesc
RETURN '-1'
End
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Altering [dbo].[PL_REQUEST_DOC_Upd]'
GO
ALTER PROCEDURE [dbo].[PL_REQUEST_DOC_Upd]
@p_REQ_ID VARCHAR(15)=NULL,
@p_REQ_CODE nvarchar(100) = NULL,
@p_REQ_NAME nvarchar(200) = NULL,
@p_REQ_DT NVARCHAR(20) = NULL,
@p_REQ_TYPE int = NULL,
@p_REQ_CONTENT NVARCHAR(1000)=NULL,
@p_REQ_REASON NVARCHAR(500)=NULL,
@p_TOTAL_AMT decimal = NULL,
@p_NOTES nvarchar(1000) = NULL,
@p_RECORD_STATUS varchar(1) = NULL,
@p_MAKER_ID varchar(20) = NULL,
@p_CREATE_DT NVARCHAR(20) = NULL,
@p_AUTH_STATUS varchar(50) = NULL,
@p_CHECKER_ID varchar(20) = NULL,
@p_APPROVE_DT NVARCHAR(20) = NULL,
@p_BRANCH_ID VARCHAR(15)=NULL,
@p_DVDM_ID VARCHAR(20) = NULL,
@p_REQ_PARENT_ID VARCHAR(20) = NULL,
@p_BRANCH_FEE NVARCHAR(500) = NULL,
@p_DEP_ID VARCHAR(20)=NULL,
@p_DEP_FEE_ID VARCHAR(20)= NULL,
@p_IS_BACKDAY BIT= NULL,
@p_REQ_LINE VARCHAR(20),
@p_SIGN_USER VARCHAR(20) = NULL,
@p_IS_CHECKALL BIT = NULL,
@p_BASED_CONTENT NVARCHAR(3000) = NULL,
@p_PL_BASED_ID VARCHAR(15)= NULL,
@p_ListGood XML,
@p_ListCostCenter XML,
@p_ListTransfer XML,
@p_ListAttachFile XML
AS
DECLARE @TEMP TABLE
(
[KEY] varchar(15),
[REF_ID] varchar(15),
[TYPE] varchar(50)
)
SET @p_CREATE_DT =convert(datetime,@p_CREATE_DT,103)
SET @p_APPROVE_DT=convert(datetime,@p_APPROVE_DT,103)
SET @p_REQ_DT = convert(datetime,@p_REQ_DT,103)
IF(@p_REQ_CODE IS NULL OR @p_REQ_CODE ='')
BEGIN
SELECT 'REQ-00001' Result, '' REQ_ID, N'Mã tờ trình chủ trương bắt buộc nhập' ErrorDesc
RETURN '-1'
END
IF EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE [REQ_CODE] = @p_REQ_CODE AND REQ_ID <> @p_REQ_ID)
BEGIN
SELECT ErrorCode Result, '' REQ_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = 'REQ-00001'
RETURN '-1'
END
DECLARE @sErrorCode VARCHAR(20)
BEGIN TRANSACTION
DECLARE @BRANCH_CREATE VARCHAR(20),@DEP_CREATE VARCHAR(20)
SET @BRANCH_CREATE= (SELECT TLSUBBRID FROM dbo.TL_USER WHERE TLNANME=@p_MAKER_ID)
SET @DEP_CREATE=(SELECT SECUR_CODE FROM dbo.TL_USER WHERE TLNANME=@p_MAKER_ID)
IF(EXISTS(SELECT * FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_CREATE AND BRANCH_TYPE='HS')
OR EXISTS(SELECT DEP_ID FROM dbo.CM_DEPARTMENT WHERE DEP_ID=@DEP_CREATE AND DEP_CODE LIKE '069%'))
SET @DEP_CREATE=(SELECT SECUR_CODE FROM dbo.TL_USER WHERE TLNANME=@p_MAKER_ID)
ELSE
SET @DEP_CREATE=''
SET @p_DEP_ID=@DEP_CREATE
SET @p_BRANCH_ID=@BRANCH_CREATE
IF(convert(datetime,@p_REQ_DT,103) < CAST(GETDATE() AS DATE))
SET @p_IS_BACKDAY=1;
ELSE
SET @p_IS_BACKDAY=0
UPDATE dbo.PL_REQUEST_DOC
SET REQ_CODE=@p_REQ_CODE,REQ_NAME=@p_REQ_NAME,REQ_TYPE=@p_REQ_TYPE,REQ_CONTENT=@p_REQ_CONTENT,REQ_REASON=@p_REQ_REASON,RECORD_STATUS=@p_RECORD_STATUS
,BRANCH_ID=@p_BRANCH_ID,TOTAL_AMT=@p_TOTAL_AMT,NOTES=@p_NOTES,MAKER_ID=@p_MAKER_ID,CHECKER_ID=@p_CHECKER_ID,APPROVE_DT=@p_APPROVE_DT,AUTH_STATUS=@p_AUTH_STATUS,DVDM_APP_ID=@p_DVDM_ID
,REQ_PARENT_ID=@p_REQ_PARENT_ID,BRANCH_FEE=@p_BRANCH_FEE,IS_BACKDAY=@p_IS_BACKDAY,DEP_ID=@p_DEP_ID,DEP_FEE=@p_DEP_FEE_ID,REQ_LINE=@p_REQ_LINE,SIGN_USER = @p_SIGN_USER,IS_CHECKALL=@p_IS_CHECKALL,BASED_CONTENT=@p_BASED_CONTENT,
PL_BASED_ID =@p_PL_BASED_ID
WHERE REQ_ID=@p_REQ_ID
DELETE FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID
DELETE FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID
DELETE FROM dbo.PL_REQUEST_COSTCENTER WHERE REQ_ID=@p_REQ_ID
IF @@Error <> 0 GOTO ABORT
--Insert into TABLE PL_REQUEST_DOC_DT
DECLARE @TABLE TABLE(
PLAN_ID varchar(15) ,
TRADE_ID varchar(15) ,
GOODS_ID varchar(15) ,
[DESCRIPTION] nvarchar(4000),
UNIT_ID varchar(15) ,
QUANTITY decimal(18,0) ,
PRICE decimal(18,2) ,
TOTAL_AMT decimal(18,2),
NOTES nvarchar(4000),
REQDT_TYPE VARCHAR(1),
NAME NVARCHAR(500),
DVDM_ID VARCHAR(20),
HH_ID VARCHAR(20),
CURRENCY nvarchar(50),
EXCHANGE_RATE decimal(18,2),
TAXES decimal(18, 2),
SUP_ID VARCHAR(20),
TRADE_TYPE VARCHAR(20),
KHOI_ID VARCHAR(20),
UNIT_NAME NVARCHAR(200), SUP_NAME NVARCHAR(250)
)
--Insert into TABLE PL_REQUEST_DOC_DT
Declare @hdoc INT
Exec sp_xml_preparedocument @hdoc Output,@p_ListGood
INSERT INTO @TABLE
SELECT PLAN_ID,
TRADE_ID,
GOODS_ID,
DESCRIPTION,
UNIT_ID,
QUANTITY,
PRICE,
TOTAL_AMT,
NOTES,
REQDT_TYPE,
NAME,
DVDM_ID,
HH_ID,
CURRENCY,
EXCHANGE_RATE,
TAXES,
SUP_ID,
TRADE_TYPE,
KHOI_ID,UNIT_NAME, SUP_NAME
FROM OPENXML(@hDoc,'/Root/ListGood',2)
WITH
(
PLAN_ID varchar(15) ,
TRADE_ID varchar(15) ,
GOODS_ID varchar(15) ,
[DESCRIPTION] nvarchar(4000),
UNIT_ID varchar(15) ,
QUANTITY decimal(18,0) ,
PRICE decimal(18,2) ,
TOTAL_AMT decimal(18,2),
NOTES nvarchar(4000),
REQDT_TYPE VARCHAR(1),
NAME NVARCHAR(4000),
DVDM_ID VARCHAR(20),
HH_ID VARCHAR(20),
CURRENCY nvarchar(50),
EXCHANGE_RATE decimal(18,2),
TAXES decimal(18, 2),
SUP_ID VARCHAR(20),
TRADE_TYPE VARCHAR(20),
KHOI_ID VARCHAR(20),
UNIT_NAME NVARCHAR(200),
SUP_NAME NVARCHAR(200)
)
DECLARE @TABLE_TRANSFER TABLE (
FR_PLAN_ID varchar(15),
FR_TRADE_ID varchar(15),
FR_GOOD_ID varchar(15),
FR_BRN_ID varchar(15),
TO_BRN_ID varchar(15),
TO_PLAN_ID varchar(15),
TO_TRADE_ID varchar(15),
TO_GOOD_ID varchar(15),
QTY DECIMAL(18,0),
TOTAL_AMT decimal(18),
NOTES nvarchar(1000),
FR_DEP_ID VARCHAR(20),
TO_DEP_ID VARCHAR(20),
FR_DVDM_ID VARCHAR(20),
TO_DVDM_ID VARCHAR(20),
FR_KHOI_ID VARCHAR(20),
TO_KHOI_ID VARCHAR(20),
FR_GD_TYPE VARCHAR(20),
TO_GD_TYPE VARCHAR(20),
FR_AMT_REMAIN decimal(18),
FR_AMT_REMAIN_ETM_TF decimal(18)
)
Exec sp_xml_preparedocument @hdoc Output,@p_ListTransfer
INSERT INTO @TABLE_TRANSFER
SELECT FR_PLAN_ID,
FR_TRADE_ID,
FR_GOOD_ID,
FR_BRN_ID,
TO_BRN_ID,
TO_PLAN_ID,
TO_TRADE_ID,
TO_GOOD_ID,
QTY,
TOTAL_AMT,
NOTES,
FR_DEP_ID,
TO_DEP_ID,
FR_DVDM_ID,
TO_DVDM_ID,
FR_KHOI_ID,
TO_KHOI_ID,
FR_GD_TYPE,
TO_GD_TYPE,
FR_AMT_REMAIN,
FR_AMT_REMAIN_ETM_TF
FROM OPENXML(@hdoc,'/Root/ListTransfer',2)
WITH
(
FR_PLAN_ID varchar(15),
FR_TRADE_ID varchar(15),
FR_GOOD_ID varchar(15),
FR_BRN_ID varchar(15),
TO_BRN_ID varchar(15),
TO_PLAN_ID varchar(15),
TO_TRADE_ID varchar(15),
TO_GOOD_ID varchar(15),
QTY DECIMAL(18,0),
TOTAL_AMT decimal(18),
NOTES nvarchar(1000),
FR_DEP_ID VARCHAR(20),
TO_DEP_ID VARCHAR(20),
FR_DVDM_ID VARCHAR(20),
TO_DVDM_ID VARCHAR(20),
FR_KHOI_ID VARCHAR(20),
TO_KHOI_ID VARCHAR(20),
FR_GD_TYPE VARCHAR(20),
TO_GD_TYPE VARCHAR(20),
FR_AMT_REMAIN DECIMAL(18),
FR_AMT_REMAIN_ETM_TF DECIMAL(18)
)
--WHERE FR_BRN_ID !='' AND FR_BRN_ID IS NOT NULL
DECLARE ListGoods CURSOR FOR
SELECT PLAN_ID,
TRADE_ID,
GOODS_ID,
DESCRIPTION,
UNIT_ID,
QUANTITY,
PRICE,
TOTAL_AMT,
NOTES,
REQDT_TYPE,
NAME,
DVDM_ID,
HH_ID,
CURRENCY,
EXCHANGE_RATE,
TAXES,
SUP_ID,
TRADE_TYPE,KHOI_ID,UNIT_NAME,SUP_NAME FROM @TABLE
OPEN ListGoods
Declare
@PLAN_ID varchar(15),
@TRADE_ID varchar(15),
@GOODS_ID varchar(15),
@DESCRIPTION nvarchar(4000),
@UNIT_ID varchar(15),
@QUANTITY decimal(18),
@PRICE decimal(18,2),
@TOTAL_AMT decimal(18,2),
@NOTES nvarchar(4000),
@REQDT_TYPE VARCHAR(1),
@NAME NVARCHAR(4000),
@DVDM_ID VARCHAR(20),
@HH_ID VARCHAR(20),
@CURRENCY nvarchar(50),
@EXCHANGE_RATE decimal(18, 2),
@TAXES decimal(18, 2),
@SUP_ID VARCHAR(20),
@TRADE_TYPE VARCHAR(20),
@KHOI_ID VARCHAR(20),
@UNIT_NAME NVARCHAR(200),
@SUP_NAME NVARCHAR(200),
@l_SUP_ID VARCHAR(15)
FETCH NEXT FROM ListGoods INTO @PLAN_ID,@TRADE_ID,@GOODS_ID,@DESCRIPTION,@UNIT_ID,@QUANTITY,
@PRICE,@TOTAL_AMT,@NOTES, @REQDT_TYPE, @NAME,@DVDM_ID,@HH_ID,@CURRENCY,@EXCHANGE_RATE,@TAXES,@SUP_ID,@TRADE_TYPE,@KHOI_ID,@UNIT_NAME,@SUP_NAME
WHILE @@FETCH_STATUS = 0
BEGIN
-- KIEM TRA NEU HINH THUC CHI DINH THAU LA THEO QUY DINH VCCB THI KHONG CHO PHEP CHON NHA CUNG CAP
--IF(@TRADE_TYPE IS NOT NULL AND @TRADE_TYPE <>'' AND @TRADE_TYPE ='VCCB' AND (@SUP_ID IS NOT NULL AND @SUP_ID <>''))
--BEGIN
-- SELECT 'REQ-00001' Result, '' REQ_ID, N'Nếu hình thức mua sắm theo quy định VCCB thì bạn không được phép chọn nhà cung cấp. Vui lòng để trống nhà cung cấp' ErrorDesc
-- ROLLBACK TRANSACTION
-- RETURN '-1'
--END
--- THEM NHA CUNG CAP
--IF(@SUP_NAME IS NOT NULL AND @SUP_NAME <>'')
--BEGIN
--IF(NOT EXISTS(SELECT * FROM CM_SUPPLIER WHERE SUP_NAME =@SUP_NAME))
--BEGIN
-- EXEC SYS_CodeMasters_Gen 'CM_SUPPLIER', @l_SUP_ID out
-- IF @l_SUP_ID='' OR @l_SUP_ID IS NULL GOTO ABORT
-- INSERT INTO CM_SUPPLIER([DISCIPLINES],[SUP_ID],[SUP_CODE],[SUP_NAME],[SUP_TYPE_ID],[REGION_ID],[ADDR],[EMAIL],[TAX_NO],[TEL],[CONTACT_PERSON],[NOTES],[RECORD_STATUS],[MAKER_ID],[CREATE_DT],[AUTH_STATUS],[CHECKER_ID],[APPROVE_DT],ACC_NUM)
-- VALUES('', @l_SUP_ID ,@l_SUP_ID ,@SUP_NAME ,NULL ,NULL ,'' ,'' ,'' ,'' ,'' ,'' ,'1' ,@p_MAKER_ID ,CONVERT(DATETIME, @p_CREATE_DT, 103) ,'U' ,NULL,NULL,NULL)
-- SET @SUP_ID =@l_SUP_ID
--END
--ELSE
--BEGIN
--SET @l_SUP_ID =(SELECT TOP 1 SUP_ID FROM CM_SUPPLIER WHERE SUP_NAME =@SUP_NAME)
--IF(@l_SUP_ID <> '' AND @SUP_ID IS NOT NULL)
--BEGIN
-- SET @SUP_ID =@l_SUP_ID
--END
--END
--END
--END
-------
DECLARE @l_REQDT_ID VARCHAR(15)
EXEC SYS_CodeMasters_Gen 'PL_REQUEST_DOC_DT', @l_REQDT_ID out
IF @l_REQDT_ID='' OR @l_REQDT_ID IS NULL GOTO ABORT
--SET @TOTAL_AMT=(@PRICE * @QUANTITY * @EXCHANGE_RATE) + (@TAXES * @EXCHANGE_RATE)
INSERT INTO dbo.PL_REQUEST_DOC_DT
(
REQDT_ID,
REQ_ID,
PLAN_ID,
TRADE_ID,
GOODS_ID,
NAME,
DESCRIPTION,
REQDT_TYPE,
UNIT_ID,
QUANTITY,
PRICE,
TOTAL_AMT,
RECORD_STATUS,
MAKER_ID,
CREATE_DT,
AUTH_STATUS,
CHECKER_ID,
APPROVE_DT,
DVDM_ID,
HANGHOA_ID,
CURRENCY,
EXCHANGE_RATE,
TAXES,SUP_ID,TRADE_TYPE,KHOI_ID,UNIT_NAME
)
VALUES
( @l_REQDT_ID, -- REQDT_ID - varchar(15)
@p_REQ_ID, -- REQ_ID - varchar(15)
@PLAN_ID, -- PLAN_ID - varchar(15)
@TRADE_ID, -- TRADE_ID - varchar(15)
@GOODS_ID, -- GOODS_ID - varchar(15)
@NOTES, -- NAME - nvarchar(200)
@DESCRIPTION, -- DESCRIPTION - nvarchar(500)
@REQDT_TYPE, -- REQDT_TYPE - varchar(1)
@UNIT_ID, -- UNIT_ID - varchar(15)
@QUANTITY, -- QUANTITY - decimal(18, 0)
@PRICE, -- PRICE - decimal(18, 0)
@TOTAL_AMT, -- TOTAL_AMT - decimal(18, 0)
@p_RECORD_STATUS, -- RECORD_STATUS - varchar(1)
@p_MAKER_ID, -- MAKER_ID - varchar(15)
convert(datetime,@p_CREATE_DT,103) , -- CREATE_DT - datetime
@p_AUTH_STATUS, -- AUTH_STATUS - varchar(50)
@p_CHECKER_ID, -- CHECKER_ID - varchar(15)
convert(datetime,@p_APPROVE_DT,103), -- APPROVE_DT - datetime
@DVDM_ID,
@HH_ID,
@CURRENCY,
@EXCHANGE_RATE,
@TAXES,@SUP_ID,@TRADE_TYPE,@KHOI_ID,@UNIT_NAME
)
IF @@ERROR <> 0 GOTO ABORT1
-- next Group_Id
FETCH NEXT FROM ListGoods INTO @PLAN_ID,@TRADE_ID,@GOODS_ID,@DESCRIPTION,@UNIT_ID,@QUANTITY,
@PRICE,@TOTAL_AMT,@NOTES, @REQDT_TYPE, @NAME,@DVDM_ID,@HH_ID,@CURRENCY,@EXCHANGE_RATE,@TAXES,@SUP_ID,@TRADE_TYPE,@KHOI_ID,@UNIT_NAME,@SUP_NAME
END
CLOSE ListGoods
DEALLOCATE ListGoods
IF @@Error <> 0 GOTO ABORT
--Insert into TABLE PL_REQUEST_DOC_DT
UPDATE dbo.PL_REQUEST_DOC SET TOTAL_AMT = (SELECT SUM(TOTAL_AMT) FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID =@p_REQ_ID) WHERE PL_REQUEST_DOC.REQ_ID=@p_REQ_ID
DECLARE ListTransfers CURSOR FOR
SELECT *
FROM @TABLE_TRANSFER
OPEN ListTransfers
Declare
@FR_PLAN_ID varchar(15),
@FR_TRADE_ID varchar(15),
@FR_GOOD_ID varchar(15),
@FR_BRN_ID varchar(15),
@TO_BRN_ID varchar(15),
@TO_PLAN_ID varchar(15),
@TO_TRADE_ID varchar(15),
@TO_GOOD_ID varchar(15),
@QTY DECIMAL(18,0),
@FR_DEP_ID VARCHAR(20),
@TO_DEP_ID VARCHAR(20),
@FR_DVDM_ID VARCHAR(20),
@TO_DVDM_ID VARCHAR(20),
@FR_KHOI_ID VARCHAR(20),
@TO_KHOI_ID VARCHAR(20),
@FR_GD_TYPE VARCHAR(20),
@TO_GD_TYPE VARCHAR(20),
@FR_AMT_REMAIN decimal(18),
@FR_AMT_REMAIN_ETM_TF decimal(18)
FETCH NEXT FROM ListTransfers INTO @FR_PLAN_ID,@FR_TRADE_ID,@FR_GOOD_ID,@FR_BRN_ID,@TO_BRN_ID,@TO_PLAN_ID,
@TO_TRADE_ID,@TO_GOOD_ID,@QTY,@TOTAL_AMT, @NOTES,@FR_DEP_ID,@TO_DEP_ID,@FR_DVDM_ID,@TO_DVDM_ID,@FR_KHOI_ID,@TO_KHOI_ID,@FR_GD_TYPE,@TO_GD_TYPE,@FR_AMT_REMAIN,@FR_AMT_REMAIN_ETM_TF
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE @l_REQ_TRANSFER_ID VARCHAR(15)
EXEC SYS_CodeMasters_Gen 'PL_REQUEST_TRANSFER', @l_REQ_TRANSFER_ID out
IF @l_REQ_TRANSFER_ID='' OR @l_REQ_TRANSFER_ID IS NULL GOTO ABORT
INSERT INTO dbo.PL_REQUEST_TRANSFER
(
REQ_TRANSFER_ID,
REQ_DOC_ID,
FR_PLAN_ID,
FR_TRADE_ID,
FR_GOOD_ID,
FR_BRN_ID,
TO_BRN_ID,
TO_PLAN_ID,
TO_TRADE_ID,
TO_GOOD_ID,
QTY,
TOTAL_AMT,
NOTES,
AUTH_STATUS,
MAKER_ID,
CREATE_DT,
CHECKER_ID,
APPROVE_DT,
FR_DEP_ID,
TO_DEP_ID,
FR_DVDM_ID,
TO_DVDM_ID,
FR_KHOI_ID,
TO_KHOI_ID,
FR_AMT_EXE,
FR_AMT_ETM
)
VALUES
( @l_REQ_TRANSFER_ID, -- REQ_TRANSFER_ID - varchar(15)
@p_REQ_ID, -- REQ_DOC_ID - varchar(15)
@FR_PLAN_ID, -- FR_PLAN_ID - varchar(15)
@FR_TRADE_ID, -- FR_TRADE_ID - varchar(15)
@FR_GOOD_ID, -- FR_GOOD_ID - varchar(15)
@FR_BRN_ID, -- FR_BRN_ID - varchar(15)
@TO_BRN_ID, -- TO_BRN_ID - varchar(15)
@TO_PLAN_ID, -- TO_PLAN_ID - varchar(15)
@TO_TRADE_ID, -- TO_TRADE_ID - varchar(15)
@TO_GOOD_ID, -- TO_GOOD_ID - varchar(15)
@QTY, -- QTY - decimal(18, 0)
@TOTAL_AMT, -- TOTAL_AMT - decimal(18, 0)
@NOTES, -- NOTES - nvarchar(500)
@p_AUTH_STATUS, -- AUTH_STATUS - varchar(1)
@p_MAKER_ID, -- MAKER_ID - varchar(15)
convert(datetime,@p_CREATE_DT,103), -- CREATE_DT - datetime
@p_CHECKER_ID, -- CHECKER_ID - varchar(15)
convert(datetime,@p_APPROVE_DT,103),
@FR_DEP_ID,
@TO_DEP_ID,
@FR_DVDM_ID,
@TO_DVDM_ID,
@FR_KHOI_ID,
@TO_KHOI_ID, -- APPROVE_DT - datetime
@FR_AMT_REMAIN ,
@FR_AMT_REMAIN_ETM_TF
)
IF @@ERROR <> 0 GOTO ABORT1
-- next Group_Id
FETCH NEXT FROM ListTransfers INTO @FR_PLAN_ID,@FR_TRADE_ID,@FR_GOOD_ID,@FR_BRN_ID,@TO_BRN_ID,@TO_PLAN_ID,
@TO_TRADE_ID,@TO_GOOD_ID,@QTY,@TOTAL_AMT, @NOTES,@FR_DEP_ID,@TO_DEP_ID,@FR_DVDM_ID,@TO_DVDM_ID,@FR_KHOI_ID,@TO_KHOI_ID,@FR_GD_TYPE,@TO_GD_TYPE,@FR_AMT_REMAIN,@FR_AMT_REMAIN_ETM_TF
END
CLOSE ListTransfers
DEALLOCATE ListTransfers
IF @@Error <> 0 GOTO ABORT
--Insert into TABLE PL_REQUEST_DOC_DT
Exec sp_xml_preparedocument @hdoc Output,@p_ListCostCenter
DECLARE ListCostCenters CURSOR FOR
SELECT *
FROM OPENXML(@hDoc,'/Root/ListCostCenter',2)
WITH
(
COST_ID varchar(15),
NOTES nvarchar(1000)
)
WHERE COST_ID <>'DVDM-CHUNG'
OPEN ListCostCenters
Declare
@COST_ID varchar(15)
FETCH NEXT FROM ListCostCenters INTO @COST_ID, @NOTES
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE @l_REQ_COST_ID VARCHAR(15)
EXEC SYS_CodeMasters_Gen 'PL_REQUEST_COSTCENTER', @l_REQ_COST_ID out
IF @l_REQ_COST_ID='' OR @l_REQ_COST_ID IS NULL GOTO ABORT
INSERT INTO dbo.PL_REQUEST_COSTCENTER
(
REQ_COST_ID,
COST_ID,
REQ_ID,
NOTES,
AUTH_STATUS,
MAKER_ID,
CREATE_DT,
CHECKER_ID,
APPROVE_DT
)
VALUES
( @l_REQ_COST_ID, -- REQ_COST_ID - varchar(15)
@COST_ID, -- COST_ID - varchar(15)
@p_REQ_ID, -- REQ_ID - varchar(15)
@NOTES, -- NOTES - nvarchar(500)
@p_AUTH_STATUS, -- AUTH_STATUS - varchar(1)
@p_MAKER_ID, -- MAKER_ID - varchar(15)
convert(datetime,@p_CREATE_DT,103) , -- CREATE_DT - datetime
@p_CHECKER_ID, -- CHECKER_ID - varchar(15)
convert(datetime,@p_APPROVE_DT,103) -- APPROVE_DT - datetime
)
IF @@ERROR <> 0 GOTO ABORT1
-- next Group_Id
FETCH NEXT FROM ListCostCenters INTO @COST_ID, @NOTES
END
CLOSE ListCostCenters
DEALLOCATE ListCostCenters
-- Insert into TABLE PL_REQUEST_DOC_FILE
DECLARE @tableAttachFile TABLE(
PL_REQUEST_DOC_FILE_ID varchar(20) ,
IS_VIEW bit,
REQ_ID varchar(20),
NOTES nvarchar(200)
)
Declare @fdoc INT
Exec sp_xml_preparedocument @fdoc Output,@p_ListAttachFile
INSERT INTO @tableAttachFile
SELECT *
FROM OPENXML(@fDoc,'/Root/ListAttachFile',2)
WITH
(
PL_REQUEST_DOC_FILE_ID varchar(20) ,
IS_VIEW bit,
REQ_ID varchar(20),
NOTES nvarchar(200)
)
DELETE PL_REQUEST_DOC_FILE WHERE PL_REQUEST_DOC_FILE_ID NOT IN (SELECT PL_REQUEST_DOC_FILE_ID from @tableAttachFile) and REQ_ID = @p_REQ_ID
DECLARE ListAttachFile CURSOR FOR
SELECT * FROM @tableAttachFile
OPEN ListAttachFile
Declare
@PL_REQUEST_DOC_FILE_ID varchar(20) ,
@IS_VIEW bit,
@REQ_ID varchar(20),
@_NOTES nvarchar(200)
FETCH NEXT FROM ListAttachFile INTO @PL_REQUEST_DOC_FILE_ID,@IS_VIEW,@REQ_ID,@_NOTES
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE @l_File_ID VARCHAR(15)
EXEC SYS_CodeMasters_Gen 'PL_REQUEST_DOC_FILE', @l_File_ID out
IF @l_File_ID='' OR @l_File_ID IS NULL GOTO ABORT
IF(SELECT COUNT(*) from PL_REQUEST_DOC_FILE where PL_REQUEST_DOC_FILE_ID = @PL_REQUEST_DOC_FILE_ID ) > 0
BEGIN
UPDATE PL_REQUEST_DOC_FILE set IS_VIEW = isnull(@IS_VIEW,0),REQ_ID = @p_REQ_ID,NOTES=@_NOTES WHERE PL_REQUEST_DOC_FILE_ID = @PL_REQUEST_DOC_FILE_ID
END
ELSE
BEGIN
INSERT INTO @TEMP([REF_ID],[TYPE]) VALUES (@l_File_ID, 'PL_REQUEST_DOC_FILE')
INSERT INTO dbo.PL_REQUEST_DOC_FILE
(
[PL_REQUEST_DOC_FILE_ID]
,[IS_VIEW]
,[REQ_ID]
,[NOTES]
)
VALUES
(
@l_File_ID
,isnull(@IS_VIEW,0)
,@p_REQ_ID
,@_NOTES
)
END
IF @@ERROR <> 0 GOTO ABORT1
FETCH NEXT FROM ListAttachFile INTO @PL_REQUEST_DOC_FILE_ID,@IS_VIEW,@REQ_ID,@_NOTES
END
CLOSE ListAttachFile
DEALLOCATE ListAttachFile
IF @@Error <> 0 GOTO ABORT
--IF (SELECT COUNT(*) FROM @TEMP) = 0
-- INSERT INTO @TEMP([REF_ID],[TYPE]) VALUES (@l_File_ID, 'PL_REQUEST_DOC_FILE')
COMMIT TRANSACTION
IF (SELECT COUNT(*) FROM @TEMP) = 0
BEGIN
SELECT '0' as Result, @p_REQ_ID REQ_ID,'', '' , @p_REQ_CODE AS ErrorDesc
RETURN '0'
END
ELSE
BEGIN
SELECT '0' as Result, @p_REQ_ID REQ_ID,REF_ID, [TYPE] , @p_REQ_CODE AS ErrorDesc FROM @TEMP
RETURN '0'
END
ABORT:
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' AS Result, '' REQ_ID, '' ErrorDesc
RETURN '-1'
End
ABORT1:
BEGIN
CLOSE ListGoods
DEALLOCATE ListGoods
CLOSE ListCostCenters
DEALLOCATE ListCostCenters
CLOSE ListCostCenters
DEALLOCATE ListCostCenters
ROLLBACK TRANSACTION
SELECT '-1' AS Result, '' REQ_ID, '' ErrorDesc
RETURN '-1'
End
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Altering [dbo].[REAL_ESTATE_R_H_Search]'
GO
ALTER PROCEDURE [dbo].[REAL_ESTATE_R_H_Search]
@p_RET_R_H_ID varchar(15)=NULL,
@p_BRANCH_MANAGE varchar(15)=NULL,
@p_BRANCH_USE varchar(15)=NULL,
@p_BRANCH_LOGIN varchar(15)=NULL,
@p_BRANCH_CREATE varchar(15)=NULL,
@p_RET_ADDR nvarchar(MAX)=NULL,
@p_RET_R_H_TIME decimal=NULL,
@p_START_DT VARCHAR(20)=NULL,
@p_R_LAND_SQUARE decimal=NULL,
@p_SCALE NVARCHAR(500)=NULL,
@p_CONSTRUCT_SQUARE decimal=NULL,
@p_DEPOSIT varchar(1)=NULL,
@p_DEPOSIT_PRICE decimal=NULL,
@p_DEPOSIT_RETURN_DT VARCHAR(500)=NULL,
@p_PURCHASE_EACH_TERM NVARCHAR(500)=NULL,
@p_NOTES nvarchar(1000)=NULL,
@p_RECORD_STATUS varchar(1)=NULL,
@p_AUTH_STATUS varchar(1)=NULL,
@p_MAKER_ID varchar(15)=NULL,
@p_CREATE_DT VARCHAR(20)=NULL,
@p_CHECKER_ID varchar(15)=NULL,
@p_APPROVE_DT VARCHAR(20)=NULL,
@p_LEVEL VARCHAR(50) = 'UNIT'
AS
BEGIN -- PAGING
declare @tmp table(BRANCH_ID varchar(15))
insert into @tmp SELECT BRANCH_ID FROM [dbo].[CM_BRANCH_GETCHILDID](@p_BRANCH_LOGIN)
DECLARE @TODATE DATETIME = GETDATE()
-- PAGING BEGIN
SELECT A.*,
BRMN.BRANCH_NAME BRANCH_MANAGE_NAME,
BR_USE.BRANCH_NAME BRANCH_USE_NAME,
BRNC.BRANCH_NAME BRANCH_CREATE_NAME,
PR.PRICE RET_PRICE,
AUTH.AUTH_STATUS_NAME
-- SELECT END
FROM REAL_ESTATE_R_H AS A
LEFT JOIN dbo.CM_BRANCH BRNC ON BRNC.BRANCH_ID = A.BRANCH_CREATE
LEFT JOIN CM_BRANCH BRMN ON BRMN.BRANCH_ID = A.BRANCH_MANAGE
--------BAODNQ: 7/2/2022: Kết thêm giá trị-----------
LEFT JOIN CM_BRANCH BR_USE ON BR_USE.BRANCH_ID = A.BRANCH_USE
LEFT JOIN dbo.CM_AUTH_STATUS AUTH ON AUTH.AUTH_STATUS = A.AUTH_STATUS
LEFT JOIN
(
SELECT * FROM
(
SELECT *, ROW_NUMBER() OVER (PARTITION BY RET_R_H_ID ORDER BY A.PRICE_END_DT DESC) AS rn
FROM RET_PRICE A
WHERE PRICE_END_DT IS NOT NULL
AND PRICE_DT < @TODATE
) PRICE
WHERE RN = 1
)
PR ON PR.RET_R_H_ID = A.RET_R_H_ID
WHERE (@p_RET_R_H_ID IS NULL OR @p_RET_R_H_ID='' OR A.RET_R_H_ID = @p_RET_R_H_ID)
AND (@p_BRANCH_MANAGE IS NULL OR @p_BRANCH_MANAGE='' OR A.BRANCH_MANAGE LIKE '%' + @p_BRANCH_MANAGE + '%')
AND (@p_BRANCH_USE IS NULL OR @p_BRANCH_USE='' OR A.BRANCH_USE LIKE '%' + @p_BRANCH_USE + '%')
AND (@p_RET_ADDR IS NULL OR @p_RET_ADDR='' OR A.RET_ADDR LIKE N'%' + @p_RET_ADDR + '%')
AND (@p_RET_R_H_TIME IS NULL OR A.RET_R_H_TIME = @p_RET_R_H_TIME)
AND (@p_START_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.START_DT,CONVERT(datetime, @p_START_DT,103)) = 0)
AND (@p_R_LAND_SQUARE IS NULL OR A.R_LAND_SQUARE = @p_R_LAND_SQUARE)
AND (@p_SCALE IS NULL OR A.SCALE = @p_SCALE)
AND (@p_CONSTRUCT_SQUARE IS NULL OR A.CONSTRUCT_SQUARE = @p_CONSTRUCT_SQUARE)
AND (@p_DEPOSIT IS NULL OR @p_DEPOSIT='' OR A.DEPOSIT = @p_DEPOSIT)
AND (@p_DEPOSIT_PRICE IS NULL OR A.DEPOSIT_PRICE = @p_DEPOSIT_PRICE)
AND (@p_DEPOSIT_RETURN_DT IS NULL OR A.DEPOSIT_RETURN_DT LIKE '%' + @p_DEPOSIT_RETURN_DT + '%')
AND (@p_PURCHASE_EACH_TERM IS NULL OR @p_PURCHASE_EACH_TERM = '' OR A.PURCHASE_EACH_TERM = @p_PURCHASE_EACH_TERM)
AND (@p_NOTES IS NULL OR @p_NOTES='' OR A.NOTES LIKE N'%' + @p_NOTES + '%')
AND (@p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS='' OR A.RECORD_STATUS = @p_RECORD_STATUS)
AND (@p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS='' OR A.AUTH_STATUS = @p_AUTH_STATUS)
AND (@p_MAKER_ID IS NULL OR @p_MAKER_ID='' OR A.MAKER_ID = @p_MAKER_ID)
AND (@p_CREATE_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_CREATE_DT,103)) = 0)
AND (@p_CHECKER_ID IS NULL OR @p_CHECKER_ID='' OR A.CHECKER_ID = @p_CHECKER_ID)
AND (@p_APPROVE_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.APPROVE_DT,CONVERT(datetime, @p_APPROVE_DT,103)) = 0)
AND (
(@p_BRANCH_LOGIN = '' OR @p_BRANCH_LOGIN IS NULL)
OR (@P_LEVEL = 'ALL' AND A.BRANCH_CREATE IN (SELECT BRANCH_ID from @tmp))
OR ((@P_LEVEL = 'UNIT' AND A.BRANCH_CREATE = @p_BRANCH_LOGIN)
))
ORDER BY A.CREATE_DT DESC
-- PAGING END
END -- PAGING
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Altering [dbo].[TR_ROLE_NOTIFI_ID]'
GO
ALTER PROCEDURE [dbo].[TR_ROLE_NOTIFI_ID]
@PO_ID varchar(500),
@TYPE VARCHAR(100)
AS
PRINT @TYPE
DECLARE
@BRANCH_CREATE VARCHAR(15),
@DEP_CREATE VARCHAR(15),
@BRANCH_TYPE VARCHAR(15),
@FATHER_ID VARCHAR(15),
@FLAG VARCHAR(1), -- FLAG = 1: THANH TOÁN / TẠM ỨNG
@AUTH_STATUS VARCHAR(10),
@PROCESS VARCHAR(10),
@MAKER_ID VARCHAR(15),
@DEP_CODE VARCHAR(15),
@NV_XL_MS VARCHAR(15)
DECLARE @ROLE_CURRENT VARCHAR(15), @USER_RECIVE_MAIL VARCHAR(15), @REQ_TYPE VARCHAR(15)
DECLARE @l_LST_REQ_ID TABLE (
[ID] [int] IDENTITY(1,1) NOT NULL,
[REQ_PAY_ID] [VARCHAR](50) NULL)
INSERT INTO @l_LST_REQ_ID SELECT VALUE FROM WSISPLIT(@PO_ID,',')
DECLARE @LST_POID TABLE(ID VARCHAR(15))
DECLARE @LST_USER_RECIVE TABLE (TLNAME VARCHAR(10))
--- DECLARE TABLE NHAN DU LIEU LA USER NAME DANG O BUOC PHE DUYET HIEN TAI
DECLARE @PL_PROCESS_CURRENT_SEARCH_TEMP TABLE
(
REQ_ID varchar(15),
PROCESS_ID varchar(10),
DVDM_NAME nvarchar(500),
TLNAME nvarchar(255),
TLFullName nvarchar(255),
NOTES nvarchar(500)
)
-----BAODNQ 5/1/2021 : Thêm gửi mail cho GDDV, TP, PP----------
DECLARE @p_MAKER_ID VARCHAR(15), @p_ROLE_ID VARCHAR(15), @p_ROLE_NAME VARCHAR(15)
DECLARE @LST_ROLE TABLE(ROLE_ID VARCHAR(15), ROLE_NAME VARCHAR(15))
--------------------------
IF @TYPE = 'PO'
BEGIN
INSERT INTO @LST_POID VALUES(@PO_ID)
SET @FLAG = 0
END ELSE
IF @TYPE = 'USE'
BEGIN
INSERT INTO @LST_POID SELECT B.PO_ID
FROM ASS_MASTER_PO B WHERE B.ASSET_ID = (SELECT A.ASSET_ID FROM ASS_USE A WHERE A.USE_ID = @PO_ID)
SET @FLAG = 0
END ELSE
IF @TYPE = 'USE_MUILT'
BEGIN
INSERT INTO @LST_POID SELECT B.PO_ID
FROM ASS_MASTER_PO B WHERE B.ASSET_ID IN (SELECT A.ASSET_ID FROM ASS_USE_MULTI_DT A WHERE A.USER_MASTER_ID = @PO_ID)
GROUP BY B.PO_ID
SET @FLAG = 0
END ELSE
IF @TYPE = 'USE_ADDNEW'
BEGIN
INSERT INTO @LST_POID SELECT B.PO_ID
FROM ASS_ADDNEW_PO B WHERE B.ADDNEW_ID = @PO_ID
SET @FLAG = 0
END
-- Tạm ứng
ELSE IF (@TYPE = 'TR_REQ_ADVANCE_PAYMENT_SEND_APR')
BEGIN
SET @AUTH_STATUS =( SELECT TOP 1 AUTH_STATUS FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @PO_ID)
IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@PO_ID AND (TRASFER_USER_RECIVE IS NOT NULL AND TRASFER_USER_RECIVE <>'')))
BEGIN
INSERT INTO @LST_USER_RECIVE (TLNAME)
(SELECT TRASFER_USER_RECIVE FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @PO_ID)
END
ELSE
BEGIN
SET @AUTH_STATUS =( SELECT TOP 1 AUTH_STATUS FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @PO_ID)
SET @BRANCH_CREATE = (SELECT BRANCH_CREATE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @PO_ID)
SET @DEP_CREATE = (SELECT DEP_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @PO_ID)
SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE)
SET @FATHER_ID = (SELECT FATHER_ID FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE)
IF(@BRANCH_TYPE = 'PGD' )
BEGIN
INSERT INTO @LST_USER_RECIVE (TLNAME)
SELECT TLNANME FROM TL_USER
WHERE 1=1
AND TLSUBBRID = @BRANCH_CREATE
AND (RoleName IN ('TPGD','PP') OR RoleName IN (SELECT ROLE_OLD FROM TL_SYS_ROLE_MAPPING WHERE ROLE_NEW IN ('TPGD','PP')))
END
ELSE IF(@BRANCH_TYPE = 'CN' )
BEGIN
INSERT INTO @LST_USER_RECIVE (TLNAME)
SELECT TLNANME FROM TL_USER
WHERE 1=1
AND TLSUBBRID = @BRANCH_CREATE
AND (RoleName IN ('GDDV','PGD') OR RoleName IN (SELECT ROLE_OLD FROM TL_SYS_ROLE_MAPPING WHERE ROLE_NEW IN ('GDDV','PGD')))
END
ELSE IF(@BRANCH_TYPE = 'HS' )
BEGIN
INSERT INTO @LST_USER_RECIVE (TLNAME)
SELECT TLNANME FROM TL_USER
WHERE 1=1
AND TLSUBBRID = @BRANCH_CREATE
AND SECUR_CODE = @DEP_CREATE
AND (RoleName IN ('GDDV','PP') OR RoleName IN (SELECT ROLE_OLD FROM TL_SYS_ROLE_MAPPING WHERE ROLE_NEW IN ('GDDV','PP')))
END
END
SET @FLAG = 1
END
ELSE IF (@TYPE = 'TR_REQ_ADVANCE_PAYMENT_CONFIRM')
BEGIN
SET @AUTH_STATUS =( SELECT TOP 1 AUTH_STATUS FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @PO_ID)
SET @BRANCH_CREATE = (SELECT BRANCH_CREATE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @PO_ID)
SET @DEP_CREATE = (SELECT DEP_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @PO_ID)
SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE)
SET @FATHER_ID = (SELECT FATHER_ID FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE)
SET @REQ_TYPE =(SELECT TOP 1 REQ_TYPE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID=@PO_ID)
SET @DEP_CODE =(SELECT TOP 1 DEP_CODE FROM CM_DEPARTMENT WHERE DEP_ID =@DEP_CREATE)
IF(@BRANCH_TYPE = 'PGD' )
BEGIN
INSERT INTO @LST_USER_RECIVE (TLNAME)
SELECT TLNANME FROM TL_USER
WHERE 1=1
AND TLSUBBRID = @FATHER_ID
AND (RoleName IN ('TPGD','PP') OR RoleName IN (SELECT ROLE_OLD FROM TL_SYS_ROLE_MAPPING WHERE ROLE_NEW IN ('TPGD','PP')))
END
ELSE IF(@BRANCH_TYPE = 'CN' )
BEGIN
INSERT INTO @LST_USER_RECIVE (TLNAME)
SELECT TLNANME FROM TL_USER
WHERE 1=1
AND TLSUBBRID = @BRANCH_CREATE
AND (RoleName IN ('GDDV','PGD') OR RoleName IN (SELECT ROLE_OLD FROM TL_SYS_ROLE_MAPPING WHERE ROLE_NEW IN ('GDDV','PGD')))
END
ELSE IF(@BRANCH_TYPE = 'HS' )
BEGIN
IF(EXISTS(SELECT PROCESS FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@PO_ID AND (PROCESS ='' OR PROCESS IS NULL)))
BEGIN
INSERT INTO @LST_USER_RECIVE (TLNAME)
SELECT TLNANME FROM TL_USER
WHERE 1=1
AND TLSUBBRID = @BRANCH_CREATE
AND SECUR_CODE = @DEP_CREATE
AND (RoleName IN ('GDDV','PP') OR RoleName IN (SELECT ROLE_OLD FROM TL_SYS_ROLE_MAPPING WHERE ROLE_NEW IN ('GDDV','PP')))
END
ELSE
BEGIN
IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='GDK' AND @REQ_TYPE ='I'))
BEGIN
IF(@DEP_CREATE ='DEP000000000014' OR (@DEP_CODE LIKE'%06906%' AND @DEP_CODE <> '0690605'))
BEGIN
SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE RoleName ='GDK' AND TLNANME ='tunt')
INSERT INTO @LST_USER_RECIVE (TLNAME) VALUES (@USER_RECIVE_MAIL)
END
ELSE IF((@DEP_CODE LIKE'%06909%'))
BEGIN
SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE RoleName ='GDK' AND TLNANME ='haipv')
INSERT INTO @LST_USER_RECIVE (TLNAME) VALUES (@USER_RECIVE_MAIL)
END
ELSE IF((@DEP_CODE LIKE'%06921%'))
BEGIN
SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE RoleName ='GDK' AND TLNANME ='cuongpv2')
INSERT INTO @LST_USER_RECIVE (TLNAME) VALUES (@USER_RECIVE_MAIL)
END
ELSE IF((@DEP_CODE LIKE'%06907%'))
BEGIN
SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE RoleName ='GDK' AND TLNANME ='linhvtk')
INSERT INTO @LST_USER_RECIVE (TLNAME) VALUES (@USER_RECIVE_MAIL)
END
ELSE IF((@DEP_CODE LIKE'%06908%'))
BEGIN
SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE RoleName ='GDK' AND TLNANME ='nhalc')
INSERT INTO @LST_USER_RECIVE (TLNAME) VALUES (@USER_RECIVE_MAIL)
END
END
-- NEU CAP TIEP THEO LA PTGD
ELSE IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='PTGD' AND @REQ_TYPE ='I'))
BEGIN
IF(@DEP_CREATE ='DEP000000000014' OR (@DEP_CODE LIKE'%06906%' AND @DEP_CODE <> '0690605'))
BEGIN
SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE RoleName ='PTGD' AND TLNANME ='hantt')
INSERT INTO @LST_USER_RECIVE (TLNAME) VALUES (@USER_RECIVE_MAIL)
END
ELSE IF(@DEP_CODE ='0690405')
BEGIN
SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE RoleName ='PTGD' AND TLNANME ='tupa')
INSERT INTO @LST_USER_RECIVE (TLNAME) VALUES (@USER_RECIVE_MAIL)
END
END
END
END
SET @FLAG = 1
END
ELSE IF (@TYPE = 'TR_REQ_ADVANCE_PAYMENT_APR')
BEGIN
SET @REQ_TYPE =(SELECT TOP 1 REQ_TYPE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID=@PO_ID)
--SET @AUTH_STATUS =( SELECT TOP 1 AUTH_STATUS FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @PO_ID)
SET @BRANCH_CREATE = (SELECT TOP 1 BRANCH_CREATE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @PO_ID)
SET @DEP_CREATE = (SELECT TOP 1 DEP_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @PO_ID)
SET @DEP_CODE =(SELECT TOP 1 DEP_CODE FROM CM_DEPARTMENT WHERE DEP_ID =@DEP_CREATE)
IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='TKTGD' AND @REQ_TYPE ='I'))
BEGIN
INSERT INTO @LST_USER_RECIVE SELECT TLNANME FROM TL_USER WHERE RoleName ='TKTGD'
END
IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='TKHDQT' AND @REQ_TYPE ='I'))
BEGIN
INSERT INTO @LST_USER_RECIVE SELECT TLNANME FROM TL_USER WHERE RoleName ='TKHDQT'
END
IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='TGD' AND @REQ_TYPE ='I'))
BEGIN
--SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE RoleName ='TGD')
--INSERT INTO @LST_USER_RECIVE (TLNAME) VALUES (@USER_RECIVE_MAIL)
INSERT INTO @LST_USER_RECIVE SELECT TLNANME FROM TL_USER WHERE RoleName ='TGD'
END
IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='HDQT' AND @REQ_TYPE ='I'))
BEGIN
--SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE RoleName ='TGD')
--INSERT INTO @LST_USER_RECIVE (TLNAME) VALUES (@USER_RECIVE_MAIL)
INSERT INTO @LST_USER_RECIVE SELECT TLNANME FROM TL_USER WHERE RoleName ='HDQT'
END
IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='GDK' AND @REQ_TYPE ='I'))
BEGIN
IF(@DEP_CREATE ='DEP000000000014' OR (@DEP_CODE LIKE'%06906%' AND @DEP_CODE <> '0690605'))
BEGIN
SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE RoleName ='GDK' AND TLNANME ='tunt')
INSERT INTO @LST_USER_RECIVE (TLNAME) VALUES (@USER_RECIVE_MAIL)
END
ELSE IF((@DEP_CODE LIKE'%06909%'))
BEGIN
SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE RoleName ='GDK' AND TLNANME ='haipv')
INSERT INTO @LST_USER_RECIVE (TLNAME) VALUES (@USER_RECIVE_MAIL)
END
ELSE IF((@DEP_CODE LIKE'%06921%'))
BEGIN
SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE RoleName ='GDK' AND TLNANME ='cuongpv2')
INSERT INTO @LST_USER_RECIVE (TLNAME) VALUES (@USER_RECIVE_MAIL)
END
ELSE IF((@DEP_CODE LIKE'%06907%'))
BEGIN
SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE RoleName ='GDK' AND TLNANME ='linhvtk')
INSERT INTO @LST_USER_RECIVE (TLNAME) VALUES (@USER_RECIVE_MAIL)
END
ELSE IF(@DEP_CODE LIKE'%06908%')
BEGIN
SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE RoleName ='GDK' AND TLNANME ='nhalc')
INSERT INTO @LST_USER_RECIVE (TLNAME) VALUES (@USER_RECIVE_MAIL)
END
END
IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='PTGD' AND @REQ_TYPE ='I'))
BEGIN
IF(@DEP_CREATE ='DEP000000000014' OR (@DEP_CODE LIKE'%06906%' AND @DEP_CODE <> '0690605'))
BEGIN
SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE RoleName ='PTGD' AND TLNANME ='hantt')
INSERT INTO @LST_USER_RECIVE (TLNAME) VALUES (@USER_RECIVE_MAIL)
END
ELSE IF( @DEP_CODE ='0690405')
BEGIN
SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE RoleName ='PTGD' AND TLNANME ='tupa')
INSERT INTO @LST_USER_RECIVE (TLNAME) VALUES (@USER_RECIVE_MAIL)
END
END
IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@PO_ID AND AUTH_STATUS ='A'))
BEGIN
INSERT INTO @LST_USER_RECIVE (TLNAME)
SELECT TOP 1 MAKER_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @PO_ID
--INSERT INTO @LST_USER_RECIVE (TLNAME)
--SELECT TOP 1 MAKER_ID_KT FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @PO_ID
END
SET @FLAG = 1
END
-- Điều phối tạm ứng/ thanh toán PL_REQUEST_PROCESS_CHILD
ELSE IF (@TYPE = 'TR_REQ_PAYMENT_TRANSFER')
BEGIN
INSERT INTO @LST_USER_RECIVE (TLNAME)
SELECT TLNAME FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID IN (SELECT REQ_PAY_ID FROM @l_LST_REQ_ID) AND TYPE_JOB = 'XL' AND STATUS_JOB ='C'
SET @FLAG = 1
END
--
ELSE IF (@TYPE = 'TR_REQ_ADVANCE_PAYMENT_KT_SEND_APR')
BEGIN
INSERT INTO @LST_USER_RECIVE (TLNAME)
SELECT TOP 1 TLNAME FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = @PO_ID AND TYPE_JOB = 'KS'
END
ELSE IF (@TYPE = 'TR_REQ_ADVANCE_PAYMENT_KT_APPR')
BEGIN
INSERT INTO @LST_USER_RECIVE (TLNAME)
SELECT TOP 1 MAKER_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @PO_ID
INSERT INTO @LST_USER_RECIVE (TLNAME)
SELECT TOP 1 MAKER_ID_KT FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @PO_ID
SET @FLAG = 1
END
-- Thanh toán
ELSE IF (@TYPE = 'TR_REQ_PAYMENT_SEND_APR')
BEGIN
SET @AUTH_STATUS =( SELECT TOP 1 AUTH_STATUS FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @PO_ID)
IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@PO_ID AND (TRASFER_USER_RECIVE IS NOT NULL AND TRASFER_USER_RECIVE <>'')))
BEGIN
INSERT INTO @LST_USER_RECIVE (TLNAME)
(SELECT TRASFER_USER_RECIVE FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @PO_ID)
END
ELSE
BEGIN
SET @AUTH_STATUS =( SELECT TOP 1 AUTH_STATUS FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @PO_ID)
SET @BRANCH_CREATE = (SELECT BRANCH_CREATE FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @PO_ID)
SET @DEP_CREATE = (SELECT DEP_ID FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @PO_ID)
SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE)
SET @FATHER_ID = (SELECT FATHER_ID FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE)
IF(@BRANCH_TYPE = 'PGD' )
BEGIN
INSERT INTO @LST_USER_RECIVE (TLNAME)
SELECT TLNANME FROM TL_USER
WHERE 1=1
AND TLSUBBRID = @BRANCH_CREATE
AND (RoleName IN ('TPGD','PP') OR RoleName IN (SELECT ROLE_OLD FROM TL_SYS_ROLE_MAPPING WHERE ROLE_NEW IN ('TPGD','PP')))
END
ELSE IF(@BRANCH_TYPE = 'CN' )
BEGIN
INSERT INTO @LST_USER_RECIVE (TLNAME)
SELECT TLNANME FROM TL_USER
WHERE 1=1
AND TLSUBBRID = @BRANCH_CREATE
AND (RoleName IN ('GDDV','PGD') OR RoleName IN (SELECT ROLE_OLD FROM TL_SYS_ROLE_MAPPING WHERE ROLE_NEW IN ('GDDV','PGD')))
END
ELSE IF(@BRANCH_TYPE = 'HS' )
BEGIN
INSERT INTO @LST_USER_RECIVE (TLNAME)
SELECT TLNANME FROM TL_USER
WHERE 1=1
AND TLSUBBRID = @BRANCH_CREATE
AND SECUR_CODE = @DEP_CREATE
AND (RoleName IN ('GDDV','PP') OR RoleName IN (SELECT ROLE_OLD FROM TL_SYS_ROLE_MAPPING WHERE ROLE_NEW IN ('GDDV','PP')))
END
END
SET @FLAG = 1
END
ELSE IF(@TYPE = 'TR_REQ_PAYMENT_APR')
BEGIN
SET @AUTH_STATUS =( SELECT TOP 1 AUTH_STATUS FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @PO_ID)
IF(@AUTH_STATUS = 'A')
BEGIN
SET @AUTH_STATUS =( SELECT TOP 1 AUTH_STATUS FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @PO_ID)
SET @BRANCH_CREATE = (SELECT BRANCH_CREATE FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @PO_ID)
SET @DEP_CREATE = (SELECT DEP_ID FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @PO_ID)
SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE)
SET @FATHER_ID = (SELECT FATHER_ID FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE)
INSERT INTO @LST_USER_RECIVE (TLNAME)
SELECT TLNANME FROM TL_USER
WHERE 1=1
--AND TLSUBBRID = @BRANCH_CREATE
AND (RoleName = 'KSV' OR RoleName IN (SELECT ROLE_OLD FROM TL_SYS_ROLE_MAPPING WHERE ROLE_NEW = 'KSV'))
AND TLSUBBRID = 'DV0001' AND SECUR_CODE ='DEP000000000022'
SET @FLAG = 1
END
END
ELSE IF(@TYPE = 'TR_REQ_PAYMENT_CONFIRM')
BEGIN
SET @AUTH_STATUS =( SELECT TOP 1 AUTH_STATUS FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @PO_ID)
SET @PROCESS = ( SELECT TOP 1 PROCESS FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @PO_ID)
IF(@AUTH_STATUS = 'U' AND @PROCESS = '0')
BEGIN
SET @AUTH_STATUS =( SELECT TOP 1 AUTH_STATUS FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @PO_ID)
SET @BRANCH_CREATE = (SELECT BRANCH_CREATE FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @PO_ID)
SET @DEP_CREATE = (SELECT DEP_ID FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @PO_ID)
SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE)
SET @FATHER_ID = (SELECT FATHER_ID FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE)
IF(@BRANCH_TYPE = 'PGD' )
BEGIN
INSERT INTO @LST_USER_RECIVE (TLNAME)
SELECT TLNANME FROM TL_USER
WHERE 1=1
AND TLSUBBRID = @FATHER_ID
AND (RoleName IN ('TPGD','PP') OR RoleName IN (SELECT ROLE_OLD FROM TL_SYS_ROLE_MAPPING WHERE ROLE_NEW IN ('TPGD','PP')))
END
ELSE IF(@BRANCH_TYPE = 'CN' )
BEGIN
INSERT INTO @LST_USER_RECIVE (TLNAME)
SELECT TLNANME FROM TL_USER
WHERE 1=1
AND TLSUBBRID = @BRANCH_CREATE
AND (RoleName IN ('GDDV','PGD') OR RoleName IN (SELECT ROLE_OLD FROM TL_SYS_ROLE_MAPPING WHERE ROLE_NEW IN ('GDDV','PGD')))
END
ELSE IF(@BRANCH_TYPE = 'HS' )
BEGIN
INSERT INTO @LST_USER_RECIVE (TLNAME)
SELECT TLNANME FROM TL_USER
WHERE 1=1
AND TLSUBBRID = @BRANCH_CREATE
AND SECUR_CODE = @DEP_CREATE
AND (RoleName IN ('GDDV','PP') OR RoleName IN (SELECT ROLE_OLD FROM TL_SYS_ROLE_MAPPING WHERE ROLE_NEW IN ('GDDV','PP')))
END
SET @FLAG = 1
END
END
ELSE IF(@TYPE = 'TR_REQ_PAYMENT_KT_SEND_APR')
BEGIN
INSERT INTO @LST_USER_RECIVE (TLNAME)
SELECT TOP 1 TLNAME FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = @PO_ID AND TYPE_JOB = 'KS'
SET @FLAG = 1
END
ELSE IF(@TYPE = 'TR_REQ_PAYMENT_KT_APR')
BEGIN
INSERT INTO @LST_USER_RECIVE (TLNAME)
SELECT TOP 1 MAKER_ID FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @PO_ID
INSERT INTO @LST_USER_RECIVE (TLNAME)
SELECT TOP 1 MAKER_ID_KT FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @PO_ID
SET @FLAG = 1
END
-- Tờ trình chủ trương
ELSE IF(@TYPE = 'PL_SEND_APP' OR @TYPE ='PL_REQUEST_DOC_App' OR @TYPE ='REQ_PROCESS_CHILD_Upd' OR @TYPE='REQ_PROCESS_CHILD_App')
BEGIN
SET @MAKER_ID = (SELECT TOP 1 MAKER_ID FROM PL_REQUEST_DOC WHERE REQ_ID =@PO_ID)
INSERT INTO @PL_PROCESS_CURRENT_SEARCH_TEMP
EXEC [dbo].[PL_PROCESS_CURRENT_SEARCH] @PO_ID,@MAKER_ID,'TTCT-DVKD'
SET @FLAG = 2
END
ELSE IF(@TYPE='PL_REQ_PROCESS_CHILD_Ins')
BEGIN
DECLARE @PLREQ_ID VARCHAR(15)
WHILE((SELECT COUNT(*) FROM @l_LST_REQ_ID) >0)
BEGIN
SET @PLREQ_ID =(SELECT TOP 1 REQ_PAY_ID FROM @l_LST_REQ_ID)
SET @MAKER_ID = (SELECT TOP 1 MAKER_ID FROM PL_REQUEST_DOC WHERE REQ_ID =@PO_ID)
INSERT INTO @PL_PROCESS_CURRENT_SEARCH_TEMP
EXEC [dbo].[PL_PROCESS_CURRENT_SEARCH] @PLREQ_ID,@MAKER_ID,'TTCT-DVKD'
DELETE FROM @l_LST_REQ_ID WHERE REQ_PAY_ID =@PLREQ_ID
END
SET @FLAG = 2
END
ELSE IF(@TYPE='REQUEST_DOC_PROCESS_Approve')
BEGIN
IF(NOT EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID =@PO_ID AND PROCESS_ID ='APPROVE'))
BEGIN
IF(NOT EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID =@PO_ID AND PROCESS_ID ='TGD'))
BEGIN
SET @FLAG = 2
--SET @MAKER_ID = (SELECT TOP 1 MAKER_ID FROM PL_REQUEST_DOC WHERE REQ_ID =@PO_ID)
INSERT INTO @PL_PROCESS_CURRENT_SEARCH_TEMP
EXEC [dbo].[PL_PROCESS_CURRENT_SEARCH] @PO_ID,@MAKER_ID,'TTCT-DVKD'
END
ELSE IF (EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID =@PO_ID AND PROCESS_ID ='TGD'))
BEGIN
SET @FLAG = 2
--SET @MAKER_ID = (SELECT TOP 1 MAKER_ID FROM PL_REQUEST_DOC WHERE REQ_ID =@PO_ID)
INSERT INTO @PL_PROCESS_CURRENT_SEARCH_TEMP
EXEC [dbo].[PL_PROCESS_CURRENT_SEARCH] @PO_ID,@MAKER_ID,'TTCT-DVKD'
INSERT INTO @PL_PROCESS_CURRENT_SEARCH_TEMP (REQ_ID,TLNAME) SELECT @PO_ID, TLNANME FROM TL_USER WHERE RoleName ='TKTGD'
END
ELSE IF (EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID =@PO_ID AND PROCESS_ID ='HDQT'))
BEGIN
SET @FLAG = 2
--SET @MAKER_ID = (SELECT TOP 1 MAKER_ID FROM PL_REQUEST_DOC WHERE REQ_ID =@PO_ID)
INSERT INTO @PL_PROCESS_CURRENT_SEARCH_TEMP
EXEC [dbo].[PL_PROCESS_CURRENT_SEARCH] @PO_ID,@MAKER_ID,'TTCT-DVKD'
--INSERT INTO @PL_PROCESS_CURRENT_SEARCH_TEMP (REQ_ID,TLNAME) SELECT @PO_ID, TLNANME FROM TL_USER WHERE RoleName ='TKTGD'
END
END
ELSE
BEGIN
SET @FLAG = 3
SET @MAKER_ID = (SELECT TOP 1 MAKER_ID FROM PL_REQUEST_DOC WHERE REQ_ID =@PO_ID)
--INSERT INTO @PL_PROCESS_CURRENT_SEARCH_TEMP
--EXEC [dbo].[PL_PROCESS_CURRENT_SEARCH] @REQ_ID,@MAKER_ID,'TTCT-DVKD'
END
END
-------------------------------------------------------------------------------------------------------
----- PHIẾU YÊU CẦU MUA SẮM --------------
ELSE IF(@TYPE = 'TR_REQUEST_DOC_SendApp' OR @TYPE ='TR_REQUEST_DOC_App' OR @TYPE ='TR_REQ_PROCESS_CHILD_App' OR @TYPE ='TR_REQ_PROCESS_CHILD_Upd' OR @TYPE='REQ_PROCESS_CHILD_App')
BEGIN
SET @MAKER_ID = (SELECT TOP 1 MAKER_ID FROM TR_REQUEST_DOC WHERE REQ_ID =@PO_ID)
INSERT INTO @PL_PROCESS_CURRENT_SEARCH_TEMP
EXEC [dbo].[PL_PROCESS_CURRENT_SEARCH] @PO_ID,@MAKER_ID,'PYCMS-DVKD'
SET @FLAG = 2
END
ELSE IF(@TYPE='TR_REQ_PROCESS_CHILD_Ins')
BEGIN
DECLARE @REQ_DOC_ID VARCHAR(15)
WHILE((SELECT COUNT(*) FROM @l_LST_REQ_ID) >0)
BEGIN
SET @REQ_DOC_ID =(SELECT TOP 1 REQ_PAY_ID FROM @l_LST_REQ_ID)
SET @MAKER_ID = (SELECT TOP 1 MAKER_ID FROM TR_REQUEST_DOC WHERE REQ_ID =@PO_ID)
INSERT INTO @PL_PROCESS_CURRENT_SEARCH_TEMP
EXEC [dbo].[PL_PROCESS_CURRENT_SEARCH] @REQ_DOC_ID,@MAKER_ID,'PYCMS-DVKD'
DELETE FROM @l_LST_REQ_ID WHERE REQ_PAY_ID =@REQ_DOC_ID
END
SET @FLAG = 2
END
ELSE IF(@TYPE='TR_REQUEST_DOC_PROCESS_Approve')
BEGIN
IF(NOT EXISTS(SELECT * FROM TR_REQUEST_DOC WHERE REQ_ID =@PO_ID AND PROCESS_ID ='APPROVE'))
BEGIN
--SET @MAKER_ID = (SELECT TOP 1 MAKER_ID FROM TR_REQUEST_DOC WHERE REQ_ID =@PO_ID)
INSERT INTO @PL_PROCESS_CURRENT_SEARCH_TEMP
EXEC [dbo].[PL_PROCESS_CURRENT_SEARCH] @PO_ID,@MAKER_ID,'PYCMS-DVKD'
SET @FLAG = 3
END
ELSE
BEGIN
SET @MAKER_ID = (SELECT TOP 1 MAKER_ID FROM TR_REQUEST_DOC WHERE REQ_ID =@PO_ID)
SET @NV_XL_MS =(SELECT TOP 1 USER_DVMS FROM TR_REQUEST_DOC WHERE REQ_ID =@PO_ID)
SET @FLAG = 4
END
END
------BAODNQ 4/1/2022: --------------
-----Khai báo DTSD nội bộ - gửi YC phê duyệt-------
ELSE IF @TYPE='BUD_CONTRACT_MASTER_SEND_APPROVE'
BEGIN
-----Có cấp phê duyệt trung gian-------
IF (EXISTS (SELECT*FROM BUD_CONTRACT_MASTER WHERE CONTRACT_ID = @PO_ID AND SIGN_USER IS NOT NULL))
BEGIN
INSERT INTO @LST_USER_RECIVE (TLNAME)
(SELECT A.SIGN_USER FROM BUD_CONTRACT_MASTER A WHERE A.CONTRACT_ID = @PO_ID)
END
ELSE
-----Ko có cấp phê duyệt trung gian-------
BEGIN
SET @BRANCH_CREATE = (SELECT BRANCH_ID FROM BUD_CONTRACT_MASTER WHERE CONTRACT_ID = @PO_ID)
SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE)
SET @p_MAKER_ID = (SELECT MAKER_ID FROM BUD_CONTRACT_MASTER WHERE CONTRACT_ID = @PO_ID)
SET @DEP_CREATE =(SELECT DEP_ID FROM TL_USER WHERE TLNANME = @p_MAKER_ID)
IF(@BRANCH_TYPE = 'PGD')
BEGIN
INSERT INTO @LST_USER_RECIVE (TLNAME)
(SELECT TLNANME FROM TL_USER
WHERE 1=1
AND TLSUBBRID = @BRANCH_CREATE
AND RoleName IN ('TPGD', 'PPGD'))
END
ELSE IF(@BRANCH_TYPE = 'CN')
BEGIN
INSERT INTO @LST_USER_RECIVE (TLNAME)
(SELECT TLNANME FROM TL_USER
WHERE 1=1
AND TLSUBBRID = @BRANCH_CREATE
AND RoleName IN ('GDDV', 'PDG'))
END
ELSE IF(@BRANCH_TYPE = 'HS')
BEGIN
INSERT INTO @LST_USER_RECIVE (TLNAME)
(SELECT TLNANME FROM TL_USER
WHERE 1=1
AND TLSUBBRID = @BRANCH_CREATE
AND DEP_ID = @DEP_CREATE
AND RoleName IN ('GDDV', 'PP'))
END
END
SET @FLAG = 5
END
-----Khai báo DTSD nội bộ - trung gian duyệt thành công-------
ELSE IF @TYPE='BUD_CONTRACT_MASTER_CONFIRM'
BEGIN
SET @BRANCH_CREATE = (SELECT BRANCH_ID FROM BUD_CONTRACT_MASTER WHERE CONTRACT_ID = @PO_ID)
SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE)
SET @p_MAKER_ID = (SELECT MAKER_ID FROM BUD_CONTRACT_MASTER WHERE CONTRACT_ID = @PO_ID)
SET @DEP_CREATE =(SELECT DEP_ID FROM TL_USER WHERE TLNANME = @p_MAKER_ID)
IF(@BRANCH_TYPE = 'PGD')
BEGIN
INSERT INTO @LST_USER_RECIVE (TLNAME)
(SELECT TLNANME FROM TL_USER
WHERE 1=1
AND TLSUBBRID = @BRANCH_CREATE
AND RoleName IN ('TPGD', 'PPGD'))
END
ELSE IF(@BRANCH_TYPE = 'CN')
BEGIN
INSERT INTO @LST_USER_RECIVE (TLNAME)
(SELECT TLNANME FROM TL_USER
WHERE 1=1
AND TLSUBBRID = @BRANCH_CREATE
AND RoleName IN ('GDDV', 'PDG'))
END
ELSE IF(@BRANCH_TYPE = 'HS')
BEGIN
INSERT INTO @LST_USER_RECIVE (TLNAME)
(SELECT TLNANME FROM TL_USER
WHERE 1=1
AND TLSUBBRID = @BRANCH_CREATE
AND DEP_ID = @DEP_CREATE
AND RoleName IN ('GDDV', 'PP'))
END
SET @FLAG = 5
END
-----Khai báo DTSD nội bộ - trưởng đơn vị đã duyệt, trả mail về cho ng tạo-------
ELSE IF @TYPE='BUD_CONTRACT_MASTER_APPROVED'
BEGIN
INSERT INTO @LST_USER_RECIVE (TLNAME)
(SELECT A.MAKER_ID FROM BUD_CONTRACT_MASTER A WHERE A.CONTRACT_ID = @PO_ID)
SET @FLAG = 5
END
---Quản lý hợp đồng khách thuê - gửi YC phê duyệt-----
ELSE IF @TYPE='BUD_CONTRACT_CUST_MASTER_SEND_APPROVE'
BEGIN
-----Có cấp phê duyệt trung gian-------
IF (EXISTS (SELECT*FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_ID = @PO_ID AND SIGN_USER IS NOT NULL))
BEGIN
INSERT INTO @LST_USER_RECIVE (TLNAME)
(SELECT A.SIGN_USER FROM BUD_CONTRACT_CUST_MASTER A WHERE A.CONTRACT_ID = @PO_ID)
END
ELSE
-----Ko có cấp phê duyệt trung gian-------
BEGIN
SET @BRANCH_CREATE = (SELECT BRANCH_ID FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_ID = @PO_ID)
SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE)
SET @p_MAKER_ID = (SELECT MAKER_ID FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_ID = @PO_ID)
SET @DEP_CREATE =(SELECT DEP_ID FROM TL_USER WHERE TLNANME = @p_MAKER_ID)
IF(@BRANCH_TYPE = 'PGD')
BEGIN
INSERT INTO @LST_USER_RECIVE (TLNAME)
SELECT TLNANME FROM TL_USER
WHERE 1=1
AND TLSUBBRID = @BRANCH_CREATE
AND RoleName IN ('TPGD', 'PP')
END
ELSE IF(@BRANCH_TYPE = 'CN')
BEGIN
INSERT INTO @LST_USER_RECIVE (TLNAME)
SELECT TLNANME FROM TL_USER
WHERE 1=1
AND TLSUBBRID = @BRANCH_CREATE
AND RoleName IN ('GDDV', 'PDG')
END
ELSE IF(@BRANCH_TYPE = 'HS')
BEGIN
INSERT INTO @LST_USER_RECIVE (TLNAME)
SELECT TLNANME FROM TL_USER
WHERE 1=1
AND TLSUBBRID = @BRANCH_CREATE
AND DEP_ID = @DEP_CREATE
AND RoleName IN ('GDDV', 'PP')
END
END
SET @FLAG = 5
END
---Quản lý hợp đồng khách thuê - trung gian duyệt thành công-----
ELSE IF @TYPE='BUD_CONTRACT_CUST_MASTER_CONFIRM'
BEGIN
SET @BRANCH_CREATE = (SELECT BRANCH_ID FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_ID = @PO_ID)
SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE)
SET @p_MAKER_ID = (SELECT MAKER_ID FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_ID = @PO_ID)
SET @DEP_CREATE =(SELECT DEP_ID FROM TL_USER WHERE TLNANME = @p_MAKER_ID)
IF(@BRANCH_TYPE = 'PGD')
BEGIN
INSERT INTO @LST_USER_RECIVE (TLNAME)
(SELECT TLNANME FROM TL_USER
WHERE 1=1
AND TLSUBBRID = @BRANCH_CREATE
AND RoleName IN ('TPGD', 'PP'))
END
ELSE IF(@BRANCH_TYPE = 'CN')
BEGIN
INSERT INTO @LST_USER_RECIVE (TLNAME)
(SELECT TLNANME FROM TL_USER
WHERE 1=1
AND TLSUBBRID = @BRANCH_CREATE
AND RoleName IN ('GDDV', 'PDG'))
END
ELSE IF(@BRANCH_TYPE = 'HS')
BEGIN
INSERT INTO @LST_USER_RECIVE (TLNAME)
(SELECT TLNANME FROM TL_USER
WHERE 1=1
AND TLSUBBRID = @BRANCH_CREATE
AND DEP_ID = @DEP_CREATE
AND RoleName IN ('GDDV', 'PP'))
END
SET @FLAG = 5
END
---Quản lý hợp đồng khách thuê - trưởng đơn vị đã duyệt, trả mail về cho ng tạo-----
ELSE IF @TYPE='BUD_CONTRACT_CUST_MASTER_APPROVED'
BEGIN
INSERT INTO @LST_USER_RECIVE (TLNAME)
(SELECT A.MAKER_ID FROM BUD_CONTRACT_CUST_MASTER A WHERE A.CONTRACT_ID = @PO_ID)
SET @FLAG = 5
END
------datmq 7/1/2022: --------------
-----Quản lý trụ sở - gửi YC phê duyệt-------
ELSE IF @TYPE='BUD_MASTER_SEND_APPROVE'
BEGIN
-----Có cấp phê duyệt trung gian-------
IF (EXISTS (SELECT*FROM BUD_MASTER WHERE BUILDING_ID = @PO_ID AND SIGN_USER IS NOT NULL))
BEGIN
INSERT INTO @LST_USER_RECIVE (TLNAME)
(SELECT A.SIGN_USER FROM BUD_MASTER A WHERE A.BUILDING_ID = @PO_ID)
END
ELSE
-----Ko có cấp phê duyệt trung gian-------
BEGIN
SET @BRANCH_CREATE = (SELECT BRANCH_ID FROM BUD_MASTER WHERE BUILDING_ID = @PO_ID)
SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE)
SET @p_MAKER_ID = (SELECT MAKER_ID FROM BUD_MASTER WHERE BUILDING_ID = @PO_ID)
SET @DEP_CREATE =(SELECT DEP_ID FROM TL_USER WHERE TLNANME = @p_MAKER_ID)
IF(@BRANCH_TYPE = 'PGD')
BEGIN
INSERT INTO @LST_USER_RECIVE (TLNAME)
SELECT TLNANME FROM TL_USER
WHERE 1=1
AND TLSUBBRID = @BRANCH_CREATE
AND RoleName IN ('TPGD', 'PP')
END
ELSE IF(@BRANCH_TYPE = 'CN')
BEGIN
INSERT INTO @LST_USER_RECIVE (TLNAME)
SELECT TLNANME FROM TL_USER
WHERE 1=1
AND TLSUBBRID = @BRANCH_CREATE
AND RoleName IN ('GDDV', 'PDG')
END
ELSE IF(@BRANCH_TYPE = 'HS')
BEGIN
INSERT INTO @LST_USER_RECIVE (TLNAME)
SELECT TLNANME FROM TL_USER
WHERE 1=1
AND TLSUBBRID = @BRANCH_CREATE
AND DEP_ID = @DEP_CREATE
AND RoleName IN ('GDDV', 'PP')
END
END
SET @FLAG = 6
END
-----Quản lý trụ sở - trung gian duyệt thành công-------
ELSE IF @TYPE='BUD_MASTER_CONFIRM'
BEGIN
SET @BRANCH_CREATE = (SELECT BRANCH_ID FROM BUD_MASTER WHERE BUILDING_ID = @PO_ID)
SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE)
SET @p_MAKER_ID = (SELECT MAKER_ID FROM BUD_MASTER WHERE BUILDING_ID = @PO_ID)
SET @DEP_CREATE =(SELECT DEP_ID FROM TL_USER WHERE TLNANME = @p_MAKER_ID)
IF(@BRANCH_TYPE = 'PGD')
BEGIN
INSERT INTO @LST_USER_RECIVE (TLNAME)
(SELECT TLNANME FROM TL_USER
WHERE 1=1
AND TLSUBBRID = @BRANCH_CREATE
AND RoleName IN ('TPGD', 'PPGD'))
END
ELSE IF(@BRANCH_TYPE = 'CN')
BEGIN
INSERT INTO @LST_USER_RECIVE (TLNAME)
(SELECT TLNANME FROM TL_USER
WHERE 1=1
AND TLSUBBRID = @BRANCH_CREATE
AND RoleName IN ('GDDV', 'PDG'))
END
ELSE IF(@BRANCH_TYPE = 'HS')
BEGIN
INSERT INTO @LST_USER_RECIVE (TLNAME)
(SELECT TLNANME FROM TL_USER
WHERE 1=1
AND TLSUBBRID = @BRANCH_CREATE
AND DEP_ID = @DEP_CREATE
AND RoleName IN ('GDDV', 'PP'))
END
SET @FLAG = 6
END
---Quản lý trụ sở - trưởng đơn vị đã duyệt, trả mail về cho ng tạo-----
ELSE IF @TYPE='BUD_MASTER_APPROVED'
BEGIN
INSERT INTO @LST_USER_RECIVE (TLNAME)
(SELECT A.MAKER_ID FROM BUD_MASTER A WHERE A.BUILDING_ID = @PO_ID)
SET @FLAG = 6
END
-------Phongnt 9/2/2022 Xuất sử dụng tài sản -HCQT----------
ELSE IF @TYPE='ASS_USE_MULTI_BVB_MASTER'
BEGIN
SET @BRANCH_CREATE = (SELECT BRANCH_ID FROM ASS_USE_MULTI_MASTER WHERE USER_MASTER_ID = @PO_ID)
SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE)
SET @p_MAKER_ID = (SELECT MAKER_ID FROM ASS_USE_MULTI_MASTER WHERE USER_MASTER_ID = @PO_ID)
SET @DEP_CREATE =(SELECT DEP_ID FROM TL_USER WHERE TLNANME = @p_MAKER_ID)
IF(@BRANCH_TYPE = 'PGD')
BEGIN
INSERT INTO @LST_USER_RECIVE (TLNAME)
(SELECT TLNANME FROM TL_USER
WHERE 1=1
AND TLSUBBRID = @BRANCH_CREATE
AND RoleName IN ('TPGD', 'PP'))
END
ELSE IF(@BRANCH_TYPE = 'CN')
BEGIN
INSERT INTO @LST_USER_RECIVE (TLNAME)
(SELECT TLNANME FROM TL_USER
WHERE 1=1
AND TLSUBBRID = @BRANCH_CREATE
AND RoleName IN ('GDDV', 'PDG'))
END
ELSE IF(@BRANCH_TYPE = 'HS')
BEGIN
INSERT INTO @LST_USER_RECIVE (TLNAME)
(SELECT TLNANME FROM TL_USER
WHERE 1=1
AND TLSUBBRID = @BRANCH_CREATE
AND DEP_ID = @DEP_CREATE
AND RoleName IN ('GDDV', 'PP'))
END
SET @FLAG = 6
END
-------Điều chuyển tài sản - HCQT----------
ELSE IF @TYPE='ASS_TRANSFER_MULTI_APP'
BEGIN
SET @BRANCH_CREATE = (SELECT BRANCH_ID FROM ASS_TRANSFER_MULTI_MASTER WHERE TRANS_MULTI_MASTER_ID = @PO_ID)
SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE)
SET @p_MAKER_ID = (SELECT MAKER_ID FROM ASS_TRANSFER_MULTI_MASTER WHERE TRANS_MULTI_MASTER_ID = @PO_ID)
SET @DEP_CREATE =(SELECT DEP_ID FROM TL_USER WHERE TLNANME = @p_MAKER_ID)
IF(@BRANCH_TYPE = 'PGD')
BEGIN
INSERT INTO @LST_USER_RECIVE (TLNAME)
(SELECT TLNANME FROM TL_USER
WHERE 1=1
AND TLSUBBRID = @BRANCH_CREATE
AND RoleName IN ('TPGD', 'PP'))
END
ELSE IF(@BRANCH_TYPE = 'CN')
BEGIN
INSERT INTO @LST_USER_RECIVE (TLNAME)
(SELECT TLNANME FROM TL_USER
WHERE 1=1
AND TLSUBBRID = @BRANCH_CREATE
AND RoleName IN ('GDDV', 'PDG'))
END
ELSE IF(@BRANCH_TYPE = 'HS')
BEGIN
INSERT INTO @LST_USER_RECIVE (TLNAME)
(SELECT TLNANME FROM TL_USER
WHERE 1=1
AND TLSUBBRID = @BRANCH_CREATE
AND DEP_ID = @DEP_CREATE
AND RoleName IN ('GDDV', 'PP'))
END
SET @FLAG = 6
END
ELSE IF @TYPE='ASS_COLLECT_MULTI_HCQT_APP'
BEGIN
SET @BRANCH_CREATE = (SELECT BRANCH_ID FROM ASS_COLLECT_MULTI_MASTER WHERE COL_MULTI_MASTER_ID = @PO_ID)
SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE)
SET @p_MAKER_ID = (SELECT MAKER_ID FROM ASS_COLLECT_MULTI_MASTER WHERE COL_MULTI_MASTER_ID = @PO_ID)
SET @DEP_CREATE =(SELECT DEP_ID FROM TL_USER WHERE TLNANME = @p_MAKER_ID)
IF(@BRANCH_TYPE = 'PGD')
BEGIN
INSERT INTO @LST_USER_RECIVE (TLNAME)
(SELECT TLNANME FROM TL_USER
WHERE 1=1
AND TLSUBBRID = @BRANCH_CREATE
AND RoleName IN ('TPGD', 'PP'))
END
ELSE IF(@BRANCH_TYPE = 'CN')
BEGIN
INSERT INTO @LST_USER_RECIVE (TLNAME)
(SELECT TLNANME FROM TL_USER
WHERE 1=1
AND TLSUBBRID = @BRANCH_CREATE
AND RoleName IN ('GDDV', 'PDG'))
END
ELSE IF(@BRANCH_TYPE = 'HS')
BEGIN
INSERT INTO @LST_USER_RECIVE (TLNAME)
(SELECT TLNANME FROM TL_USER
WHERE 1=1
AND TLSUBBRID = @BRANCH_CREATE
AND DEP_ID = @DEP_CREATE
AND RoleName IN ('GDDV', 'PP'))
END
SET @FLAG = 6
END
ELSE IF @TYPE='ASS_LIQ_BVB_HC_APP'
BEGIN
SET @BRANCH_CREATE = (SELECT BRANCH_ID FROM ASS_LIQUIDATION WHERE LIQ_ID = @PO_ID)
SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE)
SET @p_MAKER_ID = (SELECT MAKER_ID FROM ASS_LIQUIDATION WHERE LIQ_ID = @PO_ID)
SET @DEP_CREATE =(SELECT DEP_ID FROM TL_USER WHERE TLNANME = @p_MAKER_ID)
IF(@BRANCH_TYPE = 'PGD')
BEGIN
INSERT INTO @LST_USER_RECIVE (TLNAME)
(SELECT TLNANME FROM TL_USER
WHERE 1=1
AND TLSUBBRID = @BRANCH_CREATE
AND RoleName IN ('TPGD', 'PP'))
END
ELSE IF(@BRANCH_TYPE = 'CN')
BEGIN
INSERT INTO @LST_USER_RECIVE (TLNAME)
(SELECT TLNANME FROM TL_USER
WHERE 1=1
AND TLSUBBRID = @BRANCH_CREATE
AND RoleName IN ('GDDV', 'PDG'))
END
ELSE IF(@BRANCH_TYPE = 'HS')
BEGIN
INSERT INTO @LST_USER_RECIVE (TLNAME)
(SELECT TLNANME FROM TL_USER
WHERE 1=1
AND TLSUBBRID = @BRANCH_CREATE
AND DEP_ID = @DEP_CREATE
AND RoleName IN ('GDDV', 'PP'))
END
SET @FLAG = 6
END
----- END PYC MUA SẮM --------------------
IF(@FLAG = 0)
BEGIN
SELECT A.*,B.TLFullName,B.EMAIL
FROM TL_ROLE_NOTIFICATION A
LEFT JOIN TL_USER B ON A.TL_NAME=B.TLNANME
WHERE EXISTS(SELECT * FROM @LST_POID WHERE ID = A.PO_ID)
END
ELSE IF(@FLAG = 1)
BEGIN
SELECT B.*,A.TLFullName,A.EMAIL
FROM TL_USER A
LEFT JOIN TL_ROLE_NOTIFICATION B ON B.TL_NAME=A.TLNANME AND 1 >2
WHERE (A.TLNANME IN (SELECT * FROM @LST_USER_RECIVE))
AND A.TLNANME NOT IN ('trungnq1','taila')
END
-- NEU LA TO TRINH CHU TRUONG, PYC MS THÌ TRA VE FLAG =2
ELSE IF(@FLAG = 2)
BEGIN
SELECT B.*,A.TLFullName,A.EMAIL
FROM TL_USER A
LEFT JOIN TL_ROLE_NOTIFICATION B ON B.TL_NAME=A.TLNANME AND 1>2
WHERE (A.TLNANME IN (SELECT TLNAME FROM @PL_PROCESS_CURRENT_SEARCH_TEMP))
AND A.TLNANME NOT IN ('trungnq1','taila')
END
-- SAU KHI TT CHU TRUONG DUOC PHE DUYET THI THONG BAO CHO NGUOI TAO TO TRINH
ELSE IF(@FLAG = 3)
BEGIN
SELECT B.*,A.TLFullName,A.EMAIL
FROM TL_USER A
LEFT JOIN TL_ROLE_NOTIFICATION B ON B.TL_NAME=A.TLNANME AND 1>2
WHERE (A.TLNANME =@MAKER_ID OR A.TLNANME IN (SELECT TLNAME FROM @PL_PROCESS_CURRENT_SEARCH_TEMP))
AND A.TLNANME NOT IN ('trungnq1','taila')
END
-- SAU KHI PYCMS DUOC PHE DUYET THI THONG BAO CHO NGUOI TAO VA NGUOI XU LY
ELSE IF(@FLAG = 4)
BEGIN
SELECT B.*,A.TLFullName,A.EMAIL
FROM TL_USER A
LEFT JOIN TL_ROLE_NOTIFICATION B ON B.TL_NAME=A.TLNANME AND 1>2
WHERE (A.TLNANME =@MAKER_ID OR A.TLNANME =@NV_XL_MS)
AND A.TLNANME NOT IN ('trungnq1','taila')
END
-----------Quản lý cho thuê----------------
ELSE IF(@FLAG = 5)
BEGIN
SELECT TLFullName, EMAIL AS Email, ID as [USER_ID]
FROM TL_USER
WHERE (TLNANME IN (SELECT TLNAME FROM @LST_USER_RECIVE))
END
ELSE IF(@FLAG = 6)
BEGIN
SELECT TLFullName, EMAIL AS Email, ID as [USER_ID]
FROM TL_USER
WHERE (TLNANME IN (SELECT TLNAME FROM @LST_USER_RECIVE))
END
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Altering [dbo].[PL_REQUEST_DOC_SendApp]'
GO
ALTER PROCEDURE [dbo].[PL_REQUEST_DOC_SendApp]
@p_REQ_ID VARCHAR(20),
@p_PROCESS_ID VARCHAR(20),
@p_TLNAME VARCHAR(20),
@p_MAKER_ID VARCHAR(20)
AS
BEGIN TRANSACTION
DECLARE @GD_TYPE_ID_NOT_VALIDATE VARCHAR(15)
SET @GD_TYPE_ID_NOT_VALIDATE =(SELECT TOP 1 GD_TYPE_ID FROM CM_GOODSTYPE WHERE GD_TYPE_CODE ='OS')
IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID AND (PL_BASED_ID IS NULL OR PL_BASED_ID ='')))
BEGIN
-- XÁC ĐỊNH HẠN MƯC CÒN ĐỦ HAY KO
--- KIEM TRA NGAN SACH LUCTV 18052020
DECLARE @ERROR BIT ,@EROOR_DES NVARCHAR(500)
SELECT @ERROR=ERROR, @EROOR_DES=ERROR_DES FROM dbo.FN_CHECK_VALIDATE_APP(@p_REQ_ID,'APPNEW','PL_REQUEST_DOC',@p_TLNAME,@p_PROCESS_ID)
IF(@ERROR=1)
BEGIN
ROLLBACK TRANSACTION;
SELECT '-1' Result, @EROOR_DES ErrorDesc
RETURN '-1';
END
END
-----
DECLARE @BRANCH_ID VARCHAR(20), @DEP_ID VARCHAR(20),@BRANCH_CREATE VARCHAR(20) ,@DEP_CREATE VARCHAR(20),@BRANCH_TYPE VARCHAR(10),
@BRANCH_CREATE_TYPE VARCHAR(10)
IF(EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID AND EXISTS(SELECT TLNANME FROM dbo.TL_USER WHERE TLNANME=SIGN_USER AND BRANCH_CREATE=TLSUBBRID AND (RoleName='TPGD' OR RoleName='GDDV'))))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' AS Result ,'' REQ_CODE, '' REQ_ID, N'Người ký nháy không được là trường phòng, trưởng đơn vị.' ErrorDesc
RETURN '-1'
END
IF(EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID AND ( CAST(REQ_DT AS DATE) > CAST(GETDATE() AS DATE))) )
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' AS Result ,'' REQ_CODE, '' REQ_ID, N'Ngày tạo không được lớn hơn ngày hiện tại' ErrorDesc
RETURN '-1'
END
IF(EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID AND (REQ_NAME IS NULL OR REQ_NAME='')) )
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' AS Result ,'' REQ_CODE, '' REQ_ID, N'Tên tờ trình bắt buộc nhập' ErrorDesc
RETURN '-1'
END
IF(EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID AND (REQ_CONTENT IS NULL OR REQ_CONTENT='')) )
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' AS Result ,'' REQ_CODE, '' REQ_ID, N'Nội dung tờ trình bắt buộc nhập' ErrorDesc
RETURN '-1'
END
IF(EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID AND ( REQ_REASON IS NULL OR REQ_REASON='')) )
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' AS Result ,'' REQ_CODE, '' REQ_ID, N'Lý do trình chủ trương bắt buộc nhập' ErrorDesc
RETURN '-1'
END
IF(NOT EXISTS(SELECT REQDT_ID FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID ) )
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' AS Result ,'' REQ_CODE, '' REQ_ID, N'Danh sách hàng hóa bắt buộc nhập' ErrorDesc
RETURN '-1'
END
-- GIANT 10/11/2021
IF(EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID AND PL_BASED_ID IS NOT NULL AND PL_BASED_ID <>''))
BEGIN
DECLARE @PL_BASED_ID VARCHAR(20),
@PL_BASE_CODE VARCHAR(20),
@PL_BASE_TOTAL_USED DECIMAL(18,2), -- CÓ THỂ SỬ DỤNG
@PL_BASE_TOTAL_PRICE DECIMAL(18,2), -- TỔNG TIỀN CỦA TTCT
@TOTAL_PRICE DECIMAL(18,2) -- TỔNG TIỀN CỦA TỜ TRÌNH HIỆN TẠI SỬ DỤNG
SET @PL_BASED_ID=(SELECT PL_BASED_ID FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID )
SET @PL_BASE_CODE = (SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID = @PL_BASED_ID)
SET @PL_BASE_TOTAL_USED = (SELECT SUM(TOTAL_AMT) FROM PL_REQUEST_DOC WHERE PL_BASED_ID = @PL_BASED_ID AND AUTH_STATUS NOT IN ('E','R'))
SET @PL_BASE_TOTAL_PRICE = (SELECT TOTAL_AMT FROM PL_REQUEST_DOC WHERE REQ_ID = @PL_BASED_ID)
SET @TOTAL_PRICE = (SELECT TOTAL_AMT FROM PL_REQUEST_DOC WHERE REQ_ID = @p_REQ_ID)
--IF( EXISTS(SELECT DT.REQDT_ID FROM dbo.PL_REQUEST_DOC_DT DT WHERE DT.REQ_ID=@p_REQ_ID AND NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_DOC_DT DTB WHERE DTB.REQ_ID=@PL_BASED_ID AND DTB.TRADE_ID=DT.TRADE_ID AND DTB.HANGHOA_ID=DT.HANGHOA_ID)))
--BEGIN
-- ROLLBACK TRANSACTION
-- SELECT '-1' AS Result ,'' REQ_CODE, '' REQ_ID, N'Lưới hàng hóa mua sắm: Danh sách hàng hóa không có trong tờ trình căn cứ' ErrorDesc
-- RETURN '-1'
--END
-- KIỂM TRA CÁC TỔNG CÁC TỜ TRÌNH SỬ DỤNG TTCC VƯỢT QUÁ SỐ TIỀN CỦA TTCC CHO PHÉP HAY CHƯA
-- Tổng giá trị những tờ trình con đã sử dụng tờ trình số: làm tờ trình căn cứ: 30 triệu. Giá trị còn lại có thể sử dụng: 70 triệu
PRINT @PL_BASE_TOTAL_PRICE - @PL_BASE_TOTAL_USED
IF (@PL_BASE_TOTAL_PRICE < (@PL_BASE_TOTAL_USED + @TOTAL_PRICE))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' AS Result ,'' REQ_CODE, '' REQ_ID, N'Lưới hàng hóa mua sắm: Tổng giá trị những tờ trình con đã sử dụng tờ trình số: ' + @PL_BASE_CODE + N' làm tờ trình căn cứ: ' + CONVERT(NVARCHAR(20),CAST(@PL_BASE_TOTAL_USED AS money),1) + N' VND. Giá trị còn lại có thể sử dụng: ' + CONVERT(NVARCHAR(20),CAST(@PL_BASE_TOTAL_PRICE - @PL_BASE_TOTAL_USED AS money),1) + ' VND' ErrorDesc
RETURN '-1'
END
-- KIỂM TRA HẠNG MỤC ĐƯỢC CHỌN CÓ THUỘC VÀO HẠNG MỨC CHO PHÉP CỦA TTCC
DECLARE LISTS CURSOR LOCAL FOR SELECT REQDT_ID,TRADE_ID,REQ_ID FROM PL_REQUEST_DOC_DT WHERE REQ_ID = @p_REQ_ID
OPEN LISTS
DECLARE @REQDT_ID VARCHAR(15),
@TRADE_ID VARCHAR(15),
@REQ_ID VARCHAR(15),
@COUNT INT = 1
FETCH NEXT FROM LISTS INTO @REQDT_ID,@TRADE_ID,@REQ_ID
WHILE @@FETCH_STATUS = 0
BEGIN
-- Chỉ sử dụng hàng hóa từ tờ trình căn cứ
IF (NOT EXISTS (SELECT * FROM PL_REQUEST_DOC_DT WHERE REQDT_ID = @REQDT_ID AND HANGHOA_ID IN (SELECT HANGHOA_ID FROM PL_REQUEST_DOC_DT WHERE REQ_ID = @PL_BASED_ID)))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' AS Result ,'' REQ_CODE, '' REQ_ID, N'Lưới hàng hóa mua sắm - Dòng ' + CONVERT(nvarchar(10),@COUNT) + N' : Hàng hóa mua sắm đã chọn không thuộc vào Hàng hóa mua sắm cho phép của Tờ trình căn cứ' ErrorDesc
RETURN '-1'
END
-- Chỉ sử dụng hạng mục ngân sách từ tờ trình căn cứ
IF (NOT EXISTS (SELECT * FROM PL_REQUEST_DOC_DT WHERE REQDT_ID = @REQDT_ID AND TRADE_ID IN (SELECT TRADE_ID FROM PL_REQUEST_DOC_DT WHERE REQ_ID = @PL_BASED_ID)))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' AS Result ,'' REQ_CODE, '' REQ_ID, N'Lưới hàng hóa mua sắm - Dòng ' + CONVERT(nvarchar(10),@COUNT) + N' : Hạng mục ngân sách đã chọn không thuộc vào hạng mục ngân sách cho phép của Tờ trình căn cứ' ErrorDesc
RETURN '-1'
END
-- SỐ NGÂN SÁCH CHỌN VƯỢT QUÁ NGÂN SÁCH CHO PHÉP CỦA HẠN MỤC ĐÓ
IF ((SELECT TOTAL_AMT FROM PL_REQUEST_DOC_DT WHERE REQ_ID = @PL_BASED_ID AND TRADE_ID = @TRADE_ID) < (SELECT TOTAL_AMT FROM PL_REQUEST_DOC_DT WHERE REQDT_ID = @REQDT_ID))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' AS Result ,'' REQ_CODE, '' REQ_ID, N'Lưới hàng hóa mua sắm - Dòng ' + CONVERT(nvarchar(10),@COUNT) + N' : Hạng mục ngân sách đã chọn vượt quá hạng mục cho phép của Tờ trình căn cứ' ErrorDesc
RETURN '-1'
END
SET @COUNT += 1
FETCH NEXT FROM LISTS INTO @REQDT_ID,@TRADE_ID,@REQ_ID
END
CLOSE LISTS
DEALLOCATE LISTS
END
IF(EXISTS(SELECT REQDT_ID FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID AND (HANGHOA_ID IS NULL OR HANGHOA_ID ='')) )
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' AS Result ,'' REQ_CODE, '' REQ_ID, N'Lưới hàng hóa mua sắm: Hàng hóa bắt buộc nhập' ErrorDesc
RETURN '-1'
END
IF(EXISTS(SELECT REQDT_ID FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID AND (GOODS_ID IS NULL OR GOODS_ID ='')) )
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' AS Result ,'' REQ_CODE, '' REQ_ID, N'Lưới hàng hóa mua sắm: Hạng mục ngân sách bắt buộc nhập' ErrorDesc
RETURN '-1'
END
IF(EXISTS(SELECT REQ_TRANSFER_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID AND (TOTAL_AMT IS NULL OR TOTAL_AMT = 0)) )
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' AS Result ,'' REQ_CODE, '' REQ_ID, N'Lưới điều chuyển ngân sách: Vui lòng nhập số tiền điều chuyển' ErrorDesc
RETURN '-1'
END
SELECT @BRANCH_CREATE=BRANCH_CREATE,@DEP_CREATE=DEP_CREATE FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID
-- KIEM TRA NEU HINH THUC CHI DINH THAU LA THEO QUY DINH VCCB THI KHONG CHO PHEP CHON NHA CUNG CAP
IF(EXISTS(SELECT * FROM PL_REQUEST_DOC_DT WHERE TRADE_TYPE ='VCCB' AND SUP_ID <>'' AND SUP_ID IS NOT NULL AND REQ_ID =@p_REQ_ID))
BEGIN
SELECT 'REQ-00001' Result, '' REQ_ID, N'Nếu hình thức mua sắm theo quy định VCCB thì bạn không được phép chọn nhà cung cấp. Vui lòng để trống nhà cung cấp' ErrorDesc
ROLLBACK TRANSACTION
RETURN '-1'
END
--
IF(EXISTS(SELECT * FROM PL_REQUEST_DOC_DT WHERE TRADE_TYPE ='CDT' AND ( SUP_ID ='' OR SUP_ID IS NULL) AND REQ_ID =@p_REQ_ID))
BEGIN
SELECT 'REQ-00001' Result, '' REQ_ID, N'Nếu hình thức mua sắm chỉ định thầu thì bạn không được phép bỏ trống nhà cung cấp. Vui lòng chọn nhà cung cấp' ErrorDesc
ROLLBACK TRANSACTION
RETURN '-1'
END
---- NEU HINH THUC MUA SAM CHI DINH THAU THI KHONG DUOC PHEP DE TRONG LY DO CHI DINH
IF(EXISTS(SELECT * FROM PL_REQUEST_DOC_DT WHERE TRADE_TYPE ='CDT' AND ( [NAME] ='' OR [NAME] IS NULL) AND REQ_ID =@p_REQ_ID))
BEGIN
SELECT 'REQ-00001' Result, '' REQ_ID, N'Lưới Danh sách hàng hóa: Nếu hình thức mua sắm chỉ định thầu thì bạn không được phép bỏ trống lý do chỉ định thầu. Vui lòng nhập lý do chỉ định thầu' ErrorDesc
ROLLBACK TRANSACTION
RETURN '-1'
END
--
--LUCTV: 04052021 BO SUNG RANG BUOC NEU TIEN TE LA VND THI DON GIA BAO GOM VAT * SO LUONG MUA MUA = VOI NS SU DUNG
IF(EXISTS(SELECT REQDT_ID FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID AND ROUND(QUANTITY * PRICE,0) <> ROUND(TOTAL_AMT,0) AND CURRENCY='VND'))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' AS Result ,'' REQ_CODE, '' REQ_ID, N'Lưới hàng hóa mua sắm: Đối với tiền tệ VNĐ, Cột Ngân sách sử dụng chưa khớp với Đơn giá bao gồm VAT * Số lượng trình mua sắm ' ErrorDesc
RETURN '-1'
END
IF(EXISTS(SELECT REQ_TRANSFER_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID AND FR_BRN_ID=@BRANCH_CREATE AND (FR_GOOD_ID IS NULL OR FR_GOOD_ID='')
AND ((FR_DEP_ID=@DEP_CREATE) OR ((@DEP_CREATE IS NULL OR @DEP_CREATE='') AND (FR_DEP_ID IS NULL OR FR_DEP_ID=''))) ))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' AS Result ,'' REQ_CODE, '' REQ_ID, N'Bạn là đơn vị chuyển ngân sách, vui lòng chọn hạn mục ngân sách chuyển' ErrorDesc
RETURN '-1'
END
IF(EXISTS(SELECT Temp.TRADE_ID FROM (
SELECT TB.TRADE_ID ,SUM(TB.TOTAL_AMT) AS TOTAL_AMT_EXE,
SUM(ISNULL(PT.AMT_APP,0) + ISNULL(PT.AMT_RECEIVE_TF,0) - ISNULL(PT.AMT_TF,0) - ISNULL(PT.AMT_ETM,0)) AS TOTAL_AMT_REMAIN
FROM dbo.PL_REQUEST_DOC_DT TB
LEFT JOIN dbo.PL_TRADEDETAIL PT ON PT.TRADE_ID=TB.TRADE_ID
WHERE TB.REQ_ID=@p_REQ_ID AND TB.REQDT_TYPE='I'
AND PT.GOODS_ID NOT IN (SELECT ISNULL(GD_ID,'') FROM CM_GOODS WHERE GD_TYPE_ID =@GD_TYPE_ID_NOT_VALIDATE)
GROUP BY TB.TRADE_ID
)Temp
WHERE Temp.TOTAL_AMT_EXE > Temp.TOTAL_AMT_REMAIN))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' AS RESULT , '' REQ_CODE,'' REQ_ID, N'Số tiền sử dụng lớn hơn số tiền dự kiến còn lại của hạng mục trong ngân sách' ErrorDesc
RETURN '-1'
END
IF( EXISTS(SELECT GOODS_ID FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID AND REQDT_TYPE='O') AND NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID AND TO_GOOD_ID IN (SELECT GOODS_ID FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID AND REQDT_TYPE='O')))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' AS RESULT ,'' REQ_CODE, '' REQ_ID, N'Hạng mục ngoài ngân sách, vui lòng thêm danh sách điều chuyển ngân sách' ErrorDesc
RETURN '-1'
END
IF( NOT EXISTS(SELECT GOODS_ID FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID AND REQDT_TYPE='O') AND EXISTS(SELECT * FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID AND TO_GOOD_ID IN (SELECT GOODS_ID FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID AND REQDT_TYPE='O')))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' AS RESULT ,'' REQ_CODE, '' REQ_ID, N'Hạng mục trong ngân sách, vui lòng không thêm danh sách điều chuyển ngân sách' ErrorDesc
RETURN '-1'
END
IF( EXISTS(SELECT PLDT.GOODS_ID FROM dbo.PL_REQUEST_DOC_DT PLDT WHERE PLDT.REQ_ID=@p_REQ_ID AND PLDT.REQDT_TYPE='O' AND NOT EXISTS(SELECT PLTF.REQ_TRANSFER_ID FROM dbo.PL_REQUEST_TRANSFER PLTF WHERE PLTF.TO_GOOD_ID=PLDT.GOODS_ID AND ISNULL(PLTF.TO_TRADE_ID,'')=ISNULL(PLDT.TRADE_ID,''))) )
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' AS RESULT ,'' REQ_CODE, '' REQ_ID, N'Hạng mục ngoài ngân sách, vui lòng nhập danh sách điều chuyển ngân sách' ErrorDesc
RETURN '-1'
END
IF(EXISTS(SELECT REQDT_ID FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID AND (PRICE IS NULL OR PRICE=0 OR QUANTITY IS NULL OR QUANTITY=0)) )
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' AS Result ,'' REQ_CODE, '' REQ_ID, N'Lưới hàng hóa mua sắm: Số luợng, đơn giá của hàng hóa bắt buộc nhập' ErrorDesc
RETURN '-1'
END
IF(EXISTS(SELECT REQDT_ID FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID AND (DESCRIPTION IS NULL OR DESCRIPTION='')) )
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' AS Result ,'' REQ_CODE, '' REQ_ID, N'Lưới hàng hóa mua sắm: Quy cách kỹ thuật bắt buộc nhập' ErrorDesc
RETURN '-1'
END
IF(EXISTS(SELECT REQDT_ID FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID AND (UNIT_NAME IS NULL OR UNIT_NAME='')) )
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' AS Result ,'' REQ_CODE, '' REQ_ID, N'Lưới hàng hóa mua sắm: Đơn vị tính bắt buộc nhập' ErrorDesc
RETURN '-1'
END
IF(EXISTS(SELECT REQDT_ID FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID AND (UNIT_NAME IS NULL OR UNIT_NAME='')) )
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' AS Result ,'' REQ_CODE, '' REQ_ID, N'Lưới hàng hóa mua sắm: Đây là thông tin bắt buộc nhập' ErrorDesc
RETURN '-1'
END
DECLARE lstTransfer CURSOR FOR
SELECT FR_GOOD_ID,TO_GOOD_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID
OPEN lstTransfer
DECLARE @FR_GOOD_ID VARCHAR(20),@TO_GOOD_ID VARCHAR(20)
FETCH NEXT FROM lstTransfer INTO @FR_GOOD_ID,@TO_GOOD_ID
WHILE @@FETCH_STATUS=0
BEGIN
IF(@FR_GOOD_ID IS NOT NULL AND @FR_GOOD_ID<>'')
BEGIN
DECLARE @FR_GD_TYPE VARCHAR(20),@TO_GD_TYPE VARCHAR(20)
SET @FR_GD_TYPE =(SELECT GT.GD_TYPE_ID FROM
(
SELECT GD_CODE FROM dbo.CM_GOODS WHERE GD_ID=@FR_GOOD_ID
) CG
LEFT JOIN dbo.CM_GOODSTYPE GT ON CG.GD_CODE LIKE '%.' + GT.GD_TYPE_CODE +'.%')
SET @TO_GD_TYPE =(SELECT GT.GD_TYPE_ID FROM
(
SELECT GD_CODE FROM dbo.CM_GOODS WHERE GD_ID=@TO_GOOD_ID
) CG
LEFT JOIN dbo.CM_GOODSTYPE GT ON CG.GD_CODE LIKE '%.' + GT.GD_TYPE_CODE +'.%')
IF(NOT EXISTS(SELECT * FROM dbo.CM_GOODSTYPE WHERE GD_TYPE_ID= @FR_GD_TYPE AND @TO_GD_TYPE IN (SELECT value FROM dbo.wsiSplit(NOTES,';')) ) )
BEGIN
DECLARE @FR_GD_TYPE_NAME NVARCHAR(100),@TO_GD_TYPE_NAME NVARCHAR(100)
SET @FR_GD_TYPE_NAME=(SELECT GD_TYPE_NAME FROM dbo.CM_GOODSTYPE WHERE GD_TYPE_ID=@FR_GD_TYPE)
SET @TO_GD_TYPE_NAME=(SELECT GD_TYPE_NAME FROM dbo.CM_GOODSTYPE WHERE GD_TYPE_ID=@TO_GD_TYPE)
ROLLBACK TRANSACTION
SELECT '-1' AS Result ,'' REQ_CODE, '' REQ_ID, N'Không được điều chuyển từ ' + @FR_GD_TYPE_NAME +N' sang ' + @TO_GD_TYPE_NAME ErrorDesc
RETURN '-1'
CLOSE lstTransfer
DEALLOCATE lstTransfer
END
END
FETCH NEXT FROM lstTransfer INTO @FR_GOOD_ID,@TO_GOOD_ID
END
CLOSE lstTransfer
DEALLOCATE lstTransfer
--END
UPDATE dbo.PL_REQUEST_DOC SET AUTH_STATUS='U',PROCESS_ID='APPNEW' WHERE REQ_ID=@p_REQ_ID
SELECT @BRANCH_ID =BRANCH_ID,@DEP_ID=DEP_ID,@BRANCH_CREATE=BRANCH_CREATE,@DEP_CREATE=DEP_CREATE FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID
SET @BRANCH_TYPE=(SELECT BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_ID)
SET @BRANCH_CREATE_TYPE=(SELECT BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_CREATE)
--IF(@BRANCH_TYPE='PGD')
-- SET @BRANCH_ID=(SELECT BRANCH_ID FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_ID)
DELETE FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID
---KIEM TRA XEM CO CAP PHE DUYET TRUNG GIAN HAY KHONG 20-05-2020 LUCTV
IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID AND SIGN_USER IS NOT NULL AND SIGN_USER <>''))
BEGIN
DECLARE @BRANCH_SIGN_ID VARCHAR(20),@DEP_SIGN_ID VARCHAR(20),@BRANCH_SIGN_TYPE VARCHAR(10),@ROLE_SIGN VARCHAR(20)
SELECT @BRANCH_SIGN_ID=TLSUBBRID,@DEP_SIGN_ID=SECUR_CODE,@BRANCH_SIGN_TYPE=BRANCH_TYPE,@ROLE_SIGN=RoleName FROM dbo.TL_USER WHERE TLNANME =(SELECT SIGN_USER FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID)
UPDATE dbo.PL_REQUEST_DOC SET AUTH_STATUS='U',PROCESS_ID='SIGN', TOTAL_AMT =(SELECT ISNULL(SUM(TOTAL_AMT),0) FROM PL_REQUEST_DOC_DT WHERE REQ_ID =@p_REQ_ID) WHERE REQ_ID=@p_REQ_ID
INSERT INTO dbo.PL_REQUEST_PROCESS
(
REQ_ID,
PROCESS_ID,
STATUS,
ROLE_USER,
BRANCH_ID,
DEP_ID,
CHECKER_ID,
APPROVE_DT,
PARENT_PROCESS_ID,
IS_LEAF,
COST_ID,
DVDM_ID,
NOTES,
IS_HAS_CHILD
)
VALUES
( @p_REQ_ID, -- REQ_ID - varchar(15)
'SIGN', -- PROCESS_ID - varchar(10)
'C', -- STATUS - varchar(5)
@ROLE_SIGN, -- ROLE_USER - varchar(50)
@BRANCH_SIGN_ID,
CASE WHEN @BRANCH_SIGN_TYPE='HS' THEN @DEP_SIGN_ID ELSE '' END, -- BRANCH_ID - varchar(15)
'', -- CHECKER_ID - varchar(15)
NULL, -- APPROVE_DT - datetime
'', -- PARENT_PROCESS_ID - varchar(10)
'N', -- IS_LEAF - varchar(1)
'', -- COST_ID - varchar(15)
'', -- DVDM_ID - varchar(15)
N'Chờ cấp phê duyệt trung gian xác nhận phiếu', -- NOTES - nvarchar(500)
NULL -- IS_HAS_CHILD - bit
)
END
ELSE -- NGUOC LAI KHONG CO CAP PHE DUYET TRUNG GIAN
BEGIN
INSERT INTO dbo.PL_REQUEST_PROCESS
(
REQ_ID,
PROCESS_ID,
STATUS,
ROLE_USER,
BRANCH_ID,
DEP_ID,
CHECKER_ID,
APPROVE_DT,
PARENT_PROCESS_ID,
IS_LEAF,
COST_ID,
DVDM_ID,
NOTES,
IS_HAS_CHILD
)
VALUES
( @p_REQ_ID, -- REQ_ID - varchar(15)
'APPNEW', -- PROCESS_ID - varchar(10)
'C', -- STATUS - varchar(5)
'GDDV', -- ROLE_USER - varchar(50)
@BRANCH_ID,
@DEP_ID, -- BRANCH_ID - varchar(15)
'', -- CHECKER_ID - varchar(15)
NULL, -- APPROVE_DT - datetime
'', -- PARENT_PROCESS_ID - varchar(10)
'N', -- IS_LEAF - varchar(1)
'', -- COST_ID - varchar(15)
'', -- DVDM_ID - varchar(15)
-- N'Chờ trưởng đơn vị phê duyệt', -- NOTES - nvarchar(500)
N'Chờ trưởng đơn vị phê duyệt' ,
NULL -- IS_HAS_CHILD - bit
)
END
INSERT INTO dbo.PL_PROCESS
(
REQ_ID,
PROCESS_ID,
CHECKER_ID,
APPROVE_DT,
PROCESS_DESC,
NOTES
)
VALUES
( @p_REQ_ID, -- REQ_ID - varchar(15)
--@p_PROCESS_ID, -- PROCESS_ID - varchar(10)
'SEND',
@p_TLNAME, -- CHECKER_ID - varchar(15)
GETDATE(), -- APPROVE_DT - datetime
N'Người tạo tờ trình gửi phê duyệt thành công' , -- PROCESS_DESC - nvarchar(1000)
N'Nhân viên gửi phê duyệt ' -- NOTES - nvarchar(1000)
)
IF @@Error <> 0 GOTO ABORT
COMMIT TRANSACTION
IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID AND PROCESS_ID ='SIGN'))
BEGIN
SELECT '0' as Result,'' REQ_CODE,''REQ_ID, (SELECT PROCESS_ID FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID) Attr1, N'Tờ trình số: '+(SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID = @p_REQ_ID)+N' đã được gửi phê duyệt thành công. Vui lòng đợi cấp phê duyệt trung gian xác nhận phiếu' ErrorDesc
RETURN '0'
END
ELSE
BEGIN
SELECT '0' as Result,'' REQ_CODE,''REQ_ID, (SELECT PROCESS_ID FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID) Attr1, N'Tờ trình số: '+(SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID = @p_REQ_ID)+N' đã được gửi phê duyệt thành công. Vui lòng đợi trưởng đơn vị phê duyệt phiếu' ErrorDesc
RETURN '0'
END
ABORT:
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result,'' REQ_CODE,''REQ_ID, '' ErrorDesc
RETURN '-1'
End
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Altering [dbo].[REAL_ESTATE_R_H_ById]'
GO
ALTER PROCEDURE [dbo].[REAL_ESTATE_R_H_ById]
@p_RET_R_H_ID varchar(15)=NULL
AS
BEGIN
SELECT
A.*,
AUTH.AUTH_STATUS_NAME,
B.CONTRACT_NAME AS TR_CONTRACT_NAME,
CASE
WHEN DATEDIFF(DAY, A.END_DT, B.END_DT) <> 0 THEN B.APPROVE_DT
ELSE A.EXTEND_DT
END
AS NGAY_GIA_HAN_HD
FROM REAL_ESTATE_R_H AS A
LEFT JOIN dbo.CM_AUTH_STATUS AUTH ON AUTH.AUTH_STATUS = A.AUTH_STATUS
--------BAODNQ 7/2/2022: Kết thêm bảng TR_CONTRACT
LEFT JOIN TR_CONTRACT B ON A.TR_CONTRACT_ID = B.CONTRACT_ID
WHERE A.RET_R_H_ID = @p_RET_R_H_ID
SELECT * FROM RET_PRICE WHERE RET_R_H_ID = @p_RET_R_H_ID ORDER BY PRICE_DT DESC
END
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Altering [dbo].[PL_REQUEST_DOC_ById]'
GO
ALTER PROCEDURE [dbo].[PL_REQUEST_DOC_ById]
@p_REQ_ID varchar(15) = NULL,
@p_USER_LOGIN VARCHAR(50) = NULL
AS
BEGIN
SELECT A.REQ_ID,A.REQ_CODE,A.REQ_NAME,A.REQ_DT,A.REQ_TYPE,A.REQ_CONTENT, A.REQ_REASON,A.BRANCH_ID,
A.TOTAL_AMT AS TOTAL_AMT,A.NOTES, A.RECORD_STATUS,A.MAKER_ID,A.CREATE_DT,A.AUTH_STATUS,A.CHECKER_ID,
UDV.TLFullName AS CHECKER_NAME_DV,
A.APPROVE_DT,
A.PROCESS_ID,
D.AUTH_STATUS_NAME AS AUTH_STATUS_NAME_DV,
CASE WHEN A.PROCESS_ID='APPROVE' THEN N'Đã duyệt'
ELSE N'Chờ duyệt' END AS AUTH_STATUS_NAME,
G.BRANCH_CODE,
CASE WHEN A.BRANCH_CREATE <> 'DV0001' THEN G.BRANCH_NAME ELSE G.BRANCH_NAME+' - ' + DEP.DEP_NAME END AS BRANCH_NAME,
UP.TLFullName AS CHECKER_NAME_PROCESS,
RP.APPROVE_DT AS APPROVE_DT_PROCESS,
UC.TLFullName AS MAKER_NAME,
RPN.PROCESS_ID AS PROCESS_ID_NEXT,
RPN.ROLE_USER,
RP.NOTES AS PROCESS_STATUS ,
RPN.NOTES AS PROCESS_STATUS_NEXT,
A.DVDM_APP_ID,
CD.DVDM_NAME AS DVDM_APP_NAME,
A.REQ_PARENT_ID,
PARENT.REQ_NAME AS REQ_PARENT_NAME,
PARENT.REQ_CODE AS REQ_PARENT_CODE,
PARENT.TOTAL_AMT AS REQ_PARENT_AMT,
CC.REQ_NAME AS PL_BASED_NAME,
CC.REQ_CODE AS PL_BASED_CODE,
CC.TOTAL_AMT AS PL_BASED_AMT,
A.BRANCH_FEE,
A.DEP_ID,
A.DEP_FEE,
DEP.DEP_NAME,
DEP.DEP_CODE,
BF.BRANCH_NAME AS BRANCH_FEE_NAME,
BF.BRANCH_CODE AS BRANCH_FEE_CODE,
DF.DEP_NAME AS DEP_FEE_NAME,
DF.DEP_CODE AS DEP_FEE_CODE,
'' AS BRANCH_DEP,
'' AS BRANCH_DEP_FEE,
RPC.TYPE_JOB AS TYPE_JOB,
RPC.TLNAME AS USER_JOB,
TU.TLFullName AS USER_JOB_NAME,
TFM.TLNANME AS TRANSFER_MAKER,
RPC.TRANFER_DT AS TRANFER_DT ,
RPC.MAKER_ID AS TRANSFER_MAKER_ID,
A.EFFEC_DT,A.IS_BACKDAY,
'' AS TYPE_JOB_XL,
'' AS USER_JOB_XL,
--PLRP.ID AS REF_ID,
-- GIANT 11/11/2021
ISNULL(RPC.PROCESS_ID,PLRP.ID) AS REF_ID,
RPN.STATUS AS STATUS_NEXT,
PLRP.STATUS AS STATUS_CURR,
RPC.STATUS_JOB AS STATUS_JOB,
A.BRANCH_CREATE,
A.DEP_CREATE,
A.REQ_LINE,
A.TC_NOTES,
A.SIGN_USER, TL.TLFullName AS SIGN_USER_NAME,
A.KT_NOTES,
A.IS_CHECKALL,
A.BASED_CONTENT,
'' AS IS_TRANSFER,
--NGUOI XU LY
--dbo.PL_PROCESS_CURRENT_NGUOIXULY(A.REQ_ID,NULL,'TTCT-DVKD',0) AS NGUOIXULY,
'' AS NGUOIXULY
,A.TK_TGD_NOTES, A.OTHER_NOTES,A.TK_HDQT_NOTES,
BTC.BRANCH_TYPE AS BRANCH_TYPE_CRE,
BF.BRANCH_TYPE AS BRANCH_TYPE_FEE,
A.PL_BASED_ID
FROM PL_REQUEST_DOC A
LEFT JOIN dbo.PL_REQUEST_PROCESS PLRP ON PLRP.REQ_ID=A.REQ_ID AND PLRP.STATUS <> 'U' AND (PLRP.IS_HAS_CHILD=1 OR PLRP.PROCESS_ID IN ('TKTGD','TKHDQT'))
LEFT JOIN dbo.PL_REQUEST_PROCESS RPN
ON RPN.ID IN (SELECT TOP 1 Temp.ID FROM dbo.PL_REQUEST_PROCESS Temp WHERE Temp.REQ_ID=A.REQ_ID AND (Temp.STATUS='C' OR Temp.STATUS='R') )
LEFT JOIN dbo.PL_REQUEST_PROCESS RP ON RP.ID=(SELECT TOP 1 ID FROM PL_REQUEST_PROCESS WHERE PL_REQUEST_PROCESS.REQ_ID=A.REQ_ID AND PL_REQUEST_PROCESS.PROCESS_ID=RPN.PARENT_PROCESS_ID ORDER BY APPROVE_DT DESC)
LEFT JOIN CM_AUTH_STATUS D ON D.AUTH_STATUS = A.AUTH_STATUS
LEFT JOIN CM_BRANCH G ON A.BRANCH_ID=G.BRANCH_ID
LEFT JOIN dbo.CM_DEPARTMENT DEP ON DEP.DEP_ID=A.DEP_ID
LEFT JOIN CM_BRANCH BF ON BF.BRANCH_ID=A.BRANCH_FEE
LEFT JOIN dbo.CM_DEPARTMENT DF ON DF.DEP_ID=A.DEP_FEE
LEFT JOIN dbo.TL_USER UC ON UC.TLNANME=A.MAKER_ID
LEFT JOIN dbo.CM_PROCESS_STATUS PS ON PS.PROCESS_ID = A.PROCESS_ID
LEFT JOIN dbo.CM_PROCESS_STATUS PSN ON PSN.PROCESS_ID = A.PROCESS_ID
LEFT JOIN dbo.CM_DVDM CD ON CD.DVDM_ID=A.DVDM_APP_ID
--LEFT JOIN dbo.PL_REQUEST_PROCESS_CHILD RPC ON RPC.REQ_ID=A.REQ_ID AND RPC.PROCESS_ID = PLRP.ID AND (RPC.STATUS_JOB='C' OR RPC.STATUS_JOB='R')
-- GIANT
LEFT JOIN dbo.PL_REQUEST_PROCESS_CHILD RPC ON RPC.REQ_ID=A.REQ_ID AND RPC.PROCESS_ID=PLRP.ID AND (RPC.STATUS_JOB='C' OR RPC.STATUS_JOB='R') AND RPC.TLNAME = @p_USER_LOGIN
--LEFT JOIN dbo.PL_REQUEST_PROCESS_CHILD RPC ON RPC.REQ_ID=A.REQ_ID AND (RPC.STATUS_JOB='C' OR RPC.STATUS_JOB='R')
LEFT JOIN dbo.TL_USER UDV ON UDV.TLNANME=A.CHECKER_ID
LEFT JOIN dbo.TL_USER UP ON UP.TLNANME=RP.CHECKER_ID
LEFT JOIN dbo.TL_USER TU ON TU.TLNANME=RPC.TLNAME
LEFT JOIN dbo.TL_USER TFM ON TFM.TLNANME=RPC.MAKER_ID
LEFT JOIN dbo.PL_REQUEST_DOC PARENT ON PARENT.REQ_ID=A.REQ_PARENT_ID
LEFT JOIN dbo.PL_REQUEST_DOC CC ON CC.REQ_ID = A.PL_BASED_ID
LEFT JOIN TL_USER TL ON A.SIGN_USER = TL.TLNANME
-- GiaNT
LEFT JOIN CM_BRANCH BTC ON BTC.BRANCH_ID = A.BRANCH_CREATE
WHERE 1 = 1
AND (A.REQ_ID = @p_REQ_ID )
ORDER BY USER_JOB DESC
END
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Altering [dbo].[BUD_CONTRACT_MASTER_Search]'
GO
ALTER PROCEDURE [dbo].[BUD_CONTRACT_MASTER_Search]
@p_CONTRACT_ID varchar(15) = NULL,
@p_BUILDING_ID varchar(15) = NULL,
@p_CONTRACT_NO nvarchar(100) = NULL,
@p_VERSION_NO int =0,
@p_CUST_ID varchar(15) = NULL,
@p_INPUT_DT VARCHAR(20) = NULL,
@p_AMEND_DT VARCHAR(20) = NULL,
@p_FROM_DT VARCHAR(20) = NULL,
@p_TO_DATE VARCHAR(20) = NULL,
@p_CLOSE_DT VARCHAR(20) = NULL,
@p_MONTHS int = NULL,
@p_RENT_PRICE numeric(18) = NULL,
@p_NOTES NVARCHAR(MAX) = NULL,
@p_BRANCH_ID VARCHAR(15) = NULL,
@p_RECORD_STATUS varchar(1) = NULL,
@p_AUTH_STATUS varchar(1) = NULL,
@p_STATUS VARCHAR(1) = NULL,
@p_MAKER_ID varchar(15) = NULL,
@p_CREATE_DT VARCHAR(20) = NULL,
@p_CHECKER_ID varchar(15) = NULL,
@p_APPROVE_DT VARCHAR(20) = NULL,
@p_XML_TEMP xml = NULL,
@p_VAT DECIMAL(18,0)= NULL,
@p_VAT_AMT DECIMAL(18,0) =NULL,
@p_DEPOSITS_AMT DECIMAL(18,0) =NULL,
@p_PAYMENT_SHEDULE NVARCHAR(500)= NULL,
@p_TOP INT = 10,
@p_FROM_MONTH int= NULL,
@p_TO_MONTH int = NULL,
@p_FROM_PRICE DECIMAL(18) = NULL,
@p_TO_PRICE DECIMAL(18) = NULL,
@p_FROMDATE VARCHAR(25) = NULL,
@p_TODATE VARCHAR(25)= NULL,
@p_LEVEL VARCHAR(15)='ALL',
@p_USER_LOGIN VARCHAR(15) -----BAODNQ 4/1/2021: Truyền thêm USER_LOGIN----
AS
-----BAODNQ: thêm các comment phân trang----
BEGIN -- PAGING
declare @p_BRANCH_LOGIN VARCHAR(15)
--set @p_BRANCH_LOGIN = (select TLSUBBRID from TL_USER where TLNANME=@p_MAKER_ID)
set @p_BRANCH_LOGIN = (select TLSUBBRID from TL_USER where TLNANME=@p_USER_LOGIN)
DECLARE @tmp table(BRANCH_ID varchar(15))
insert into @tmp SELECT BRANCH_ID FROM [dbo].[CM_BRANCH_GETCHILDID](@p_BRANCH_LOGIN)
--------BAODNQ 5/1/2021: Khai báo role USER_LOGIN-------------------
DECLARE @p_USER_LOGIN_ROLE VARCHAR(50)
SET @p_USER_LOGIN_ROLE = (SELECT RoleName FROM TL_USER WHERE TLNANME = @p_USER_LOGIN)
IF(@p_TOP IS NULL OR @P_TOP = '' OR @P_TOP = 0)
-- PAGING BEGIN
SELECT A.*,B.AUTH_STATUS_NAME,C.NUM_FLOOR,
C.BUILDING_NAME,BR.BRANCH_NAME,LS.CUSTOMER_NAME,CM.CONTENT AS TINHTRANG_HOPDONG,
-----BAODNQ 30/12/2021: Lấy thêm cột full name----
D.TLFullName AS SIGN_USER_FULLNAME
-- SELECT END
FROM BUD_CONTRACT_MASTER A
LEFT JOIN CM_AUTH_STATUS B ON A.AUTH_STATUS=B.AUTH_STATUS
LEFT JOIN BUD_MASTER C ON A.BUILDING_ID = C.BUILDING_ID
LEFT JOIN CM_BRANCH BR ON BR.BRANCH_ID = A.BRANCH_ID
LEFT JOIN LS_CUSTOMER LS ON LS.CUSTOMER_ID = A.CUST_ID
LEFT JOIN CM_ALLCODE CM ON A.[STATUS] = CM.CDVAL AND CDNAME='CONTRACT_STATUS' AND CDTYPE='CONTRACT'
-----BAODNQ 30/12/2021: Kết thêm bảng TL_USER----
LEFT JOIN TL_USER D ON A.SIGN_USER = D.TLNANME
WHERE 1 = 1
AND (A.CONTRACT_ID LIKE '%' + @p_CONTRACT_ID + '%' OR @p_CONTRACT_ID IS NULL OR @p_CONTRACT_ID = '')
AND (A.BUILDING_ID LIKE '%' + @p_BUILDING_ID + '%' OR @p_BUILDING_ID IS NULL OR @p_BUILDING_ID = '')
AND (A.CONTRACT_NO LIKE '%' + @p_CONTRACT_NO + '%' OR @p_CONTRACT_NO IS NULL OR @p_CONTRACT_NO = '')
AND (A.CUST_ID LIKE '%' + @p_CUST_ID + '%' OR @p_CUST_ID IS NULL OR @p_CUST_ID = '')
AND (A.INPUT_DT =CONVERT(DATE, @p_INPUT_DT, 103) OR @p_INPUT_DT IS NULL OR @p_INPUT_DT = '')
AND (A.AMEND_DT =CONVERT(DATE, @p_AMEND_DT, 103) OR @p_AMEND_DT IS NULL OR @p_AMEND_DT = '')
AND (A.TO_DATE =CONVERT(DATE, @p_TO_DATE, 103) OR @p_TO_DATE IS NULL OR @p_TO_DATE = '')
AND (A.CLOSE_DT =CONVERT(DATE, @p_CLOSE_DT, 103) OR @p_CLOSE_DT IS NULL OR @p_CLOSE_DT = '')
AND (A.RENT_PRICE = @p_RENT_PRICE OR @p_RENT_PRICE IS NULL OR @p_RENT_PRICE =0)
AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '')
AND (A.AUTH_STATUS LIKE '%' + @p_AUTH_STATUS + '%' OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '')
AND (A.STATUS LIKE '%' + @p_STATUS + '%' OR @p_STATUS IS NULL OR @p_STATUS = '')
AND (CONVERT(DATE,A.CREATE_DT,103) >=CONVERT(DATE, @p_FROMDATE, 103) OR @p_FROMDATE IS NULL OR @p_FROMDATE = '')
AND (CONVERT(DATE,A.CREATE_DT,103) <=CONVERT(DATE, @p_TODATE, 103) OR @p_TODATE IS NULL OR @p_TODATE = '')
AND (ISNULL(A.MONTHS,0) >= @p_FROM_MONTH OR @p_FROM_MONTH IS NULL OR @p_FROM_MONTH = 0)
AND (ISNULL(A.MONTHS,0) <= @p_TO_MONTH OR @p_TO_MONTH IS NULL OR @p_TO_MONTH = 0)
AND (A.RENT_PRICE >= @p_FROM_PRICE OR @p_FROM_PRICE IS NULL OR @p_FROM_PRICE = 0)
AND (A.RENT_PRICE <= @p_TO_PRICE OR @p_TO_PRICE IS NULL OR @p_TO_PRICE = 0)
AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '')
AND (A.APPROVE_DT =CONVERT(DATE, @p_APPROVE_DT, 103) OR @p_APPROVE_DT IS NULL OR @p_APPROVE_DT = '')
AND (A.BRANCH_ID IN (SELECT BRANCH_ID FROM @tmp))
-----BAODNQ 4/1/2021: Thêm điều kiện select----
AND (A.MAKER_ID = @p_USER_LOGIN
OR (A.SIGN_USER = @p_USER_LOGIN AND A.IS_SEND_APPR = 'Y')
OR ((@p_USER_LOGIN_ROLE IN ('GDDV','PGD', 'TP', 'PP','TPGD','PPGD'))
AND A.IS_SEND_APPR = 'Y'
AND (
(ISNULL(A.SIGN_USER,'') ='' OR ((ISNULL(A.SIGN_USER,'') <>'' AND A.SIGN_DT IS NOT NULL )))
)
)
)
-- PAGING END
ELSE
-- PAGING BEGIN
SELECT TOP(CONVERT(INT,@P_TOP))A.*,B.AUTH_STATUS_NAME,C.NUM_FLOOR,
C.BUILDING_NAME,BR.BRANCH_NAME,LS.CUSTOMER_NAME,CM.CONTENT AS TINHTRANG_HOPDONG,
-----BAODNQ 30/12/2021: Lấy thêm cột full name----
D.TLFullName AS SIGN_USER_FULLNAME
-- SELECT END
FROM BUD_CONTRACT_MASTER A
LEFT JOIN CM_AUTH_STATUS B ON A.AUTH_STATUS=B.AUTH_STATUS
LEFT JOIN BUD_MASTER C ON A.BUILDING_ID = C.BUILDING_ID
LEFT JOIN CM_BRANCH BR ON BR.BRANCH_ID = A.BRANCH_ID
LEFT JOIN LS_CUSTOMER LS ON LS.CUSTOMER_ID = A.CUST_ID
LEFT JOIN CM_ALLCODE CM ON A.[STATUS] = CM.CDVAL AND CDNAME='CONTRACT_STATUS' AND CDTYPE='CONTRACT'
-----BAODNQ 30/12/2021: Kết thêm bảng TL_USER----
LEFT JOIN TL_USER D ON A.SIGN_USER = D.TLNANME
WHERE 1 = 1
AND (A.CONTRACT_ID LIKE '%' + @p_CONTRACT_ID + '%' OR @p_CONTRACT_ID IS NULL OR @p_CONTRACT_ID = '')
AND (A.BUILDING_ID LIKE '%' + @p_BUILDING_ID + '%' OR @p_BUILDING_ID IS NULL OR @p_BUILDING_ID = '')
AND (A.CONTRACT_NO LIKE '%' + @p_CONTRACT_NO + '%' OR @p_CONTRACT_NO IS NULL OR @p_CONTRACT_NO = '')
AND (A.CUST_ID LIKE '%' + @p_CUST_ID + '%' OR @p_CUST_ID IS NULL OR @p_CUST_ID = '')
AND (A.INPUT_DT =CONVERT(DATE, @p_INPUT_DT, 103) OR @p_INPUT_DT IS NULL OR @p_INPUT_DT = '')
AND (A.AMEND_DT =CONVERT(DATE, @p_AMEND_DT, 103) OR @p_AMEND_DT IS NULL OR @p_AMEND_DT = '')
AND (A.TO_DATE =CONVERT(DATE, @p_TO_DATE, 103) OR @p_TO_DATE IS NULL OR @p_TO_DATE = '')
AND (A.CLOSE_DT =CONVERT(DATE, @p_CLOSE_DT, 103) OR @p_CLOSE_DT IS NULL OR @p_CLOSE_DT = '')
AND (A.RENT_PRICE = @p_RENT_PRICE OR @p_RENT_PRICE IS NULL OR @p_RENT_PRICE = 0)
AND (A.RECORD_STATUS =1)
AND (A.AUTH_STATUS LIKE '%' + @p_AUTH_STATUS + '%' OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '')
AND (A.STATUS LIKE '%' + @p_STATUS + '%' OR @p_STATUS IS NULL OR @p_STATUS = '')
AND (CONVERT(DATE,A.CREATE_DT,103) >=CONVERT(DATE, @p_FROMDATE, 103) OR @p_FROMDATE IS NULL OR @p_FROMDATE = '')
AND (CONVERT(DATE,A.CREATE_DT,103) <=CONVERT(DATE, @p_TODATE, 103) OR @p_TODATE IS NULL OR @p_TODATE = '')
AND (ISNULL(A.MONTHS,0) >= @p_FROM_MONTH OR @p_FROM_MONTH IS NULL OR @p_FROM_MONTH = 0)
AND (ISNULL(A.MONTHS,0) <= @p_TO_MONTH OR @p_TO_MONTH IS NULL OR @p_TO_MONTH = 0)
AND (A.RENT_PRICE >= @p_FROM_PRICE OR @p_FROM_PRICE IS NULL OR @p_FROM_PRICE = 0)
AND (A.RENT_PRICE <= @p_TO_PRICE OR @p_TO_PRICE IS NULL OR @p_TO_PRICE = 0)
AND ((
(@p_LEVEL = 'ALL' AND A.BRANCH_ID IN (SELECT BRANCH_ID from @tmp))
OR (@p_LEVEL = 'UNIT' AND A.BRANCH_ID = @p_BRANCH_ID)
)
OR @P_BRANCH_ID IS NULL OR @P_BRANCH_ID = '')
--AND (A.BRANCH_ID IN (SELECT BRANCH_ID FROM @tmp))
AND ( A.VERSION_NO =(SELECT MAX(VERSION_NO)
FROM BUD_CONTRACT_MASTER
WHERE CONTRACT_ID = A.CONTRACT_ID))
-----BAODNQ 4/1/2021: Thêm điều kiện select----
AND (A.MAKER_ID = @p_USER_LOGIN
OR (A.SIGN_USER = @p_USER_LOGIN AND A.IS_SEND_APPR = 'Y')
OR ((@p_USER_LOGIN_ROLE IN ('GDDV','PGD', 'TP', 'PP','TPGD','PPGD'))
AND A.IS_SEND_APPR = 'Y'
AND (
(ISNULL(A.SIGN_USER,'') ='' OR ((ISNULL(A.SIGN_USER,'') <>'' AND A.SIGN_DT IS NOT NULL )))
)
)
)
-- PAGING END
END -- PAGING
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Altering [dbo].[PL_REQUEST_DOC_DT_ById]'
GO
ALTER PROCEDURE [dbo].[PL_REQUEST_DOC_DT_ById]
@P_REQ_ID varchar(15),
@P_TYPE VARCHAR(20),
@P_USER_LOGIN VARCHAR(20)
AS
DECLARE @listTRADE TABLE
(
GOODS_ID VARCHAR(20),
TRADE_ID VARCHAR(20),
PLAN_ID VARCHAR(20),
AMT_APP DECIMAL(18,2),
AMT_EXE DECIMAL (18,2),
AMT_ETM DECIMAL (18,2),
AMT_TF DECIMAL (18,2),
AMT_RECEIVE_TF DECIMAL (18,2),
NOTES NVARCHAR(1000)
)
IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@P_REQ_ID AND PROCESS_ID='APPROVE'))
BEGIN
IF(EXISTS(SELECT * FROM dbo.PL_TRADEDETAIL_HIST WHERE REQ_ID=@P_REQ_ID))
BEGIN
INSERT INTO @listTRADE
( GOODS_ID,TRADE_ID,PLAN_ID,AMT_APP,AMT_EXE,AMT_ETM,AMT_TF,AMT_RECEIVE_TF, NOTES)
SELECT GOODS_ID,TRADE_ID,PLAN_ID,AMT_APP,AMT_EXE,AMT_ETM,AMT_TF,AMT_RECEIVE_TF, NOTES FROM dbo.PL_TRADEDETAIL_HIST WHERE REQ_ID=@P_REQ_ID
END
ELSE
BEGIN
INSERT INTO @listTRADE
( GOODS_ID,TRADE_ID,PLAN_ID,AMT_APP,AMT_EXE,AMT_ETM,AMT_TF,AMT_RECEIVE_TF, NOTES)
SELECT PT.GOODS_ID,PT.TRADE_ID,PT.PLAN_ID,PT.AMT_APP,PT.AMT_EXE,PT.AMT_ETM-PLDT.TOTAL_AMT,PT.AMT_TF-PLFT.TOTAL_AMT,PT.AMT_RECEIVE_TF-PLTT.TOTAL_AMT, PT.NOTES FROM dbo.PL_TRADEDETAIL PT
LEFT JOIN
(
SELECT TRADE_ID, SUM(TOTAL_AMT) TOTAL_AMT FROM
dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@P_REQ_ID
GROUP BY TRADE_ID
) PLDT ON PLDT.TRADE_ID = PT.TRADE_ID
LEFT JOIN
(
SELECT FR_TRADE_ID, SUM(TOTAL_AMT) TOTAL_AMT FROM
dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@P_REQ_ID
GROUP BY FR_TRADE_ID
) PLFT ON PLFT.FR_TRADE_ID = PT.TRADE_ID
LEFT JOIN
(
SELECT TO_TRADE_ID, SUM(TOTAL_AMT) TOTAL_AMT FROM
dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@P_REQ_ID
GROUP BY TO_TRADE_ID
) PLTT ON PLTT.TO_TRADE_ID = PT.TRADE_ID
WHERE (PT.TRADE_ID IN (SELECT TRADE_ID FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID) OR PT.TRADE_ID IN (SELECT FR_TRADE_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID))
END
END
ELSE
BEGIN
INSERT INTO @listTRADE
( GOODS_ID,TRADE_ID,PLAN_ID,AMT_APP,AMT_EXE,AMT_ETM,AMT_TF,AMT_RECEIVE_TF, NOTES)
SELECT GOODS_ID,TRADE_ID,PLAN_ID,AMT_APP,AMT_EXE,AMT_ETM,AMT_TF,AMT_RECEIVE_TF, NOTES FROM dbo.PL_TRADEDETAIL WHERE (TRADE_ID IN (SELECT TRADE_ID FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID) OR TRADE_ID IN (SELECT FR_TRADE_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID))
END
DECLARE @DEP_ID VARCHAR(15),@BRANCH_ID VARCHAR(15),@ROLE VARCHAR(15),@IS_ALL BIT
SET @IS_ALL=0
DECLARE
@COST_ID TABLE (
COST_ID VARCHAR(15)
)
DECLARE @DVDM_ID TABLE (
DVDM_ID VARCHAR(15)
)
SET @DEP_ID=(SELECT SECUR_CODE FROM dbo.TL_USER WHERE TLNANME=@P_USER_LOGIN)
SET @BRANCH_ID=(SELECT TLSUBBRID FROM dbo.TL_USER WHERE TLNANME=@P_USER_LOGIN)
IF(EXISTS(SELECT ID FROM PL_ROLE_DATA_CONFIG WHERE ROLE_TYPE='PL_MASTER' AND BRANCH_ID=@BRANCH_ID AND DEP_ID=@DEP_ID))
SET @IS_ALL=1
SET @ROLE=(SELECT RoleName FROM dbo.TL_USER WHERE TLNANME=@P_USER_LOGIN)
INSERT INTO @COST_ID
SELECT COST_ID FROM dbo.PL_COSTCENTER_DT WHERE DEP_ID=@DEP_ID AND BRANCH_ID=@BRANCH_ID
INSERT INTO @DVDM_ID
SELECT DVDM_ID FROM dbo.PL_COSTCENTER WHERE COST_ID IN (SELECT COST_ID FROM @COST_ID) GROUP BY DVDM_ID
IF(@P_TYPE='DVKD')
BEGIN
SELECT A.REQDT_ID,A.NAME,A.GOODS_ID,A.QUANTITY,A.TOTAL_AMT,A.PRICE,A.TRADE_ID,A.PLAN_ID,A.NAME as NOTES,A.DESCRIPTION,A.HANGHOA_ID,A.HANGHOA_ID HH_ID,HH.HH_CODE,HH.HH_NAME,A.CURRENCY,A.EXCHANGE_RATE,A.TAXES,A.REQ_ID,
ISNULL(B.GD_CODE,DT_LOG.GOOD_CODE) AS GD_CODE, ISNULL(B.GD_ID,DT_LOG.GOOD_ID) AS GD_ID, ISNULL(B.GD_NAME,DT_LOG.GOOD_NAME) AS GD_NAME, C.UNIT_CODE, C.UNIT_ID, A.UNIT_NAME,
ISNULL(PL.AMT_APP,0) AS AMT_APP,
ISNULL(PL.AMT_EXE,0) AS AMT_EXE,
ISNULL(PL.AMT_ETM,0) AS AMT_ETM,
ISNULL(PL.AMT_TF,0) AS AMT_TF,
ISNULL(PL.AMT_RECEIVE_TF,0) AS AMT_RECEIVE_TF,
ISNULL(PL.AMT_APP,0) + ISNULL(PL.AMT_RECEIVE_TF,0)-ISNULL(PL.AMT_TF,0) - ISNULL(PL.AMT_EXE,0) AS AMT_REMAIN,
ISNULL(PL.AMT_APP,0) + ISNULL(PL.AMT_RECEIVE_TF,0)-ISNULL(PL.AMT_TF,0)- ISNULL(PL.AMT_ETM,0) AS AMT_REMAIN_ETM,
ISNULL(PL.AMT_APP,0) + ISNULL(PL.AMT_RECEIVE_TF,0)-ISNULL(PL.AMT_TF,0)- ISNULL(PL.AMT_ETM,0)-ISNULL((SELECT SUM(Temp.TOTAL_AMT) AS TOTAL_AMT FROM dbo.PL_REQUEST_DOC_DT Temp WHERE Temp.REQ_ID=@P_REQ_ID AND Temp.TRADE_ID=A.TRADE_ID
AND EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@P_REQ_ID AND PROCESS_ID <>'APPROVE')
GROUP BY Temp.TRADE_ID),0)
AS AMT_REMAIN_REQ,
A.REQDT_TYPE,A.KHOI_ID,CK.DVDM_CODE AS KHOI_CODE,CK.DVDM_NAME AS KHOI_NAME,
A.DVDM_ID,DM.DVDM_CODE,DM.DVDM_NAME,A.TRADE_TYPE,A.SUP_ID,CS.SUP_NAME,CS.SUP_CODE,GT.GD_TYPE_NAME,GT.GD_TYPE_CODE,GT.GD_TYPE_ID,A.[NAME] AS REASON_CDT,CASE WHEN A.TRADE_TYPE ='VCCB' THEN N'Theo quy định BVB' ELSE N'Chỉ định thầu' END AS TRADE_TYPE_NAME,
-- GIANT 24/12/2021 MỚI SỬA Ở TTCT CHƯA SỬA Ở MÀN HÌNH LIÊN QUAN
AA.REQ_CODE,AC.BRANCH_NAME AS BRANCH_NAME_FEE,AC.BRANCH_ID AS BRANCH_ID_FEE,AD.DEP_ID AS DEP_ID_FEE,AD.DEP_NAME AS DEP_NAME_FEE,AD.DEP_NAME + ' - ' + AC.BRANCH_NAME AS BRANCH_FEE_FULL,
CASE WHEN A.REQDT_TYPE = 'I' THEN 1 ELSE 0 END AS IS_NGAN_SACH
FROM PL_REQUEST_DOC_DT A
LEFT JOIN @listTRADE PL ON A.TRADE_ID=PL.TRADE_ID
LEFT JOIN CM_GOODS B On A.GOODS_ID=B.GD_ID
LEFT JOIN dbo.PL_IMPORT_DT DT_LOG ON DT_LOG.TRADE_ID=A.TRADE_ID
LEFT JOIN dbo.CM_GOODSTYPE GT ON ISNULL(B.GD_CODE,DT_LOG.GOOD_CODE) LIKE '%.' + GT.GD_TYPE_CODE +'.%'
LEFT JOIN CM_UNIT C On A.UNIT_ID=C.UNIT_ID
LEFT JOIN dbo.CM_DVDM DM ON DM.DVDM_ID=A.DVDM_ID
LEFT JOIN dbo.CM_DVDM CK ON CK.DVDM_ID=A.KHOI_ID
LEFT JOIN dbo.CM_HANGHOA HH ON HH.HH_ID=A.HANGHOA_ID
LEFT JOIN dbo.CM_SUPPLIER CS ON CS.SUP_ID=A.SUP_ID
-- GIANT 23/12/2021
LEFT JOIN PL_REQUEST_DOC AA ON AA.REQ_ID = A.REQ_ID
LEFT JOIN PL_MASTER AB ON AB.PLAN_ID = A.PLAN_ID
LEFT JOIN CM_BRANCH AC ON AC.BRANCH_ID = AB.BRANCH_ID
LEFT JOIN CM_DEPARTMENT AD ON AD.DEP_ID = AB.DEPT_ID
WHERE A.REQ_ID=@P_REQ_ID
END
ELSE IF(@P_TYPE='PDTT')
BEGIN
SELECT A.REQDT_ID,A.NAME,A.GOODS_ID,A.QUANTITY,A.TOTAL_AMT,A.PRICE,A.TRADE_ID,A.PLAN_ID,PL.NOTES,A.DESCRIPTION,A.HANGHOA_ID,HH.HH_CODE,HH.HH_NAME,A.CURRENCY,A.EXCHANGE_RATE,A.TAXES,
ISNULL(B.GD_CODE,DT_LOG.GOOD_CODE) AS GD_CODE, ISNULL(B.GD_ID,DT_LOG.GOOD_ID) AS GD_ID, ISNULL(B.GD_NAME,DT_LOG.GOOD_NAME) AS GD_NAME, C.UNIT_CODE, C.UNIT_ID, A.UNIT_NAME,
ISNULL(PL.AMT_APP,0) AS AMT_APP,
ISNULL(PL.AMT_EXE,0) AS AMT_EXE,
ISNULL(PL.AMT_ETM,0) AS AMT_ETM,
ISNULL(PL.AMT_TF,0) AS AMT_TF,
ISNULL(PL.AMT_RECEIVE_TF,0) AS AMT_RECEIVE_TF,
ISNULL(PL.AMT_APP,0) + ISNULL(PL.AMT_RECEIVE_TF,0)-ISNULL(PL.AMT_TF,0) - ISNULL(PL.AMT_EXE,0) AS AMT_REMAIN,
ISNULL(PL.AMT_APP,0) + ISNULL(PL.AMT_RECEIVE_TF,0)-ISNULL(PL.AMT_TF,0)- ISNULL(PL.AMT_ETM,0) AS AMT_REMAIN_ETM,
ISNULL(PL.AMT_APP,0) + ISNULL(PL.AMT_RECEIVE_TF,0)-ISNULL(PL.AMT_TF,0)- ISNULL(PL.AMT_ETM,0)-ISNULL((SELECT SUM(Temp.TOTAL_AMT) AS TOTAL_AMT FROM dbo.PL_REQUEST_DOC_DT Temp WHERE Temp.REQ_ID=@P_REQ_ID AND Temp.TRADE_ID=A.TRADE_ID
AND EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@P_REQ_ID AND PROCESS_ID <>'APPROVE')
GROUP BY Temp.TRADE_ID),0)
AS AMT_REMAIN_REQ,
A.REQDT_TYPE,A.KHOI_ID,CK.DVDM_CODE AS KHOI_CODE,CK.DVDM_NAME AS KHOI_NAME,
A.DVDM_ID,DM.DVDM_CODE,DM.DVDM_NAME,A.TRADE_TYPE,A.SUP_ID,CS.SUP_NAME,CS.SUP_CODE,GT.GD_TYPE_NAME,GT.GD_TYPE_CODE,GT.GD_TYPE_ID,A.[NAME] AS REASON_CDT,CASE WHEN A.TRADE_TYPE ='VCCB' THEN N'Theo quy định BVB' ELSE N'Chỉ định thầu' END AS TRADE_TYPE_NAME
FROM PL_REQUEST_DOC_DT A
LEFT JOIN @listTRADE PL ON A.TRADE_ID=PL.TRADE_ID
LEFT JOIN CM_GOODS B On A.GOODS_ID=B.GD_ID
LEFT JOIN dbo.PL_IMPORT_DT DT_LOG ON DT_LOG.TRADE_ID=A.TRADE_ID
LEFT JOIN dbo.CM_GOODSTYPE GT ON ISNULL(B.GD_CODE,DT_LOG.GOOD_CODE) LIKE '%.' + GT.GD_TYPE_CODE +'.%'
LEFT JOIN CM_UNIT C On A.UNIT_ID=C.UNIT_ID
LEFT JOIN dbo.CM_DVDM DM ON DM.DVDM_ID=A.DVDM_ID
LEFT JOIN dbo.CM_DVDM CK ON CK.DVDM_ID=A.KHOI_ID
LEFT JOIN dbo.CM_HANGHOA HH ON HH.HH_ID=A.HANGHOA_ID
LEFT JOIN dbo.CM_SUPPLIER CS ON CS.SUP_ID=A.SUP_ID
LEFT JOIN dbo.PL_REQUEST_TRANSFER PLT ON PLT.REQ_DOC_ID=A.REQ_ID AND PLT.TO_GOOD_ID=A.GOODS_ID
WHERE A.REQ_ID=@P_REQ_ID
--AND (@ROLE='TGD' OR @IS_ALL=1 OR @ROLE='HDQT' OR EXISTS(SELECT * FROM @DVDM_ID WHERE [@DVDM_ID].DVDM_ID=A.DVDM_ID OR [@DVDM_ID].DVDM_ID=A.KHOI_ID ) OR EXISTS(SELECT * FROM @DVDM_ID WHERE [@DVDM_ID].DVDM_ID=PLT.FR_DVDM_ID OR [@DVDM_ID].DVDM_ID=PLT.FR_KHOI_ID ))
END
ELSE IF(@P_TYPE='XLTT')
BEGIN
SELECT A.REQDT_ID,A.NAME,A.GOODS_ID,A.QUANTITY,A.TOTAL_AMT,A.PRICE,A.TRADE_ID,A.PLAN_ID,PL.NOTES,A.DESCRIPTION,A.HANGHOA_ID,HH.HH_CODE,HH.HH_NAME,A.CURRENCY,A.EXCHANGE_RATE,A.TAXES,
ISNULL(B.GD_CODE,DT_LOG.GOOD_CODE) AS GD_CODE, ISNULL(B.GD_ID,DT_LOG.GOOD_ID) AS GD_ID, ISNULL(B.GD_NAME,DT_LOG.GOOD_NAME) AS GD_NAME, C.UNIT_CODE, C.UNIT_ID, A.UNIT_NAME,
ISNULL(PL.AMT_APP,0) AS AMT_APP,
ISNULL(PL.AMT_EXE,0) AS AMT_EXE,
ISNULL(PL.AMT_ETM,0) AS AMT_ETM,
ISNULL(PL.AMT_TF,0) AS AMT_TF,
ISNULL(PL.AMT_RECEIVE_TF,0) AS AMT_RECEIVE_TF,
ISNULL(PL.AMT_APP,0) + ISNULL(PL.AMT_RECEIVE_TF,0)-ISNULL(PL.AMT_TF,0) - ISNULL(PL.AMT_EXE,0) AS AMT_REMAIN,
ISNULL(PL.AMT_APP,0) + ISNULL(PL.AMT_RECEIVE_TF,0)-ISNULL(PL.AMT_TF,0)- ISNULL(PL.AMT_ETM,0) AS AMT_REMAIN_ETM,
ISNULL(PL.AMT_APP,0) + ISNULL(PL.AMT_RECEIVE_TF,0)-ISNULL(PL.AMT_TF,0)- ISNULL(PL.AMT_ETM,0)-ISNULL((SELECT SUM(Temp.TOTAL_AMT) AS TOTAL_AMT FROM dbo.PL_REQUEST_DOC_DT Temp WHERE Temp.REQ_ID=@P_REQ_ID AND Temp.TRADE_ID=A.TRADE_ID
AND EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@P_REQ_ID AND PROCESS_ID <>'APPROVE')
GROUP BY Temp.TRADE_ID),0)
AS AMT_REMAIN_REQ,
A.REQDT_TYPE,A.KHOI_ID,CK.DVDM_CODE AS KHOI_CODE,CK.DVDM_NAME AS KHOI_NAME,
A.DVDM_ID,DM.DVDM_CODE,DM.DVDM_NAME,A.TRADE_TYPE,A.SUP_ID,CS.SUP_NAME,CS.SUP_CODE,GT.GD_TYPE_NAME,GT.GD_TYPE_CODE,GT.GD_TYPE_ID,A.[NAME] AS REASON_CDT,CASE WHEN A.TRADE_TYPE ='VCCB' THEN N'Theo quy định BVB' ELSE N'Chỉ định thầu' END AS TRADE_TYPE_NAME
FROM PL_REQUEST_DOC_DT A
LEFT JOIN @listTRADE PL ON A.TRADE_ID=PL.TRADE_ID
LEFT JOIN CM_GOODS B On A.GOODS_ID=B.GD_ID
LEFT JOIN dbo.PL_IMPORT_DT DT_LOG ON DT_LOG.TRADE_ID=A.TRADE_ID
LEFT JOIN dbo.CM_GOODSTYPE GT ON ISNULL(B.GD_CODE,DT_LOG.GOOD_CODE) LIKE '%.' + GT.GD_TYPE_CODE +'.%'
LEFT JOIN CM_UNIT C On A.UNIT_ID=C.UNIT_ID
LEFT JOIN dbo.CM_DVDM DM ON DM.DVDM_ID=A.DVDM_ID
LEFT JOIN dbo.CM_DVDM CK ON CK.DVDM_ID=A.KHOI_ID
LEFT JOIN dbo.CM_HANGHOA HH ON HH.HH_ID=A.HANGHOA_ID
LEFT JOIN dbo.CM_SUPPLIER CS ON CS.SUP_ID=A.SUP_ID
WHERE A.REQ_ID=@P_REQ_ID
--AND (@ROLE='TGD' OR @IS_ALL=1 OR @ROLE='HDQT' OR @ROLE ='KSV' OR @ROLE ='GDV' OR EXISTS(SELECT * FROM @DVDM_ID WHERE [@DVDM_ID].DVDM_ID=A.DVDM_ID OR [@DVDM_ID].DVDM_ID=A.KHOI_ID )
--OR EXISTS
--(SELECT * FROM dbo.CM_GOOD_DVDM CGD WHERE CGD.GD_ID=A.GOODS_ID AND CGD.DVCM_ID IN (SELECT DVDM_ID FROM @DVDM_ID))
--OR EXISTS(SELECT * FROM dbo.PL_REQUEST_TRANSFER PT WHERE PT.TO_TRADE_ID=A.TRADE_ID AND PT.TO_GOOD_ID=A.GOODS_ID AND
--(PT.FR_BRN_ID=@BRANCH_ID AND ( PT.FR_DEP_ID=@DEP_ID OR PT.FR_DEP_ID IS NULL OR PT.FR_DEP_ID='') ))
--)
END
ELSE IF( @P_TYPE='PYC')
BEGIN
SELECT A.REQDT_ID,A.NAME,A.GOODS_ID,A.QUANTITY,A.TOTAL_AMT,A.PRICE,A.TRADE_ID,A.PLAN_ID,PL.NOTES,A.DESCRIPTION,A.HANGHOA_ID,HH.HH_CODE,HH.HH_NAME,A.CURRENCY,A.EXCHANGE_RATE,A.TAXES,
ISNULL(B.GD_CODE,DT_LOG.GOOD_CODE) AS GD_CODE, ISNULL(B.GD_ID,DT_LOG.GOOD_ID) AS GD_ID, ISNULL(B.GD_NAME,DT_LOG.GOOD_NAME) AS GD_NAME, C.UNIT_CODE, C.UNIT_ID, A.UNIT_NAME,
ISNULL(PL.AMT_APP,0) AS AMT_APP,
ISNULL(PL.AMT_EXE,0) AS AMT_EXE,
ISNULL(PL.AMT_ETM,0) AS AMT_ETM,
ISNULL(PL.AMT_TF,0) AS AMT_TF,
ISNULL(PL.AMT_RECEIVE_TF,0) AS AMT_RECEIVE_TF,
ISNULL(PL.AMT_APP,0) + ISNULL(PL.AMT_RECEIVE_TF,0)-ISNULL(PL.AMT_TF,0) - ISNULL(PL.AMT_EXE,0) AS AMT_REMAIN,
ISNULL(PL.AMT_APP,0) + ISNULL(PL.AMT_RECEIVE_TF,0)-ISNULL(PL.AMT_TF,0)- ISNULL(PL.AMT_ETM,0) AS AMT_REMAIN_ETM,
ISNULL(PL.AMT_APP,0) + ISNULL(PL.AMT_RECEIVE_TF,0)-ISNULL(PL.AMT_TF,0)- ISNULL(PL.AMT_ETM,0)-ISNULL((SELECT SUM(Temp.TOTAL_AMT) AS TOTAL_AMT FROM dbo.PL_REQUEST_DOC_DT Temp WHERE Temp.REQ_ID=@P_REQ_ID AND Temp.TRADE_ID=A.TRADE_ID
AND EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@P_REQ_ID AND PROCESS_ID <>'APPROVE')
GROUP BY Temp.TRADE_ID),0)
AS AMT_REMAIN_REQ,
A.REQDT_TYPE,A.KHOI_ID,CK.DVDM_CODE AS KHOI_CODE,CK.DVDM_NAME AS KHOI_NAME,
A.DVDM_ID,DM.DVDM_CODE,DM.DVDM_NAME,A.TRADE_TYPE,A.SUP_ID,CS.SUP_NAME,CS.SUP_CODE,GT.GD_TYPE_NAME,GT.GD_TYPE_CODE,GT.GD_TYPE_ID,A.[NAME] AS REASON_CDT,CASE WHEN A.TRADE_TYPE ='VCCB' THEN N'Theo quy định BVB' ELSE N'Chỉ định thầu' END AS TRADE_TYPE_NAME
FROM PL_REQUEST_DOC_DT A
LEFT JOIN @listTRADE PL ON A.TRADE_ID=PL.TRADE_ID
LEFT JOIN CM_GOODS B On A.GOODS_ID=B.GD_ID
LEFT JOIN dbo.PL_IMPORT_DT DT_LOG ON DT_LOG.TRADE_ID=A.TRADE_ID
LEFT JOIN dbo.CM_GOODSTYPE GT ON B.GD_CODE LIKE '%.' + GT.GD_TYPE_CODE +'.%'
LEFT JOIN CM_UNIT C On A.UNIT_ID=C.UNIT_ID
LEFT JOIN dbo.CM_DVDM DM ON DM.DVDM_ID=A.DVDM_ID
LEFT JOIN dbo.CM_DVDM CK ON CK.DVDM_ID=A.KHOI_ID
LEFT JOIN dbo.CM_HANGHOA HH ON HH.HH_ID=A.HANGHOA_ID
LEFT JOIN dbo.CM_SUPPLIER CS ON CS.SUP_ID=A.SUP_ID
WHERE A.REQ_ID=@P_REQ_ID
UNION ALL
SELECT A.REQDT_ID,A.NAME,A.GOODS_ID,A.QUANTITY,A.TOTAL_AMT,A.PRICE,A.TRADE_ID,A.PLAN_ID,PL.NOTES,A.DESCRIPTION,A.HANGHOA_ID,HH.HH_CODE,HH.HH_NAME,A.CURRENCY,A.EXCHANGE_RATE,A.TAXES,
ISNULL(B.GD_CODE,DT_LOG.GOOD_CODE) AS GD_CODE, ISNULL(B.GD_ID,DT_LOG.GOOD_ID) AS GD_ID, ISNULL(B.GD_NAME,DT_LOG.GOOD_NAME) AS GD_NAME, C.UNIT_CODE, C.UNIT_ID, A.UNIT_NAME,
ISNULL(PL.AMT_APP,0) AS AMT_APP,
ISNULL(PL.AMT_EXE,0) AS AMT_EXE,
ISNULL(PL.AMT_ETM,0) AS AMT_ETM,
ISNULL(PL.AMT_TF,0) AS AMT_TF,
ISNULL(PL.AMT_RECEIVE_TF,0) AS AMT_RECEIVE_TF,
ISNULL(PL.AMT_APP,0) + ISNULL(PL.AMT_RECEIVE_TF,0)-ISNULL(PL.AMT_TF,0) - ISNULL(PL.AMT_EXE,0) AS AMT_REMAIN,
ISNULL(PL.AMT_APP,0) + ISNULL(PL.AMT_RECEIVE_TF,0)-ISNULL(PL.AMT_TF,0)- ISNULL(PL.AMT_ETM,0) AS AMT_REMAIN_ETM,
ISNULL(PL.AMT_APP,0) + ISNULL(PL.AMT_RECEIVE_TF,0)-ISNULL(PL.AMT_TF,0)- ISNULL(PL.AMT_ETM,0)-ISNULL((SELECT SUM(Temp.TOTAL_AMT) AS TOTAL_AMT FROM dbo.PL_REQUEST_DOC_DT Temp WHERE Temp.REQ_ID=@P_REQ_ID AND Temp.TRADE_ID=A.TRADE_ID
AND EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@P_REQ_ID AND PROCESS_ID <>'APPROVE')
GROUP BY Temp.TRADE_ID),0)
AS AMT_REMAIN_REQ,
A.REQDT_TYPE,A.KHOI_ID,CK.DVDM_CODE AS KHOI_CODE,CK.DVDM_NAME AS KHOI_NAME,
A.DVDM_ID,DM.DVDM_CODE,DM.DVDM_NAME,A.TRADE_TYPE,A.SUP_ID,CS.SUP_NAME,CS.SUP_CODE,GT.GD_TYPE_NAME,GT.GD_TYPE_CODE,GT.GD_TYPE_ID,A.[NAME] AS REASON_CDT,CASE WHEN A.TRADE_TYPE ='VCCB' THEN N'Theo quy định BVB' ELSE N'Chỉ định thầu' END AS TRADE_TYPE_NAME
FROM PL_REQUEST_DOC_DT A
LEFT JOIN @listTRADE PL ON A.TRADE_ID=PL.TRADE_ID
LEFT JOIN CM_GOODS B On A.GOODS_ID=B.GD_ID
LEFT JOIN dbo.PL_IMPORT_DT DT_LOG ON DT_LOG.TRADE_ID=A.TRADE_ID
LEFT JOIN dbo.CM_GOODSTYPE GT ON ISNULL(B.GD_CODE,DT_LOG.GOOD_CODE) LIKE '%.' + GT.GD_TYPE_CODE +'.%'
LEFT JOIN CM_UNIT C On A.UNIT_ID=C.UNIT_ID
LEFT JOIN dbo.CM_DVDM DM ON DM.DVDM_ID=A.DVDM_ID
LEFT JOIN dbo.CM_DVDM CK ON CK.DVDM_ID=A.KHOI_ID
LEFT JOIN dbo.CM_HANGHOA HH ON HH.HH_ID=A.HANGHOA_ID
LEFT JOIN dbo.CM_SUPPLIER CS ON CS.SUP_ID=A.SUP_ID
WHERE A.REQ_ID IN (SELECT REQ_ID FROM dbo.PL_REQUEST_DOC WHERE REQ_PARENT_ID =@P_REQ_ID)
END
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Altering [dbo].[TR_CONTRACT_Search]'
GO
ALTER PROCEDURE [dbo].[TR_CONTRACT_Search]
@p_CONSTRACT_CODE varchar(50) = NULL,
@p_CONSTRACT_ID varchar(15) = NULL,
@p_CONSTRACT_TYPE varchar(1) = NULL,
@p_CONSTRACT_NAME NVARCHAR(200) = NULL,
@p_BID_ID varchar(15) = NULL,
@p_BID_CODE varchar(15) = NULL,
@p_SUP_ID varchar(15) = NULL,
@p_SUP_CODE varchar(15) = NULL,
@P_SIGN_DT VARCHAR(20) = NULL,
@P_CREATE_DT VARCHAR(50) = NULL,
@p_AUTH_STATUS VARCHAR(1) = NULL,
@P_CONSTRUCT_ID VARCHAR(15) = NULL,
@P_CONSTRUCT_CODE VARCHAR(15) = NULL,
@P_START_DT VARCHAR(20) = NULL,
@P_END_DT VARCHAR(20) = NULL,
@P_CONTRACT_PARENT varchar(15) = NULL,
@p_REQUEST_ID varchar(15)=NULL,
@P_TOP INT =10,
@p_PYC_CODE VARCHAR(125) = NULL,
@p_PYC_NAME NVARCHAR(250) = NULL,
@p_TTCT_CODE VARCHAR(25) = NULL,
@p_TTCT_NAME NVARCHAR(250) = NULL,
@p_HH_TYPE_CODE VARCHAR(25) = NULL,
@p_HH_TYPE_NAME NVARCHAR(250) = NULL,
@p_CUST_ID VARCHAR(15) = NULL,
@p_CONT_TYPE VARCHAR(150) = NULL,
@p_BRANCH_ID VARCHAR(15)= NULL,
@p_BRANCH_LOGIN VARCHAR(15) = NULL,
@p_LEVEL VARCHAR(15) = NULL,
@p_MAKER_ID VARCHAR(15) = NULL
AS
BEGIN -- PAGING
--set @p_MAKER_ID = TRIM(@p_MAKER_ID)
SET @p_LEVEL='ALL'
SET @P_TOP =2000
declare @tmp table(BRANCH_ID varchar(15))
insert into @tmp SELECT BRANCH_ID FROM [dbo].[CM_BRANCH_GETCHILDID](@p_BRANCH_LOGIN)
--- KHAI BAO TABLE SPLIT CHUOI
DECLARE @l_LST_CONTYPE TABLE ([ID] [int] IDENTITY(1,1) NOT NULL,[VALUE] [NVARCHAR](MAX) NULL)
INSERT INTO @l_LST_CONTYPE SELECT VALUE FROM WSISPLIT(@p_CONT_TYPE,',')
IF(@p_CONSTRACT_TYPE = '2')
IF(@P_TOP IS NULL OR @P_TOP = '' OR @P_TOP = 0)
-- PAGING BEGIN
SELECT A.*,B.SUP_CODE,C.BID_CODE, B.SUP_NAME, B.ADDR, B.TEL AS SUP_TEL, B.CONTACT_PERSON AS SUP_CONTACT_PERSON,
D.AUTH_STATUS_NAME,F.CONSTRUCT_CODE,F.CONSTRUCT_ID,
ISNULL((SELECT SUM(TR_PO.TOTAL_AMT) FROM TR_PO_MASTER TR_PO WHERE TR_PO.CONTRACT_ID = A.CONTRACT_ID),0) AS DONE_AMT,'' AS SO_PYC, '' AS TEN_PYC,
'' AS SO_TT_CT, '' AS TEN_TT_CT, A.CREATE_DT AS NGAY_NHAN_TT, A.CREATE_DT AS NGAY_DUYET_TT, '' AS NCC_CODE, '' NCC_NAME,
'' AS NCC_ADDR, B.TAX_NO,'' AS HH_TYPE_CODE,'' AS HH_TYPE_NAME,CA.CONTENT AS CONT_TYPE_NAME, LS.CUSTOMER_NAME AS CUST_NAME, LS.CUSTOMER_CODE AS CUST_CODE,
BR.BRANCH_CODE, BR.BRANCH_NAME, '' AS TO_TRINH_ID,B.ACC_NUM,B.ACC_NAME,B.BANK_NAME,B.ACC_NAME_OUT,B.ACC_NUM_OUT,B.BANK_NAME_OUT,0.0 AS TOTAL_ADV_AMT, 0.0 AS TOTAL_PAY_AMT,'' AS IS_FLAG_END
-- SELECT END
FROM TR_CONTRACT A
LEFT JOIN CM_SUPPLIER B ON A.SUP_ID=B.SUP_ID
LEFT JOIN BID_MASTER C ON A.BID_ID=C.BID_ID
LEFT JOIN CM_AUTH_STATUS D ON D.AUTH_STATUS = A.AUTH_STATUS
LEFT JOIN BID_MASTER E ON E.BID_ID = A.BID_ID
LEFT JOIN CON_MASTER F ON F.CONSTRUCT_ID = E.PROJECT_ID
LEFT JOIN dbo.CM_ALLCODE CA ON CA.CDVAL=A.CONT_TYPE AND CA.CDNAME='TR_CONT_TYPE' AND CA.CDTYPE='TR_CONT'
LEFT JOIN TR_CONTRACT_DT PT ON A.CONTRACT_ID = PT.CONTRACT_ID
LEFT JOIN LS_CUSTOMER LS ON A.CUST_ID = LS.CUSTOMER_ID
LEFT JOIN CM_BRANCH BR ON A.BRANCH_ID= BR.BRANCH_ID
WHERE 1=1
AND (A.MAKER_ID like '%'+@p_MAKER_ID+'%' OR @p_MAKER_ID IS NULL OR @p_MAKER_ID like '')
AND (F.CONSTRUCT_ID like '%'+@P_CONSTRUCT_ID+'%' OR @P_CONSTRUCT_ID IS NULL OR @P_CONSTRUCT_ID like '')
AND (F.CONSTRUCT_CODE like '%'+@P_CONSTRUCT_CODE+'%' OR @P_CONSTRUCT_CODE IS NULL OR @P_CONSTRUCT_CODE like '')
AND (A.CONTRACT_CODE like '%'+@p_CONSTRACT_CODE+'%' OR @p_CONSTRACT_CODE IS NULL OR @p_CONSTRACT_CODE like '')
AND (A.CONTRACT_ID like '%'+@p_CONSTRACT_ID+'%' OR @p_CONSTRACT_ID IS NULL OR @p_CONSTRACT_ID like '')
AND (A.[CONTRACT_NAME] like '%'+ @p_CONSTRACT_NAME +'%' OR @p_CONSTRACT_NAME IS NULL OR @p_CONSTRACT_NAME like '')
AND (A.BID_ID like '%'+@p_BID_ID +'%' OR @p_BID_ID IS NULL OR @p_BID_ID like '')
AND (C.BID_CODE like '%'+@p_BID_CODE +'%' OR @p_BID_CODE IS NULL OR @p_BID_CODE like '')
AND (A.SUP_ID like '%'+@p_SUP_ID +'%' OR @p_SUP_ID IS NULL OR @p_SUP_ID like '')
AND (B.SUP_CODE like '%'+@p_SUP_CODE +'%' OR @p_SUP_CODE IS NULL OR @p_SUP_CODE like '')
AND (DATEDIFF(DAY,A.SIGN_DT,CONVERT(DATETIME,@P_SIGN_DT,103)) = 0 OR @P_SIGN_DT IS NULL OR @P_SIGN_DT like '')
AND (DATEDIFF(DAY,A.CREATE_DT,CONVERT(DATETIME, @P_CREATE_DT, 103)) = 0 OR @P_CREATE_DT IS NULL OR @P_CREATE_DT='')
AND (DATEDIFF(DAY,A.START_DT,CONVERT(DATETIME, @P_START_DT, 103)) = 0 OR @P_START_DT IS NULL OR @P_START_DT='')
AND (DATEDIFF(DAY,A.END_DT,CONVERT(DATETIME, @P_END_DT, 103)) = 0 OR @P_END_DT IS NULL OR @P_END_DT='')
AND (A.AUTH_STATUS like '%'+@p_AUTH_STATUS +'%' OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS like '')
AND (A.CONTRACT_TYPE like '%'+@p_CONSTRACT_TYPE +'%' OR @p_CONSTRACT_TYPE IS NULL OR @p_CONSTRACT_TYPE like '')
AND (A.CONTRACT_PARENT like '%'+@P_CONTRACT_PARENT+'%' OR @P_CONTRACT_PARENT IS NULL OR @P_CONTRACT_PARENT like '')
AND A.RECORD_STATUS = '1'
AND (A.REQUEST_ID LIKE '%' + @p_REQUEST_ID + '%' OR @p_REQUEST_ID IS NULL OR @p_REQUEST_ID = '')
AND(EXISTS(SELECT HH_ID FROM CM_HANGHOA HH LEFT JOIN CM_HANGHOA_TYPE HT ON HH.HH_TYPE_ID=HT.HH_TYPE_ID WHERE
(HT.HH_TYPE_CODE LIKE '%' + @p_HH_TYPE_CODE + '%' OR @p_HH_TYPE_CODE = '' OR @p_HH_TYPE_CODE IS NULL)
AND (HT.HH_TYPE_NAME LIKE N'%' + @p_HH_TYPE_NAME + '%' OR @p_HH_TYPE_NAME = '' OR @p_HH_TYPE_NAME IS NULL) AND HH.HH_ID=PT.GOODS_ID))
AND (A.CUST_ID =@p_CUST_ID OR @p_CUST_ID IS NULL OR @p_CUST_ID ='')
AND (A.CONT_TYPE IN (SELECT VALUE FROM @l_LST_CONTYPE) OR @p_CONT_TYPE ='' OR @p_CONT_TYPE IS NULL)
AND ((@p_LEVEL = 'ALL' AND A.BRANCH_ID IN (SELECT BRANCH_ID from @tmp)
OR (@p_LEVEL = 'UNIT' AND A.BRANCH_ID = @p_BRANCH_LOGIN)) OR @p_BRANCH_LOGIN = '' OR @p_BRANCH_LOGIN IS NULL
AND (BR.BRANCH_CODE =@p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID ='' OR BR.BRANCH_ID =@p_BRANCH_ID)
)
-- PAGING END
ELSE
-- PAGING BEGIN
SELECT TOP(CONVERT(INT,@P_TOP)) A.*,B.SUP_CODE,C.BID_CODE, B.SUP_NAME, B.ADDR, B.TEL AS SUP_TEL,
B.CONTACT_PERSON AS SUP_CONTACT_PERSON, D.AUTH_STATUS_NAME,F.CONSTRUCT_CODE,F.CONSTRUCT_ID,
ISNULL((SELECT SUM(TR_PO.TOTAL_AMT) FROM TR_PO_MASTER TR_PO WHERE TR_PO.CONTRACT_ID = A.CONTRACT_ID),0) AS DONE_AMT,'' AS TEN_PYC,
'' AS SO_TT_CT, A.CREATE_DT AS NGAY_NHAN_TT, '' AS TEN_TT_CT, A.CREATE_DT AS NGAY_DUYET_TT, '' AS NCC_CODE, '' NCC_NAME, '' AS NCC_ADDR,B.TAX_NO,
CA.CONTENT AS CONT_TYPE_NAME,'' AS HH_TYPE_CODE,'' AS HH_TYPE_NAME, LS.CUSTOMER_NAME AS CUST_NAME, LS.CUSTOMER_CODE AS CUST_CODE,BR.BRANCH_CODE, BR.BRANCH_NAME,'' AS TO_TRINH_ID,
B.ACC_NUM,B.ACC_NAME,B.BANK_NAME,B.ACC_NAME_OUT,B.ACC_NUM_OUT,B.BANK_NAME_OUT,0.0 AS TOTAL_ADV_AMT, 0.0 AS TOTAL_PAY_AMT,'' AS IS_FLAG_END
-- SELECT END
FROM TR_CONTRACT A
LEFT JOIN CM_SUPPLIER B ON A.SUP_ID=B.SUP_ID
LEFT JOIN BID_MASTER C ON A.BID_ID=C.BID_ID
LEFT JOIN CM_AUTH_STATUS D ON D.AUTH_STATUS = A.AUTH_STATUS
LEFT JOIN BID_MASTER E ON E.BID_ID = A.BID_ID
LEFT JOIN CON_MASTER F ON F.CONSTRUCT_ID = E.PROJECT_ID
LEFT JOIN dbo.CM_ALLCODE CA ON CA.CDVAL=A.CONT_TYPE AND CA.CDNAME='TR_CONT_TYPE' AND CA.CDTYPE='TR_CONT'
LEFT JOIN TR_CONTRACT_DT PT ON A.CONTRACT_ID = PT.CONTRACT_ID
LEFT JOIN LS_CUSTOMER LS ON A.CUST_ID = LS.CUSTOMER_ID
LEFT JOIN CM_BRANCH BR ON A.BRANCH_ID= BR.BRANCH_ID
WHERE 1=1
AND (A.MAKER_ID like '%'+@p_MAKER_ID+'%' OR @p_MAKER_ID IS NULL OR @p_MAKER_ID like '')
AND (F.CONSTRUCT_ID like '%'+@P_CONSTRUCT_ID+'%' OR @P_CONSTRUCT_ID IS NULL OR @P_CONSTRUCT_ID like '')
AND (F.CONSTRUCT_CODE like '%'+@P_CONSTRUCT_CODE+'%' OR @P_CONSTRUCT_CODE IS NULL OR @P_CONSTRUCT_CODE like '')
AND (A.CONTRACT_CODE like '%'+@p_CONSTRACT_CODE+'%' OR @p_CONSTRACT_CODE IS NULL OR @p_CONSTRACT_CODE like '')
AND (A.CONTRACT_ID like '%'+@p_CONSTRACT_ID+'%' OR @p_CONSTRACT_ID IS NULL OR @p_CONSTRACT_ID like '')
AND (A.[CONTRACT_NAME] like '%'+ @p_CONSTRACT_NAME +'%' OR @p_CONSTRACT_NAME IS NULL OR @p_CONSTRACT_NAME like '')
AND (A.BID_ID like '%'+@p_BID_ID +'%' OR @p_BID_ID IS NULL OR @p_BID_ID like '')
AND (C.BID_CODE like '%'+@p_BID_CODE +'%' OR @p_BID_CODE IS NULL OR @p_BID_CODE like '')
AND (A.SUP_ID like '%'+@p_SUP_ID +'%' OR @p_SUP_ID IS NULL OR @p_SUP_ID like '')
AND (B.SUP_CODE like '%'+@p_SUP_CODE +'%' OR @p_SUP_CODE IS NULL OR @p_SUP_CODE like '')
AND (DATEDIFF(DAY,A.SIGN_DT,CONVERT(DATETIME,@P_SIGN_DT,103)) = 0 OR @P_SIGN_DT IS NULL OR @P_SIGN_DT like '')
AND (DATEDIFF(DAY,A.CREATE_DT,CONVERT(DATETIME, @P_CREATE_DT, 103)) = 0 OR @P_CREATE_DT IS NULL OR @P_CREATE_DT='')
AND (DATEDIFF(DAY,A.START_DT,CONVERT(DATETIME, @P_START_DT, 103)) = 0 OR @P_START_DT IS NULL OR @P_START_DT='')
AND (DATEDIFF(DAY,A.END_DT,CONVERT(DATETIME, @P_END_DT, 103)) = 0 OR @P_END_DT IS NULL OR @P_END_DT='')
AND (A.AUTH_STATUS like '%'+@p_AUTH_STATUS +'%' OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS like '')
AND (A.CONTRACT_TYPE like '%'+@p_CONSTRACT_TYPE +'%' OR @p_CONSTRACT_TYPE IS NULL OR @p_CONSTRACT_TYPE like '')
AND (A.CONTRACT_PARENT like '%'+@P_CONTRACT_PARENT+'%' OR @P_CONTRACT_PARENT IS NULL OR @P_CONTRACT_PARENT like '')
AND A.RECORD_STATUS = '1'
AND (A.REQUEST_ID LIKE '%' + @p_REQUEST_ID + '%' OR @p_REQUEST_ID IS NULL OR @p_REQUEST_ID = '')
AND(EXISTS(SELECT HH_ID FROM CM_HANGHOA HH LEFT JOIN CM_HANGHOA_TYPE HT ON HH.HH_TYPE_ID=HT.HH_TYPE_ID WHERE
(HT.HH_TYPE_CODE LIKE '%' + @p_HH_TYPE_CODE + '%' OR @p_HH_TYPE_CODE = '' OR @p_HH_TYPE_CODE IS NULL)
AND (HT.HH_TYPE_NAME LIKE N'%' + @p_HH_TYPE_NAME + '%' OR @p_HH_TYPE_NAME = '' OR @p_HH_TYPE_NAME IS NULL) AND HH.HH_ID=PT.GOODS_ID))
AND (A.CUST_ID =@p_CUST_ID OR @p_CUST_ID IS NULL OR @p_CUST_ID ='')
--AND (A.CONT_TYPE =@p_CONT_TYPE OR (@p_CONT_TYPE IS NULL OR @p_CONT_TYPE =''))
AND (A.CONT_TYPE IN (SELECT VALUE FROM @l_LST_CONTYPE) OR @p_CONT_TYPE ='' OR @p_CONT_TYPE IS NULL)
AND ((@p_LEVEL = 'ALL' AND A.BRANCH_ID IN (SELECT BRANCH_ID from @tmp)
OR (@p_LEVEL = 'UNIT' AND A.BRANCH_ID = @p_BRANCH_LOGIN)) OR @p_BRANCH_LOGIN = '' OR @p_BRANCH_LOGIN IS NULL)
AND (BR.BRANCH_CODE =@p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID ='' OR BR.BRANCH_ID =@p_BRANCH_ID)
-- PAGING END
ELSE
IF(@P_TOP IS NULL OR @P_TOP = '' OR @P_TOP = 0)
-- PAGING BEGIN
SELECT A.*,B.SUP_CODE,C.BID_CODE, B.SUP_NAME, B.ADDR, B.TEL AS SUP_TEL, B.CONTACT_PERSON AS SUP_CONTACT_PERSON,
D.AUTH_STATUS_NAME,
ISNULL((SELECT SUM(TR_PO.TOTAL_AMT) FROM TR_PO_MASTER TR_PO WHERE TR_PO.CONTRACT_ID = A.CONTRACT_ID),0) AS DONE_AMT,
dc.REQ_CODE AS SO_PYC, T.REQ_NAME AS TEN_PYC,
T.REQ_CODE AS SO_TT_CT, T.REQ_NAME AS TEN_TT_CT, T.CREATE_DT AS NGAY_NHAN_TT, T.APPROVE_DT AS NGAY_DUYET_TT, '' AS NCC_CODE, '' NCC_NAME, '' AS NCC_ADDR, B.TAX_NO,
CA.CONTENT AS CONT_TYPE_NAME,'' AS HH_TYPE_CODE,'' AS HH_TYPE_NAME, LS.CUSTOMER_NAME AS CUST_NAME, LS.CUSTOMER_CODE AS CUST_CODE,BR.BRANCH_CODE, BR.BRANCH_NAME,T.REQ_ID AS TO_TRINH_ID,
B.ACC_NUM,B.ACC_NAME,B.BANK_NAME,B.ACC_NAME_OUT,B.ACC_NUM_OUT,B.BANK_NAME_OUT,0.0 AS TOTAL_ADV_AMT, 0.0 AS TOTAL_PAY_AMT,'' AS IS_FLAG_END
-- SELECT END
FROM TR_CONTRACT A
LEFT JOIN CM_SUPPLIER B ON A.SUP_ID=B.SUP_ID
LEFT JOIN BID_MASTER C ON A.BID_ID=C.BID_ID
LEFT JOIN CM_AUTH_STATUS D ON D.AUTH_STATUS = A.AUTH_STATUS
LEFT JOIN TR_REQUEST_DOC DC ON A.REQ_DOC_ID = DC.REQ_ID
LEFT JOIN PL_REQUEST_DOC T ON DC.PL_REQ_ID = T.REQ_ID
LEFT JOIN dbo.CM_ALLCODE CA ON CA.CDVAL=A.CONT_TYPE AND CA.CDNAME='TR_CONT_TYPE' AND CA.CDTYPE='TR_CONT'
--LEFT JOIN TR_CONTRACT_DT PT ON A.CONTRACT_ID = PT.CONTRACT_ID
LEFT JOIN LS_CUSTOMER LS ON A.CUST_ID = LS.CUSTOMER_ID
LEFT JOIN CM_BRANCH BR ON A.BRANCH_ID= BR.BRANCH_ID
WHERE 1=1
AND (A.MAKER_ID like '%'+@p_MAKER_ID+'%' OR @p_MAKER_ID IS NULL OR @p_MAKER_ID like '')
AND (A.CONTRACT_CODE like '%'+@p_CONSTRACT_CODE+'%' OR @p_CONSTRACT_CODE IS NULL OR @p_CONSTRACT_CODE like '')
AND (A.CONTRACT_ID =@p_CONSTRACT_ID OR @p_CONSTRACT_ID IS NULL OR @p_CONSTRACT_ID like '')
AND (A.[CONTRACT_NAME] like N'%'+ @p_CONSTRACT_NAME +'%' OR @p_CONSTRACT_NAME IS NULL OR @p_CONSTRACT_NAME like '')
AND (A.BID_ID like '%'+@p_BID_ID +'%' OR @p_BID_ID IS NULL OR @p_BID_ID like '')
AND (C.BID_CODE like '%'+@p_BID_CODE +'%' OR @p_BID_CODE IS NULL OR @p_BID_CODE like '')
AND (A.SUP_ID like '%'+@p_SUP_ID +'%' OR @p_SUP_ID IS NULL OR @p_SUP_ID like '')
AND (B.SUP_CODE like '%'+@p_SUP_CODE +'%' OR @p_SUP_CODE IS NULL OR @p_SUP_CODE like '')
AND (DATEDIFF(DAY,A.SIGN_DT,CONVERT(DATETIME,@P_SIGN_DT,103)) = 0 OR @P_SIGN_DT IS NULL OR @P_SIGN_DT like '')
AND (DATEDIFF(DAY,A.CREATE_DT,CONVERT(DATETIME, @P_CREATE_DT, 103)) = 0 OR @P_CREATE_DT IS NULL OR @P_CREATE_DT='')
AND (A.AUTH_STATUS like '%'+@p_AUTH_STATUS +'%' OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS like '')
AND (A.CONTRACT_TYPE like '%'+@p_CONSTRACT_TYPE +'%' OR @p_CONSTRACT_TYPE IS NULL OR @p_CONSTRACT_TYPE like '')
AND (A.CONT_TYPE IN (SELECT VALUE FROM @l_LST_CONTYPE) OR @p_CONT_TYPE ='' OR @p_CONT_TYPE IS NULL)
AND ((@p_LEVEL = 'ALL' AND A.BRANCH_ID IN (SELECT BRANCH_ID from @tmp)
OR (@p_LEVEL = 'UNIT' AND A.BRANCH_ID = @p_BRANCH_LOGIN)) OR @p_BRANCH_LOGIN = '' OR @p_BRANCH_LOGIN IS NULL OR A.CONT_TYPE ='DK')
AND (BR.BRANCH_CODE =@p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID ='' OR BR.BRANCH_ID =@p_BRANCH_ID)
AND (DC.REQ_CODE =@p_PYC_CODE OR @p_PYC_CODE IS NULL OR @p_PYC_CODE ='' OR DC.REQ_ID =@p_PYC_CODE)
AND (T.REQ_CODE =@p_TTCT_CODE OR @p_TTCT_CODE IS NULL OR @p_TTCT_CODE ='' OR T.REQ_ID =@p_TTCT_CODE)
AND ( (LEN(@p_CUST_ID)=1 AND
((@p_CUST_ID ='Y' AND (CONVERT(DATE, GETDATE(),103) <= CONVERT(DATE, A.END_DT,103) OR A.END_DT IS NULL))
OR (@p_CUST_ID ='N' AND (CONVERT(DATE, GETDATE(),103) > CONVERT(DATE, A.END_DT,103)))
))
OR (LEN(@p_CUST_ID) >1 AND A.CUST_ID =@p_CUST_ID)
OR (@p_CUST_ID IS NULL OR @p_CUST_ID ='')
)
-- PAGING END
ELSE
-- PAGING BEGIN
SELECT TOP(CONVERT(INT,@P_TOP)) A.*,B.SUP_CODE,C.BID_CODE, B.SUP_NAME, B.ADDR, B.TEL AS SUP_TEL, B.CONTACT_PERSON AS SUP_CONTACT_PERSON,
D.AUTH_STATUS_NAME,
ISNULL((SELECT SUM(TR_PO.TOTAL_AMT) FROM TR_PO_MASTER TR_PO WHERE TR_PO.CONTRACT_ID = A.CONTRACT_ID),0) AS DONE_AMT,
dc.REQ_CODE AS SO_PYC, T.REQ_NAME AS TEN_PYC,
T.REQ_CODE AS SO_TT_CT, T.REQ_NAME AS TEN_TT_CT, T.CREATE_DT AS NGAY_NHAN_TT, T.APPROVE_DT AS NGAY_DUYET_TT, '' AS NCC_CODE, '' NCC_NAME, N'Họp đồng số: '+ A.CONTRACT_ID +N' đã hết hiệu lực' NCC_ADDR, B.TAX_NO,
CA.CONTENT AS CONT_TYPE_NAME,'' AS HH_TYPE_CODE,'' AS HH_TYPE_NAME, LS.CUSTOMER_NAME AS CUST_NAME, LS.CUSTOMER_CODE AS CUST_CODE,BR.BRANCH_CODE, BR.BRANCH_NAME, T.REQ_ID AS TO_TRINH_ID,
B.ACC_NUM,B.ACC_NAME,B.BANK_NAME,B.ACC_NAME_OUT,B.ACC_NUM_OUT,B.BANK_NAME_OUT,0.0 AS TOTAL_ADV_AMT, 0.0 AS TOTAL_PAY_AMT,
CASE WHEN CONVERT(DATE, A.END_DT, 103) < CONVERT(DATE, GETDATE(), 103) AND A.END_DT IS NOT NULL AND A.END_DT <> ''
THEN N'Hợp đồng số :' + A.CONTRACT_ID + N' đã hết hiệu lực kể từ ngày ' + FORMAT(DATEADD(DAY,1,A.END_DT),'dd/MM/yyyy') ELSE '' END AS IS_FLAG_END
-- SELECT END
FROM TR_CONTRACT A
LEFT JOIN CM_SUPPLIER B ON A.SUP_ID=B.SUP_ID
LEFT JOIN BID_MASTER C ON A.BID_ID=C.BID_ID
LEFT JOIN CM_AUTH_STATUS D ON D.AUTH_STATUS = A.AUTH_STATUS
LEFT JOIN TR_REQUEST_DOC DC ON A.REQ_DOC_ID = DC.REQ_ID
LEFT JOIN PL_REQUEST_DOC T ON DC.PL_REQ_ID = T.REQ_ID
LEFT JOIN dbo.CM_ALLCODE CA ON CA.CDVAL=A.CONT_TYPE AND CA.CDNAME='TR_CONT_TYPE' AND CA.CDTYPE='TR_CONT'
--LEFT JOIN TR_CONTRACT_DT PT ON A.CONTRACT_ID = PT.CONTRACT_ID
LEFT JOIN LS_CUSTOMER LS ON A.CUST_ID = LS.CUSTOMER_ID
LEFT JOIN CM_BRANCH BR ON A.BRANCH_ID= BR.BRANCH_ID
WHERE 1=1
AND (A.MAKER_ID like '%'+@p_MAKER_ID+'%' OR @p_MAKER_ID IS NULL OR @p_MAKER_ID like '')
AND (A.CONTRACT_CODE like '%'+@p_CONSTRACT_CODE+'%' OR @p_CONSTRACT_CODE IS NULL OR @p_CONSTRACT_CODE like '')
AND (A.CONTRACT_ID =@p_CONSTRACT_ID OR @p_CONSTRACT_ID IS NULL OR @p_CONSTRACT_ID like '')
AND (A.[CONTRACT_NAME] like N'%'+ @p_CONSTRACT_NAME +'%' OR @p_CONSTRACT_NAME IS NULL OR @p_CONSTRACT_NAME like '')
AND (A.BID_ID like '%'+@p_BID_ID +'%' OR @p_BID_ID IS NULL OR @p_BID_ID like '')
AND (C.BID_CODE like '%'+@p_BID_CODE +'%' OR @p_BID_CODE IS NULL OR @p_BID_CODE like '')
AND (A.SUP_ID like '%'+@p_SUP_ID +'%' OR @p_SUP_ID IS NULL OR @p_SUP_ID like '')
AND (B.SUP_CODE like '%'+@p_SUP_CODE +'%' OR @p_SUP_CODE IS NULL OR @p_SUP_CODE like '')
AND (DATEDIFF(DAY,A.SIGN_DT,CONVERT(DATETIME,@P_SIGN_DT,103)) = 0 OR @P_SIGN_DT IS NULL OR @P_SIGN_DT like '')
AND (DATEDIFF(DAY,A.CREATE_DT,CONVERT(DATETIME, @P_CREATE_DT, 103)) = 0 OR @P_CREATE_DT IS NULL OR @P_CREATE_DT='')
AND (A.AUTH_STATUS like '%'+@p_AUTH_STATUS +'%' OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS like '')
AND( DC.REQ_CODE like '%'+@p_PYC_CODE +'%' OR @p_PYC_CODE IS NULL OR @p_PYC_CODE like '' )
AND( T.REQ_CODE like '%'+@p_TTCT_CODE +'%' OR @p_TTCT_CODE IS NULL OR @p_TTCT_CODE like '' )
AND( T.REQ_NAME like N'%'+@p_TTCT_NAME +'%' OR @p_TTCT_NAME IS NULL OR @p_TTCT_NAME like '' )
AND A.RECORD_STATUS = '1'
AND ((LEN(@p_CUST_ID)=1 AND
((@p_CUST_ID ='Y' AND (CONVERT(DATE, GETDATE(),103) <= CONVERT(DATE, A.END_DT,103) OR A.END_DT IS NULL))
OR (@p_CUST_ID ='N' AND (CONVERT(DATE, GETDATE(),103) > CONVERT(DATE, A.END_DT,103)))
))
OR (LEN(@p_CUST_ID) >1 AND A.CUST_ID =@p_CUST_ID)
OR (@p_CUST_ID IS NULL OR @p_CUST_ID ='')
)
AND (A.CONT_TYPE IN (SELECT [VALUE] FROM @l_LST_CONTYPE) OR @p_CONT_TYPE ='' OR @p_CONT_TYPE IS NULL)
AND ((@p_LEVEL = 'ALL' AND A.BRANCH_ID IN (SELECT BRANCH_ID from @tmp))
OR (@p_LEVEL = 'UNIT' AND A.BRANCH_ID = @p_BRANCH_LOGIN) OR @p_BRANCH_LOGIN = '' OR @p_BRANCH_LOGIN IS NULL OR A.CONT_TYPE ='NT')
AND (BR.BRANCH_CODE =@p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID ='' OR BR.BRANCH_ID =@p_BRANCH_ID)
AND (DC.REQ_CODE =@p_PYC_CODE OR @p_PYC_CODE IS NULL OR @p_PYC_CODE ='' OR DC.REQ_ID =@p_PYC_CODE)
AND (T.REQ_CODE =@p_TTCT_CODE OR @p_TTCT_CODE IS NULL OR @p_TTCT_CODE ='' OR T.REQ_ID =@p_TTCT_CODE)
ORDER BY A.CREATE_DT DESC
-- PAGING END
END -- PAGING
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Altering [dbo].[RET_MASTER_Upd]'
GO
ALTER PROCEDURE [dbo].[RET_MASTER_Upd]
@p_RET_ID varchar(15) = null ,
@p_ASSET_ID VARCHAR(15) = NULL,
@P_ASSET_CODE VARCHAR(15) = NULL,
@P_OWNER VARCHAR(500) = NULL,
@p_LENGTH DECIMAL(18,2) = NULL,
@p_WIDTH DECIMAL(18,2) = NULL,
@p_FLOORS int = NULL,
@p_CURRENT_STATE nvarchar(100) = NULL,
@p_RET_TYPE varchar(15) = NULL,
@p_STATUS varchar(15) = NULL,
@p_LAND_SQUARE DECIMAL(18,2) = NULL,
@p_ADDR nvarchar(1000) = NULL, -- hungdv hieu chinh yeu cau anh toi 250520
@p_CONSTRUCT_SQUARE DECIMAL(18,2) = NULL,
@p_TOTAL_SQUARE DECIMAL(18,2) = NULL,
@p_BOUNDARY nvarchar(100) = NULL,
@p_HOUSEDES nvarchar(100) = NULL,
@p_PURPOSE_IN_USE nvarchar(500) = NULL,
@P_W_USE_CON NVARCHAR(100) = NULL,
@p_USE_STATUS varchar(15) = NULL,
@p_CONST_STATUS varchar(15) = NULL,
@p_OWNER_TYPE varchar(15) = NULL,
@p_USE_PERIOD int = NULL,
@p_PERSON_HOLDER nvarchar(1000) = NULL,
@p_REASON nvarchar(1000) = NULL,
@p_NOTES nvarchar(1000) = NULL,
@p_RECORD_STATUS varchar(1) = NULL,
@p_AUTH_STATUS varchar(1) = NULL,
@p_MAKER_ID varchar(15) = NULL,
@p_CREATE_DT VARCHAR(20) = NULL,
@p_CHECKER_ID varchar(15) = NULL,
@p_APPROVE_DT VARCHAR(20) = NULL,
@P_BUY_DT VARCHAR(20) = NULL,
@p_USE_FORM VARCHAR(1),
@p_USE_FORM_DETAIL nvarchar(MAX),
@p_USE_SOURCE nvarchar(MAX),
@p_USE_PERIOD_DT VARCHAR(20),
@p_OWNER_TYPE_DETAIL NVARCHAR(MAX),
@p_RET_SAVE_CODE VARCHAR(100),
@p_BRANCH_USE nvarchar(500),
@p_RET_TAX_SCHEDULE XML = NULL,
@p_RET_REPAIR_SUGGEST XML = NULL,
@p_RET_REPAIR_REAL XML = NULL,
@p_FLUCTUATING_DT varchar(20) = null,
@p_REASON_FLUCTUATING nvarchar(max) = null
AS
--Validation is here
DECLARE @ERRORSYS NVARCHAR(15) = ''
IF ( NOT EXISTS ( SELECT * FROM RET_MASTER WHERE RET_ID = @p_RET_ID))
SET @ERRORSYS = 'RETM-00001'
IF @ERRORSYS <> ''
BEGIN
SELECT ErrorCode Result, '' RET_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS
RETURN '0'
END
Declare @hdoc INT
Exec sp_xml_preparedocument @hdoc Output,@p_RET_TAX_SCHEDULE
DECLARE RetTaxSchedule CURSOR FOR
SELECT *
FROM OPENXML(@hDoc,'/Root/RetTaxSchedule',2)
WITH
(
TAX_SCHEDULE_ID VARCHAR(15),
REQ_PAY_ID VARCHAR(15),
FRM_DATE varchar(30),
TO_DATE varchar(30),
TOTAL_AMT decimal
)
OPEN RetTaxSchedule
Exec sp_xml_preparedocument @hdoc Output,@p_RET_REPAIR_SUGGEST
DECLARE RetRepairSuggest CURSOR FOR
SELECT *
FROM OPENXML(@hDoc,'/Root/RetRepairSuggest',2)
WITH
(
RET_SUG_REPAIR_ID VARCHAR(15),
REQ_ID varchar(15),
REPAIR_SUG_DT varchar(30) ,
BRANCH_ID varchar(15) ,
BRANCH_SUGGEST nvarchar(4000),
TOTAL_AMT decimal,
USER_SUGGEST varchar(15),
REPAIR_REASON nvarchar(4000),
REPAIR_CONTENT nvarchar(4000)
)
OPEN RetRepairSuggest
Exec sp_xml_preparedocument @hdoc Output,@p_RET_REPAIR_REAL
DECLARE RetRepairReal CURSOR FOR
SELECT *
FROM OPENXML(@hDoc,'/Root/RetRepairReal',2)
WITH
(
RET_REPAIR_REAL_ID varchar(15),
REQ_PAY_ID varchar(15),
REPAIR_DT varchar(30) ,
BRANCH_REPAIR nvarchar(4000),
TOTAL_AMT decimal,
REPAIR_CONTENT_REAL nvarchar(4000),
NOTES nvarchar(4000)
)
OPEN RetRepairReal
BEGIN TRANSACTION
UPDATE RET_MASTER
SET [BUY_DT] = CONVERT(DATETIME, @P_BUY_DT, 103),
[ASSET_ID] = @p_ASSET_ID,
[ASSET_CODE] = @P_ASSET_CODE,
[OWNER] = @P_OWNER,
[LENGTH] = @p_LENGTH,
[WIDTH] = @p_WIDTH,
[FLOORS] = @p_FLOORS,
[CURRENT_STATE] = @p_CURRENT_STATE,
[RET_TYPE] = @p_RET_TYPE,
[STATUS] = @p_STATUS,
[LAND_SQUARE] = @p_LAND_SQUARE,
[CONSTRUCT_SQUARE] = @p_CONSTRUCT_SQUARE,
[TOTAL_SQUARE] = @p_TOTAL_SQUARE,
[BOUNDARY] = @p_BOUNDARY,
[HOUSEDES] = @p_HOUSEDES,
[PURPOSE_IN_USE] = @p_PURPOSE_IN_USE,
[W_USE_CON] = @P_W_USE_CON,
[USE_STATUS] = @p_USE_STATUS,
[CONST_STATUS] = @p_CONST_STATUS,
[OWNER_TYPE] = @p_OWNER_TYPE,
[USE_PERIOD] = @p_USE_PERIOD,
[PERSON_HOLDER] = @p_PERSON_HOLDER,
[NOTES] = @p_NOTES,
[REASON] = @p_REASON,
[RECORD_STATUS] = @p_RECORD_STATUS,
[AUTH_STATUS] = @p_AUTH_STATUS,
[MAKER_ID] = @p_MAKER_ID,
[CREATE_DT] = CONVERT(DATETIME, @p_CREATE_DT, 103),
[CHECKER_ID] = @p_CHECKER_ID,
[APPROVE_DT] = CONVERT(DATETIME, @p_APPROVE_DT, 103),
[USE_FORM] = @p_USE_FORM,
[USE_FORM_DETAIL] = @p_USE_FORM_DETAIL,
[USE_SOURCE] = @p_USE_SOURCE,
[USE_PERIOD_DT] = CONVERT(DATETIME, @p_USE_PERIOD_DT, 103),
[OWNER_TYPE_DETAIL] = @p_OWNER_TYPE_DETAIL,
[RET_SAVE_CODE] = @p_RET_SAVE_CODE,
[BRANCH_USE] = @p_BRANCH_USE,
ADDR = @p_ADDR, -- hungdv hieu chinh yeu cau anh toi 250520
[FLUCTUATING_DT] = CONVERT(DATETIME, @p_FLUCTUATING_DT, 103),
[REASON_FLUCTUATING] = @p_REASON_FLUCTUATING
WHERE RET_ID = @p_RET_ID;
IF @@Error <> 0 GOTO ABORT
--UPDATE DETAIL
DECLARE
@TAX_SCHEDULE_ID VARCHAR(15),
@RET_SUG_REPAIR_ID VARCHAR(15),
@RET_REPAIR_REAL_ID varchar(15),
@d_REQ_PAY_ID VARCHAR(15),
@d_FRM_DATE varchar(30),
@d_TO_DATE varchar(30),
@d_TOTAL_AMT decimal,
@RET_ID varchar(15),
@REQ_ID varchar(15),
@REPAIR_SUG_DT varchar(30),
@BRANCH_ID varchar(15),
@REPAIR_DT varchar(20),
@BRANCH_REPAIR nvarchar(4000),
@REPAIR_CONTENT_REAL nvarchar(4000),
@NOTES nvarchar(4000),
@BRANCH_SUGGEST nvarchar(4000),
@TOTAL_AMT decimal,
@USER_SUGGEST varchar(15),
@REPAIR_REASON nvarchar(4000),
@REPAIR_CONTENT nvarchar(4000)
--UPDATE ACCESSORY DETAIL
DELETE FROM RET_TAX_SCHEDULE WHERE RET_ID = @p_RET_ID
FETCH NEXT FROM RetTaxSchedule INTO @TAX_SCHEDULE_ID, @d_REQ_PAY_ID,@d_FRM_DATE,@d_TO_DATE,@d_TOTAL_AMT
WHILE @@FETCH_STATUS = 0
BEGIN
print LEN(@TAX_SCHEDULE_ID)
IF(LEN(@TAX_SCHEDULE_ID) = 0)
BEGIN
EXEC SYS_CodeMasters_Gen 'RET_TAX_SCHEDULE', @TAX_SCHEDULE_ID out
IF @TAX_SCHEDULE_ID ='' OR @TAX_SCHEDULE_ID IS NULL GOTO ABORT
END
PRINT @TAX_SCHEDULE_ID
INSERT INTO RET_TAX_SCHEDULE([TAX_SCHEDULE_ID],[RET_ID],[REQ_PAY_ID],[FRM_DATE],[TO_DATE],[TOTAL_AMT],[AUTH_STATUS],[RECORD_STATUS],[MAKER_ID])
VALUES(@TAX_SCHEDULE_ID,@p_RET_ID ,@d_REQ_PAY_ID , CONVERT(DATETIME, @d_FRM_DATE, 103) ,CONVERT(DATETIME, @d_TO_DATE, 103) ,@d_TOTAL_AMT ,@p_AUTH_STATUS,@p_RECORD_STATUS ,@p_MAKER_ID )
IF @@ERROR <> '' GOTO ABORT
FETCH NEXT FROM RetTaxSchedule INTO @TAX_SCHEDULE_ID, @d_REQ_PAY_ID,@d_FRM_DATE,@d_TO_DATE,@d_TOTAL_AMT
END
PRINT 'RetTaxSchedule'
--UPDATE RetRepairSuggest
DELETE FROM RET_REPAIR_SUGGEST WHERE RET_ID = @p_RET_ID
FETCH NEXT FROM RetRepairSuggest INTO @RET_SUG_REPAIR_ID, @REQ_ID,@REPAIR_SUG_DT,@BRANCH_ID,@BRANCH_SUGGEST,@TOTAL_AMT,@USER_SUGGEST,@REPAIR_REASON,@REPAIR_CONTENT
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE @l_RET_SUG_REPAIR_ID VARCHAR(15)
IF LEN(@RET_SUG_REPAIR_ID ) = 0
BEGIN
EXEC SYS_CodeMasters_Gen 'RET_REPAIR_SUGGEST', @RET_SUG_REPAIR_ID out
PRINT @RET_SUG_REPAIR_ID
IF @RET_SUG_REPAIR_ID ='' OR @RET_SUG_REPAIR_ID IS NULL GOTO ABORT
END
INSERT INTO RET_REPAIR_SUGGEST([RET_SUG_REPAIR_ID],[RET_ID],[REQ_ID],[REPAIR_SUG_DT],[BRANCH_ID],[BRANCH_SUGGEST],[TOTAL_AMT],[USER_SUGGEST],[REPAIR_REASON],[REPAIR_CONTENT],[AUTH_STATUS],[RECORD_STATUS],[MAKER_ID])
VALUES(@RET_SUG_REPAIR_ID,@p_RET_ID ,@REQ_ID ,CONVERT(DATETIME, @REPAIR_SUG_DT, 103) ,@BRANCH_ID ,@BRANCH_SUGGEST,@TOTAL_AMT,@USER_SUGGEST,@REPAIR_REASON,@REPAIR_CONTENT ,@p_AUTH_STATUS ,@p_RECORD_STATUS ,@p_MAKER_ID )
IF @@ERROR <> '' GOTO ABORT
FETCH NEXT FROM RetRepairSuggest INTO @RET_SUG_REPAIR_ID, @REQ_ID,@REPAIR_SUG_DT,@BRANCH_ID,@BRANCH_SUGGEST,@TOTAL_AMT,@USER_SUGGEST,@REPAIR_REASON,@REPAIR_CONTENT
END
--UPDATE RetRepairReal
DELETE FROM RET_REPAIR_REAL WHERE RET_ID = @p_RET_ID
FETCH NEXT FROM RetRepairReal INTO @RET_REPAIR_REAL_ID, @d_REQ_PAY_ID,@REPAIR_DT,@BRANCH_REPAIR,@TOTAL_AMT,@REPAIR_CONTENT_REAL,@NOTES
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE @l_RET_REPAIR_REAL_ID VARCHAR(15)
IF LEN(@RET_REPAIR_REAL_ID ) = 0
BEGIN
EXEC SYS_CodeMasters_Gen 'RET_REPAIR_REAL', @RET_REPAIR_REAL_ID out
PRINT @RET_REPAIR_REAL_ID
IF @RET_REPAIR_REAL_ID ='' OR @RET_REPAIR_REAL_ID IS NULL GOTO ABORT
END
INSERT INTO RET_REPAIR_REAL([RET_REPAIR_REAL_ID],[RET_ID],[REQ_PAY_ID],[REPAIR_DT],[BRANCH_REPAIR],[TOTAL_AMT],[REPAIR_CONTENT_REAL],[NOTES] , [AUTH_STATUS],[RECORD_STATUS],[MAKER_ID])
VALUES(@RET_REPAIR_REAL_ID,@p_RET_ID,@d_REQ_PAY_ID ,CONVERT(DATETIME, @REPAIR_DT, 103) ,@BRANCH_REPAIR ,@TOTAL_AMT,@REPAIR_CONTENT_REAL,@NOTES ,@p_AUTH_STATUS ,@p_RECORD_STATUS ,@p_MAKER_ID )
IF @@ERROR <> '' GOTO ABORT
FETCH NEXT FROM RetRepairReal INTO @RET_REPAIR_REAL_ID, @d_REQ_PAY_ID,@REPAIR_DT,@BRANCH_REPAIR,@TOTAL_AMT,@REPAIR_CONTENT_REAL,@NOTES
END
CLOSE RetTaxSchedule
DEALLOCATE RetTaxSchedule
CLOSE RetRepairSuggest
DEALLOCATE RetRepairSuggest
CLOSE RetRepairReal
DEALLOCATE RetRepairReal
COMMIT TRANSACTION
SELECT '0' as Result, @p_RET_ID RET_ID, '' ErrorDesc
RETURN '0'
ABORT:
BEGIN
CLOSE RetTaxSchedule
DEALLOCATE RetTaxSchedule
CLOSE RetRepairSuggest
DEALLOCATE RetRepairSuggest
CLOSE RetRepairReal
DEALLOCATE RetRepairReal
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' RET_ID, '' ErrorDesc
RETURN '-1'
End
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Altering [dbo].[RET_MASTER_Ins]'
GO
ALTER PROCEDURE [dbo].[RET_MASTER_Ins]
@p_ASSET_ID VARCHAR(15) = NULL,
@P_ASSET_CODE VARCHAR(15) = NULL,
@P_OWNER VARCHAR(500) = NULL,
@p_LENGTH DECIMAL(18,2) = NULL,
@p_ADDR nvarchar(1000) = NULL, -- hungdv hieu chinh yeu cau anh toi 250520
@p_WIDTH DECIMAL(18,2) = NULL,
@p_FLOORS int = NULL,
@p_CURRENT_STATE nvarchar(100) = NULL,
@p_RET_TYPE varchar(15) = NULL,
@p_STATUS varchar(15) = NULL,
@p_LAND_SQUARE DECIMAL(18,2) = NULL,
@p_CONSTRUCT_SQUARE DECIMAL(18,2) = NULL,
@p_TOTAL_SQUARE DECIMAL(18,2) = NULL,
@p_BOUNDARY nvarchar(100) = NULL,
@p_HOUSEDES nvarchar(100) = NULL,
@p_PURPOSE_IN_USE nvarchar(500) = NULL,
@P_W_USE_CON NVARCHAR(100) = NULL,
@p_USE_STATUS varchar(15) = NULL,
@p_CONST_STATUS varchar(15) = NULL,
@p_OWNER_TYPE varchar(15) = NULL,
@p_USE_PERIOD int = NULL,
@p_PERSON_HOLDER nvarchar(1000) = NULL,
@p_REASON nvarchar(1000) = NULL,
@p_NOTES nvarchar(1000) = NULL,
@p_RECORD_STATUS varchar(1) = NULL,
@p_AUTH_STATUS varchar(1) = NULL,
@p_MAKER_ID varchar(15) = NULL,
@p_CREATE_DT VARCHAR(20) = NULL,
@p_CHECKER_ID varchar(15) = NULL,
@p_APPROVE_DT VARCHAR(20) = NULL,
@P_BUY_DT VARCHAR(20) = NULL,
@p_USE_FORM VARCHAR(1),
@p_USE_FORM_DETAIL nvarchar(MAX),
@p_USE_SOURCE nvarchar(MAX),
@p_USE_PERIOD_DT VARCHAR(20),
@p_OWNER_TYPE_DETAIL NVARCHAR(MAX),
@p_RET_SAVE_CODE VARCHAR(100),
@p_XML_TEMP XML = NULL,
@p_BRANCH_USE nvarchar(500),
@p_RET_TAX_SCHEDULE XML = NULL,
@p_RET_REPAIR_SUGGEST XML = NULL,
@p_RET_REPAIR_REAL XML = NULL,
@p_FLUCTUATING_DT varchar(20) = null,
@p_REASON_FLUCTUATING nvarchar(max) = null
AS
--Validation is here
DECLARE @ERRORSYS NVARCHAR(15) = ''
IF ( EXISTS ( SELECT * FROM RET_MASTER WHERE ASSET_ID = @P_ASSET_ID ))
SET @ERRORSYS = 'RETM-00002'
IF @ERRORSYS <> ''
BEGIN
SELECT ErrorCode Result, '' RET_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS
RETURN '0'
END
Declare @hdoc INT
Exec sp_xml_preparedocument @hdoc Output,@p_RET_TAX_SCHEDULE
DECLARE RetTaxSchedule CURSOR FOR
SELECT *
FROM OPENXML(@hDoc,'/Root/RetTaxSchedule',2)
WITH
(
REQ_PAY_ID VARCHAR(15),
FRM_DATE varchar(30),
TO_DATE varchar(30),
TOTAL_AMT decimal
)
OPEN RetTaxSchedule
Exec sp_xml_preparedocument @hdoc Output,@p_RET_REPAIR_SUGGEST
DECLARE RetRepairSuggest CURSOR FOR
SELECT *
FROM OPENXML(@hDoc,'/Root/RetRepairSuggest',2)
WITH
(
REQ_ID varchar(15),
REPAIR_SUG_DT varchar(30) ,
BRANCH_ID varchar(15) ,
BRANCH_SUGGEST nvarchar(4000),
TOTAL_AMT decimal,
USER_SUGGEST varchar(15),
REPAIR_REASON nvarchar(4000),
REPAIR_CONTENT nvarchar(4000)
)
OPEN RetRepairSuggest
Exec sp_xml_preparedocument @hdoc Output,@p_RET_REPAIR_REAL
DECLARE RetRepairReal CURSOR FOR
SELECT *
FROM OPENXML(@hDoc,'/Root/RetRepairReal',2)
WITH
(
REQ_PAY_ID varchar(15),
REPAIR_DT varchar(30) ,
BRANCH_REPAIR nvarchar(4000),
TOTAL_AMT decimal,
REPAIR_CONTENT_REAL nvarchar(4000),
NOTES nvarchar(4000)
)
OPEN RetRepairReal
BEGIN TRANSACTION
DECLARE @l_RET_ID VARCHAR(15)
EXEC SYS_CodeMasters_Gen 'RET_MASTER', @l_RET_ID out
IF @l_RET_ID='' OR @l_RET_ID IS NULL GOTO ABORT
INSERT INTO RET_MASTER
(
[BUY_DT],
[RET_ID],
[ASSET_ID],
[ASSET_CODE],
[OWNER],
[LENGTH],
[WIDTH],
[FLOORS],
[CURRENT_STATE],
[RET_TYPE],
[STATUS],
[LAND_SQUARE],
[CONSTRUCT_SQUARE],
[TOTAL_SQUARE],
[BOUNDARY],
[HOUSEDES],
[PURPOSE_IN_USE],
[W_USE_CON],
[USE_STATUS],
[CONST_STATUS],
[OWNER_TYPE],
[USE_PERIOD],
[PERSON_HOLDER],
[REASON],
[NOTES],
[RECORD_STATUS],
[AUTH_STATUS],
[MAKER_ID],
[CREATE_DT],
[CHECKER_ID],
[APPROVE_DT],
[USE_FORM],
[USE_FORM_DETAIL],
[USE_SOURCE],
[USE_PERIOD_DT],
[OWNER_TYPE_DETAIL],
[RET_SAVE_CODE],
BRANCH_USE,
[FLUCTUATING_DT],
[REASON_FLUCTUATING],
ADDR -- hungdv hieu chinh yeu cau anh toi 250520
)
VALUES
(CONVERT(DATETIME, @P_BUY_DT, 103), @l_RET_ID, @p_ASSET_ID, @P_ASSET_CODE, @P_OWNER, @p_LENGTH, @p_WIDTH, @p_FLOORS,
@p_CURRENT_STATE, @p_RET_TYPE, @p_STATUS, @p_LAND_SQUARE, @p_CONSTRUCT_SQUARE, @p_TOTAL_SQUARE, @p_BOUNDARY,
@p_HOUSEDES, @p_PURPOSE_IN_USE, @P_W_USE_CON, @p_USE_STATUS, @p_CONST_STATUS, @p_OWNER_TYPE, @p_USE_PERIOD,
@p_PERSON_HOLDER, @p_REASON, @p_NOTES, @p_RECORD_STATUS, @p_AUTH_STATUS, @p_MAKER_ID,
CONVERT(DATETIME, @p_CREATE_DT, 103), @p_CHECKER_ID, CONVERT(DATETIME, @p_APPROVE_DT, 103), @p_USE_FORM,
@p_USE_FORM_DETAIL, @p_USE_SOURCE, CONVERT(DATETIME, @p_USE_PERIOD_DT, 103), @p_OWNER_TYPE_DETAIL, @p_RET_SAVE_CODE, @p_BRANCH_USE,CONVERT(DATETIME, @p_FLUCTUATING_DT, 103),@p_REASON_FLUCTUATING ,@p_ADDR);
IF @@Error <> 0 GOTO ABORT
--KHAI BAO TOAN BO BIEN TRUOC KHI FETCH DATA
DECLARE
@d_REQ_PAY_ID VARCHAR(15),
@d_FRM_DATE varchar(30),
@d_TO_DATE varchar(30),
@d_TOTAL_AMT decimal,
@RET_ID varchar(15),
@REQ_ID varchar(15),
@REPAIR_SUG_DT varchar(30),
@REPAIR_DT varchar(30),
@BRANCH_ID varchar(15),
@BRANCH_SUGGEST nvarchar(4000),
@BRANCH_REPAIR nvarchar(4000),
@REPAIR_CONTENT_REAL nvarchar(4000),
@NOTES nvarchar(4000),
@TOTAL_AMT decimal,
@USER_SUGGEST varchar(15),
@REPAIR_REASON nvarchar(4000),
@REPAIR_CONTENT nvarchar(4000)
--INSERT RetTaxSchedule
FETCH NEXT FROM RetTaxSchedule INTO @d_REQ_PAY_ID,@d_FRM_DATE,@d_TO_DATE,@d_TOTAL_AMT
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE @l_TAX_SCHEDULE_ID VARCHAR(15)
EXEC SYS_CodeMasters_Gen 'RET_TAX_SCHEDULE', @l_TAX_SCHEDULE_ID out
IF @l_TAX_SCHEDULE_ID='' OR @l_TAX_SCHEDULE_ID IS NULL GOTO ABORT
INSERT INTO RET_TAX_SCHEDULE([TAX_SCHEDULE_ID],[RET_ID],[REQ_PAY_ID],[FRM_DATE],[TO_DATE],[TOTAL_AMT],[AUTH_STATUS],[RECORD_STATUS],[MAKER_ID])
VALUES(@l_TAX_SCHEDULE_ID,@l_RET_ID ,@d_REQ_PAY_ID , CONVERT(DATETIME, @d_FRM_DATE, 103) ,CONVERT(DATETIME, @d_TO_DATE, 103) ,@d_TOTAL_AMT ,@p_AUTH_STATUS,@p_RECORD_STATUS ,@p_MAKER_ID )
IF @@ERROR <> '' GOTO ABORT
FETCH NEXT FROM RetTaxSchedule INTO @d_REQ_PAY_ID,@d_FRM_DATE,@d_TO_DATE,@d_TOTAL_AMT
END
--INSERT RepairSuggest
FETCH NEXT FROM RetRepairSuggest INTO @REQ_ID,@REPAIR_SUG_DT,@BRANCH_ID,@BRANCH_SUGGEST,@TOTAL_AMT,@USER_SUGGEST,@REPAIR_REASON,@REPAIR_CONTENT
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE @l_RET_SUG_REPAIR_ID VARCHAR(15)
EXEC SYS_CodeMasters_Gen 'RET_REPAIR_SUGGEST', @l_RET_SUG_REPAIR_ID out
IF @l_RET_SUG_REPAIR_ID='' OR @l_RET_SUG_REPAIR_ID IS NULL GOTO ABORT
INSERT INTO RET_REPAIR_SUGGEST([RET_SUG_REPAIR_ID],[RET_ID],[REQ_ID],[REPAIR_SUG_DT],[BRANCH_ID],[BRANCH_SUGGEST],[TOTAL_AMT],[USER_SUGGEST],[REPAIR_REASON],[REPAIR_CONTENT],[AUTH_STATUS],[RECORD_STATUS],[MAKER_ID])
VALUES(@l_RET_SUG_REPAIR_ID,@l_RET_ID ,@REQ_ID ,CONVERT(DATETIME, @REPAIR_SUG_DT, 103) ,@BRANCH_ID ,@BRANCH_SUGGEST,@TOTAL_AMT,@USER_SUGGEST,@REPAIR_REASON,@REPAIR_CONTENT ,@p_AUTH_STATUS ,@p_RECORD_STATUS ,@p_MAKER_ID )
IF @@ERROR <> '' GOTO ABORT
FETCH NEXT FROM RetRepairSuggest INTO @REQ_ID,@REPAIR_SUG_DT,@BRANCH_ID,@BRANCH_SUGGEST,@TOTAL_AMT,@USER_SUGGEST,@REPAIR_REASON,@REPAIR_CONTENT
END
--INSERT RepairReal
FETCH NEXT FROM RetRepairReal INTO @d_REQ_PAY_ID,@REPAIR_DT,@BRANCH_REPAIR,@TOTAL_AMT,@REPAIR_CONTENT_REAL,@NOTES
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE @l_RET_REPAIR_REAL_ID VARCHAR(15)
EXEC SYS_CodeMasters_Gen 'RET_REPAIR_REAL', @l_RET_REPAIR_REAL_ID out
IF @l_RET_REPAIR_REAL_ID='' OR @l_RET_REPAIR_REAL_ID IS NULL GOTO ABORT
INSERT INTO RET_REPAIR_REAL([RET_REPAIR_REAL_ID],[RET_ID],[REQ_PAY_ID],[REPAIR_DT],[BRANCH_REPAIR],[TOTAL_AMT],[REPAIR_CONTENT_REAL],[NOTES] , [AUTH_STATUS],[RECORD_STATUS],[MAKER_ID])
VALUES(@l_RET_REPAIR_REAL_ID,@l_RET_ID,@d_REQ_PAY_ID ,CONVERT(DATETIME, @REPAIR_DT, 103) ,@BRANCH_REPAIR ,@TOTAL_AMT,@REPAIR_CONTENT_REAL,@NOTES ,@p_AUTH_STATUS ,@p_RECORD_STATUS ,@p_MAKER_ID )
IF @@ERROR <> '' GOTO ABORT
FETCH NEXT FROM RetRepairReal INTO @d_REQ_PAY_ID,@REPAIR_DT,@BRANCH_REPAIR,@TOTAL_AMT,@REPAIR_CONTENT_REAL,@NOTES
END
CLOSE RetTaxSchedule
DEALLOCATE RetTaxSchedule
CLOSE RetRepairSuggest
DEALLOCATE RetRepairSuggest
CLOSE RetRepairReal
DEALLOCATE RetRepairReal
COMMIT TRANSACTION
SELECT '0' as Result, @l_RET_ID RET_ID, '' ErrorDesc
RETURN '0'
ABORT:
BEGIN
CLOSE RetTaxSchedule
DEALLOCATE RetTaxSchedule
CLOSE RetRepairSuggest
DEALLOCATE RetRepairSuggest
CLOSE RetRepairReal
DEALLOCATE RetRepairReal
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' RET_ID, '' ErrorDesc
RETURN '-1'
End
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Altering [dbo].[TR_REQ_PAY_TRANSFER_Upd]'
GO
ALTER PROCEDURE [dbo].[TR_REQ_PAY_TRANSFER_Upd]
@p_TRANSFER_MAKER nvarchar(50) = NULL,
@p_TRANSFER_DT varchar(25) = NULL,
@p_TRASFER_USER_RECIVE varchar(15) = NULL,
@p_TRANSFER_TYPE varchar(15) = NULL,
@p_XMP_TEMP XML = NULL
AS
--Validation is here
/*
*/
DECLARE @LIST_REQ_PAY_ID VARCHAR(500) =''
Declare @hdoc INT
Exec sp_xml_preparedocument @hdoc Output,@p_XMP_TEMP
DECLARE TransferData CURSOR FOR
SELECT *
FROM OPENXML(@hDoc,'/Root/XmlData',2)
WITH
(
REQ_PAY_ID varchar(15) ,
TRANSFER_MAKER nvarchar(15) ,
TRASFER_USER_RECIVE varchar(15),
TRANSFER_ACTION VARCHAR(15)
)
OPEN TransferData
BEGIN TRANSACTION
DECLARE @REQ_PAY_ID VARCHAR(15), @TRANSFER_MAKER VARCHAR(15),@TRASFER_USER_RECIVE VARCHAR(15),@TRANSFER_ACTION VARCHAR(15)
DECLARE @INDEX INT =0
FETCH NEXT FROM TransferData INTO @REQ_PAY_ID, @TRANSFER_MAKER, @TRASFER_USER_RECIVE,@TRANSFER_ACTION
WHILE @@FETCH_STATUS = 0
BEGIN
SET @INDEX = @INDEX+1
-- BO SUNG NEU TO PDN TẠM ỨNG NẾU ĐÃ ĐƯỢC TRƯỞNG VĂN PHÒNG ĐIỀU PHỐI
IF(EXISTS(SELECT AUTH_STATUS FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@REQ_PAY_ID AND AUTH_STATUS <> 'A'))
BEGIN
IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@REQ_PAY_ID AND STATUS ='P' AND ROLE_USER IN ('TKTGD','TKHDQT')))
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Phiếu đề nghị tạm ứng đã được trưởng văn phòng phê duyệt. Vui lòng không thực hiện điều phối' ErrorDesc
RETURN '-1'
END
------
DELETE FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@REQ_PAY_ID
-- KIEM TRA NEU CHUA CHON NHAN VIEN XU LY SE BAO LOI
IF(@TRASFER_USER_RECIVE ='' OR @TRASFER_USER_RECIVE IS NULL)
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Nhân viên được giao xử lý không được phép để trống' ErrorDesc
RETURN '-1'
END
IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID=@REQ_PAY_ID AND AUTH_STATUS_KT='A'))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Phiếu đề nghị tạm ứng đã được kế toán duyệt' ErrorDesc
RETURN '-1'
END
IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID=@REQ_PAY_ID AND AUTH_STATUS_KT='S'))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Phiếu đề nghị tạm ứng đang được đề xuất từ chối và KSV đang xem xét' ErrorDesc
RETURN '-1'
END
IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID=@REQ_PAY_ID AND AUTH_STATUS_KT='S'))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Phiếu đề nghị thanh toán đang được đề xuất từ chối và KSV đang xem xét' ErrorDesc
RETURN '-1'
END
IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID=@REQ_PAY_ID AND AUTH_STATUS_KT='A'))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Phiếu đề nghị thanh toán đã được kế toán duyệt' ErrorDesc
RETURN '-1'
END
IF(EXISTS(SELECT * FROM TL_USER WHERE TLNANME =@TRASFER_USER_RECIVE AND RoleName ='KSV') AND @TRANSFER_ACTION <>'KS')
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Bạn không được phép điều phối KSV với vai trò xử lý phiếu' ErrorDesc
RETURN '-1'
END
IF(EXISTS(SELECT * FROM TL_USER WHERE TLNANME =@TRASFER_USER_RECIVE AND RoleName ='GDV') AND @TRANSFER_ACTION <>'XL')
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Bạn không được phép điều phối GDV với vai trò kiểm soát phiếu' ErrorDesc
RETURN '-1'
END
IF(EXISTS(SELECT * FROM TL_USER_V2 WHERE TLNANME =@TRASFER_USER_RECIVE AND RoleName ='KSV') AND @TRANSFER_ACTION <>'KS')
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Bạn không được phép điều phối KSV với vai trò xử lý phiếu' ErrorDesc
RETURN '-1'
END
IF(EXISTS(SELECT * FROM TL_USER_V2 WHERE TLNANME =@TRASFER_USER_RECIVE AND RoleName ='GDV') AND @TRANSFER_ACTION <>'XL')
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Bạn không được phép điều phối GDV với vai trò kiểm soát phiếu' ErrorDesc
RETURN '-1'
END
--IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID=@REQ_PAY_ID AND MAKER_ID_KT IS NOT NULL AND MAKER_ID_KT <>''))
--BEGIN
-- ROLLBACK TRANSACTION
-- SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Phiếu đề nghị tạm ứng đã được kế toán cập nhật thông tin' ErrorDesc
-- RETURN '-1'
--END
--IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID=@REQ_PAY_ID AND MAKER_ID_KT IS NOT NULL AND MAKER_ID_KT <>''))
--BEGIN
-- ROLLBACK TRANSACTION
-- SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Phiếu đề nghị tạm ứng đã được kế toán cập nhật thông tin' ErrorDesc
-- RETURN '-1'
--END
--IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID=@REQ_PAY_ID AND MAKER_ID_KT IS NOT NULL))
--BEGIN
-- ROLLBACK TRANSACTION
-- SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Phiếu đề nghị thanh toán đã được kế toán cập nhật thông tin' ErrorDesc
-- RETURN '-1'
--END
IF(NOT EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@REQ_PAY_ID AND TLNAME =@TRANSFER_MAKER))
BEGIN
INSERT INTO PL_REQUEST_PROCESS_CHILD(REQ_ID,PROCESS_ID,TLNAME,TYPE_JOB,LEVEL_JOB,STATUS_JOB,RECORD_STATUS)
VALUES (@REQ_PAY_ID,NULL,@TRANSFER_MAKER,'KS',CONVERT(VARCHAR(5),'1'),'P','1')
END
-- KHAI BAO MAX LEVEL
DECLARE @MAX_LEVEL VARCHAR(5), @NEXT_LEVEL INT, @PREV_LEVEL INT
SET @MAX_LEVEL= (SELECT MAX(LEVEL_JOB) FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID=@REQ_PAY_ID)
SET @NEXT_LEVEL = (SELECT CONVERT(INT,@MAX_LEVEL)) +1
SET @PREV_LEVEL = (SELECT CONVERT(INT,@MAX_LEVEL)) -1
IF(@TRANSFER_ACTION ='XL')
BEGIN
--UPDATE TR_REQ_ADVANCE_PAYMENT SET
--AUTH_STATUS_KT ='U',
--TRANSFER_DT = CONVERT(DATE,GETDATE(),103),
--TRANSFER_MAKER = @TRANSFER_MAKER,
--TRASFER_USER_RECIVE = @TRASFER_USER_RECIVE
--WHERE REQ_PAY_ID =@REQ_PAY_ID
IF(NOT EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@REQ_PAY_ID AND TYPE_JOB =@TRANSFER_ACTION))
BEGIN
INSERT INTO PL_REQUEST_PROCESS_CHILD(REQ_ID,PROCESS_ID,TLNAME,TYPE_JOB,LEVEL_JOB,STATUS_JOB,RECORD_STATUS)
VALUES (@REQ_PAY_ID,NULL,@TRASFER_USER_RECIVE,'XL',CONVERT(VARCHAR(5),@NEXT_LEVEL),'C','1')
INSERT INTO PL_PROCESS VALUES (@REQ_PAY_ID,'TRANSF',@TRANSFER_MAKER, GETDATE(),N'Điều phối về nhân viên ' +@TRASFER_USER_RECIVE,N'Điều phối thanh toán/ tạm ứng')
END
ELSE
BEGIN
UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='C',TYPE_JOB=@TRANSFER_ACTION,TLNAME = @TRASFER_USER_RECIVE WHERE REQ_ID =@REQ_PAY_ID AND TYPE_JOB =@TRANSFER_ACTION
END
-- UPDATE BUOC TRUOC DO VE P
--UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P',TYPE_JOB='KS' WHERE REQ_ID =@REQ_PAY_ID AND LEVEL_JOB =@MAX_LEVEL
END
ELSE
BEGIN
IF(NOT EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@REQ_PAY_ID AND TYPE_JOB =@TRANSFER_ACTION))
BEGIN
INSERT INTO PL_REQUEST_PROCESS_CHILD(REQ_ID,PROCESS_ID,TLNAME,TYPE_JOB,LEVEL_JOB,STATUS_JOB,RECORD_STATUS)
VALUES (@REQ_PAY_ID,NULL,@TRASFER_USER_RECIVE,'KS',CONVERT(VARCHAR(5),@NEXT_LEVEL),'C','1')
END
ELSE
BEGIN
UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='C',TYPE_JOB='KS' WHERE REQ_ID =@REQ_PAY_ID AND TLNAME =@TRASFER_USER_RECIVE
END
-- UPDATE BUOC TRUOC DO VE P
--UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P',TYPE_JOB='KS' WHERE REQ_ID =@REQ_PAY_ID AND LEVEL_JOB =@MAX_LEVEL
END
--LUCTV - 06042021 BO SUNG KHI DIEU PHOI XONG CAP NHAT NGAY DIEU PHOI VAO BANG MASTER THANH TOAN / TAM UNG
IF(@p_TRANSFER_TYPE='A')
BEGIN
UPDATE TR_REQ_ADVANCE_PAYMENT SET
AUTH_STATUS_KT ='U',TRANSFER_DT = GETDATE()
WHERE REQ_PAY_ID =@REQ_PAY_ID
END
ELSE
BEGIN
UPDATE TR_REQ_PAYMENT SET
AUTH_STATUS_KT ='U',TRANSFER_DT = GETDATE()
WHERE REQ_PAY_ID =@REQ_PAY_ID
END
SET @LIST_REQ_PAY_ID = @LIST_REQ_PAY_ID+','+@REQ_PAY_ID
IF @@ERROR <> 0 GOTO ABORT
FETCH NEXT FROM TransferData INTO @REQ_PAY_ID, @TRANSFER_MAKER, @TRASFER_USER_RECIVE,@TRANSFER_ACTION
END
CLOSE TransferData
DEALLOCATE TransferData
IF @@Error <> 0 GOTO ABORT
COMMIT TRANSACTION
SELECT '0' as Result, @LIST_REQ_PAY_ID REQ_PAY_ID, '' ErrorDesc
RETURN '0'
ABORT:
BEGIN
ROLLBACK TRANSACTION
CLOSE TransferData
DEALLOCATE TransferData
SELECT '-1' as Result, '' REQ_PAY_ID, '' ErrorDesc
RETURN '-1'
End
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Altering [dbo].[CM_DEPARTMENT_Ins]'
GO
ALTER PROCEDURE [dbo].[CM_DEPARTMENT_Ins]
@p_DEP_CODE varchar(15) = NULL,
@p_DEP_NAME nvarchar(200) = NULL,
@p_DAO_CODE varchar(40) = NULL,
@p_DAO_NAME nvarchar(500) = NULL,
@p_BRANCH_ID varchar(15) = NULL,
@p_GROUP_ID varchar(15) = NULL,
@p_TEL varchar(20) = NULL,
@p_NOTES nvarchar(1000) = NULL,
@p_RECORD_STATUS varchar(1) = NULL,
@p_MAKER_ID varchar(12) = NULL,
@p_CREATE_DT VARCHAR(20) = NULL,
@p_AUTH_STATUS varchar(50) = NULL,
@p_CHECKER_ID varchar(12) = NULL,
@p_APPROVE_DT VARCHAR(20) = NULL,
@p_FATHER_ID VARCHAR(15) = NULL,
@p_KHOI_ID VARCHAR(20)=NULL
AS
--Validation is here
/*
DECLARE @ERRORSYS NVARCHAR(15) = ''
IF ( NOT EXISTS ( SELECT * FROM CM_DEPARTMENT WHERE ))
SET @ERRORSYS = ''
IF @ERRORSYS <> ''
BEGIN
SELECT ErrorCode Result, '' CAR_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS
RETURN '0'
END
*/
--Validation is here
DECLARE @ERRORSYS NVARCHAR(15) = ''
IF ( EXISTS ( SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE = @p_DEP_CODE))
SET @ERRORSYS = 'CMCD-00001'
IF @ERRORSYS <> ''
BEGIN
SELECT ErrorCode Result, '' ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS
RETURN '0'
END
BEGIN TRANSACTION
DECLARE @l_DEP_ID VARCHAR(15)
EXEC SYS_CodeMasters_Gen 'CM_DEPARTMENT', @l_DEP_ID out
IF @l_DEP_ID='' OR @l_DEP_ID IS NULL GOTO ABORT
INSERT INTO CM_DEPARTMENT([DEP_ID],[DEP_CODE],[DEP_NAME],[DAO_CODE],[DAO_NAME],[BRANCH_ID],[GROUP_ID],[TEL],[NOTES],[RECORD_STATUS],[MAKER_ID],[CREATE_DT],[AUTH_STATUS],[CHECKER_ID],[APPROVE_DT], FATHER_ID,[KHOI_ID])
VALUES(@l_DEP_ID ,@p_DEP_CODE ,@p_DEP_NAME ,@p_DAO_CODE ,@p_DAO_NAME ,@p_BRANCH_ID ,@p_GROUP_ID ,@p_TEL ,@p_NOTES ,@p_RECORD_STATUS ,@p_MAKER_ID ,CONVERT(DATETIME, @p_CREATE_DT, 103) ,@p_AUTH_STATUS ,@p_CHECKER_ID ,CONVERT(DATETIME, @p_APPROVE_DT, 103), @p_FATHER_ID,@p_KHOI_ID)
IF @@Error <> 0 GOTO ABORT
COMMIT TRANSACTION
SELECT '0' as Result, @l_DEP_ID ID, '' ErrorDesc
RETURN '0'
ABORT:
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' ID, '' ErrorDesc
RETURN '-1'
End
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Altering [dbo].[CM_ATTACH_FILE_REQ_Search]'
GO
ALTER PROCEDURE [dbo].[CM_ATTACH_FILE_REQ_Search]
@p_ATTACH_ID varchar(15) = NULL,
@p_TYPE varchar(50) = NULL,
@p_REF_ID varchar(15) = NULL,
@p_FILE_NAME_OLD nvarchar(200) = NULL,
@p_PATH_OLD nvarchar(1000) = NULL,
@p_FILE_NAME_NEW nvarchar(200) = NULL,
@p_PATH_NEW nvarchar(1000) = NULL,
@p_FILE_SIZE decimal = NULL,
@p_FILE_TYPE varchar(50) = NULL,
@p_ATTACH_DT VARCHAR(20) = NULL,
@p_EMP_ID varchar(15) = NULL,
@P_EMP_NAME VARCHAR(1000) = NULL,
@p_TYPE_REQ VARCHAR(20) = NULL,
@p_TOP INT = NULL
AS
BEGIN -- PAGING
BEGIN TRANSACTION
DECLARE @IS_VIEW BIT=0
IF(@p_TYPE_REQ='PYC')
BEGIN
IF(@p_TOP is NULL OR @P_TOP = '' OR @P_TOP = 0)
-- PAGING BEGIN
SELECT A.*,B.TLFullName,TF.IS_VIEW
-- SELECT END
FROM CM_ATTACH_FILE A
LEFT JOIN TL_USER B ON A.EMP_ID = B.TLNANME
LEFT JOIN dbo.TR_REQUEST_DOC_FILE TF ON TF.ATTACH_ID = A.ATTACH_ID
WHERE 1=1
AND (A.ATTACH_ID LIKE '%' + @p_ATTACH_ID + '%' OR @p_ATTACH_ID IS NULL OR @p_ATTACH_ID = '')
AND (A.TYPE LIKE '%' + @p_TYPE + '%' OR @p_TYPE IS NULL OR @p_TYPE = '')
AND (A.REF_ID LIKE '%' + @p_REF_ID + '%' )
AND (A.FILE_NAME_OLD LIKE '%' + @p_FILE_NAME_OLD + '%' OR @p_FILE_NAME_OLD IS NULL OR @p_FILE_NAME_OLD = '')
AND (A.PATH_OLD LIKE '%' + @p_PATH_OLD + '%' OR @p_PATH_OLD IS NULL OR @p_PATH_OLD = '')
AND (A.FILE_NAME_NEW LIKE '%' + @p_FILE_NAME_NEW + '%' OR @p_FILE_NAME_NEW IS NULL OR @p_FILE_NAME_NEW = '')
AND (A.PATH_NEW LIKE '%' + @p_PATH_NEW + '%' OR @p_PATH_NEW IS NULL OR @p_PATH_NEW = '')
AND (A.FILE_SIZE = @p_FILE_SIZE OR @p_FILE_SIZE IS NULL)
AND (A.FILE_TYPE LIKE '%' + @p_FILE_TYPE + '%' OR @p_FILE_TYPE IS NULL OR @p_FILE_TYPE = '')
AND (DATEDIFF(DAY,A.ATTACH_DT ,CONVERT(DATETIME, @p_ATTACH_DT, 103)) = 0 OR @p_ATTACH_DT IS NULL OR @p_ATTACH_DT = '')
AND (A.EMP_ID LIKE '%' + @p_EMP_ID + '%' OR @p_EMP_ID IS NULL OR @p_EMP_ID = '')
AND (B.TLFullName LIKE '%' + @p_EMP_NAME + '%' OR @p_EMP_NAME IS NULL OR @p_EMP_NAME = '')
AND(A.STATUS ='1' OR A.STATUS IS NULL)
-- PAGING END
ELSE
-- PAGING BEGIN
SELECT TOP(CONVERT(INT,@P_TOP))A.*,B.TLFullName,TF.IS_VIEW
-- SELECT END
FROM CM_ATTACH_FILE A
LEFT JOIN TL_USER B ON A.EMP_ID = B.TLNANME
LEFT JOIN dbo.TR_REQUEST_DOC_FILE TF ON TF.ATTACH_ID = A.ATTACH_ID
WHERE 1=1
AND (A.ATTACH_ID LIKE '%' + @p_ATTACH_ID + '%' OR @p_ATTACH_ID IS NULL OR @p_ATTACH_ID = '')
AND (A.TYPE LIKE '%' + @p_TYPE + '%' OR @p_TYPE IS NULL OR @p_TYPE = '')
AND (A.REF_ID LIKE '%' + @p_REF_ID + '%' )
AND (A.FILE_NAME_OLD LIKE '%' + @p_FILE_NAME_OLD + '%' OR @p_FILE_NAME_OLD IS NULL OR @p_FILE_NAME_OLD = '')
AND (A.PATH_OLD LIKE '%' + @p_PATH_OLD + '%' OR @p_PATH_OLD IS NULL OR @p_PATH_OLD = '')
AND (A.FILE_NAME_NEW LIKE '%' + @p_FILE_NAME_NEW + '%' OR @p_FILE_NAME_NEW IS NULL OR @p_FILE_NAME_NEW = '')
AND (A.PATH_NEW LIKE '%' + @p_PATH_NEW + '%' OR @p_PATH_NEW IS NULL OR @p_PATH_NEW = '')
AND (A.FILE_SIZE = @p_FILE_SIZE OR @p_FILE_SIZE IS NULL)
AND (A.FILE_TYPE LIKE '%' + @p_FILE_TYPE + '%' OR @p_FILE_TYPE IS NULL OR @p_FILE_TYPE = '')
AND (DATEDIFF(DAY,A.ATTACH_DT ,CONVERT(DATETIME, @p_ATTACH_DT, 103)) = 0 OR @p_ATTACH_DT IS NULL OR @p_ATTACH_DT = '')
AND (A.EMP_ID LIKE '%' + @p_EMP_ID + '%' OR @p_EMP_ID IS NULL OR @p_EMP_ID = '')
AND (B.TLFullName LIKE '%' + @p_EMP_NAME + '%' OR @p_EMP_NAME IS NULL OR @p_EMP_NAME = '')
AND(A.STATUS ='1' OR A.STATUS IS NULL)
-- PAGING END
END
ELSE IF (@p_TYPE_REQ='PLREQ')
BEGIN
IF(@p_TOP IS NULL OR @P_TOP = '' OR @P_TOP = 0)
-- PAGING BEGIN
SELECT A.*,B.TLFullName,@IS_VIEW IS_VIEW
-- SELECT END
FROM CM_ATTACH_FILE A
LEFT JOIN TL_USER B ON A.EMP_ID = B.TLNANME
WHERE 1=1
AND (A.ATTACH_ID LIKE '%' + @p_ATTACH_ID + '%' OR @p_ATTACH_ID IS NULL OR @p_ATTACH_ID = '')
AND (A.TYPE LIKE '%' + @p_TYPE + '%' OR @p_TYPE IS NULL OR @p_TYPE = '')
AND (A.REF_ID LIKE '%' + @p_REF_ID + '%' )
AND (A.FILE_NAME_OLD LIKE '%' + @p_FILE_NAME_OLD + '%' OR @p_FILE_NAME_OLD IS NULL OR @p_FILE_NAME_OLD = '')
AND (A.PATH_OLD LIKE '%' + @p_PATH_OLD + '%' OR @p_PATH_OLD IS NULL OR @p_PATH_OLD = '')
AND (A.FILE_NAME_NEW LIKE '%' + @p_FILE_NAME_NEW + '%' OR @p_FILE_NAME_NEW IS NULL OR @p_FILE_NAME_NEW = '')
AND (A.PATH_NEW LIKE '%' + @p_PATH_NEW + '%' OR @p_PATH_NEW IS NULL OR @p_PATH_NEW = '')
AND (A.FILE_SIZE = @p_FILE_SIZE OR @p_FILE_SIZE IS NULL)
AND (A.FILE_TYPE LIKE '%' + @p_FILE_TYPE + '%' OR @p_FILE_TYPE IS NULL OR @p_FILE_TYPE = '')
AND (DATEDIFF(DAY,A.ATTACH_DT ,CONVERT(DATETIME, @p_ATTACH_DT, 103)) = 0 OR @p_ATTACH_DT IS NULL OR @p_ATTACH_DT = '')
AND (A.EMP_ID LIKE '%' + @p_EMP_ID + '%' OR @p_EMP_ID IS NULL OR @p_EMP_ID = '')
AND (B.TLFullName LIKE '%' + @p_EMP_NAME + '%' OR @p_EMP_NAME IS NULL OR @p_EMP_NAME = '')
AND(A.STATUS ='1' OR A.STATUS IS NULL)
-- PAGING END
ELSE
-- PAGING BEGIN
SELECT TOP(CONVERT(INT,@P_TOP))A.*,B.TLFullName , @IS_VIEW IS_VIEW
-- SELECT END
FROM CM_ATTACH_FILE A
LEFT JOIN TL_USER B ON A.EMP_ID = B.TLNANME
WHERE 1=1
AND (A.ATTACH_ID LIKE '%' + @p_ATTACH_ID + '%' OR @p_ATTACH_ID IS NULL OR @p_ATTACH_ID = '')
AND (A.TYPE LIKE '%' + @p_TYPE + '%' OR @p_TYPE IS NULL OR @p_TYPE = '')
AND (A.REF_ID LIKE '%' + @p_REF_ID + '%' )
AND (A.FILE_NAME_OLD LIKE '%' + @p_FILE_NAME_OLD + '%' OR @p_FILE_NAME_OLD IS NULL OR @p_FILE_NAME_OLD = '')
AND (A.PATH_OLD LIKE '%' + @p_PATH_OLD + '%' OR @p_PATH_OLD IS NULL OR @p_PATH_OLD = '')
AND (A.FILE_NAME_NEW LIKE '%' + @p_FILE_NAME_NEW + '%' OR @p_FILE_NAME_NEW IS NULL OR @p_FILE_NAME_NEW = '')
AND (A.PATH_NEW LIKE '%' + @p_PATH_NEW + '%' OR @p_PATH_NEW IS NULL OR @p_PATH_NEW = '')
AND (A.FILE_SIZE = @p_FILE_SIZE OR @p_FILE_SIZE IS NULL)
AND (A.FILE_TYPE LIKE '%' + @p_FILE_TYPE + '%' OR @p_FILE_TYPE IS NULL OR @p_FILE_TYPE = '')
AND (DATEDIFF(DAY,A.ATTACH_DT ,CONVERT(DATETIME, @p_ATTACH_DT, 103)) = 0 OR @p_ATTACH_DT IS NULL OR @p_ATTACH_DT = '')
AND (A.EMP_ID LIKE '%' + @p_EMP_ID + '%' OR @p_EMP_ID IS NULL OR @p_EMP_ID = '')
AND (B.TLFullName LIKE '%' + @p_EMP_NAME + '%' OR @p_EMP_NAME IS NULL OR @p_EMP_NAME = '')
AND(A.STATUS ='1' OR A.STATUS IS NULL)
-- PAGING END
END
ELSE IF (@p_TYPE_REQ='TR_CONTRACT')
BEGIN
IF(@p_TOP IS NULL OR @P_TOP = '' OR @P_TOP = 0)
-- PAGING BEGIN
SELECT A.*,B.TLFullName,@IS_VIEW IS_VIEW
-- SELECT END
FROM CM_ATTACH_FILE A LEFT JOIN TL_USER B ON A.EMP_ID = B.TLNANME
WHERE 1=1
AND (A.ATTACH_ID LIKE '%' + @p_ATTACH_ID + '%' OR @p_ATTACH_ID IS NULL OR @p_ATTACH_ID = '')
AND (A.TYPE LIKE '%' + @p_TYPE + '%' OR @p_TYPE IS NULL OR @p_TYPE = '')
AND (A.REF_ID LIKE '%' + @p_REF_ID + '%' )
AND (A.FILE_NAME_OLD LIKE '%' + @p_FILE_NAME_OLD + '%' OR @p_FILE_NAME_OLD IS NULL OR @p_FILE_NAME_OLD = '')
AND (A.PATH_OLD LIKE '%' + @p_PATH_OLD + '%' OR @p_PATH_OLD IS NULL OR @p_PATH_OLD = '')
AND (A.FILE_NAME_NEW LIKE '%' + @p_FILE_NAME_NEW + '%' OR @p_FILE_NAME_NEW IS NULL OR @p_FILE_NAME_NEW = '')
AND (A.PATH_NEW LIKE '%' + @p_PATH_NEW + '%' OR @p_PATH_NEW IS NULL OR @p_PATH_NEW = '')
AND (A.FILE_SIZE = @p_FILE_SIZE OR @p_FILE_SIZE IS NULL)
AND (A.FILE_TYPE LIKE '%' + @p_FILE_TYPE + '%' OR @p_FILE_TYPE IS NULL OR @p_FILE_TYPE = '')
AND (DATEDIFF(DAY,A.ATTACH_DT ,CONVERT(DATETIME, @p_ATTACH_DT, 103)) = 0 OR @p_ATTACH_DT IS NULL OR @p_ATTACH_DT = '')
AND (A.EMP_ID LIKE '%' + @p_EMP_ID + '%' OR @p_EMP_ID IS NULL OR @p_EMP_ID = '')
AND (B.TLFullName LIKE '%' + @p_EMP_NAME + '%' OR @p_EMP_NAME IS NULL OR @p_EMP_NAME = '')
AND(A.STATUS ='1' OR A.STATUS IS NULL)
-- PAGING END
ELSE
-- PAGING BEGIN
SELECT TOP(CONVERT(INT,@P_TOP))A.*,B.TLFullName
-- SELECT END
FROM CM_ATTACH_FILE A LEFT JOIN TL_USER B ON A.EMP_ID = B.TLNANME
WHERE 1=1
AND (A.ATTACH_ID LIKE '%' + @p_ATTACH_ID + '%' OR @p_ATTACH_ID IS NULL OR @p_ATTACH_ID = '')
AND (A.TYPE LIKE '%' + @p_TYPE + '%' OR @p_TYPE IS NULL OR @p_TYPE = '')
AND (A.REF_ID LIKE '%' + @p_REF_ID + '%' )
AND (A.FILE_NAME_OLD LIKE '%' + @p_FILE_NAME_OLD + '%' OR @p_FILE_NAME_OLD IS NULL OR @p_FILE_NAME_OLD = '')
AND (A.PATH_OLD LIKE '%' + @p_PATH_OLD + '%' OR @p_PATH_OLD IS NULL OR @p_PATH_OLD = '')
AND (A.FILE_NAME_NEW LIKE '%' + @p_FILE_NAME_NEW + '%' OR @p_FILE_NAME_NEW IS NULL OR @p_FILE_NAME_NEW = '')
AND (A.PATH_NEW LIKE '%' + @p_PATH_NEW + '%' OR @p_PATH_NEW IS NULL OR @p_PATH_NEW = '')
AND (A.FILE_SIZE = @p_FILE_SIZE OR @p_FILE_SIZE IS NULL)
AND (A.FILE_TYPE LIKE '%' + @p_FILE_TYPE + '%' OR @p_FILE_TYPE IS NULL OR @p_FILE_TYPE = '')
AND (DATEDIFF(DAY,A.ATTACH_DT ,CONVERT(DATETIME, @p_ATTACH_DT, 103)) = 0 OR @p_ATTACH_DT IS NULL OR @p_ATTACH_DT = '')
AND (A.EMP_ID LIKE '%' + @p_EMP_ID + '%' OR @p_EMP_ID IS NULL OR @p_EMP_ID = '')
AND (B.TLFullName LIKE '%' + @p_EMP_NAME + '%' OR @p_EMP_NAME IS NULL OR @p_EMP_NAME = '')
AND(A.STATUS ='1' OR A.STATUS IS NULL)
-- PAGING END
END
ELSE IF (@p_TYPE_REQ='REQ_ATTACH_RQ')
BEGIN
IF(@p_TOP IS NULL OR @P_TOP = '' OR @P_TOP = 0)
-- PAGING BEGIN
SELECT A.*,B.TLFullName,@IS_VIEW IS_VIEW
-- SELECT END
FROM CM_ATTACH_FILE A LEFT JOIN TL_USER B ON A.EMP_ID = B.TLNANME
WHERE 1=1
AND (A.ATTACH_ID LIKE '%' + @p_ATTACH_ID + '%' OR @p_ATTACH_ID IS NULL OR @p_ATTACH_ID = '')
AND (A.TYPE LIKE '%' + @p_TYPE + '%' OR @p_TYPE IS NULL OR @p_TYPE = '')
AND (A.REF_ID LIKE '%' + @p_REF_ID + '%' )
AND (A.FILE_NAME_OLD LIKE '%' + @p_FILE_NAME_OLD + '%' OR @p_FILE_NAME_OLD IS NULL OR @p_FILE_NAME_OLD = '')
AND (A.PATH_OLD LIKE '%' + @p_PATH_OLD + '%' OR @p_PATH_OLD IS NULL OR @p_PATH_OLD = '')
AND (A.FILE_NAME_NEW LIKE '%' + @p_FILE_NAME_NEW + '%' OR @p_FILE_NAME_NEW IS NULL OR @p_FILE_NAME_NEW = '')
AND (A.PATH_NEW LIKE '%' + @p_PATH_NEW + '%' OR @p_PATH_NEW IS NULL OR @p_PATH_NEW = '')
AND (A.FILE_SIZE = @p_FILE_SIZE OR @p_FILE_SIZE IS NULL)
AND (A.FILE_TYPE LIKE '%' + @p_FILE_TYPE + '%' OR @p_FILE_TYPE IS NULL OR @p_FILE_TYPE = '')
AND (DATEDIFF(DAY,A.ATTACH_DT ,CONVERT(DATETIME, @p_ATTACH_DT, 103)) = 0 OR @p_ATTACH_DT IS NULL OR @p_ATTACH_DT = '')
AND (A.EMP_ID LIKE '%' + @p_EMP_ID + '%' OR @p_EMP_ID IS NULL OR @p_EMP_ID = '')
AND (B.TLFullName LIKE '%' + @p_EMP_NAME + '%' OR @p_EMP_NAME IS NULL OR @p_EMP_NAME = '')
AND(A.STATUS ='1' OR A.STATUS IS NULL)
-- PAGING END
ELSE
-- PAGING BEGIN
SELECT TOP(CONVERT(INT,@P_TOP))A.*,B.TLFullName
-- SELECT END
FROM CM_ATTACH_FILE A LEFT JOIN TL_USER B ON A.EMP_ID = B.TLNANME
WHERE 1=1
AND (A.ATTACH_ID LIKE '%' + @p_ATTACH_ID + '%' OR @p_ATTACH_ID IS NULL OR @p_ATTACH_ID = '')
AND (A.TYPE LIKE '%' + @p_TYPE + '%' OR @p_TYPE IS NULL OR @p_TYPE = '')
AND (A.REF_ID LIKE '%' + @p_REF_ID + '%' )
AND (A.FILE_NAME_OLD LIKE '%' + @p_FILE_NAME_OLD + '%' OR @p_FILE_NAME_OLD IS NULL OR @p_FILE_NAME_OLD = '')
AND (A.PATH_OLD LIKE '%' + @p_PATH_OLD + '%' OR @p_PATH_OLD IS NULL OR @p_PATH_OLD = '')
AND (A.FILE_NAME_NEW LIKE '%' + @p_FILE_NAME_NEW + '%' OR @p_FILE_NAME_NEW IS NULL OR @p_FILE_NAME_NEW = '')
AND (A.PATH_NEW LIKE '%' + @p_PATH_NEW + '%' OR @p_PATH_NEW IS NULL OR @p_PATH_NEW = '')
AND (A.FILE_SIZE = @p_FILE_SIZE OR @p_FILE_SIZE IS NULL)
AND (A.FILE_TYPE LIKE '%' + @p_FILE_TYPE + '%' OR @p_FILE_TYPE IS NULL OR @p_FILE_TYPE = '')
AND (DATEDIFF(DAY,A.ATTACH_DT ,CONVERT(DATETIME, @p_ATTACH_DT, 103)) = 0 OR @p_ATTACH_DT IS NULL OR @p_ATTACH_DT = '')
AND (A.EMP_ID LIKE '%' + @p_EMP_ID + '%' OR @p_EMP_ID IS NULL OR @p_EMP_ID = '')
AND (B.TLFullName LIKE '%' + @p_EMP_NAME + '%' OR @p_EMP_NAME IS NULL OR @p_EMP_NAME = '')
AND(A.STATUS ='1' OR A.STATUS IS NULL)
-- PAGING END
END
COMMIT TRANSACTION -- PAGING
END -- PAGING
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Altering [dbo].[ASS_USE_MULTI_BVB_MASTER_Ins]'
GO
ALTER PROCEDURE [dbo].[ASS_USE_MULTI_BVB_MASTER_Ins]
@p_BRANCH_ID varchar(15) = NULL,
@p_USE_EXPORT_DT VARCHAR(20) = NULL,
@p_USER_EXPORT nvarchar(200) = NULL,
@p_NOTES nvarchar(1000) = NULL,
@p_RECORD_STATUS varchar(1) = NULL,
@p_AUTH_STATUS varchar(1) = NULL,
@p_MAKER_ID varchar(15) = NULL,
@p_CREATE_DT VARCHAR(20) = NULL,
@p_CHECKER_ID varchar(15) = NULL,
@p_APPROVE_DT VARCHAR(20) = NULL,
@p_AUTH_STATUS_KT varchar(15) = NULL,
@p_CREATE_DT_KT VARCHAR(20) = NULL,
@p_APPROVE_DT_KT VARCHAR(20) = NULL,
@p_MAKER_ID_KT varchar(50) = NULL,
@p_CHECKER_ID_KT varchar(50) = NULL,
@p_REPORT_STATUS varchar(15) = NULL,
@p_BRANCH_CREATE varchar(15) = NULL,
@p_XmlData XML = NUL
AS
/*
--Validation is here
DECLARE @ERRORSYS NVARCHAR(15) = ''
IF ( NOT EXISTS ( SELECT * FROM ASS_USE_MULTI_MASTER WHERE USER_MASTER_ID=@p_USER_MASTER_ID
SET @ERRORSYS = ''
IF @ERRORSYS <> ''
BEGIN
SELECT ErrorCode Result, '' USER_MASTER_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS
RETURN '0'
END
*/
--LUCTV - KHAI BAO SO THANG KHAU HAO MIN, MAX CUA TAI SAN
DECLARE @NHOMTS VARCHAR(15)
DECLARE @MIN_AMR INT, @MAX_AMR INT, @INDEX INT
SET @INDEX=0
--END
DECLARE
@ASSET_ID varchar(15),
@BRANCH_ID varchar(15),
@DEPT_ID varchar(15),
@EMP_ID varchar(15),
@DIVISION_ID varchar(15),
@AMORT_START_DATE VARCHAR(20),
@AMORT_MONTH decimal(18),
@AMORT_END_DATE VARCHAR(20),
@CORE_NOTE nvarchar(500),
@NOTES nvarchar(1000)
Declare @hdoc INT
Exec sp_xml_preparedocument @hdoc Output,@p_XmlData
DECLARE XmlData CURSOR FOR
SELECT *
FROM OPENXML(@hDoc,'/Root/XmlData',2)
WITH
(
ASSET_ID varchar(15),
BRANCH_ID varchar(15),
DEPT_ID varchar(15),
DIVISION_ID varchar(15),
EMP_ID varchar(15),
AMORT_START_DATE VARCHAR(20),
AMORT_MONTH decimal(18),
AMORT_END_DATE VARCHAR(20),
CORE_NOTE nvarchar(500),
NOTES nvarchar(1000)
)
OPEN XmlData
BEGIN TRANSACTION
DECLARE @l_USER_MASTER_ID VARCHAR(15)
EXEC SYS_CodeMasters_Gen 'ASS_USE_MULTI_MASTER', @l_USER_MASTER_ID out
IF @l_USER_MASTER_ID='' OR @l_USER_MASTER_ID IS NULL GOTO ABORT
INSERT INTO ASS_USE_MULTI_MASTER([USER_MASTER_ID],[BRANCH_ID],[USE_EXPORT_DT],[USER_EXPORT],[NOTES],[RECORD_STATUS],[AUTH_STATUS],[MAKER_ID],[CREATE_DT],[CHECKER_ID],[APPROVE_DT],[AUTH_STATUS_KT],[CREATE_DT_KT],[APPROVE_DT_KT],[MAKER_ID_KT],[CHECKER_ID_KT],[REPORT_STATUS],[CORE_NOTE])
VALUES(@l_USER_MASTER_ID,@p_BRANCH_ID ,CONVERT(DATETIME, @p_USE_EXPORT_DT, 103) ,@p_USER_EXPORT ,@p_NOTES ,@p_RECORD_STATUS ,@p_AUTH_STATUS ,@p_MAKER_ID ,CONVERT(DATETIME, @p_CREATE_DT, 103) ,@p_CHECKER_ID ,CONVERT(DATETIME, @p_APPROVE_DT, 103) ,'U' ,CONVERT(DATETIME, @p_CREATE_DT_KT, 103) ,CONVERT(DATETIME, @p_APPROVE_DT_KT, 103) ,@p_MAKER_ID_KT ,@p_CHECKER_ID_KT ,@p_REPORT_STATUS,'')
IF @@Error <> 0 GOTO ABORT
--Insert XmlData
FETCH NEXT FROM XmlData INTO @ASSET_ID,@BRANCH_ID,@DEPT_ID,@DIVISION_ID,@EMP_ID,@AMORT_START_DATE,@AMORT_MONTH,@AMORT_END_DATE,@CORE_NOTE,@NOTES
WHILE @@FETCH_STATUS = 0
BEGIN
SET @INDEX= @INDEX+1
-- --LUCTV - KIEM TRA SO THANG KHAU HAO PHAI NAM TRONG MIN -MAX
-- SET @NHOMTS =(SELECT GROUP_ID FROM ASS_MASTER WHERE ASSET_ID= @ASSET_ID)
-- SET @MIN_AMR =(SELECT AMORT_MONTH_MIN FROM ASS_GROUP WHERE GROUP_ID =@NHOMTS)
-- SET @MAX_AMR =(SELECT AMORT_MONTH_MAX FROM ASS_GROUP WHERE GROUP_ID=@NHOMTS)
-- IF(@AMORT_MONTH >@MAX_AMR OR @AMORT_MONTH <@MIN_AMR)
-- BEGIN
--CLOSE XmlData
--DEALLOCATE XmlData
--ROLLBACK TRANSACTION
--SELECT '-1' as Result,N'Dòng' +CONVERT(VARCHAR(15),@INDEX) +N': Số tháng khấu hao phải nằm trong khoảng ('+CONVERT(VARCHAR(15),@MIN_AMR)+' - '+CONVERT(VARCHAR(15),@MAX_AMR)+N') tháng' ErrorDesc
--RETURN '-1'
-- END
if(@AMORT_START_DATE='') set @AMORT_START_DATE=NULL
if(@AMORT_END_DATE='') set @AMORT_END_DATE=NULL
DECLARE @ERRORSYS NVARCHAR(200) = '',@ASSET_CODE nVARCHAR(20)
-- DIEU KIEN CU
--IF ( EXISTS ( SELECT * FROM ASS_USE_MULTI_DT WHERE [ASSET_ID] = @ASSET_ID AND CHECKER_ID_KT<>'system')
-- DIEU KIEN MOI
-- LUCTV: 3072019 THAY DOI DIEU KIEN KHONG CHO PHEP XUAT SU DUNG N TAI SAN CUNG LUC (LOAI TRU TAI SAN THUOC GIAO DICH BI HUY
IF ( EXISTS ( SELECT 1
FROM ASS_USE_MULTI_DT A
INNER JOIN ASS_USE_MULTI_MASTER B ON A.USER_MASTER_ID = B.USER_MASTER_ID
WHERE A.[ASSET_ID] = @ASSET_ID AND B.RECORD_STATUS = '1' AND
(A.CHECKER_ID IS NULL OR A.CHECKER_ID_KT IS NULL OR (A.CHECKER_ID_KT IS NOT NULL AND A.CHECKER_ID_KT<>'system'))))
BEGIN
SET @ASSET_CODE=(SELECT ASSET_CODE FROM ASS_MASTER WHERE [ASSET_ID] = @ASSET_ID)
SET @ERRORSYS = N'Mã: '+@ASSET_CODE+N' đang xuất sử dụng'
CLOSE XmlData
DEALLOCATE XmlData
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' USER_MASTER_ID, @ERRORSYS ErrorDesc
RETURN '-1'
END
IF ( EXISTS ( SELECT * FROM ASS_USE WHERE [ASSET_ID] = @ASSET_ID))
BEGIN
SET @ASSET_CODE=(SELECT ASSET_CODE FROM ASS_MASTER WHERE [ASSET_ID] = @ASSET_ID)
SET @ERRORSYS = N'Mã: '+@ASSET_CODE+N' đang xuất sử dụng'
CLOSE XmlData
DEALLOCATE XmlData
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' USER_MASTER_ID, @ERRORSYS ErrorDesc
RETURN '-1'
END
-- luctv 03/08/2021 người nhận phải cùng đơn vị nhận
IF (SELECT BRANCH_ID FROM CM_DEPARTMENT WHERE DEP_ID = @DEPT_ID) <> @BRANCH_ID
BEGIN
SET @ASSET_CODE=(SELECT ASSET_CODE FROM ASS_MASTER WHERE [ASSET_ID] = @ASSET_ID)
SELECT '-1' Result, '' USER_MASTER_ID, N'TS: '+ @ASSET_CODE + N' Phòng bản nhận phải thuộc về đơn vị nhận.' ErrorDesc
CLOSE XmlData
DEALLOCATE XmlData
ROLLBACK TRANSACTION
RETURN '-1'
END
IF (SELECT DEP_ID FROM CM_EMPLOYEE WHERE EMP_ID = @EMP_ID) <> @DEPT_ID
BEGIN
SET @ASSET_CODE=(SELECT ASSET_CODE FROM ASS_MASTER WHERE [ASSET_ID] = @ASSET_ID)
SELECT '-1' Result, '' TRANSFER_ID, N'TS: '+ @ASSET_CODE + N' Người nhận phải thuộc về phòng ban nhận.' ErrorDesc
CLOSE XmlData
DEALLOCATE XmlData
ROLLBACK TRANSACTION
RETURN '-1'
END
DECLARE @l_USE_MULTI_ID VARCHAR(15)
EXEC SYS_CodeMasters_Gen 'ASS_USE_MULTI_DT', @l_USE_MULTI_ID out
IF @l_USE_MULTI_ID='' OR @l_USE_MULTI_ID IS NULL GOTO ABORT
INSERT INTO ASS_USE_MULTI_DT([USE_MULTI_ID],[USER_MASTER_ID],[ASSET_ID],[AMORT_START_DATE],[BRANCH_ID],[DEPT_ID],[EMP_ID],[DIVISION_ID],[NOTES],[CORE_NOTE],[RECORD_STATUS],[AUTH_STATUS],[MAKER_ID],[CREATE_DT],[CHECKER_ID],[APPROVE_DT],[BRANCH_CREATE],[AMORT_MONTH],[AUTH_STATUS_KT],[REPORT_STATUS],[AMORT_END_DATE])
VALUES(@l_USE_MULTI_ID ,@l_USER_MASTER_ID,@ASSET_ID ,CONVERT(DATETIME, @AMORT_START_DATE, 103) ,@BRANCH_ID ,@DEPT_ID ,@EMP_ID ,@DIVISION_ID ,@NOTES ,@CORE_NOTE ,@p_RECORD_STATUS ,@p_AUTH_STATUS ,@p_MAKER_ID ,CONVERT(DATETIME, @p_CREATE_DT, 103) ,@p_CHECKER_ID ,CONVERT(DATETIME, @p_APPROVE_DT, 103) ,@p_BRANCH_CREATE ,@AMORT_MONTH ,
'U' ,'N' ,CONVERT(DATETIME, @AMORT_END_DATE, 103) )
IF @@Error <> 0 GOTO ABORT
FETCH NEXT FROM XmlData INTO @ASSET_ID,@BRANCH_ID,@DEPT_ID,@DIVISION_ID,@EMP_ID,@AMORT_START_DATE,@AMORT_MONTH,@AMORT_END_DATE,@CORE_NOTE,@NOTES
END
CLOSE XmlData
DEALLOCATE XmlData
-- GIANT 21/09/2021
INSERT INTO dbo.PL_PROCESS
(
REQ_ID,
PROCESS_ID,
CHECKER_ID,
APPROVE_DT,
PROCESS_DESC,NOTES
)
VALUES
( @l_USER_MASTER_ID, -- REQ_ID - varchar(15)
'INSERT', -- PROCESS_ID - varchar(10)
@p_MAKER_ID, -- CHECKER_ID - varchar(15)
GETDATE(), -- APPROVE_DT - datetime
N'Thêm mới phiếu xuất sử dụng thành công' ,
N'Thêm mới phiếu xuất sử dụng' -- PROCESS_DESC - nvarchar(1000)
)
COMMIT TRANSACTION
SELECT '0' as Result, @l_USER_MASTER_ID USER_MASTER_ID, '' ErrorDesc
RETURN '0'
ABORT:
BEGIN
CLOSE XmlData
DEALLOCATE XmlData
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' USER_MASTER_ID, '' ErrorDesc
RETURN '-1'
End
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Creating [dbo].[ASS_USE_MUILTI_MASTER_SendAppr]'
GO
CREATE PROCEDURE [dbo].[ASS_USE_MUILTI_MASTER_SendAppr]
@p_USER_MASTER_ID VARCHAR(15) = NULL,
@p_USER_LOGIN VARCHAR(15) = NULL
AS
BEGIN TRANSACTION
UPDATE ASS_USE_MULTI_MASTER SET AUTH_STATUS = 'U'
WHERE USER_MASTER_ID = @p_USER_MASTER_ID
IF @@ERROR <> 0 GOTO ABORT
INSERT INTO dbo.PL_PROCESS(REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES)
VALUES(@p_USER_MASTER_ID, 'SEND', @p_USER_LOGIN, GETDATE(),
N'Nhân viên tạo phiếu và gửi phê duyệt thành công', N'Nhân viên gửi phê duyệt')
IF @@ERROR <> 0 GOTO ABORT
COMMIT TRANSACTION
SELECT '0' as Result,
N'Hồ sơ số: '+@p_USER_MASTER_ID+
N' đã được gửi phê duyệt thành công. Vui lòng đợi cấp phê duyệt trung gian xác nhận.' ErrorDesc
RETURN '0'
ABORT:
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' USER_MASTER_ID, '' ErrorDesc
RETURN '-1'
END
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Creating [dbo].[BUD_MASTER_Confirm]'
GO
CREATE PROCEDURE [dbo].[BUD_MASTER_Confirm]
------STORE duyệt cấp phê duyệt trung gian-----------
@p_BUILDING_ID varchar(15),
@p_SIGN_USER VARCHAR(12),
@p_SIGN_DT VARCHAR(20)
AS
BEGIN TRANSACTION
-------Trường hợp người duyệt là cấp phê duyệt trung gian, update SIGN_DT---------
DECLARE @BUILDING_NAME VARCHAR(500) = (SELECT BUILDING_NAME FROM BUD_MASTER WHERE BUILDING_ID = @p_BUILDING_ID)
UPDATE BUD_MASTER
SET SIGN_DT = CONVERT(DATETIME, @p_SIGN_DT, 103),
AUTH_STATUS = 'U'
WHERE BUILDING_ID = @p_BUILDING_ID
IF @@ERROR <> 0 GOTO ABORT
INSERT INTO dbo.PL_PROCESS
(
REQ_ID,
PROCESS_ID,
CHECKER_ID,
APPROVE_DT,
PROCESS_DESC,
NOTES
)
VALUES
( @p_BUILDING_ID,
'APPROVE',
@p_SIGN_USER,
GETDATE(),
N'Cấp trung gian xác nhận thông tin trụ sở thành công' ,
N'Cấp trung gian xác nhận thông tin trụ sở'
)
IF @@ERROR <> 0 GOTO ABORT
COMMIT TRANSACTION
SELECT '0' as Result, '' CONTRACT_ID,
N'Trụ sở: ' +@BUILDING_NAME+
N' đã được xác nhận thành công! Vui lòng đợi trưởng đơn vị phê duyệt.' ErrorDesc
RETURN '0'
ABORT:
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' CONTRACT_ID, '' ErrorDesc
RETURN '-1'
END
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Creating [dbo].[ASS_COLLECT_MULTI_MASTER_SendAppr]'
GO
CREATE PROCEDURE [dbo].[ASS_COLLECT_MULTI_MASTER_SendAppr]
@p_COL_MULTI_MASTER_ID VARCHAR(15) = NULL,
@p_USER_LOGIN VARCHAR(15) = NULL
AS
BEGIN TRANSACTION
UPDATE ASS_COLLECT_MULTI_MASTER SET AUTH_STATUS = 'U'
WHERE COL_MULTI_MASTER_ID = @p_COL_MULTI_MASTER_ID
IF @@ERROR <> 0 GOTO ABORT
INSERT INTO dbo.PL_PROCESS(REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES)
VALUES(@p_COL_MULTI_MASTER_ID, 'SEND', @p_USER_LOGIN, GETDATE(),
N'Nhân viên tạo phiếu và gửi phê duyệt thành công', N'Nhân viên gửi phê duyệt')
IF @@ERROR <> 0 GOTO ABORT
COMMIT TRANSACTION
SELECT '0' as Result,
N'Hồ sơ số: '+@p_COL_MULTI_MASTER_ID+
N' đã được gửi phê duyệt thành công. Vui lòng đợi cấp phê duyệt trung gian xác nhận.' ErrorDesc
RETURN '0'
ABORT:
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' COL_MULTI_MASTER_ID, '' ErrorDesc
RETURN '-1'
END
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Creating [dbo].[ASS_TRANSFER_MULTI_Master_SendAppr]'
GO
CREATE PROCEDURE [dbo].[ASS_TRANSFER_MULTI_Master_SendAppr]
@p_TRANSFER_MULTI_ID VARCHAR(15) = NULL,
@p_USER_LOGIN VARCHAR(15) = NULL
AS
BEGIN TRANSACTION
UPDATE ASS_TRANSFER_MULTI_MASTER SET AUTH_STATUS = 'U'
WHERE TRANS_MULTI_MASTER_ID = @p_TRANSFER_MULTI_ID
IF @@ERROR <> 0 GOTO ABORT
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'Nhân viên tạo phiếu và gửi phê duyệt thành công', N'Nhân viên gửi phê duyệt')
IF @@ERROR <> 0 GOTO ABORT
COMMIT TRANSACTION
SELECT '0' as Result,
N'Hồ sơ số: '+@p_TRANSFER_MULTI_ID+
N' đã được gửi phê duyệt thành công. Vui lòng đợi cấp phê duyệt trung gian xác nhận.' ErrorDesc
RETURN '0'
ABORT:
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' TRANS_MULTI_MASTER_ID, '' ErrorDesc
RETURN '-1'
END
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Altering [dbo].[ASS_TRANSFER_MULTI_MASTER_Ins]'
GO
ALTER PROCEDURE [dbo].[ASS_TRANSFER_MULTI_MASTER_Ins]
@p_BRANCH_ID varchar(15) = NULL,
@p_TRANSFER_DT VARCHAR(20) = NULL,
@p_USER_TRANSFER nvarchar(200) = NULL,
@p_NOTES nvarchar(1000) = NULL,
@p_RECORD_STATUS varchar(1) = NULL,
@p_AUTH_STATUS varchar(1) = NULL,
@p_MAKER_ID varchar(15) = NULL,
@p_CREATE_DT VARCHAR(20) = NULL,
@p_CHECKER_ID varchar(15) = NULL,
@p_APPROVE_DT VARCHAR(20) = NULL,
@p_AUTH_STATUS_KT varchar(15) = NULL,
@p_CREATE_DT_KT VARCHAR(20) = NULL,
@p_APPROVE_DT_KT VARCHAR(20) = NULL,
@p_MAKER_ID_KT varchar(50) = NULL,
@p_CHECKER_ID_KT varchar(50) = NULL,
@p_REPORT_STATUS varchar(15) = NULL,
@p_BRANCH_CREATE varchar(15) = NULL,
@p_XmlData XML = NUL
AS
/*
*/
DECLARE
@ASSET_ID varchar(15),
@BRANCH_ID varchar(15),
@DEPT_ID varchar(15),
@EMP_ID varchar(15),
@LOCATION varchar(500),
@DESCRIPTION nvarchar(1000),
@BRANCH_ID_OLD varchar(15),
@DEPT_ID_OLD varchar(15),
@EMP_ID_OLD varchar(15),
@REMAIN_VALUE DECIMAL(18,0)
Declare @hdoc INT
Exec sp_xml_preparedocument @hdoc Output,@p_XmlData
DECLARE XmlData CURSOR FOR
SELECT *
FROM OPENXML(@hDoc,'/Root/XmlData',2)
WITH
(
ASSET_ID varchar(15),
BRANCH_ID varchar(15),
DEPT_ID varchar(15),
EMP_ID varchar(15),
LOCATION varchar(500),
[DESCRIPTION] nvarchar(1000),
REMAIN_VALUE DECIMAL(18,0)
)
OPEN XmlData
BEGIN TRANSACTION
DECLARE @l_TRANS_MULTI_MASTER_ID VARCHAR(15)
EXEC SYS_CodeMasters_Gen 'ASS_TRANSFER_MULTI_MASTER', @l_TRANS_MULTI_MASTER_ID out
IF @l_TRANS_MULTI_MASTER_ID='' OR @l_TRANS_MULTI_MASTER_ID IS NULL GOTO ABORT
print 'error'
INSERT INTO ASS_TRANSFER_MULTI_MASTER([TRANS_MULTI_MASTER_ID],[BRANCH_ID],[TRANSFER_DT],[USER_TRANSFER],[NOTES],[RECORD_STATUS],[AUTH_STATUS],[MAKER_ID],[CREATE_DT],[CHECKER_ID],[APPROVE_DT],[REPORT_STATUS])
VALUES(@l_TRANS_MULTI_MASTER_ID ,@p_BRANCH_ID ,CONVERT(DATETIME, @p_TRANSFER_DT, 103) ,@p_USER_TRANSFER ,@p_NOTES ,@p_RECORD_STATUS ,@p_AUTH_STATUS ,@p_MAKER_ID ,CONVERT(DATETIME, @p_CREATE_DT, 103) ,@p_CHECKER_ID ,CONVERT(DATETIME, @p_APPROVE_DT, 103) ,@p_REPORT_STATUS )
IF @@Error <> 0 GOTO ABORT
DECLARE @COUNT INT;
SET @COUNT = 1;
--Insert XmlData
FETCH NEXT FROM XmlData INTO @ASSET_ID,@BRANCH_ID,@DEPT_ID,@EMP_ID,@LOCATION,@DESCRIPTION, @REMAIN_VALUE
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE @ERRORSYS NVARCHAR(200) = '',@ASSET_CODE nVARCHAR(20)
IF (@DEPT_ID IS NULL OR @DEPT_ID = '')
BEGIN
SET @ASSET_CODE=(SELECT ASSET_CODE FROM ASS_MASTER WHERE [ASSET_ID] = @ASSET_ID)
SET @ERRORSYS = N'Dòng số '+ CAST(@COUNT AS NVARCHAR) + N': phòng ban không được để trống.'
CLOSE XmlData
DEALLOCATE XmlData
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' TRANS_MULTI_MASTER_ID, @ERRORSYS ErrorDesc
RETURN '-1'
END
IF ( EXISTS ( SELECT * FROM ASS_TRANSFER_MULTI_DT WHERE [ASSET_ID] = @ASSET_ID AND AUTH_STATUS<>'A'))
BEGIN
SET @ASSET_CODE=(SELECT ASSET_CODE FROM ASS_MASTER WHERE [ASSET_ID] = @ASSET_ID)
SET @ERRORSYS = N'Mã: '+@ASSET_CODE+N' đang được điều chuyển'
CLOSE XmlData
DEALLOCATE XmlData
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' TRANS_MULTI_MASTER_ID, @ERRORSYS ErrorDesc
RETURN '-1'
END
IF ( EXISTS ( SELECT * FROM ASS_TRANSFER WHERE [ASSET_ID] = @ASSET_ID AND AUTH_STATUS<>'A'))
BEGIN
SET @ASSET_CODE=(SELECT ASSET_CODE FROM ASS_MASTER WHERE [ASSET_ID] = @ASSET_ID)
SET @ERRORSYS = N'Mã: '+@ASSET_CODE+N' đang được điều chuyển'
CLOSE XmlData
DEALLOCATE XmlData
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' TRANS_MULTI_MASTER_ID, @ERRORSYS ErrorDesc
RETURN '-1'
END
DECLARE @l_TRANSFER_MULTI_ID VARCHAR(15)
EXEC SYS_CodeMasters_Gen 'ASS_TRANSFER_MULTI_DT', @l_TRANSFER_MULTI_ID out
IF @l_TRANSFER_MULTI_ID='' OR @l_TRANSFER_MULTI_ID IS NULL GOTO ABORT
--LAY THONG TIN DON VI CU TRUOC DIEU CHUYEN
SELECT @BRANCH_ID_OLD = BRANCH_ID, @DEPT_ID_OLD = DEPT_ID, @EMP_ID_OLD = EMP_ID
FROM ASS_MASTER
WHERE ASSET_ID = @ASSET_ID
--thieuvq 07/09/2016 -- ngay 231120 Thieuvq bo sung neu la HOI SO thi khong kiem tra trung theo yeu cau Anh Tan - dieu chuyen ts tu kho HCQT cho HCQT su dung
IF @BRANCH_ID_OLD <> 'DV0001' AND @BRANCH_ID = @BRANCH_ID_OLD AND ISNULL(@DEPT_ID,'') = ISNULL(@DEPT_ID_OLD,'') AND ISNULL(@EMP_ID,'') = ISNULL(@EMP_ID_OLD,'')
BEGIN
SET @ASSET_CODE=(SELECT ASSET_CODE FROM ASS_MASTER WHERE [ASSET_ID] = @ASSET_ID)
SELECT '-1' Result, '' TRANSFER_ID, N'TS: '+@ASSET_CODE+ N' Đơn vị nhận hoặc người nhận phải khác với đơn vị/nhân viên đang sử dụng hiện tại.' ErrorDesc
CLOSE XmlData
DEALLOCATE XmlData
ROLLBACK TRANSACTION
RETURN '-1'
END
-- luctv 03/08/2021 người nhận phải cùng đơn vị nhận
IF (SELECT BRANCH_ID FROM CM_DEPARTMENT WHERE DEP_ID = @DEPT_ID) <> @BRANCH_ID
BEGIN
SET @ASSET_CODE=(SELECT ASSET_CODE FROM ASS_MASTER WHERE [ASSET_ID] = @ASSET_ID)
SELECT '-1' Result, '' TRANSFER_ID, N'TS: '+ @ASSET_CODE + N' Phòng bản nhận phải thuộc về đơn vị nhận.' ErrorDesc
CLOSE XmlData
DEALLOCATE XmlData
ROLLBACK TRANSACTION
RETURN '-1'
END
IF (SELECT DEP_ID FROM CM_EMPLOYEE WHERE EMP_ID = @EMP_ID) <> @DEPT_ID
BEGIN
SET @ASSET_CODE=(SELECT ASSET_CODE FROM ASS_MASTER WHERE [ASSET_ID] = @ASSET_ID)
SELECT '-1' Result, '' TRANSFER_ID, N'TS: '+ @ASSET_CODE + N' Người nhận phải thuộc về phòng ban nhận.' ErrorDesc
CLOSE XmlData
DEALLOCATE XmlData
ROLLBACK TRANSACTION
RETURN '-1'
END
print 'error1'
INSERT INTO ASS_TRANSFER_MULTI_DT([TRANSFER_MULTI_ID],[TRANS_MULTI_MASTER_ID],[ASSET_ID],[BRANCH_ID],[DEPT_ID],[EMP_ID],[USE_START_DT],[DESCRIPTION],[LOCATION],[RECORD_STATUS],[AUTH_STATUS],[MAKER_ID],[CREATE_DT],[CHECKER_ID],[APPROVE_DT],[BRANCH_CREATE],[AUTH_STATUS_KT],[CREATE_DT_KT],[APPROVE_DT_KT],[MAKER_ID_KT],[CHECKER_ID_KT],[REPORT_STATUS], [BRANCH_ID_OLD], [DEPT_ID_OLD], [EMP_ID_OLD], REMAIN_VALUE)
VALUES(@l_TRANSFER_MULTI_ID ,@l_TRANS_MULTI_MASTER_ID ,@ASSET_ID ,@BRANCH_ID ,@DEPT_ID ,@EMP_ID ,CONVERT(DATETIME, @p_TRANSFER_DT, 103) ,@DESCRIPTION ,@LOCATION ,@p_RECORD_STATUS ,@p_AUTH_STATUS ,@p_MAKER_ID ,CONVERT(DATETIME, @p_CREATE_DT, 103) ,@p_CHECKER_ID ,CONVERT(DATETIME, @p_APPROVE_DT, 103) ,@p_BRANCH_CREATE ,@p_AUTH_STATUS_KT ,CONVERT(DATETIME, @p_CREATE_DT_KT, 103) ,CONVERT(DATETIME, @p_APPROVE_DT_KT, 103) ,@p_MAKER_ID_KT ,@p_CHECKER_ID_KT ,'N',
@BRANCH_ID_OLD, @DEPT_ID_OLD , @EMP_ID_OLD, @REMAIN_VALUE)
IF @@Error <> 0 GOTO ABORT
SET @COUNT = @COUNT + 1;
FETCH NEXT FROM XmlData INTO @ASSET_ID,@BRANCH_ID,@DEPT_ID,@EMP_ID,@LOCATION,@DESCRIPTION, @REMAIN_VALUE
END
CLOSE XmlData
DEALLOCATE XmlData
-- GIANT 21/09/2021
print 'error2'
INSERT INTO dbo.PL_PROCESS
(
REQ_ID,
PROCESS_ID,
CHECKER_ID,
APPROVE_DT,
PROCESS_DESC,NOTES
)
VALUES
( @l_TRANS_MULTI_MASTER_ID, -- REQ_ID - varchar(15)
'INSERT', -- PROCESS_ID - varchar(10)
@p_MAKER_ID, -- CHECKER_ID - varchar(15)
GETDATE(), -- APPROVE_DT - datetime
N'Thêm mới phiều điều chuyển thành công' ,
N'Đơn vị tạo phiếu' -- PROCESS_DESC - nvarchar(1000)
)
COMMIT TRANSACTION
SELECT '0' as Result, @l_TRANS_MULTI_MASTER_ID TRANS_MULTI_MASTER_ID, '' ErrorDesc
RETURN '0'
ABORT:
BEGIN
CLOSE XmlData
DEALLOCATE XmlData
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' TRANS_MULTI_MASTER_ID, '' ErrorDesc
RETURN '-1'
End
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Creating [dbo].[ ASS_LIQUIDATION_BVB_SendAppr]'
GO
CREATE PROCEDURE [dbo].[ ASS_LIQUIDATION_BVB_SendAppr]
@p_LIQ_ID VARCHAR(15) = NULL,
@p_USER_LOGIN VARCHAR(15) = NULL
AS
BEGIN TRANSACTION
UPDATE ASS_LIQUIDATION SET AUTH_STATUS = 'U'
WHERE LIQ_ID = @p_LIQ_ID
IF @@ERROR <> 0 GOTO ABORT
INSERT INTO dbo.PL_PROCESS(REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES)
VALUES(@p_LIQ_ID, 'SEND', @p_USER_LOGIN, GETDATE(),
N'Nhân viên tạo phiếu và gửi phê duyệt thành công', N'Nhân viên gửi phê duyệt')
IF @@ERROR <> 0 GOTO ABORT
COMMIT TRANSACTION
SELECT '0' as Result,
N'Hồ sơ số: '+@p_LIQ_ID+
N' đã được gửi phê duyệt thành công. Vui lòng đợi cấp phê duyệt trung gian xác nhận.' ErrorDesc
RETURN '0'
ABORT:
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' LIQ_ID, '' ErrorDesc
RETURN '-1'
END
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Creating [dbo].[ASS_LIQUIDATION_BVB_SendAppr]'
GO
CREATE PROCEDURE [dbo].[ASS_LIQUIDATION_BVB_SendAppr]
@p_LIQ_ID VARCHAR(15) = NULL,
@p_USER_LOGIN VARCHAR(15) = NULL
AS
BEGIN TRANSACTION
UPDATE ASS_LIQUIDATION SET AUTH_STATUS = 'U'
WHERE LIQ_ID = @p_LIQ_ID
IF @@ERROR <> 0 GOTO ABORT
INSERT INTO dbo.PL_PROCESS(REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES)
VALUES(@p_LIQ_ID, 'SEND', @p_USER_LOGIN, GETDATE(),
N'Nhân viên tạo phiếu và gửi phê duyệt thành công', N'Nhân viên gửi phê duyệt')
IF @@ERROR <> 0 GOTO ABORT
COMMIT TRANSACTION
SELECT '0' as Result,
N'Hồ sơ số: '+@p_LIQ_ID+
N' đã được gửi phê duyệt thành công. Vui lòng đợi cấp phê duyệt trung gian xác nhận.' ErrorDesc
RETURN '0'
ABORT:
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' LIQ_ID, '' ErrorDesc
RETURN '-1'
END
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Creating [dbo].[TR_REQ_ADVANCE_PAYMENT_Confirm]'
GO
CREATE PROCEDURE [dbo].[TR_REQ_ADVANCE_PAYMENT_Confirm]
@p_REQ_PAY_ID varchar(15)= NULL,
@p_CHECKER_ID varchar(15) = NULL
AS
BEGIN TRANSACTION
DECLARE @ROLE_SIGN VARCHAR(50), @REQ_TYPE VARCHAR(15), @BRANCH_CREATE_TYPE VARCHAR(15)
SET @BRANCH_CREATE_TYPE = (SELECT TOP 1 BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = (SELECT TOP 1 BRANCH_CREATE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID=@p_REQ_PAY_ID))
--SET @ROLE_SIGN =(SELECT RoleName FROM TL_USER_V2 WHERE TLNANME =@p_CHECKER_ID)
SET @ROLE_SIGN =(SELECT TOP 1 RoleName FROM TL_USER WHERE TLNANME =@p_CHECKER_ID)
-- KHAI BAO THEM ROLE NHAN UY QUYEN
DECLARE @TABLE_ROLE TABLE (ROLE_AUTH VARCHAR(50))
INSERT INTO @TABLE_ROLE SELECT ROLE_NEW FROM TL_SYS_ROLE_MAPPING WHERE ROLE_OLD =@ROLE_SIGN
AND (CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) OR EFF_DATE IS NULL OR EFF_DATE ='')
AND (CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103) OR EXP_DATE IS NULL OR EXP_DATE ='')
IF(@ROLE_SIGN IS NOT NULL AND @ROLE_SIGN <>'' AND @ROLE_SIGN IN ('TPGD','GDDV','PGD','PTGD','TGD','HDQT','TP','PP','TBP','KTT','GDK','KSV','TC','NVTC','TPTC','PPGD'))
BEGIN
PRINT @ROLE_SIGN
END
ELSE
BEGIN
--SET @ROLE_ID =(SELECT TOP 1 RoleName FROM TL_USER_V2 WHERE TLNANME =@p_USER_LOGIN)
SET @ROLE_SIGN =(SELECT TOP 1 RoleName FROM TL_USER_V2 WHERE TLNANME =@p_CHECKER_ID)
IF(@ROLE_SIGN IS NULL OR @ROLE_SIGN ='')
BEGIN
SET @ROLE_SIGN =(SELECT TOP 1 ROLE_NEW FROM TL_SYS_ROLE_MAPPING WHERE ROLE_OLD =(SELECT TOP 1 ROLENAME FROM TL_USER WHERE TLNANME=@ROLE_SIGN))
END
END
SET @REQ_TYPE =(SELECT REQ_TYPE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID=@p_REQ_PAY_ID AND AUTH_STATUS ='R'))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID ,N'Bạn không được phép xác nhận hoặc phê duyệt giao dịch này. Phiếu đề nghị tạm ứng số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+ N' đang được trả về. Vui lòng đợi nhân viên cập nhật thông tin và gửi phê duyệt lại' ErrorDesc
RETURN '-1'
END
-- KIEM TRA NEU PHIEU DA XAC NHAN ROI THI KHONG CHO PHÉP XAC NHAN LAN THU 2
IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID=@p_REQ_PAY_ID AND PROCESS ='0'))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID ,N'Phiếu đề nghị tạm ứng đã được cấp phê duyệt trung gian xác nhận trước đó' ErrorDesc
RETURN '-1'
END
IF(@REQ_TYPE ='I')
BEGIN
PRINT '0'
DECLARE @USER_SIGN VARCHAR(15)
SET @USER_SIGN =(SELECT ISNULL(TRASFER_USER_RECIVE,'') FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
IF(@BRANCH_CREATE_TYPE ='HS' AND EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND TRASFER_USER_RECIVE IS NOT NULL AND TRASFER_USER_RECIVE <> ''))
BEGIN
IF(@p_CHECKER_ID <> ( @USER_SIGN)) AND NOT EXISTS (SELECT * FROM PL_PROCESS WHERE REQ_ID =@p_REQ_PAY_ID AND CHECKER_ID =@USER_SIGN)
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID ,N'Phiếu đề nghị tạm ứng đang chờ cấp phê duyệt trung gian xác nhận. User domain: '+ISNULL(@USER_SIGN,'') ErrorDesc
RETURN '-1'
END
--IF(EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND ISNULL(NOTES,'') <> ''))
--BEGIN
-- ROLLBACK TRANSACTION
-- SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID ,N'Phiếu đề nghị tạm ứng đã được bạn xác nhận trước đó. Vui lòng đợi các cấp duyệt tiếp theo' ErrorDesc
-- RETURN '-1'
--END
END
IF(@ROLE_SIGN IN ('GDDV','PP','KTT','TC','TPTC') OR (EXISTS(SELECT * FROM @TABLE_ROLE WHERE ROLE_AUTH IN ('GDDV','PP','KTT','TC','TPTC')) AND
NOT EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND TRASFER_USER_RECIVE =@p_CHECKER_ID)))
BEGIN
UPDATE TR_REQ_ADVANCE_PAYMENT SET PROCESS='0',NOTES =N'SIGN' WHERE REQ_PAY_ID =@p_REQ_PAY_ID
INSERT INTO PL_PROCESS VALUES (@p_REQ_PAY_ID,'0',@p_CHECKER_ID, GETDATE(),N'Trưởng đơn vị xác nhận phiếu',N'Xác nhận phiếu tạm ứng')
END
ELSE
BEGIN
IF((SELECT BRANCH_CREATE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID) ='DV0001')
BEGIN
INSERT INTO PL_PROCESS VALUES (@p_REQ_PAY_ID,'0',@p_CHECKER_ID, GETDATE(),N'Cấp phê duyệt trung gian xác nhận phiếu' ,N'Xác nhận phiếu tạm ứng')
END
ELSE
BEGIN
UPDATE TR_REQ_ADVANCE_PAYMENT SET PROCESS='0',NOTES =N'SIGN' WHERE REQ_PAY_ID =@p_REQ_PAY_ID
INSERT INTO PL_PROCESS VALUES (@p_REQ_PAY_ID,'0',@p_CHECKER_ID, GETDATE(),N'Cấp phê duyệt trung gian xác nhận phiếu',N'Xác nhận phiếu tạm ứng')
END
END
-- NẾU NGƯỜI DUYỆT TRÙNG VỚI CẤP PHÊ DUYỆT TRUNG GIAN THÌ KHÔNG CẦN UPDATE PROCESS_ID
UPDATE TR_REQ_ADVANCE_PAYMENT SET PROCESS='', NOTES =N'SIGN' WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND TRASFER_USER_RECIVE =@p_CHECKER_ID AND @REQ_TYPE ='I' AND @BRANCH_CREATE_TYPE ='HS'
END -- NGUOC LAI CAC LOAI TAM ƯNG CON LAI
ELSE
BEGIN
UPDATE TR_REQ_ADVANCE_PAYMENT SET PROCESS='0',NOTES =N'SIGN' WHERE REQ_PAY_ID =@p_REQ_PAY_ID
INSERT INTO PL_PROCESS VALUES (@p_REQ_PAY_ID,'0',@p_CHECKER_ID, GETDATE(),N'Cấp phê duyệt trung gian xác nhận phiếu',N'Xác nhận phiếu tạm ứng')
END
COMMIT TRANSACTION
IF(@p_CHECKER_ID =(SELECT ISNULL(TRASFER_USER_RECIVE,'') FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID))
BEGIN
SELECT '0' as Result, @p_REQ_PAY_ID REQ_PAY_ID ,N'Phiếu đề nghị tạm ứng số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+N' đã được cấp phê duyệt trung gian xác nhận thành công! Vui lòng đợi trưởng đơn vị phê duyệt phiếu' ErrorDesc
RETURN '0'
END
ELSE
BEGIN
UPDATE TR_REQ_ADVANCE_PAYMENT SET NOTES =N'' WHERE REQ_PAY_ID =@p_REQ_PAY_ID
SELECT '0' as Result, @p_REQ_PAY_ID REQ_PAY_ID ,N'Phiếu đề nghị tạm ứng số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+N' đã được xác nhận thành công! Vui lòng đợi các cấp phê duyệt tiếp theo' ErrorDesc
RETURN '0'
END
ABORT:
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID, '' ErrorDesc
RETURN '-1'
END
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Creating [dbo].[TR_REQ_ADVANCE_PAYMENT_KT_Appr]'
GO
CREATE PROCEDURE [dbo].[TR_REQ_ADVANCE_PAYMENT_KT_Appr]
--Luanlt 2019/17/10 - Sửa params
@p_REQ_PAY_ID varchar(15)= NULL,
@p_CHECKER_ID_KT varchar(15) = NULL,
@p_AUTH_STATUS_KT VARCHAR(10) = NULL
AS
DECLARE @LEVEL_JOB VARCHAR(5), @LEVEL_JOB_PREV INT
SET @LEVEL_JOB =(SELECT LEVEL_JOB FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_REQ_PAY_ID AND TYPE_JOB='KS')
SET @LEVEL_JOB_PREV = CONVERT(INT,@LEVEL_JOB) -1
IF EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE MAKER_ID_KT =@p_CHECKER_ID_KT AND REQ_PAY_ID =@p_REQ_PAY_ID)
BEGIN
SELECT '-1' as Result, '' REQ_PAY_ID, N'Bạn không được phép duyệt đối tượng này' ErrorDesc
RETURN '-1'
END
IF EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT ='A' AND REQ_PAY_ID =@p_REQ_PAY_ID)
BEGIN
SELECT '-1' Result,'' REQ_PAY_ID,N'Phiếu đề nghị tạm ứng số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+N' đã được kiểm soát viên phê duyệt trước đó. Vui lòng tra cứu thông tin giao dịch!' ErrorDesc
RETURN '-1'
END
----Luanlt 2019/10/17 Validate CORE NOTE không được rỗng
--IF ((SELECT CONFIRM_NOTES FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID) IS NULL OR (SELECT CONFIRM_NOTES FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID) = '')
--BEGIN
-- SELECT '-1' Result,'' REQ_PAY_ID,N'Chưa cập nhật thông tin hạch toán' ErrorDesc
-- RETURN '-1'
--END
-- KIEM TRA NEU DANG TRA VE THI KHONG CHO DUYET
IF ((SELECT AUTH_STATUS_KT FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID) ='R')
BEGIN
SELECT '-1' Result,'' REQ_PAY_ID,N'Phiếu đề nghị tạm ứng số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+N' đang được trả về. Vui lòng cập nhật lại thông tin trước khi duyệt!' ErrorDesc
RETURN '-1'
END
BEGIN TRANSACTION
IF(@LEVEL_JOB='1')
BEGIN
UPDATE TR_REQ_ADVANCE_PAYMENT
SET AUTH_STATUS_KT='A', CHECKER_ID_KT = @p_CHECKER_ID_KT, APPROVE_DT_KT = GETDATE()
WHERE REQ_PAY_ID = @p_REQ_PAY_ID
-- UPDATE LICH THANH TOAN
UPDATE TR_REQ_PAY_SCHEDULE SET AUTH_STATUS_KT='A' WHERE REQ_PAY_ID =@p_REQ_PAY_ID
UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P' WHERE REQ_ID=@p_REQ_PAY_ID AND (TLNAME=@p_CHECKER_ID_KT OR TYPE_JOB ='KS')
-- INSERT VAO PL_PROCESS
INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
VALUES(@p_REQ_PAY_ID,'APP',@p_CHECKER_ID_KT,GETDATE(), N'Kiểm soát viên duyệt phiếu',N'Kế toán duyệt phiếu')
--thieuvq ban vao core - 171219 BEGIN
DECLARE @MAKER VARCHAR(15) = (SELECT MAKER_ID_KT FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID)
DECLARE @RES VARCHAR(10)
--- BAN BUT TOAN VAO CORE
EXEC [dbo].[PAY_ENTRIES_POST_SetApp] @p_REQ_PAY_ID,@MAKER,@p_CHECKER_ID_KT, @RES OUT
--END
--- NEU LA TAM UNG DINH KI THI BO SUNG 1 KI THANHH TOAN
--- KIEM TRA NEU LA THANH TOAN CAC HOP DONG DINH KI
IF(((SELECT TOP 1 REQ_TYPE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID) ='P') AND (SELECT IS_PERIOD FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID) ='Y')
BEGIN
DECLARE @PAY_AMOUNT DECIMAL(18,0),@PAY_DT DATETIME,@l_CONTRACT_ID VARCHAR(15),@p_PAY_PHASE NVARCHAR(100),@REASON_TTDK NVARCHAR(2000)
DECLARE CURS_PERIOD CURSOR FOR SELECT A.AMT_PAY,A.PAY_DT_REAL,A.CONTRACT_ID,A.PAY_PHASE,A.REASON FROM TR_REQ_PAY_PERIOD A WHERE A.REQ_PAY_ID =@p_REQ_PAY_ID ORDER BY A.CONTRACT_ID
OPEN CURS_PERIOD
FETCH NEXT FROM CURS_PERIOD INTO @PAY_AMOUNT ,@PAY_DT ,@l_CONTRACT_ID,@p_PAY_PHASE,@REASON_TTDK
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE @l_PAY_ID VARCHAR(15)
EXEC SYS_CodeMasters_Gen 'TR_CONTRACT_PAYMENT', @l_PAY_ID out
IF @l_PAY_ID='' OR @l_PAY_ID IS NULL GOTO ABORT
INSERT INTO TR_CONTRACT_PAYMENT([PAY_AMOUNT],[PAY_DT], [PAY_ID],[CONTRACT_ID],[PAY_PHASE],[EXPECTED_DT],[PERCENT],[AMOUNT],[PAY_STATUS],[NOTES],[RECORD_STATUS],[MAKER_ID],[CREATE_DT],[AUTH_STATUS],[CHECKER_ID],[APPROVE_DT])
VALUES(@PAY_AMOUNT,GETDATE(),
@l_PAY_ID ,@l_CONTRACT_ID ,@p_PAY_PHASE ,GETDATE(),100,@PAY_AMOUNT,'2' ,@REASON_TTDK ,'1' ,@p_CHECKER_ID_KT ,GETDATE() ,'A' ,@p_CHECKER_ID_KT,GETDATE())
IF @@Error <> 0 GOTO ABORT
FETCH NEXT FROM CURS_PERIOD INTO @PAY_AMOUNT ,@PAY_DT ,@l_CONTRACT_ID,@p_PAY_PHASE,@REASON_TTDK
END
CLOSE CURS_PERIOD
DEALLOCATE CURS_PERIOD
-- CAP NHAT DETAIL
UPDATE TR_REQ_PAY_PERIOD SET AUTH_STATUS_KT ='A' WHERE REQ_PAY_ID =@p_REQ_PAY_ID
END
END
ELSE
BEGIN
-- CAP NHAT C CHO CAP CHA
UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P' WHERE REQ_ID=@p_REQ_PAY_ID AND TLNAME=@p_CHECKER_ID_KT
UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='C' WHERE REQ_ID=@p_REQ_PAY_ID AND LEVEL_JOB = CONVERT(VARCHAR(5),@LEVEL_JOB_PREV)
SELECT '2' as Result, @p_REQ_PAY_ID REQ_PAY_ID ,N'Xác nhận phiếu thành công' ErrorDesc
RETURN '2'
END
IF @@Error <> 0 GOTO ABORT
COMMIT TRANSACTION
SELECT '0' as Result, @p_REQ_PAY_ID REQ_PAY_ID ,N'Phiếu đề nghị tạm ứng số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+N' đã được phê duyệt thành công!' ErrorDesc
RETURN '0'
ABORT:
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID, '' ErrorDesc
RETURN '-1'
END
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Creating [dbo].[TR_REQ_ADVANCE_PAYMENT_Del]'
GO
/*
[dbo].[TR_REQUEST_PAYMENT_Del] ''
*/
CREATE PROCEDURE [dbo].[TR_REQ_ADVANCE_PAYMENT_Del]
@p_REQ_PAY_ID varchar(15)
AS
DECLARE @REQ_CODE VARCHAR(50)
SET @REQ_CODE =(SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
DECLARE @ERRORSYS NVARCHAR(15) = ''
--IF ( NOT EXISTS ( SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID= @p_REQ_PAY_ID))
-- SET @ERRORSYS = 'REQ-00002'
--IF @ERRORSYS <> ''
--BEGIN
-- SELECT ErrorCode Result, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS
-- RETURN '0'
--END
BEGIN TRANSACTION
--IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS <>'E'))
--BEGIN
-- ROLLBACK TRANSACTION
-- SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID, N'Phiếu đề nghị tạm ứng số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+ N' đã được gửi phê duyệt! Bạn chỉ được phép xóa bản nháp!' ErrorDesc
-- RETURN '-1'
--END
--IF((SELECT AUTH_STATUS FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID= @p_REQ_PAY_ID) = 'A')
--BEGIN
-- ROLLBACK TRANSACTION
-- SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID, N'Phiếu đề nghị tạm ứng số: ' +(SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+ N' đã được trưởng đơn vị phê duyệt, bạn không được phép xóa!' ErrorDesc
-- RETURN '-1'
--END
IF((SELECT AUTH_STATUS_KT FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID= @p_REQ_PAY_ID) = 'A')
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID, N'Phiếu đề nghị tạm ứng số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+ N' đã được kiểm soát viên duyệt, bạn không được phép xóa!' ErrorDesc
RETURN '-1'
END
--IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS <>'E'))
--BEGIN
-- ROLLBACK TRANSACTION
-- SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID, N'Phiếu đề nghị tạm ứng số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+ N' đã được gửi phê duyệt, bạn không được phép xóa!' ErrorDesc
-- RETURN '-1'
--END
ELSE
BEGIN
Delete FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID= @p_REQ_PAY_ID
DELETE FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID= @p_REQ_PAY_ID
DELETE FROM TR_REQ_PAY_SCHEDULE WHERE REQ_ADV_ID=@p_REQ_PAY_ID
DELETE FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID= @p_REQ_PAY_ID
DELETE FROM TR_REQ_PAY_PERIOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID
DELETE FROM TR_REQ_PAY_ATTACH WHERE REQ_PAY_ID = @p_REQ_PAY_ID
DELETE FROM TR_REQ_ADVANCE_CUS WHERE REQ_PAY_ID = @p_REQ_PAY_ID
DELETE FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID= @p_REQ_PAY_ID
DELETE FROM TR_REQ_PAY_BUDGET WHERE REQ_PAY_ID= @p_REQ_PAY_ID
IF @@Error <> 0 GOTO ABORT
END
COMMIT TRANSACTION
SELECT '0' as Result, @p_REQ_PAY_ID REQ_PAY_ID, N'Phiếu đề nghị tạm ứng số: '+@REQ_CODE+ N' đã được xóa thành công khỏi hệ thống!' ErrorDesc
RETURN '0'
ABORT:
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID, '' ErrorDesc
RETURN '-1'
End
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Creating [dbo].[TR_REQ_ADVANCE_PAYMENT_KT_Upd]'
GO
CREATE PROCEDURE [dbo].[TR_REQ_ADVANCE_PAYMENT_KT_Upd]
@p_REQ_PAY_ID varchar(15)= NULL,
@p_REQ_PAY_CODE varchar(50) = NULL,
@p_REQ_DT VARCHAR(20)= NULL,
@p_BRANCH_ID varchar(15) = NULL,
@p_DEP_ID varchar(15) = NULL,
@p_REQ_REASON nvarchar(MAX) = NULL,
@p_REQ_TYPE varchar(15) = NULL,
@P_REQ_ENTRIES nvarchar(MAX) = NULL,
@p_REQ_DESCRIPTION nvarchar(MAX) = NULL,
@p_REF_ID varchar(15) = NULL,
@p_RECEIVER_PO nvarchar(250) = NULL,
@p_RECEIVER_DEBIT nvarchar(250) = NULL,
@p_REQ_PAY_TYPE varchar(15) = NULL,
@p_REQ_TYPE_CURRENCY nvarchar(50) = NULL,
@p_REQ_AMT decimal(18, 0) = NULL,
@p_REQ_TEMP_AMT decimal(18, 0) = NULL,
@p_MAKER_ID varchar(15) = NULL,
@p_CREATE_DT varchar(25) = NULL,
@p_EDITOR_ID varchar(15) = NULL,
@p_AUTH_STATUS varchar(1) = NULL,
@p_CHECKER_ID varchar(15) = NULL,
@p_APPROVE_DT varchar(25) = NULL,
@p_CREATE_DT_KT varchar(25) = NULL,
@p_MAKER_ID_KT varchar(15) = NULL,
@p_AUTH_STATUS_KT varchar(1) = NULL,
@p_CHECKER_ID_KT varchar(1) = NULL,
@p_APPROVE_DT_KT varchar(25)= null,
@p_CONFIRM_NOTE nvarchar(500) = NULL,
@p_BRANCH_CREATE varchar(15) = NULL,
@p_NOTES varchar(15) = NULL,
@p_RECORD_STATUS varchar(1) = NULL,
@p_TRANSFER_MAKER nvarchar(50) = NULL,
@p_TRANSFER_DT varchar(25) = NULL,
@p_TRASFER_USER_RECIVE varchar(15) = NULL,
@p_PROCESS varchar(15) = NULL,
@p_PAY_PHASE VARCHAR(15)= NULL,
@p_DVDM_ID VARCHAR(15) = NULL,
@p_RATE DECIMAL(18,0)= 0,
@p_XMP_TEMP XML = NULL
AS
--Validation is here
/*
END
*/
DECLARE @ENTRY_PAIR varchar(20),@DR_CR varchar(20),@ACCT VARCHAR(50), @ACCT_NAME VARCHAR(500), @AMT decimal(18,2),@CURRENCY VARCHAR(15), @EXC_RATE DECIMAL(18,0),
@BRANCH_ID VARCHAR(15), @DEP_ID VARCHAR(15),@TRN_DESC nvarchar(1000),@GL_CODE VARCHAR(100),@BRANCH_CODE VARCHAR(15), @DEP_CODE VARCHAR(15)
DECLARE @hdoc INT;
EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XMP_TEMP;
DECLARE XmlData CURSOR FOR
SELECT *
FROM
OPENXML(@hdoc, '/Root/XmlData', 2)
WITH(ENTRY_PAIR varchar(20),DR_CR varchar(20),ACCT VARCHAR(50), ACCT_NAME VARCHAR(500), AMT decimal(18,2),CURRENCY VARCHAR(15), EXC_RATE DECIMAL(18,0),
BRANCH_ID VARCHAR(15), DEP_ID VARCHAR(15),TRN_DESC nvarchar(1000), GL_CODE VARCHAR(100))
OPEN XmlData;
DECLARE @INDEX INT =0
BEGIN TRANSACTION
-- KHAI BAO CAC BUOC DUYET- XAC NHAN
DECLARE @LEVEL_JOB VARCHAR(5), @LEVEL_JOB_PREV INT
SET @LEVEL_JOB =(SELECT LEVEL_JOB FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_REQ_PAY_ID AND TLNAME=@p_MAKER_ID_KT AND TYPE_JOB ='XL')
SET @LEVEL_JOB_PREV = CONVERT(INT,@LEVEL_JOB) -1
----
--IF(EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID AND MAKER_ID_KT IS NULL))
IF(@p_XMP_TEMP IS NOT NULL)
BEGIN
UPDATE TR_REQ_ADVANCE_PAYMENT SET
AUTH_STATUS_KT ='U', CREATE_DT_KT = GETDATE(),MAKER_ID_KT =@p_MAKER_ID_KT,CHECKER_ID_KT=NULL,APPROVE_DT_KT = NULL, CONFIRM_NOTES=@p_CONFIRM_NOTE
WHERE REQ_PAY_ID =@p_REQ_PAY_ID
DELETE FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID = @p_REQ_PAY_ID
IF @@Error <> 0 GOTO ABORT
DECLARE @DR_CR_NAME NVARCHAR(50)
FETCH NEXT FROM XmlData INTO @ENTRY_PAIR ,@DR_CR,@ACCT, @ACCT_NAME, @AMT ,@CURRENCY, @EXC_RATE,@BRANCH_ID, @DEP_ID,@TRN_DESC,@GL_CODE
WHILE @@fetch_status=0 BEGIN
SET @INDEX = @INDEX +1
IF(@GL_CODE IS NOT NULL AND @GL_CODE <> '')
BEGIN
SET @GL_CODE = RIGHT(@GL_CODE,9)
END-- LUCTV BO SUNG 20211117
--SET @ACCT_NAME =UPPER(dbo.fChuyenCoDauThanhKhongDau(@ACCT_NAME))
IF(@DR_CR='D')
BEGIN
SET @DR_CR_NAME =N'Nợ'
END
ELSE
BEGIN
SET @DR_CR_NAME =N'Có'
END
SET @BRANCH_CODE =(SELECT TOP 1 BRANCH_CODE FROM CM_BRANCH WHERE BRANCH_ID =@BRANCH_ID)
SET @DEP_CODE =(SELECT TOP 1 DEP_CODE FROM CM_DEPARTMENT WHERE DEP_ID =@DEP_ID)
IF(@BRANCH_ID IS NULL OR @BRANCH_ID ='')
BEGIN
ROLLBACK TRANSACTION
CLOSE XmlData;
DEALLOCATE XmlData;
SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Đơn vị nhận không được phép để trống' ErrorDesc
RETURN '-1'
END
IF(@TRN_DESC IS NULL OR @TRN_DESC ='')
BEGIN
ROLLBACK TRANSACTION
CLOSE XmlData;
DEALLOCATE XmlData;
SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Diễn giải hạch toán không được phép để trống' ErrorDesc
RETURN '-1'
END
IF(@ACCT IS NOT NULL AND @ACCT <> '' AND LEFT(@ACCT,1) IN ('7','8') AND (@DEP_ID IS NULL OR @DEP_ID ='') AND LEN(@ACCT) < 13)
BEGIN
ROLLBACK TRANSACTION
CLOSE XmlData;
DEALLOCATE XmlData;
SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Tài khoản hạch toán đầu số 7 & 8 vui lòng chọn mã phòng ban' ErrorDesc
RETURN '-1'
END
IF(@TRN_DESC IS NULL OR @TRN_DESC ='')
BEGIN
ROLLBACK TRANSACTION
CLOSE XmlData;
DEALLOCATE XmlData;
SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Diễn giải hạch toán không được phép để trống' ErrorDesc
RETURN '-1'
END
---- NEU HACH TOAN CASA THI 3 KI TU DAU PHAI KHOP VOI BRANCH CODE CUA DON VI CHIU CHI PHI
--IF(LEN(@ACCT) >9 AND (SUBSTRING(@ACCT,1,3) <> (SELECT ISNULL(BRANCH_CODE,'') FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_ID)))
--BEGIN
-- ROLLBACK TRANSACTION
-- CLOSE XmlData;
-- DEALLOCATE XmlData;
-- SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N'Nếu bạn đang hạch toán CASA trong hệ thống. Vui lòng chọn mã đơn vị khớp với mã đơn vị tương ứng với 3 kí tự đầu của tài khoản CASA' ErrorDesc
-- RETURN '-1'
-----
--END
IF(@DEP_ID IS NOT NULL AND @DEP_ID <> '' AND NOT EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_ID =@DEP_ID AND BRANCH_ID =@BRANCH_ID))
BEGIN
ROLLBACK TRANSACTION
CLOSE XmlData;
DEALLOCATE XmlData;
SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Vui lòng chọn mã phòng ban khớp với mã đơn vị tương ứng với 3 kí tự đầu của tài khoản CASA' ErrorDesc
RETURN '-1'
---
END
IF(@DEP_ID IS NOT NULL AND @DEP_ID <> '' AND (LEFT(@DEP_CODE,3) <> @BRANCH_CODE))
BEGIN
ROLLBACK TRANSACTION
--CLOSE XmlData;
--DEALLOCATE XmlData;
SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng: '+ CONVERT(VARCHAR(5),@INDEX) + N' Vui lòng chọn mã phòng ban khớp với mã đơn vị tương ứng với 3 kí tự đầu của tài khoản CASA' ErrorDesc
RETURN '-1'
---
END
DECLARE @p_ET_ID VARCHAR(15);
EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_ENTRIES', @p_ET_ID OUT;
IF @p_ET_ID='' OR @p_ET_ID IS NULL GOTO ABORT;
INSERT INTO TR_REQ_PAY_ENTRIES (REQ_PAY_DT_ID,REQ_PAY_ID,ENTRY_PAIR,DR_CR, DR_CR_NAME,ACCT,ACCT_NAME,AMT,CURRENCY,EXC_RATE,BRANCH_ID,DEP_ID,TRN_DESC,TRN_DATE,MAKER_ID_KT)
VALUES (@p_ET_ID,@p_REQ_PAY_ID,@ENTRY_PAIR,@DR_CR,@DR_CR_NAME,@ACCT,@ACCT_NAME, @AMT ,@CURRENCY, @EXC_RATE, @BRANCH_ID, @DEP_ID,@TRN_DESC,GETDATE(),@p_MAKER_ID_KT)
-- NEU CHUA CO TAI KHOAN THI THEM VO CM_ACCOUNT
IF(NOT EXISTS(SELECT * FROM CM_ACCOUNT WHERE ACC_NO =@ACCT))
BEGIN
INSERT INTO CM_ACCOUNT (ACC_NO, ACC_NAME, TK_GL, TK_GL_NAME, MAKER_ID, CHECKER_ID) VALUES
(@ACCT,@ACCT_NAME,@GL_CODE,(SELECT TOP 1 ACC_NAME FROM CM_ACCOUNT WHERE ACC_NO =@GL_CODE),'admin','admin')
END
ELSE
BEGIN
IF(@GL_CODE IS NOT NULL AND @GL_CODE <> '')
BEGIN
UPDATE CM_ACCOUNT SET ACC_NAME =@ACCT_NAME, TK_GL =@GL_CODE, TK_GL_NAME =(SELECT TOP 1 ACC_NAME FROM CM_ACCOUNT WHERE ACC_NO =@GL_CODE)
WHERE ACC_NO=@ACCT
END
END
--LUCTV 19-07-2021: MỖI MÃ BÚT TOÁN PHẢI THEO NGUYÊN TẮC 1 NỢ NHIỀU CÓ HOẶC 1 CÓ NHIỀU NỢ
IF((SELECT COUNT (*) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND ENTRY_PAIR =@ENTRY_PAIR AND DR_CR ='D') >1 AND
(SELECT COUNT (*) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND ENTRY_PAIR =@ENTRY_PAIR AND DR_CR ='C') >1)
BEGIN
ROLLBACK TRANSACTION
CLOSE XmlData;
DEALLOCATE XmlData;
SELECT '-1' as Result, '' REQ_PAY_ID, N'Mã bút toán số '+ @ENTRY_PAIR+ N': Sai cấu trúc Nợ Có (1 Nợ nhiều Có hoặc 1 Có nhiều Nợ, không được phép Nhiều Có - Nhiều Nợ)' ErrorDesc
RETURN '-1'
---
END
FETCH NEXT FROM XmlData INTO @ENTRY_PAIR ,@DR_CR,@ACCT, @ACCT_NAME, @AMT ,@CURRENCY, @EXC_RATE,@BRANCH_ID, @DEP_ID,@TRN_DESC,@GL_CODE
END;
CLOSE XmlData;
DEALLOCATE XmlData;
-- UPDATE GL THEO RULE
----UPDATE CM_ACCOUNT
----SET TK_GL ='361200001', TK_GL_NAME =(SELECT ACC_NAME FROM CM_ACCOUNT WHERE ACC_NO ='361200001')
----WHERE LEN (ACC_NO) >9 AND ISNULL(TK_GL,'')=''
----AND SUBSTRING(ACC_NO,4,4) ='7048'
----UPDATE CM_ACCOUNT
----SET TK_GL ='519200002', TK_GL_NAME =(SELECT ACC_NAME FROM CM_ACCOUNT WHERE ACC_NO ='519200002')
----WHERE LEN (ACC_NO) >9 AND ISNULL(TK_GL,'')=''
----AND SUBSTRING(ACC_NO,4,4) ='7044' AND SUBSTRING(ACC_NO,12,2) ='19'
----UPDATE CM_ACCOUNT
----SET TK_GL ='421100001', TK_GL_NAME =(SELECT ACC_NAME FROM CM_ACCOUNT WHERE ACC_NO ='421100001')
----WHERE LEN (ACC_NO) >9 AND ISNULL(TK_GL,'')=''
----AND SUBSTRING(ACC_NO,4,4) ='7041'
--UPDATE TR_REQ_PAY_ENTRIES SET ACCT_NAME = UPPER(dbo.fChuyenCoDauThanhKhongDau(ACCT_NAME)) WHERE REQ_PAY_ID =@p_REQ_PAY_ID
IF @@error<>0 GOTO ABORT;
END
COMMIT TRANSACTION
--- BAT DAU CAP NHAT XAC DINH CAC BUOC DUYET SAU KHI KE TOAN CAP NHAT THONG TIN
IF(@p_XMP_TEMP IS NULL)
BEGIN
-- CHAN NEU CHI CO 1 BUT NO 1 BUT CO THI KHONG DUOC DI TIEP
IF(EXISTS(SELECT * FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID))
BEGIN
DECLARE @SUM_CR DECIMAL(18,2), @SUM_DR DECIMAL(18,2)
SET @SUM_CR =ISNULL((SELECT SUM(AMT*ISNULL(EXC_RATE,1)) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND DR_CR ='C'),0)
SET @SUM_DR =ISNULL((SELECT SUM(AMT*ISNULL(EXC_RATE,1)) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND DR_CR ='D'),0)
IF(@SUM_CR<>@SUM_DR)
BEGIN
--ROLLBACK TRANSACTION
--CLOSE XmlData;
--DEALLOCATE XmlData;
SELECT '-1' as Result, '' REQ_PAY_ID, N'Tổng hạch toán nợ phải bằng tổng hạch toán có' ErrorDesc
RETURN '-1'
END
END
---BAT DAU VALIDATE
DECLARE @REQ_PAY_ID varchar(15), @ET_ID varchar(15), @AMT_ET DECIMAL(18,0), @ACC_ET varchar(25), @DRCR_ET varchar(25), @SUM_ET DECIMAL(18,0) =0
DECLARE cursorProduct CURSOR LOCAL FOR
SELECT REQ_PAY_ID,ENTRY_PAIR,AMT,ACCT,DR_CR FROM TR_REQ_PAY_ENTRIES A WHERE A.REQ_PAY_ID =@p_REQ_PAY_ID
Open cursorProduct
FETCH NEXT FROM cursorProduct INTO @REQ_PAY_ID , @ET_ID, @AMT_ET, @ACC_ET , @DRCR_ET
WHILE @@FETCH_STATUS = 0
BEGIN
IF(@DRCR_ET='C' AND EXISTS(SELECT * FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND ACC_NO =@ACC_ET))
BEGIN
SET @SUM_ET =(SELECT SUM(AMT) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND DR_CR ='C' AND ACCT =@ACC_ET)
IF(ISNULL(@SUM_ET,0) <> (SELECT SUM(TOTAL_AMT) FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND ACC_NO =@ACC_ET))
BEGIN
SELECT '-1' as Result, '' REQ_PAY_ID, N' Số tiền hạch toán có của tài khoản: '+@ACC_ET + N' phải bằng với số tiền trên phương thức thanh toán của tài khoản đó là: '+FORMAT((SELECT ISNULL(SUM(TOTAL_AMT),0) FROM TR_REQ_PAY_METHOD WHERE ACC_NO =@ACC_ET AND REQ_PAY_ID =@p_REQ_PAY_ID),'#,###') ErrorDesc
RETURN '-1'
END
END
-- KIEM TRA SO TIEN NO CO
IF (ISNULL((SELECT SUM(AMT) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND DR_CR ='C' AND ENTRY_PAIR =@ET_ID),0)
<> ISNULL((SELECT SUM(AMT) FROM TR_REQ_PAY_ENTRIES WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND DR_CR ='D' AND ENTRY_PAIR =@ET_ID),0)
)
BEGIN
SELECT '-1' as Result, '' REQ_PAY_ID, N'Mã bút toán: ' + @ET_ID + N' Số tiền bút toán Nợ phải bằng với số tiền bút toán Có' ErrorDesc
RETURN '-1'
END
-- KIEM TRA TAI KHOAN CO TON TAI TRONG HACH TOAN HAY KHONG
--IF(LEN(@ACC_ET) =12 OR
-- (NOT EXISTS(SELECT * FROM CM_ACCOUNT WHERE ACC_NO =@ACC_ET)
-- OR (NOT EXISTS(SELECT * FROM CM_ACCOUNT WHERE ACC_NO =(SELECT TOP 1 TK_GL FROM CM_ACCOUNT WHERE ACC_NO =@ACC_ET)))))
--BEGIN
-- SELECT '-1' as Result, '' REQ_PAY_ID, N'Mã bút toán: ' + @ET_ID + N'Vui lòng kiểm tra đầu tài khoản hạch toán: ' +@ACC_ET +N'. Đây là tài khoản chưa hợp lệ' ErrorDesc
-- RETURN '-1'
--END
FETCH NEXT FROM cursorProduct INTO @REQ_PAY_ID , @ET_ID, @AMT_ET, @ACC_ET , @DRCR_ET
END
-- KET THUC VIEC VALIDATE
UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P' WHERE REQ_ID=@p_REQ_PAY_ID AND TLNAME=@p_MAKER_ID_KT
UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='C' WHERE REQ_ID=@p_REQ_PAY_ID AND LEVEL_JOB = CONVERT(VARCHAR(5),@LEVEL_JOB_PREV)
-- CAP NHAT TINH TRANG VE DANG XU LY
UPDATE TR_REQ_ADVANCE_PAYMENT SET AUTH_STATUS_KT='P',CREATE_DT_KT =GETDATE() WHERE REQ_PAY_ID=@p_REQ_PAY_ID
INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
VALUES(@p_REQ_PAY_ID,'SEND',@p_MAKER_ID_KT,GETDATE(), N'Giao dịch viên gửi phê duyệt phiếu',N'Giao dịch viên cập nhật thông tin')
SELECT '4' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+N'đã được gửi phê duyệt thành công! Vui lòng đợi kiểm soát viên phê duyệt phiếu' ErrorDesc
RETURN '4'
END
SELECT '0' as Result, @p_REQ_PAY_ID REQ_PAY_ID, '' ErrorDesc
RETURN '0'
ABORT:
BEGIN
ROLLBACK TRANSACTION
CLOSE XmlData;
DEALLOCATE XmlData;
SELECT '-1' as Result, '' REQ_PAY_ID, '' ErrorDesc
RETURN '-1'
End
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Altering [dbo].[TR_REQ_PAYMENT_Search]'
GO
ALTER PROCEDURE [dbo].[TR_REQ_PAYMENT_Search]
@p_REQ_PAY_ID varchar(15)= NULL,
@p_REQ_PAY_CODE varchar(50) = NULL,
@p_REQ_DT VARCHAR(20)= NULL,
@p_BRANCH_ID varchar(15) = NULL,
@p_DEP_ID varchar(15) = NULL,
@p_REQ_REASON nvarchar(MAX) = NULL,
@p_REQ_TYPE varchar(15) = NULL,
@P_REQ_ENTRIES nvarchar(MAX) = NULL,
@p_REQ_DESCRIPTION nvarchar(MAX) = NULL,
@p_REF_ID varchar(15) = NULL,
@p_RECEIVER_PO nvarchar(250) = NULL,
@p_REQ_PAY_TYPE varchar(15) = NULL,
@p_REQ_TYPE_CURRENCY nvarchar(50) = NULL,
@p_REQ_AMT decimal(18, 0) = NULL,
@p_REQ_TEMP_AMT decimal(18, 0) = NULL,
@p_MAKER_ID varchar(15) = NULL,
@p_CREATE_DT varchar(25) = NULL,
@p_EDITOR_ID varchar(15) = NULL,
@p_AUTH_STATUS varchar(1) = NULL,
@p_CHECKER_ID varchar(15) = NULL,
@p_APPROVE_DT varchar(25) = NULL,
@p_CREATE_DT_KT varchar(25) = NULL,
@p_MAKER_ID_KT varchar(15) = NULL,
@p_AUTH_STATUS_KT varchar(1) = NULL,
@p_CHECKER_ID_KT varchar(1) = NULL,
@p_APPROVE_DT_KT varchar(25)= null,
@p_CONFIRM_NOTE nvarchar(500) = NULL,
@p_BRANCH_CREATE varchar(15) = NULL,
@p_NOTES varchar(15) = NULL,
@p_RECORD_STATUS varchar(1) = NULL,
@p_TRANSFER_MAKER nvarchar(50) = NULL,
@p_TRANSFER_DT varchar(25) = NULL,
@p_TRASFER_USER_RECIVE varchar(15) = NULL,
@p_PROCESS varchar(15) = NULL,
@p_PAY_PHASE VARCHAR(15) = NULL,
@p_TOP INT = 10,
@p_LEVEL varchar(10) = NULL,
@p_FRMDATE VARCHAR(20)= NULL,
@p_TODATE VARCHAR(20) = NULL,
@p_BRANCH_LOGIN VARCHAR(15) = NULL,
@p_IS_UPDATE_KT VARCHAR(15) = NULL,
@P_IS_TRANSFER VARCHAR(15) = NULL,
@p_TERM_ID VARCHAR(15) = NULL,
@P_USER_LOGIN VARCHAR(15)= NULL,
@p_FUNCTION VARCHAR(15) = NULL,
@p_TYPE_SEARCH VARCHAR(15) = NULL
AS
BEGIN -- PAGING
SET @p_TOP = NULL
declare @tmp table(BRANCH_ID varchar(15))
insert into @tmp SELECT BRANCH_ID FROM [dbo].[CM_BRANCH_GETCHILDID](@p_BRANCH_ID)
declare @tmp_Login table(BRANCH_ID varchar(15))
insert into @tmp_Login SELECT BRANCH_ID FROM [dbo].[CM_BRANCH_GETCHILDID](@p_BRANCH_LOGIN)
DECLARE @ROLE_ID VARCHAR(20) , @DEP_ID_LG VARCHAR(15) = NULL, @COST_LG VARCHAR(15), @DVDM_ID VARCHAR(15)
DECLARE @BRANCH_TYPE VARCHAR(15)
SET @BRANCH_TYPE =(SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID=(SELECT BRANCH_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID))
SET @ROLE_ID = (SELECT ROLENAME FROM TL_USER WHERE TLNANME=@p_USER_LOGIN)
SET @DEP_ID_LG =(SELECT SECUR_CODE FROM TL_USER WHERE TLNANME=@p_USER_LOGIN)
DECLARE @TMP_DEP TABLE(DEP_ID VARCHAR(15))
SET @COST_LG =(SELECT TOP 1 COST_ID FROM PL_COSTCENTER_DT WHERE DEP_ID =@DEP_ID_LG)
SET @DVDM_ID =(SELECT TOP 1 DVDM_ID FROM PL_COSTCENTER WHERE COST_ID =@COST_LG)
INSERT INTO @TMP_DEP SELECT B.DEP_ID FROM PL_COSTCENTER_DT B WHERE COST_ID =@COST_LG
DECLARE @BRANCH_TYPE_LG VARCHAR(15)
SET @BRANCH_TYPE_LG = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID=@p_BRANCH_LOGIN)
-- KHAI BAO NHUNG PHONG BAN MA 1 USER KIEM NHIEM
DECLARE @TABLE_ROLE TABLE (ROLE_AUTH VARCHAR(50))
INSERT INTO @TABLE_ROLE VALUES (@ROLE_ID)
INSERT INTO @TABLE_ROLE SELECT ROLE_NEW FROM TL_SYS_ROLE_MAPPING WHERE ROLE_OLD =@ROLE_ID AND TLNAME =@P_USER_LOGIN
AND (CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) OR EFF_DATE IS NULL OR EFF_DATE ='')
AND (CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103) OR EXP_DATE IS NULL OR EXP_DATE ='')
DECLARE @DEP_AUTH TABLE (DEP_AUTH VARCHAR(15))
INSERT INTO @DEP_AUTH VALUES (@DEP_ID_LG)
INSERT INTO @DEP_AUTH SELECT DEP_ID FROM TL_SYS_ROLE_MAPPING WHERE TLNAME =@P_USER_LOGIN AND
CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) AND CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103)
-- KHAI BAO PHẦN ỦY QUYỀN ĐƠN VỊ
DECLARE @BRANCH_AUTH TABLE (BRN_AUTH VARCHAR(15))
INSERT INTO @BRANCH_AUTH VALUES (@p_BRANCH_LOGIN)
INSERT INTO @BRANCH_AUTH SELECT BRANCH_ID FROM TL_SYS_ROLE_MAPPING WHERE TLNAME =@P_USER_LOGIN AND
CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) AND CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103)
--- NEU USER KHONG CHON TU NGAY THI TU NGAY BANG NGAY 1 1 HANG THANG 20211116
DECLARE @DATE DATE
IF ((@p_FRMDATE IS NULL OR @p_FRMDATE ='') AND ISNULL(@p_REQ_PAY_ID,'')='' AND @p_AUTH_STATUS ='') -- MỤC ĐÍCH NẾU NHƯ XEM CHI TIẾT 1 PĐN THANH TOÁN DẠNG POPUP THÌ BỎ QUA ĐIỀU KIỆN NÀY, TỪ NGÀY VẪN LÀ NULL
BEGIN
--DECLARE @MONTH INT, @YEAR INT
--SET @MONTH = MONTH(GETDATE()) -1
--SET @YEAR = YEAR(GETDATE())
--BEGIN
-- SET @p_FRMDATE ='01/'+CONVERT(VARCHAR,@MONTH,5) +'/'+ CONVERT(VARCHAR,@YEAR,5)
--END
SET @DATE = CONVERT(DATE,GETDATE(),103)
SET @DATE = DATEADD(MONTH,-2,@DATE)
END
ELSE
BEGIN
SET @DATE = CONVERT(DATE,@p_FRMDATE,103)
END
-- HẾT KHAI BÁO
SET @ROLE_ID =(SELECT TOP 1 RoleName FROM TL_USER WHERE TLNANME =@p_USER_LOGIN)
IF(@ROLE_ID IS NOT NULL AND @ROLE_ID <>'' AND @ROLE_ID IN ('TPGD','GDDV','PGD','PTGD','TGD','HDQT','TP','PP','TBP','KTT','GDK','KSV','TC','NVTC','TPTC','PPGD'))
BEGIN
PRINT @ROLE_ID
END
ELSE
BEGIN
SET @ROLE_ID =(SELECT TOP 1 RoleName FROM TL_USER_V2 WHERE TLNANME =@p_USER_LOGIN)
IF(@ROLE_ID IS NULL OR @ROLE_ID ='')
BEGIN
SET @ROLE_ID =(SELECT TOP 1 ROLE_NEW FROM TL_SYS_ROLE_MAPPING WHERE ROLE_OLD =(SELECT TOP 1 ROLENAME FROM TL_USER WHERE TLNANME=@p_USER_LOGIN))
END
END
INSERT INTO @TABLE_ROLE VALUES (@ROLE_ID)--2021823
--SET @ROLE_ID =(SELECT TOP 1 RoleName FROM TL_USER_V2 WHERE TLNANME =@p_USER_LOGIN)
IF(@p_TOP IS NULL OR @p_TOP='' OR @p_TOP=0)
BEGIN
-- PAGING BEGIN
SELECT A.*,B.AUTH_STATUS_NAME, C.AUTH_STATUS_NAME AUTH_STATUS_NAME_KT, TL.TLFullName CREATE_FULLNAME,
TL1.TLFullName APPROVE_FULLNAME,
CASE WHEN ISNULL(TL2.TLFullName,'') <>'' THEN TL2.TLFullName ELSE TL8.TLFullName END AS CREATE_FULLNAME_KT,
TL3.TLFullName APPROVE_FULLNAME_KT,
--CASE WHEN ISNULL(A.IS_PERIOD,'') <> '' AND A.IS_PERIOD ='Y' AND EXISTS (SELECT TOP 1 X.* FROM TR_REQ_ADVANCE_DT X
-- INNER JOIN TR_CONTRACT CT ON X.REF_ID = CT.CONTRACT_ID
-- WHERE X.REQ_PAY_ID = A.REQ_PAY_ID AND CT.BRANCH_ID <> @p_BRANCH_LOGIN AND CT.BRANCH_ID IS NOT NULL AND CT.BRANCH_ID <> '') THEN
-- BR.BRANCH_NAME + ISNULL(' - '+ (SELECT TOP 1 BRANCH_NAME FROM CM_BRANCH WHERE BRANCH_ID =(SELECT TOP 1 BRANCH_ID FROM TR_CONTRACT WHERE CONTRACT_ID IN (SELECT TOP 1 REF_ID FROM TR_REQ_ADVANCE_DT
-- WHERE REQ_PAY_ID = A.REQ_PAY_ID))),'')
-- ELSE BR.BRANCH_NAME END BRANCH_NAME_REQ,
BR.BRANCH_NAME AS BRANCH_NAME_REQ,
BR1.BRANCH_NAME BRANCH_NAME_CRE, DP.DEP_NAME, DP.DEP_CODE, BR.BRANCH_CODE BRANCH_CODE_REQ,
--Luanlt--2019/10/15-Sửa AL,AL1
BR1.BRANCH_CODE BRANCH_CODE_CRE, AL.CONTENT REQ_TYPE_NAME,AL1.CONTENT REQ_PAY_TYPE_NAME, ISNULL((A.REQ_AMT -H.SOTIEN_TT),0) AS TOTAL_AMT_TEMP,
ISNULL(H.SOTIEN_TT,0) TOTAL_AMT_PAY_HIS,
TL4.TLFullName AS TRANSFER_FULLNAME,TL5.TLFullName AS TRANSFER_RECIEVER_FULLNAME,'' EMP_FULLNAME,PO.PO_CODE, PO.PO_NAME, S.SUP_NAME,S.TAX_NO SUP_TAX_NO,
PC3.LEVEL_JOB, PC3.STATUS_JOB,PC3.TYPE_JOB,
--CASE WHEN PC3.TLNAME IS NOT NULL AND PC3.TLNAME <>'' THEN @P_USER_LOGIN ELSE PC3.TLNAME END AS EXEC_USER,
CASE WHEN PC3.TLNAME IS NOT NULL AND PC3.TLNAME <>'' AND ISNULL(A.AUTH_STATUS_KT,'') ='P' THEN @P_USER_LOGIN ELSE PC3.TLNAME END AS EXEC_USER,
@p_TYPE_SEARCH AS TYPE_SEARCH,SR.ROLE_ID AS ROLE_ID_CRE,CASE WHEN BR1.BRANCH_TYPE <> 'PGD'THEN BR1.BRANCH_TYPE ELSE 'CN' END AS BRANCH_TYPE_CR,
BR_CORE.BRANCH_CODE AS BRANCH_CODE_CORE, BR_CORE.BRANCH_NAME AS BRANCH_NAME_CORE,'' AS BRANCH_CODE_CONTRACT,
ISNULL((SELECT TOP 1 BRANCH_NAME FROM CM_BRANCH WHERE BRANCH_ID =(SELECT TOP 1 BRANCH_ID FROM TR_CONTRACT WHERE CONTRACT_ID IN (SELECT TOP 1 REF_ID FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID = A.REQ_PAY_ID))),'')
AS BRANCH_NAME_CONTRACT
-- SELECT END
FROM TR_REQ_PAYMENT A
LEFT JOIN CM_AUTH_STATUS B ON A.AUTH_STATUS=B.AUTH_STATUS
LEFT JOIN CM_AUTH_STATUS C ON A.AUTH_STATUS_KT=C.AUTH_STATUS
LEFT JOIN TL_USER TL ON A.MAKER_ID=TL.TLNANME
LEFT JOIN TL_USER TL1 ON A.CHECKER_ID=TL1.TLNANME
LEFT JOIN TL_USER TL2 ON A.MAKER_ID_KT=TL2.TLNANME
LEFT JOIN TL_USER TL3 ON A.CHECKER_ID_KT=TL3.TLNANME
LEFT JOIN dbo.CM_BRANCH BR ON A.BRANCH_ID=BR.BRANCH_ID
LEFT JOIN dbo.CM_BRANCH BR1 ON A.BRANCH_CREATE=BR1.BRANCH_ID
LEFT JOIN dbo.CM_DEPARTMENT DP ON DP.DEP_ID=A.DEP_ID
--Luanlt--2019/10/15-Sửa AL,AL1
LEFT JOIN CM_ALLCODE AL ON A.REQ_TYPE = AL.CDVAL AND AL.CDNAME='PAY_TYPE' AND AL.CDTYPE = 'REQ'
LEFT JOIN CM_ALLCODE AL1 ON A.REQ_PAY_TYPE = AL1.CDVAL AND AL1.CDNAME='REQ_PAY_TYPE' AND AL1.CDTYPE ='REQ'
LEFT JOIN TL_USER TL4 ON A.TRANSFER_MAKER = TL4.TLNANME
LEFT JOIN TL_USER TL5 ON A.TRASFER_USER_RECIVE = TL5.TLNANME
LEFT JOIN
(
SELECT PAY_ADV_ID, SUM(AMT_PAY) SOTIEN_TT FROM TR_REQ_PAYMENT_DT WHERE AUTH_STATUS_KT ='A' GROUP BY PAY_ADV_ID
) H ON A.REQ_PAY_ID =H.PAY_ADV_ID
LEFT JOIN TR_PO_MASTER PO ON A.REF_ID = PO.PO_ID AND A.REQ_TYPE='P'
LEFT JOIN CM_SUPPLIER S ON S.SUP_ID = PO.SUP_ID AND A.REQ_TYPE='P'
LEFT JOIN PL_REQUEST_PROCESS_CHILD PC3 ON PC3.REQ_ID = A.REQ_PAY_ID AND PC3.STATUS_JOB ='C'
LEFT JOIN PL_REQUEST_PROCESS_CHILD PC4 ON PC4.REQ_ID = A.REQ_PAY_ID AND PC4.STATUS_JOB ='C'
LEFT JOIN PL_REQUEST_PROCESS_CHILD PC5 ON PC5.REQ_ID = A.REQ_PAY_ID AND PC5.TYPE_JOB ='XL'
LEFT JOIN TL_USER TL8 ON PC5.TLNAME = TL8.TLNANME
LEFT JOIN TL_SYSROLE SR ON TL.RoleName = SR.ROLE_ID
LEFT JOIN CM_BRANCH BR_CORE ON TL2.TLSUBBRID = BR_CORE.BRANCH_ID
WHERE 1=1
AND(A.REQ_PAY_ID =@p_REQ_PAY_ID or @p_REQ_PAY_ID='' OR @p_REQ_PAY_ID IS NULL)
AND(A.AUTH_STATUS=@p_AUTH_STATUS OR @p_AUTH_STATUS='' OR @p_AUTH_STATUS IS NULL)
AND(A.MAKER_ID =@p_MAKER_ID OR @p_MAKER_ID='' OR @p_MAKER_ID IS NULL)
AND(A.DEP_ID=@p_DEP_ID OR @p_DEP_ID='' OR @p_DEP_ID IS NULL)
AND((@p_LEVEL='ALL' AND (A.BRANCH_ID IN(SELECT BRANCH_ID FROM @tmp) OR A.BRANCH_CREATE IN (SELECT * FROM @BRANCH_AUTH))) -- LUCTV 20211012: BO SUNG CAU HINH DE XU LY UY QUYEN KIEM NHIEM
OR((@p_LEVEL='UNIT' AND A.BRANCH_ID=@p_BRANCH_ID)OR(@p_BRANCH_ID='' OR @p_BRANCH_ID IS NULL)
OR (@BRANCH_TYPE_LG <> 'HS' AND
EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT
WHERE REQ_PAY_ID = A.REQ_PAY_ID AND REF_ID IN (SELECT CONTRACT_ID FROM TR_CONTRACT WHERE BRANCH_ID =@p_BRANCH_LOGIN) AND AUTH_STATUS_KT ='A'))))
AND((@p_LEVEL='ALL' AND (A.BRANCH_ID IN(SELECT BRANCH_ID FROM @tmp) OR A.BRANCH_CREATE IN (SELECT * FROM @BRANCH_AUTH))) -- - LUCTV 20211012: BO SUNG CAU HINH DE XU LY UY QUYEN KIEM NHIEM
OR((@p_LEVEL='UNIT' AND A.BRANCH_ID=@p_BRANCH_ID)OR(@p_BRANCH_ID='' OR @p_BRANCH_ID IS NULL)
OR (@BRANCH_TYPE_LG <> 'HS' AND
EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT
WHERE REQ_PAY_ID = A.REQ_PAY_ID AND REF_ID IN (SELECT CONTRACT_ID FROM TR_CONTRACT WHERE BRANCH_ID =@p_BRANCH_LOGIN) AND AUTH_STATUS_KT ='A'))))
AND((A.MAKER_ID_KT IS NOT NULL AND @p_IS_UPDATE_KT='Y') --Lay danh sach chua duoc phong KT cap nhat va duoc cap nhat
OR((A.MAKER_ID_KT IS NULL AND @p_IS_UPDATE_KT='N'))OR @p_IS_UPDATE_KT IS NULL OR @p_IS_UPDATE_KT='')
AND(A.NOTES LIKE N'%'+@p_NOTES+'%' OR @p_NOTES='' OR @p_NOTES IS NULL)
--Luanlt-2019/10/14-Thêm Filter REQ_TYPE,FROMDATE TODATE REF_ID
AND(A.REQ_TYPE LIKE N'%'+@p_REQ_TYPE+'%' OR @p_REQ_TYPE = '' OR @p_REQ_TYPE IS NULL)
AND(CONVERT(DATE, A.CREATE_DT)>=CONVERT(DATE, @DATE, 103)OR @p_FRMDATE IS NULL OR @p_FRMDATE='' OR A.CREATE_DT IS NULL)
AND(CONVERT(DATE, A.CREATE_DT)<=CONVERT(DATE, @p_TODATE, 103)OR @p_TODATE IS NULL OR @p_TODATE='' OR A.CREATE_DT IS NULL)
--Luanlt-2019/10/17-Thêm Filter REQ_PAY_CODE REQ_PAY_NAME BRANCH_ID DEP_ID KT_AUTH
AND(A.REQ_PAY_CODE LIKE N'%'+@p_REQ_PAY_CODE+'%' or @p_REQ_PAY_CODE='' OR @p_REQ_PAY_CODE IS NULL)
AND(A.REQ_REASON LIKE N'%'+@p_REQ_REASON+'%' or @p_REQ_REASON='' OR @p_REQ_REASON IS NULL)
--AND(A.TRASFER_USER_RECIVE =@p_TRASFER_USER_RECIVE or @p_TRASFER_USER_RECIVE='' OR @p_TRASFER_USER_RECIVE IS NULL OR A.MAKER_ID_KT IS NOT NULL OR A.MAKER_ID_KT <>'')
AND ((@p_BRANCH_ID <> @p_BRANCH_LOGIN AND A.BRANCH_ID = @p_BRANCH_ID) OR @p_BRANCH_ID = @p_BRANCH_LOGIN OR @p_BRANCH_ID='' OR @p_BRANCH_ID IS NULL)
AND(A.DEP_ID = @p_DEP_ID or @p_DEP_ID='' OR @p_DEP_ID IS NULL)
AND((A.AUTH_STATUS_KT=@p_AUTH_STATUS_KT OR @p_AUTH_STATUS_KT='' OR @p_AUTH_STATUS_KT IS NULL) OR (@p_AUTH_STATUS_KT ='P' AND A.AUTH_STATUS_KT IN ('P','S')))
AND(A.REF_ID =@p_REF_ID OR @p_REF_ID='' OR @p_REF_ID IS NULL)
--AND((A.TRANSFER_MAKER IS NOT NULL AND @p_IS_TRANSFER='Y') --Lay danh sach chua duoc phong KT cap nhat va duoc cap nhat
--OR((A.TRANSFER_MAKER IS NULL AND @p_IS_TRANSFER='N'))OR @p_IS_TRANSFER IS NULL OR @p_IS_TRANSFER='')
-- Neu ben phan he ke toan thi chi lay nhung user co maker_id khac null
AND ((@p_FUNCTION ='KT' AND (EXISTS(SELECT TOP 1 * FROM PL_REQUEST_PROCESS_CHILD X WHERE REQ_ID = A.REQ_PAY_ID AND (X.TLNAME= @p_USER_LOGIN OR X.TLNAME =@p_TRASFER_USER_RECIVE))) OR A.CHECKER_ID_KT ='admin' OR A.AUTH_STATUS_KT='A' )
OR @p_FUNCTION ='' OR @p_FUNCTION IS NULL OR @p_FUNCTION ='TF' )
AND(PC4.TLNAME = @p_TRASFER_USER_RECIVE OR @p_TRASFER_USER_RECIVE IS NULL OR @p_TRASFER_USER_RECIVE ='' OR A.MAKER_ID_KT =@p_TRASFER_USER_RECIVE)
-- AND ((@p_FUNCTION ='KT' AND A.MAKER_ID_KT IS NOT NULL AND A.MAKER_ID_KT ='') OR @p_FUNCTION IS NULL OR @p_FUNCTION ='')
AND(( @p_IS_TRANSFER='Y' AND (EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = A.REQ_PAY_ID) OR A.AUTH_STATUS_KT ='A')) --Lay danh sach chua duoc phong KT cap nhat va duoc cap nhat
OR((@p_IS_TRANSFER='N' AND (NOT EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = A.REQ_PAY_ID )) AND A.AUTH_STATUS_KT <>'A'))OR @p_IS_TRANSFER IS NULL OR @p_IS_TRANSFER='')
AND
( /*0*/
A.MAKER_ID =@p_USER_LOGIN
OR ( A.TRASFER_USER_RECIVE = @P_USER_LOGIN
AND A.AUTH_STATUS NOT IN ('E','R')
)
OR (/*1*/A.AUTH_STATUS <>'E' AND
(/*2*/
(/*3*/@p_TYPE_SEARCH ='HC'
AND @BRANCH_TYPE_LG ='HS'
AND (/*4*/A.TRASFER_USER_RECIVE = @p_USER_LOGIN
OR (/*5*/
EXISTS ( SELECT *
FROM @TABLE_ROLE
WHERE ROLE_AUTH IN ('GDDV','GDK','KTT','TPTC','TP','PP','TBP','TC')
)
AND (
( A.BRANCH_ID =@p_BRANCH_LOGIN
OR A.BRANCH_ID IN (SELECT * FROM @BRANCH_AUTH)
)
AND ( A.DEP_ID = @DEP_ID_LG
OR (
A.DEP_ID IN ('DEP000000000051','DEP000000000733')
AND @p_USER_LOGIN ='cuongpv2'
)
OR A.DEP_ID IN (
SELECT *
FROM @DEP_AUTH
)
)
)
AND (
A.TRASFER_USER_RECIVE IS NULL
OR A.TRASFER_USER_RECIVE =''
OR (
A.TRASFER_USER_RECIVE IS NOT NULL
AND A.TRASFER_USER_RECIVE <>''
AND A.PROCESS IS NOT NULL
AND A.PROCESS <>''
)
)
)/*5*/
)/*4*/
)/*3*/
OR(/*trong 2*/
@p_TYPE_SEARCH ='HC'
AND @BRANCH_TYPE_LG = 'CN'
AND (
@ROLE_ID IN ('GDDV','PGD','TPGD','PPGD')
AND A.BRANCH_ID =@p_BRANCH_LOGIN
AND
(
(
A.TRASFER_USER_RECIVE IS NOT NULL
AND A.TRASFER_USER_RECIVE <>''
AND A.PROCESS IS NOT NULL
AND A.PROCESS <>''
)
OR A.TRASFER_USER_RECIVE =''
OR A.TRASFER_USER_RECIVE IS NULL
)
OR (
(
A.BRANCH_CREATE <> @p_BRANCH_LOGIN
AND A.TRASFER_USER_RECIVE IS NOT NULL
AND A.TRASFER_USER_RECIVE <>''
)
OR A.BRANCH_CREATE = @p_BRANCH_LOGIN
)
AND A.BRANCH_ID =@p_BRANCH_ID
)
)
OR
(
@p_TYPE_SEARCH ='HC'
AND @BRANCH_TYPE_LG = 'PGD'
AND (
@ROLE_ID IN ('GDDV','TPGD','PPGD','PGD')
AND A.BRANCH_ID =@p_BRANCH_LOGIN
)
)
OR
(
@p_TYPE_SEARCH ='HC'
AND(
@ROLE_ID IN ('KSV','GDV')
OR @DEP_ID_LG ='DEP000000000022'
)
AND A.BRANCH_ID IN (SELECT BRANCH_ID from @tmp_Login)
)
OR(
@p_TYPE_SEARCH='KT'
AND @p_BRANCH_LOGIN ='DV0001'
AND A.BRANCH_ID IN (SELECT BRANCH_ID from @tmp_Login)
)
OR @p_TYPE_SEARCH IS NULL OR @p_TYPE_SEARCH =''
)/*2*/
)/*1*/
OR
(
(
@ROLE_ID IN ('KSV','GDV')
OR @DEP_ID_LG ='DEP000000000022'
)
AND @p_BRANCH_LOGIN ='DV0001'
AND A.BRANCH_ID IN (SELECT BRANCH_ID from @tmp_Login)
)
-- NEU DUOC UY QUYEN DUYỆT CHO 1 ĐƠN VỊ KHÁC HỘI SỞ THÌ CHỈ SETUP ĐƠN VỊ, KHÔNG CẦN SETUP PHÒNG BAN
OR( @p_TYPE_SEARCH ='HC'
AND A.BRANCH_CREATE <> 'DV0001'
AND A.BRANCH_ID IN (SELECT * FROM @BRANCH_AUTH)
)
-- LUCTV 25 05 BO SUNG CAU HINH CHO PHEP DVKD DUOC THAY NHUNG PDN THANH TOAN DO HO TẠO
OR (
@p_TYPE_SEARCH ='HC'
AND @BRANCH_TYPE_LG <> 'HS'
AND
EXISTS (
SELECT *
FROM TR_REQ_ADVANCE_DT
WHERE REQ_PAY_ID = A.REQ_PAY_ID AND REF_ID IN (
SELECT CONTRACT_ID
FROM TR_CONTRACT
WHERE BRANCH_ID =@p_BRANCH_LOGIN
)
AND AUTH_STATUS_KT ='A'
)
)
)/*0*/
ORDER BY A.CREATE_DT DESC
-- PAGING END
END;
ELSE
BEGIN
-- PAGING BEGIN
SELECT A.*,B.AUTH_STATUS_NAME, C.AUTH_STATUS_NAME AUTH_STATUS_NAME_KT, TL.TLFullName CREATE_FULLNAME,
TL1.TLFullName APPROVE_FULLNAME,
CASE WHEN ISNULL(TL2.TLFullName,'') <>'' THEN TL2.TLFullName ELSE TL8.TLFullName END AS CREATE_FULLNAME_KT,
TL3.TLFullName APPROVE_FULLNAME_KT,
--CASE WHEN ISNULL(A.IS_PERIOD,'') <> '' AND A.IS_PERIOD ='Y' AND EXISTS (SELECT TOP 1 X.* FROM TR_REQ_ADVANCE_DT X
-- INNER JOIN TR_CONTRACT CT ON X.REF_ID = CT.CONTRACT_ID
-- WHERE X.REQ_PAY_ID = A.REQ_PAY_ID AND CT.BRANCH_ID <> @p_BRANCH_LOGIN AND CT.BRANCH_ID IS NOT NULL AND CT.BRANCH_ID <> '') THEN
-- BR.BRANCH_NAME + ISNULL(' - '+ (SELECT TOP 1 BRANCH_NAME FROM CM_BRANCH WHERE BRANCH_ID =(SELECT TOP 1 BRANCH_ID FROM TR_CONTRACT WHERE CONTRACT_ID IN (SELECT TOP 1 REF_ID FROM TR_REQ_ADVANCE_DT
-- WHERE REQ_PAY_ID = A.REQ_PAY_ID))),'')
-- ELSE BR.BRANCH_NAME END BRANCH_NAME_REQ,
BR.BRANCH_NAME AS BRANCH_NAME_REQ,
BR1.BRANCH_NAME BRANCH_NAME_CRE, DP.DEP_NAME, DP.DEP_CODE, BR.BRANCH_CODE BRANCH_CODE_REQ,
--Luanlt--2019/10/15-Sửa AL,AL1
BR1.BRANCH_CODE BRANCH_CODE_CRE, AL.CONTENT REQ_TYPE_NAME,AL1.CONTENT REQ_PAY_TYPE_NAME, ISNULL((A.REQ_AMT -H.SOTIEN_TT),0) AS TOTAL_AMT_TEMP,
ISNULL(H.SOTIEN_TT,0) TOTAL_AMT_PAY_HIS,
TL4.TLFullName AS TRANSFER_FULLNAME,TL5.TLFullName AS TRANSFER_RECIEVER_FULLNAME,'' EMP_FULLNAME,PO.PO_CODE, PO.PO_NAME, S.SUP_NAME,S.TAX_NO SUP_TAX_NO,
PC3.LEVEL_JOB, PC3.STATUS_JOB,PC3.TYPE_JOB,
--CASE WHEN PC3.TLNAME IS NOT NULL AND PC3.TLNAME <>'' THEN @P_USER_LOGIN ELSE PC3.TLNAME END AS EXEC_USER,
CASE WHEN PC3.TLNAME IS NOT NULL AND PC3.TLNAME <>'' AND ISNULL(A.AUTH_STATUS_KT,'') ='P' THEN @P_USER_LOGIN ELSE PC3.TLNAME END AS EXEC_USER,
@p_TYPE_SEARCH AS TYPE_SEARCH,SR.ROLE_ID AS ROLE_ID_CRE,CASE WHEN BR1.BRANCH_TYPE <> 'PGD'THEN BR1.BRANCH_TYPE ELSE 'CN' END AS BRANCH_TYPE_CR,
BR_CORE.BRANCH_CODE AS BRANCH_CODE_CORE, BR_CORE.BRANCH_NAME AS BRANCH_NAME_CORE,'' AS BRANCH_CODE_CONTRACT,
ISNULL((SELECT TOP 1 BRANCH_NAME FROM CM_BRANCH WHERE BRANCH_ID =(SELECT TOP 1 BRANCH_ID FROM TR_CONTRACT WHERE CONTRACT_ID IN (SELECT TOP 1 REF_ID FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID = A.REQ_PAY_ID))),'')
AS BRANCH_NAME_CONTRACT
-- SELECT END
FROM TR_REQ_PAYMENT A
LEFT JOIN CM_AUTH_STATUS B ON A.AUTH_STATUS=B.AUTH_STATUS
LEFT JOIN CM_AUTH_STATUS C ON A.AUTH_STATUS_KT=C.AUTH_STATUS
LEFT JOIN TL_USER TL ON A.MAKER_ID=TL.TLNANME
LEFT JOIN TL_USER TL1 ON A.CHECKER_ID=TL1.TLNANME
LEFT JOIN TL_USER TL2 ON A.MAKER_ID_KT=TL2.TLNANME
LEFT JOIN TL_USER TL3 ON A.CHECKER_ID_KT=TL3.TLNANME
LEFT JOIN dbo.CM_BRANCH BR ON A.BRANCH_ID=BR.BRANCH_ID
LEFT JOIN dbo.CM_BRANCH BR1 ON A.BRANCH_CREATE=BR1.BRANCH_ID
LEFT JOIN dbo.CM_DEPARTMENT DP ON DP.DEP_ID=A.DEP_ID
--Luanlt--2019/10/15-Sửa AL,AL1
LEFT JOIN CM_ALLCODE AL ON A.REQ_TYPE = AL.CDVAL AND AL.CDNAME='PAY_TYPE' AND AL.CDTYPE = 'REQ'
LEFT JOIN CM_ALLCODE AL1 ON A.REQ_PAY_TYPE = AL1.CDVAL AND AL1.CDNAME='REQ_PAY_TYPE' AND AL1.CDTYPE = 'REQ'
LEFT JOIN TL_USER TL4 ON A.TRANSFER_MAKER = TL4.TLNANME
LEFT JOIN TL_USER TL5 ON A.TRASFER_USER_RECIVE = TL5.TLNANME
LEFT JOIN
(
SELECT PAY_ADV_ID, SUM(AMT_PAY) SOTIEN_TT FROM TR_REQ_PAYMENT_DT WHERE AUTH_STATUS_KT ='A' GROUP BY PAY_ADV_ID
) H ON A.REQ_PAY_ID =H.PAY_ADV_ID
LEFT JOIN TR_PO_MASTER PO ON A.REF_ID = PO.PO_ID AND A.REQ_TYPE='P'
LEFT JOIN CM_SUPPLIER S ON S.SUP_ID = PO.SUP_ID AND A.REQ_TYPE='P'
LEFT JOIN PL_REQUEST_PROCESS_CHILD PC3 ON PC3.REQ_ID = A.REQ_PAY_ID AND PC3.STATUS_JOB ='C'
LEFT JOIN PL_REQUEST_PROCESS_CHILD PC4 ON PC4.REQ_ID = A.REQ_PAY_ID AND PC4.STATUS_JOB ='C'
LEFT JOIN PL_REQUEST_PROCESS_CHILD PC5 ON PC5.REQ_ID = A.REQ_PAY_ID AND PC5.TYPE_JOB ='XL'
LEFT JOIN TL_USER TL8 ON PC5.TLNAME = TL8.TLNANME
LEFT JOIN TL_SYSROLE SR ON TL.RoleName = SR.ROLE_ID
LEFT JOIN CM_BRANCH BR_CORE ON TL2.TLSUBBRID = BR_CORE.BRANCH_ID
WHERE 1=1
AND(A.REQ_PAY_ID =@p_REQ_PAY_ID or @p_REQ_PAY_ID='' OR @p_REQ_PAY_ID IS NULL)
AND(A.AUTH_STATUS=@p_AUTH_STATUS OR @p_AUTH_STATUS='' OR @p_AUTH_STATUS IS NULL)
AND(A.MAKER_ID =@p_MAKER_ID OR @p_MAKER_ID='' OR @p_MAKER_ID IS NULL)
AND(A.DEP_ID=@p_DEP_ID OR @p_DEP_ID='' OR @p_DEP_ID IS NULL)
AND((@p_LEVEL='ALL' AND (A.BRANCH_ID IN(SELECT BRANCH_ID FROM @tmp) OR A.BRANCH_CREATE IN (SELECT * FROM @BRANCH_AUTH))) -- LUCTV 20211012: BO SUNG CAU HINH DE XU LY UY QUYEN KIEM NHIEM
OR((@p_LEVEL='UNIT' AND A.BRANCH_ID=@p_BRANCH_ID)OR(@p_BRANCH_ID='' OR @p_BRANCH_ID IS NULL)
OR (@BRANCH_TYPE_LG <> 'HS' AND
EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT
WHERE REQ_PAY_ID = A.REQ_PAY_ID AND REF_ID IN (SELECT CONTRACT_ID FROM TR_CONTRACT WHERE BRANCH_ID =@p_BRANCH_LOGIN) AND AUTH_STATUS_KT ='A'))))
AND((@p_LEVEL='ALL' AND (A.BRANCH_ID IN(SELECT BRANCH_ID FROM @tmp) OR A.BRANCH_CREATE IN (SELECT * FROM @BRANCH_AUTH))) -- - LUCTV 20211012: BO SUNG CAU HINH DE XU LY UY QUYEN KIEM NHIEM
OR((@p_LEVEL='UNIT' AND A.BRANCH_ID=@p_BRANCH_ID)OR(@p_BRANCH_ID='' OR @p_BRANCH_ID IS NULL)
OR (@BRANCH_TYPE_LG <> 'HS' AND
EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT
WHERE REQ_PAY_ID = A.REQ_PAY_ID AND REF_ID IN (SELECT CONTRACT_ID FROM TR_CONTRACT WHERE BRANCH_ID =@p_BRANCH_LOGIN) AND AUTH_STATUS_KT ='A'))))
AND((A.MAKER_ID_KT IS NOT NULL AND @p_IS_UPDATE_KT='Y') --Lay danh sach chua duoc phong KT cap nhat va duoc cap nhat
OR((A.MAKER_ID_KT IS NULL AND @p_IS_UPDATE_KT='N'))OR @p_IS_UPDATE_KT IS NULL OR @p_IS_UPDATE_KT='')
AND(A.NOTES LIKE N'%'+@p_NOTES+'%' OR @p_NOTES='' OR @p_NOTES IS NULL)
--Luanlt-2019/10/14-Thêm Filter REQ_TYPE,FROMDATE TODATE REF_ID
AND(A.REQ_TYPE LIKE N'%'+@p_REQ_TYPE+'%' OR @p_REQ_TYPE = '' OR @p_REQ_TYPE IS NULL)
AND(CONVERT(DATE, A.CREATE_DT)>=CONVERT(DATE, @DATE, 103)OR @p_FRMDATE IS NULL OR @p_FRMDATE='' OR A.CREATE_DT IS NULL)
AND(CONVERT(DATE, A.CREATE_DT)<=CONVERT(DATE, @p_TODATE, 103)OR @p_TODATE IS NULL OR @p_TODATE='' OR A.CREATE_DT IS NULL)
--Luanlt-2019/10/17-Thêm Filter REQ_PAY_CODE REQ_PAY_NAME BRANCH_ID DEP_ID KT_AUTH
AND(A.REQ_PAY_CODE LIKE N'%'+@p_REQ_PAY_CODE+'%' or @p_REQ_PAY_CODE='' OR @p_REQ_PAY_CODE IS NULL)
AND(A.REQ_REASON LIKE N'%'+@p_REQ_REASON+'%' or @p_REQ_REASON='' OR @p_REQ_REASON IS NULL)
--AND(A.TRASFER_USER_RECIVE =@p_TRASFER_USER_RECIVE or @p_TRASFER_USER_RECIVE='' OR @p_TRASFER_USER_RECIVE IS NULL OR A.MAKER_ID_KT IS NOT NULL OR A.MAKER_ID_KT <>'')
AND ((@p_BRANCH_ID <> @p_BRANCH_LOGIN AND A.BRANCH_ID = @p_BRANCH_ID) OR @p_BRANCH_ID = @p_BRANCH_LOGIN OR @p_BRANCH_ID='' OR @p_BRANCH_ID IS NULL)
AND(A.DEP_ID = @p_DEP_ID or @p_DEP_ID='' OR @p_DEP_ID IS NULL)
AND((A.AUTH_STATUS_KT=@p_AUTH_STATUS_KT OR @p_AUTH_STATUS_KT='' OR @p_AUTH_STATUS_KT IS NULL) OR (@p_AUTH_STATUS_KT ='P' AND A.AUTH_STATUS_KT IN ('P','S')))
AND(A.REF_ID =@p_REF_ID OR @p_REF_ID='' OR @p_REF_ID IS NULL)
--AND((A.TRANSFER_MAKER IS NOT NULL AND @p_IS_TRANSFER='Y') --Lay danh sach chua duoc phong KT cap nhat va duoc cap nhat
--OR((A.TRANSFER_MAKER IS NULL AND @p_IS_TRANSFER='N'))OR @p_IS_TRANSFER IS NULL OR @p_IS_TRANSFER='')
-- Neu ben phan he ke toan thi chi lay nhung user co maker_id khac null
AND ((@p_FUNCTION ='KT' AND (EXISTS(SELECT TOP 1 * FROM PL_REQUEST_PROCESS_CHILD X WHERE X.REQ_ID = A.REQ_PAY_ID AND (X.TLNAME= @p_USER_LOGIN OR X.TLNAME =@p_TRASFER_USER_RECIVE))) OR A.CHECKER_ID_KT ='admin' OR A.AUTH_STATUS_KT='A' )
OR @p_FUNCTION ='' OR @p_FUNCTION IS NULL OR @p_FUNCTION ='TF' )
AND(PC4.TLNAME = @p_TRASFER_USER_RECIVE OR @p_TRASFER_USER_RECIVE IS NULL OR @p_TRASFER_USER_RECIVE ='' OR A.MAKER_ID_KT =@p_TRASFER_USER_RECIVE)
-- AND ((@p_FUNCTION ='KT' AND A.MAKER_ID_KT IS NOT NULL AND A.MAKER_ID_KT ='') OR @p_FUNCTION IS NULL OR @p_FUNCTION ='')
AND(( @p_IS_TRANSFER='Y' AND (EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = A.REQ_PAY_ID) OR A.AUTH_STATUS_KT ='A')) --Lay danh sach chua duoc phong KT cap nhat va duoc cap nhat
OR((@p_IS_TRANSFER='N' AND (NOT EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = A.REQ_PAY_ID )) AND A.AUTH_STATUS_KT <>'A'))OR @p_IS_TRANSFER IS NULL OR @p_IS_TRANSFER='')
AND
( /*0*/
A.MAKER_ID =@p_USER_LOGIN
OR ( A.TRASFER_USER_RECIVE = @P_USER_LOGIN
AND A.AUTH_STATUS NOT IN ('E','R')
)
OR (/*1*/A.AUTH_STATUS <>'E' AND
(/*2*/
(/*3*/@p_TYPE_SEARCH ='HC'
AND @BRANCH_TYPE_LG ='HS'
AND (/*4*/A.TRASFER_USER_RECIVE = @p_USER_LOGIN
OR (/*5*/
EXISTS ( SELECT *
FROM @TABLE_ROLE
WHERE ROLE_AUTH IN ('GDDV','GDK','KTT','TPTC','TP','PP','TBP','TC')
)
AND (
( A.BRANCH_ID =@p_BRANCH_LOGIN
OR A.BRANCH_ID IN (SELECT * FROM @BRANCH_AUTH)
)
AND ( A.DEP_ID = @DEP_ID_LG
OR (
A.DEP_ID IN ('DEP000000000051','DEP000000000733')
AND @p_USER_LOGIN ='cuongpv2'
)
OR A.DEP_ID IN (
SELECT *
FROM @DEP_AUTH
)
)
)
AND (
A.TRASFER_USER_RECIVE IS NULL
OR A.TRASFER_USER_RECIVE =''
OR (
A.TRASFER_USER_RECIVE IS NOT NULL
AND A.TRASFER_USER_RECIVE <>''
AND A.PROCESS IS NOT NULL
AND A.PROCESS <>''
)
)
)/*5*/
)/*4*/
)/*3*/
OR(/*trong 2*/
@p_TYPE_SEARCH ='HC'
AND @BRANCH_TYPE_LG = 'CN'
AND (
@ROLE_ID IN ('GDDV','PGD','TPGD','PPGD')
AND A.BRANCH_ID =@p_BRANCH_LOGIN
AND
(
(
A.TRASFER_USER_RECIVE IS NOT NULL
AND A.TRASFER_USER_RECIVE <>''
AND A.PROCESS IS NOT NULL
AND A.PROCESS <>''
)
OR A.TRASFER_USER_RECIVE =''
OR A.TRASFER_USER_RECIVE IS NULL
)
OR (
(
A.BRANCH_CREATE <> @p_BRANCH_LOGIN
AND A.TRASFER_USER_RECIVE IS NOT NULL
AND A.TRASFER_USER_RECIVE <>''
)
OR A.BRANCH_CREATE = @p_BRANCH_LOGIN
)
AND A.BRANCH_ID =@p_BRANCH_ID
)
)
OR
(
@p_TYPE_SEARCH ='HC'
AND @BRANCH_TYPE_LG = 'PGD'
AND (
@ROLE_ID IN ('GDDV','TPGD','PPGD','PGD')
AND A.BRANCH_ID =@p_BRANCH_LOGIN
)
)
OR
(
@p_TYPE_SEARCH ='HC'
AND(
@ROLE_ID IN ('KSV','GDV')
OR @DEP_ID_LG ='DEP000000000022'
)
AND A.BRANCH_ID IN (SELECT BRANCH_ID from @tmp_Login)
)
OR(
@p_TYPE_SEARCH='KT'
AND @p_BRANCH_LOGIN ='DV0001'
AND A.BRANCH_ID IN (SELECT BRANCH_ID from @tmp_Login)
)
OR @p_TYPE_SEARCH IS NULL OR @p_TYPE_SEARCH =''
)/*2*/
)/*1*/
OR
(
(
@ROLE_ID IN ('KSV','GDV')
OR @DEP_ID_LG ='DEP000000000022'
)
AND @p_BRANCH_LOGIN ='DV0001'
AND A.BRANCH_ID IN (SELECT BRANCH_ID from @tmp_Login)
)
-- NEU DUOC UY QUYEN DUYỆT CHO 1 ĐƠN VỊ KHÁC HỘI SỞ THÌ CHỈ SETUP ĐƠN VỊ, KHÔNG CẦN SETUP PHÒNG BAN
OR( @p_TYPE_SEARCH ='HC'
AND A.BRANCH_CREATE <> 'DV0001'
AND A.BRANCH_ID IN (SELECT * FROM @BRANCH_AUTH)
)
-- LUCTV 25 05 BO SUNG CAU HINH CHO PHEP DVKD DUOC THAY NHUNG PDN THANH TOAN DO HO TẠO
OR (
@p_TYPE_SEARCH ='HC'
AND @BRANCH_TYPE_LG <> 'HS'
AND
EXISTS (
SELECT *
FROM TR_REQ_ADVANCE_DT
WHERE REQ_PAY_ID = A.REQ_PAY_ID AND REF_ID IN (
SELECT CONTRACT_ID
FROM TR_CONTRACT
WHERE BRANCH_ID =@p_BRANCH_LOGIN
)
AND AUTH_STATUS_KT ='A'
)
)
)/*0*/
ORDER BY A.CREATE_DT DESC
-- PAGING END
END;
END -- PAGING
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Altering [dbo].[BUD_CONTRACT_MASTER_App]'
GO
--INSERT INTO SYS_PREFIX(ID,Prefix,[Description]) VALUES('CONTRACT_VALUES','CTVA','')
--INSERT INTO SYS_CODEMASTERS(Prefix,CurValue,Active) VALUES('CTVA','1','1')
ALTER PROCEDURE [dbo].[BUD_CONTRACT_MASTER_App]
@p_CONTRACT_ID varchar(15),
@p_VERSION_NO varchar(15),
@P_AUTH_STATUS VARCHAR(1),
@P_CHECKER_ID VARCHAR(12),
@P_APPROVE_DT VARCHAR(25),
@P_TYPE_CONTRACT VARCHAR(1),
@P_XML_TEMP XML
AS
BEGIN TRANSACTION
DECLARE @_BUILDING_UTIL_LOG VARCHAR(15)
DECLARE @p_VALUE_ID VARCHAR(15)
DECLARE @p_MONTH DECIMAL(18,0)
DECLARE @VALUE_ERROR DECIMAL(18,0)
DECLARE @p_RENT_PRICE DECIMAL(18,0)
DECLARE @TOATAL_INTERNAL DECIMAL(18,0)
DECLARE @STT INT
SET @STT =0
DECLARE @_BUILDING_ID VARCHAR(15)
DECLARE @_BUILDING_AREA_ID VARCHAR(15)
DECLARE @_RENT_AREA DECIMAL(18,0)
DECLARE @_RENT_PRICE_OLD DECIMAL(18,0)
DECLARE @tmp table(CONTRACT_DTID VARCHAR(15), BUILDING_AREA_ID varchar(15),RENT_AREA DECIMAL(18,2),RENT_PRICE DECIMAL(18,2))
insert into @tmp SELECT CONTRACT_DTID, BUILDING_AREA_ID,RENT_AREA,RENT_PRICE FROM BUD_CONTRACT_DT
WHERE CONTRACT_ID =@p_CONTRACT_ID AND VERSION_NO =@p_VERSION_NO-1
-----*** INSERT VERSION -1 VAO TRONG BANG LOG
IF @@Error <> 0 GOTO ABORT
Declare @hdoc1 INT
DECLARE
@d_CONTRACT_DTID VARCHAR(15),
@d_BUILD_ID VARCHAR(15),
@d_VERSION_NO INT,
@d_BUILDING_AREA_ID VARCHAR(15),
@d_RENT_AREA DECIMAL,
@d_RENT_AREA_APP DECIMAL,
@d_AREA_REMAIN DECIMAL,
@d_RENT_PRICE DECIMAL,
@d_DIEN_TICH_TANG DECIMAL,
@d_DIEN_TICH_SD_NOI_BO DECIMAL,
@d_DIEN_TICH_DA_CHO_THUE DECIMAL,
@d_DIEN_TICH_CON_LAI DECIMAL,
@d_DIEN_TICH_CAN_SD DECIMAL,
@d_REASON NVARCHAR(MAX),
@d_PRICE DECIMAL,
@d_TOTAL_AMT DECIMAL,
@d_DIEN_TICH_CON_LAI_FINAL DECIMAL,
@d_BRANCH_ID NVARCHAR(15),
@d_DEP_ID NVARCHAR(15)
Exec sp_xml_preparedocument @hdoc1 Output,@p_XML_TEMP
DECLARE XmlDataDoc CURSOR FOR
SELECT *
FROM OPENXML(@hdoc1,'/Root/XmlData1',2)
WITH
(
----BAODNQ-21/12/2021: Thêm các cột vào cursor XML-----
CONTRACT_DTID VARCHAR(15),
BUILD_ID VARCHAR(15),
VERSION_NO INT,
BUILDING_AREA_ID VARCHAR(15),
RENT_AREA DECIMAL,
RENT_AREA_APP DECIMAL,
AREA_REMAIN DECIMAL,
RENT_PRICE DECIMAL,
DIEN_TICH_TANG DECIMAL,
DIEN_TICH_SD_NOI_BO DECIMAL,
DIEN_TICH_DA_CHO_THUE DECIMAL,
DIEN_TICH_CON_LAI DECIMAL,
DIEN_TICH_CAN_SD DECIMAL,
REASON NVARCHAR(MAX),
PRICE DECIMAL,
TOTAL_AMT DECIMAL,
DIEN_TICH_CON_LAI_FINAL DECIMAL,
BRANCH_ID NVARCHAR(15),
DEP_ID NVARCHAR(15)
)
OPEN XmlDataDoc
FETCH NEXT FROM XmlDataDoc INTO
@d_CONTRACT_DTID,
@d_BUILD_ID,
@d_VERSION_NO,
@d_BUILDING_AREA_ID,
@d_RENT_AREA,
@d_RENT_AREA_APP,
@d_AREA_REMAIN,
@d_RENT_PRICE,
@d_DIEN_TICH_TANG,
@d_DIEN_TICH_SD_NOI_BO,
@d_DIEN_TICH_DA_CHO_THUE,
@d_DIEN_TICH_CON_LAI,
@d_DIEN_TICH_CAN_SD,
@d_REASON,
@d_PRICE,
@d_TOTAL_AMT,
@d_DIEN_TICH_CON_LAI_FINAL,
@d_BRANCH_ID,
@d_DEP_ID
WHILE @@FETCH_STATUS = 0
BEGIN
SET @STT= @STT+1
SET @VALUE_ERROR = (SELECT FLOOR_AREA - (UTILZED_AREA + INTERNAL_AREA)
FROM BUD_AREA_DT
WHERE BUILDING_AREA_ID = @d_BUILDING_AREA_ID
)
--+(SELECT SUM(RENT_AREA) FROM BUD_CONTRACT_DT
--WHERE CONTRACT_ID =@p_CONTRACT_ID AND CONTRACT_ID IN(SELECT CONTRACT_ID FROM
--BUD_CONTRACT_MASTER WHERE AUTH_STATUS='A'))
--DIEN TICH CHO THUE PHAI LON HON DIEN TICH CON LAI+ DIEN TICH VERSION CŨ TRONG TRUONG
--HOP TAO PHU LUC HOP DONG
----BAODNQ-21/12/2021: Đổi @d_RENT_AREA thành @d_DIEN_TICH_CAN_SD-------
IF ( @d_DIEN_TICH_CAN_SD > (@VALUE_ERROR + @d_RENT_AREA_APP))
BEGIN
DECLARE @ERRORSYS NVARCHAR(200) =''
SET @ERRORSYS = N'Dòng '+ convert(nvarchar(2),@stt) +N': Diện tích cho thuê phải nhỏ hơn hoặc bằng '+ convert(nvarchar(20),@VALUE_ERROR)
END
IF @ERRORSYS <> ''
BEGIN
CLOSE XmlDataDoc
DEALLOCATE XmlDataDoc
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' CONTRACT_ID, @ERRORSYS ErrorDesc
RETURN '-1'
END
----**** INSERT VERSION CURRENT -1-------------------------------------------------------------------------
--IF(@p_VERSION_NO>1)
--BEGIN
-- SET @_BUILDING_AREA_ID= (SELECT TOP(1) BUILDING_AREA_ID FROM @tmp)
-- SET @_RENT_AREA= (SELECT TOP(1) RENT_AREA FROM @tmp)
-- SET @p_RENT_PRICE= (SELECT TOP(1) RENT_PRICE FROM @tmp)
-- EXEC SYS_CodeMasters_Gen 'BUD_UTIL_LOG', @_BUILDING_UTIL_LOG out
-- IF @_BUILDING_UTIL_LOG='' OR @_BUILDING_UTIL_LOG IS NULL GOTO ABORT
-- INSERT INTO BUD_UTIL_LOG([UTIL_ID],[BUILDING_AREA_ID],[UTIL_TYPE],[UTIL_RELEASE],[CONTRACT_ID],[VERSION_NO],[UTIL_DT],[AREA],[RECORD_STATUS],[AUTH_STATUS],[MAKER_ID],[CREATE_DT],[CHECKER_ID],[APPROVE_DT])
-- VALUES(@_BUILDING_UTIL_LOG ,@_BUILDING_AREA_ID ,@P_TYPE_CONTRACT ,'R' ,@p_CONTRACT_ID ,@p_VERSION_NO-1 ,CONVERT(DATETIME, GETDATE(), 103) ,@_RENT_AREA ,'1' ,'A' ,@P_CHECKER_ID ,CONVERT(DATETIME, GETDATE(), 103) ,@p_CHECKER_ID ,CONVERT(DATETIME, GETDATE(), 103) )
-- ------**** INSERT INTO CONTRACT_VALUES ---------------------------------------------------------------
-- EXEC SYS_CodeMasters_Gen 'CONTRACT_VALUES', @p_VALUE_ID out
-- IF @p_VALUE_ID='' OR @p_VALUE_ID IS NULL GOTO ABORT
-- INSERT INTO BUD_CONTRACT_VALUES VALUES (@p_VALUE_ID,@p_CONTRACT_ID,@p_VERSION_NO-1,@_BUILDING_AREA_ID,@P_TYPE_CONTRACT,'R',@p_RENT_PRICE*@_RENT_AREA,NULL,@d_REASON,
-- '1','A',@P_CHECKER_ID,CONVERT(DATETIME,GETDATE(),103),@P_CHECKER_ID,CONVERT(DATETIME,GETDATE(),103))
-- DELETE @tmp WHERE CONTRACT_DTID = (SELECT TOP(1) CONTRACT_DTID FROM @tmp)
--END
-----***INSERT VERSION CURRENT------------------------------------------------------------------
DECLARE @l_UTIL_ID VARCHAR(15)
EXEC SYS_CodeMasters_Gen 'BUD_UTIL_LOG', @l_UTIL_ID out
IF @l_UTIL_ID='' OR @l_UTIL_ID IS NULL GOTO ABORT
----BAODNQ-21/12/2021: Đổi biến insert vào cột [AREA] thành @d_DIEN_TICH_CAN_SD + thêm cột vào bảng BUD_UTIL_LOG-------
-----BAODNQ 17/1/2022: Thêm cột vào bảng BUD_UTIL_LOG
DECLARE @p_IS_FIRST_TIME VARCHAR(1)
IF(NOT EXISTS
(SELECT * FROM BUD_UTIL_LOG
WHERE CONTRACT_ID = @p_CONTRACT_ID
AND BUILDING_AREA_ID = @d_BUILDING_AREA_ID
AND CUSTOMER_ID = @d_BRANCH_ID
AND IS_FIRST_TIME = 'Y'))
BEGIN
SET @p_IS_FIRST_TIME = 'Y'
END
ELSE
BEGIN
SET @p_IS_FIRST_TIME = 'N'
END
INSERT INTO BUD_UTIL_LOG([UTIL_ID],[BUILDING_AREA_ID],[UTIL_TYPE],[UTIL_RELEASE],[CONTRACT_ID],
[VERSION_NO],[UTIL_DT],[AREA],[RECORD_STATUS],[AUTH_STATUS],[MAKER_ID],[CREATE_DT],[CHECKER_ID],
[APPROVE_DT], [TOTAL_AMT_INIT], [VAT_INIT], [IS_FIRST_TIME], [CUSTOMER_ID])
VALUES(@l_UTIL_ID ,@d_BUILDING_AREA_ID ,@P_TYPE_CONTRACT ,'U' ,@p_CONTRACT_ID ,@p_VERSION_NO ,
CONVERT(DATETIME, GETDATE(), 103) ,@d_DIEN_TICH_CAN_SD ,'1' ,'A' ,@P_CHECKER_ID ,
CONVERT(DATETIME, GETDATE(), 103) ,@p_CHECKER_ID ,CONVERT(DATETIME, GETDATE(), 103), @d_TOTAL_AMT,
0, @p_IS_FIRST_TIME, @d_BRANCH_ID)
---*** UPDATE CONTRACT_VALUES-------------------------------------------------------
EXEC SYS_CodeMasters_Gen 'CONTRACT_VALUES', @p_VALUE_ID out
IF @p_VALUE_ID='' OR @p_VALUE_ID IS NULL GOTO ABORT
----BAODNQ-21/12/2021: Đổi biến insert vào cột [RENT_AMT] thành @d_TOTAL_AMT-------
INSERT INTO BUD_CONTRACT_VALUES VALUES (@p_VALUE_ID,@p_CONTRACT_ID,@p_VERSION_NO,@d_BUILDING_AREA_ID,@P_TYPE_CONTRACT,'U',@d_TOTAL_AMT,NULL,@d_REASON,
'1','A',@P_CHECKER_ID,CONVERT(DATETIME,GETDATE(),103),@P_CHECKER_ID,CONVERT(DATETIME,GETDATE(),103))
-----***UPDATE DIEN TICH NOI BO SU DUNG NEU TYPE = I:INTERNAL ------------------------------------------------------------------
IF(@P_TYPE_CONTRACT='I')
BEGIN
UPDATE BUD_AREA_DT
--SET INTERNAL_AREA =(
-- (SELECT ISNULL(SUM(AREA),0) FROM BUD_UTIL_LOG WHERE BUILDING_AREA_ID=@d_BUILDING_AREA_ID AND UTIL_RELEASE='U' AND UTIL_TYPE=@P_TYPE_CONTRACT)
-- -
-- (SELECT ISNULL(SUM(AREA),0) FROM BUD_UTIL_LOG WHERE BUILDING_AREA_ID=@d_BUILDING_AREA_ID AND UTIL_RELEASE='R' AND UTIL_TYPE =@P_TYPE_CONTRACT)
-- )
SET INTERNAL_AREA = INTERNAL_AREA + @d_DIEN_TICH_CAN_SD
WHERE BUILDING_AREA_ID =@d_BUILDING_AREA_ID
---****** UPDATE BUD_CONTRACT_DT ******************************************---------
----BAODNQ-21/12/2021: Đổi biến insert vào cột [RENT_AREA_APP] thành @@d_DIEN_TICH_CAN_SD-------
UPDATE BUD_CONTRACT_DT
SET RENT_AREA_APP =RENT_AREA_APP + @d_DIEN_TICH_CAN_SD,
DIEN_TICH_CON_LAI_FINAL = DIEN_TICH_CON_LAI - @d_DIEN_TICH_CAN_SD
WHERE CONTRACT_DTID = @d_CONTRACT_DTID
END
------------------------------------------------------------------------------------------
IF @@Error <> 0 GOTO ABORT
-----BAODNQ 17/1/2022: Insert vào bảng BUD_CONTRACT_LOG khi trưởng dv duyệt thành công
--DECLARE @p_IS_FIRST_TIME VARCHAR(1)
--IF(NOT EXISTS(SELECT*FROM BUD_CONTRACT_LOG WHERE CONTRACT_ID = @d_CONTRACT_DTID AND @p_IS_FIRST_TIME = 'Y'))
--BEGIN
-- SET @p_IS_FIRST_TIME = 'Y'
--END
--ELSE
--BEGIN
-- SET @p_IS_FIRST_TIME = 'N'
--END
--INSERT INTO BUD_CONTRACT_LOG
-- VALUES (@d_CONTRACT_DTID, @d_BRANCH_ID, @d_TOTAL_AMT, 0,@p_IS_FIRST_TIME, CONVERT(DATETIME,@P_APPROVE_DT,103))
--IF @@ERROR <> 0 GOTO ABORT
-------------------------------------
FETCH NEXT FROM XmlDataDoc INTO
@d_CONTRACT_DTID,
@d_BUILD_ID,
@d_VERSION_NO,
@d_BUILDING_AREA_ID,
@d_RENT_AREA,
@d_RENT_AREA_APP,
@d_AREA_REMAIN,
@d_RENT_PRICE,
@d_DIEN_TICH_TANG,
@d_DIEN_TICH_SD_NOI_BO,
@d_DIEN_TICH_DA_CHO_THUE,
@d_DIEN_TICH_CON_LAI,
@d_DIEN_TICH_CAN_SD,
@d_REASON,
@d_PRICE,
@d_TOTAL_AMT,
@d_DIEN_TICH_CON_LAI_FINAL,
@d_BRANCH_ID,
@d_DEP_ID
END
CLOSE XmlDataDoc
DEALLOCATE XmlDataDoc
--**** UPDATE BUD_CONTRACT_MASTER*************
----BAODNQ-21/12/2021: Đổi cột thực hiện SUM thành TOTAL_AMT-------
SET @p_RENT_PRICE = (SELECT SUM(TOTAL_AMT) FROM BUD_CONTRACT_DT
WHERE CONTRACT_ID =@p_CONTRACT_ID
AND VERSION_NO=@p_VERSION_NO)
SET @p_MONTH= (SELECT MONTHS FROM BUD_CONTRACT_MASTER WHERE CONTRACT_ID=@p_CONTRACT_ID
AND VERSION_NO=@p_VERSION_NO)
UPDATE BUD_CONTRACT_MASTER
--SET RENT_PRICE=@p_RENT_PRICE *@p_MONTH
SET RENT_PRICE=@p_RENT_PRICE
WHERE CONTRACT_ID=@p_CONTRACT_ID AND VERSION_NO=@p_VERSION_NO
---*** UPDATE BUD_MASTER-------------------------------
SET @_BUILDING_ID =(SELECT BUILDING_ID FROM BUD_CONTRACT_MASTER WHERE CONTRACT_ID =@p_CONTRACT_ID AND VERSION_NO =@p_VERSION_NO)
--UPDATE BUD_MASTER
--SET UTILZED_AREA = (SELECT ISNULL(SUM(UTILZED_AREA),0) FROM BUD_AREA_DT WHERE BUILD_ID =@_BUILDING_ID)
--WHERE BUILDING_ID=@_BUILDING_ID
---***UPDATE DIEN TICH CHO THUE TOAN BO TOA NHA
SET @TOATAL_INTERNAL = (SELECT ISNULL(SUM(INTERNAL_AREA),0) FROM BUD_AREA_DT WHERE BUILD_ID =@_BUILDING_ID)
UPDATE BUD_MASTER
SET RENT_TOTAL_AREA = TOTAL_AREA -@TOATAL_INTERNAL
WHERE BUILDING_ID = @_BUILDING_ID
UPDATE BUD_CONTRACT_MASTER SET AUTH_STATUS = 'A', CHECKER_ID = @P_CHECKER_ID, APPROVE_DT = CONVERT(DATETIME,@P_APPROVE_DT,103)
WHERE VERSION_NO=@p_VERSION_NO AND CONTRACT_ID =@p_CONTRACT_ID
---BAODNQ 29/12/2021: Insert vào PL_PROCESS lưu lịch sử xử lý
INSERT INTO dbo.PL_PROCESS
(
REQ_ID,
PROCESS_ID,
CHECKER_ID,
APPROVE_DT,
PROCESS_DESC,
NOTES
)
VALUES
( @p_CONTRACT_ID,
'APPROVE',
@P_CHECKER_ID,
GETDATE(),
N'Trưởng đơn vị duyệt thông tin khai báo DTSD nội bộ thành công' ,
N'Trưởng đơn vị duyệt thông tin khai báo DTSD nội bộ'
)
COMMIT TRANSACTION
SELECT '0' as Result, @p_VERSION_NO VERSION_NO, '' ErrorDesc
RETURN '0'
ABORT:
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' CONTRACT_ID, '' ErrorDesc
RETURN '-1'
End
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Creating [dbo].[BUD_MASTER_ById]'
GO
CREATE PROCEDURE [dbo].[BUD_MASTER_ById]
@BUILDING_ID varchar(15)
AS
SELECT A.*, B.TLFullName AS SIGN_USER_FULLNAME
FROM BUD_MASTER A
----------BAODNQ 26/1/2022: Kết thêm bảng TL_USER---------
LEFT JOIN TL_USER B ON A.SIGN_USER = B.TLNANME
WHERE BUILDING_ID= @BUILDING_ID
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Altering [dbo].[TR_REQ_PAYMENT_Log]'
GO
ALTER PROCEDURE [dbo].[TR_REQ_PAYMENT_Log]
@p_REQ_PAY_ID varchar(15)= NULL,
@p_REQ_PAY_CODE varchar(50) = NULL,
@p_BRANCH_ID varchar(15) = NULL,
@p_DEP_ID varchar(15) = NULL,
@p_REQ_REASON nvarchar(MAX) = NULL,
@p_REQ_TYPE varchar(15) = NULL,
@P_REQ_ENTRIES nvarchar(MAX) = NULL,
@p_REQ_DESCRIPTION nvarchar(MAX) = NULL,
@p_REF_ID varchar(15) = NULL,
@p_RECEIVER_PO nvarchar(250) = NULL,
@p_RECEIVER_DEBIT nvarchar(250) = NULL,
@p_REQ_PAY_TYPE varchar(15) = NULL,
@p_REQ_TYPE_CURRENCY nvarchar(50) = NULL,
@p_REQ_AMT decimal(18, 0) = NULL,
@p_REQ_TEMP_AMT decimal(18, 0) = NULL,
@p_MAKER_ID varchar(15) = NULL,
@p_CREATE_DT varchar(25) = NULL,
@p_EDITOR_ID varchar(15) = NULL,
@p_AUTH_STATUS varchar(1) = NULL,
@p_CHECKER_ID varchar(15) = NULL,
@p_APPROVE_DT varchar(25) = NULL,
@p_CREATE_DT_KT varchar(25) = NULL,
@p_MAKER_ID_KT varchar(15) = NULL,
@p_AUTH_STATUS_KT varchar(1) = NULL,
@p_CHECKER_ID_KT varchar(1) = NULL,
@p_APPROVE_DT_KT varchar(25)= null,
@p_CORE_NOTE nvarchar(500) = NULL,
@p_BRANCH_CREATE varchar(15) = NULL,
@p_NOTES varchar(15) = NULL,
@p_RECORD_STATUS varchar(1) = NULL,
@p_TRANSFER_MAKER nvarchar(50) = NULL,
@p_TRANSFER_DT varchar(25) = NULL,
@p_TRASFER_USER_RECIVE varchar(15) = NULL,
@p_PROCESS varchar(15) = NULL,
@p_XMP_TEMP XML = NULL,
@p_TOP INT = 10,
@p_LEVEL varchar(10) = NULL,
@p_FRMDATE VARCHAR(20)= NULL,
@p_TODATE VARCHAR(20) = NULL,
@p_BRANCH_LOGIN VARCHAR(15) = NULL,
@p_IS_UPDATE_KT VARCHAR(15) = NULL,
@p_IS_TRANSFER VARCHAR(15)= NULL,
@p_PAY_PHASE VARCHAR(15)= NULL
AS
BEGIN -- PAGING
SET @p_TOP = NULL
declare @tmp table(BRANCH_ID varchar(15))
insert into @tmp SELECT BRANCH_ID FROM [dbo].[CM_BRANCH_GETCHILDID](@p_BRANCH_LOGIN)
IF(@P_TOP IS NULL OR @P_TOP = '' OR @P_TOP = 0 OR @P_TOP>0)
BEGIN
-- PAGING BEGIN
SELECT A.*,B.AUTH_STATUS_NAME, C.AUTH_STATUS_NAME AUTH_STATUS_NAME_KT, TL.TLFullName CREATE_FULLNAME,
TL1.TLFullName APPROVE_FULLNAME,TL2.TLFullName CREATE_FULLNAME_KT,TL3.TLFullName APPROVE_FULLNAME_KT,
BR.BRANCH_NAME BRANCH_NAME_REQ, BR1.BRANCH_NAME BRANCH_NAME_CRE, DP.DEP_NAME, DP.DEP_CODE, BR.BRANCH_CODE BRANCH_CODE_REQ,
--Luanlt--2019/10/15-Sửa AL,AL1
BR1.BRANCH_CODE BRANCH_CODE_CRE, AL.CONTENT REQ_TYPE_NAME,AL1.CONTENT REQ_PAY_TYPE_NAME,
(A.REQ_AMT -ISNULL(A.PAY_AMT,0)) AS AMT_REMAIN,
H.PAY_HIS AS AMT_PAY_HIS,
CASE WHEN H.SO_TIEN_THANH_TOAN IS NOT NULL THEN (ISNULL(H.SO_TIEN_THANH_TOAN,0)) ELSE A.PAY_AMT END AS TOTAL_AMT_PAY,
TL4.TLFullName AS TRANSFER_FULLNAME,TL5.TLFullName AS TRANSFER_RECIEVER_FULLNAME,
TL6.TLFullName AS REC_DEBIT_NAME, TL6.TLNANME AS REC_DEBIT_CODE,
TL7.TLFullName AS EMP_NAME, TL7.TLNANME AS EMP_CODE,
ISNULL(PO.PO_CODE, CT.CONTRACT_CODE) AS PO_CODE ,ISNULL(PO.PO_NAME, CT.[CONTRACT_NAME]) AS PO_NAME,
PO.SUP_NAME,
SUP.TAX_NO AS SUP_TAX_NO,
CUS.CUSTOMER_CODE AS CUST_CODE,
CUS.CUSTOMER_NAME AS CUST_NAME,
PM.PAY_PHASE KY_TAM_UNG,
H.APPROVE_DT_KT NGAY_HOAN_UNG,
H.REQ_PAY_CODE AS SO_PHIEU_HOAN_UNG
-- SELECT END
FROM TR_REQ_ADVANCE_PAYMENT A
LEFT JOIN CM_AUTH_STATUS B ON A.AUTH_STATUS=B.AUTH_STATUS
LEFT JOIN CM_AUTH_STATUS C ON A.AUTH_STATUS_KT=C.AUTH_STATUS
LEFT JOIN TL_USER TL ON A.MAKER_ID=TL.TLNANME
LEFT JOIN TL_USER TL1 ON A.CHECKER_ID=TL1.TLNANME
LEFT JOIN TL_USER TL2 ON A.MAKER_ID_KT=TL2.TLNANME
LEFT JOIN TL_USER TL3 ON A.CHECKER_ID_KT=TL3.TLNANME
LEFT JOIN dbo.CM_BRANCH BR ON A.BRANCH_ID=BR.BRANCH_ID
LEFT JOIN dbo.CM_BRANCH BR1 ON A.BRANCH_CREATE=BR1.BRANCH_ID
LEFT JOIN dbo.CM_DEPARTMENT DP ON DP.DEP_ID=A.DEP_ID
--Luanlt--2019/10/15-Sửa AL,AL1
LEFT JOIN CM_ALLCODE AL ON A.REQ_TYPE = AL.CDVAL AND AL.CDNAME='REQ_TYPE' AND AL.CDTYPE = 'REQ_TYPE'
LEFT JOIN CM_ALLCODE AL1 ON A.REQ_PAY_TYPE = AL1.CDVAL AND AL1.CDNAME='REQ_PAY_TYPE' AND AL1.CDTYPE = 'REQ_TRANSFER'
LEFT JOIN TL_USER TL4 ON A.TRANSFER_MAKER = TL4.TLNANME
LEFT JOIN TL_USER TL5 ON A.TRASFER_USER_RECIVE = TL5.TLNANME
LEFT JOIN
(
SELECT X.PAY_ADV_ID,X.APPROVE_DT_KT, B.REQ_PAY_CODE, SUM (AMT_DO) PAY_HIS ,(ISNULL(SUM(AMT_USE),0) - ISNULL(SUM(AMT_ADD),0) + ISNULL(SUM(AMT_REVERT),0)) SO_TIEN_THANH_TOAN
FROM TR_REQ_PAYMENT_DT X
INNER JOIN TR_REQ_PAYMENT B ON X.PAY_ID = B.REQ_PAY_ID
WHERE X.AUTH_STATUS_KT ='A'
--LEFT JOIN TR_REQ_ADVANCE_PAYMENT Y ON X.PAY_ADV_ID = Y.REQ_PAY_ID
--WHERE Y.REF_ID = @p_REF_ID
GROUP BY X.PAY_ADV_ID, X.APPROVE_DT_KT,B.REQ_PAY_CODE
) H ON A.REQ_PAY_ID = H.PAY_ADV_ID
LEFT JOIN TL_USER TL6 ON A.RECEIVER_DEBIT = TL6.TLNANME AND A.REQ_TYPE='D'
LEFT JOIN TL_USER TL7 ON TL7.TLNANME = A.REF_ID AND A.REQ_TYPE='I'
LEFT JOIN TR_PO_PAYMENT PM ON A.PAY_PHASE = PM.PAY_ID AND A.REQ_TYPE='P'
LEFT JOIN TR_REQ_ADVANCE_DT DT ON A.REQ_PAY_ID = DT.REQ_PAY_ID AND A.REQ_TYPE ='P' AND DT.[TYPE]='ADV_PAY'
LEFT JOIN TR_PO_MASTER PO ON DT.REF_ID = PO.PO_ID AND A.REQ_TYPE='P'
LEFT JOIN TR_CONTRACT CT ON DT.REF_ID = CT.CONTRACT_ID AND A.REQ_TYPE='P' AND DT.[TYPE]='ADV_PAY'
LEFT JOIN CM_SUPPLIER SUP ON PO.SUP_ID = SUP.SUP_ID AND A.REQ_TYPE='P'
LEFT JOIN TR_REQ_ADVANCE_CUS CS ON A.REQ_PAY_ID= CS.REQ_PAY_ID
LEFT JOIN LS_CUSTOMER CUS ON CS.CUST_ID = CUS.CUSTOMER_ID AND A.REQ_TYPE='D'
WHERE 1=1
AND(A.REQ_PAY_ID =@p_REQ_PAY_ID OR @p_REQ_PAY_ID IS NULL OR @p_REQ_PAY_ID ='' )
AND (A.AUTH_STATUS_KT ='A')
ORDER BY A.CREATE_DT DESC
-- PAGING END
END
ELSE
BEGIN
-- PAGING BEGIN
SELECT A.*,B.AUTH_STATUS_NAME, C.AUTH_STATUS_NAME AUTH_STATUS_NAME_KT, TL.TLFullName CREATE_FULLNAME,
TL1.TLFullName APPROVE_FULLNAME,TL2.TLFullName CREATE_FULLNAME_KT,TL3.TLFullName APPROVE_FULLNAME_KT,
BR.BRANCH_NAME BRANCH_NAME_REQ, BR1.BRANCH_NAME BRANCH_NAME_CRE, DP.DEP_NAME, DP.DEP_CODE, BR.BRANCH_CODE BRANCH_CODE_REQ,
--Luanlt--2019/10/15-Sửa AL,AL1
BR1.BRANCH_CODE BRANCH_CODE_CRE, AL.CONTENT REQ_TYPE_NAME,AL1.CONTENT REQ_PAY_TYPE_NAME,
(A.REQ_AMT -ISNULL(A.PAY_AMT,0)) AS AMT_REMAIN,
H.PAY_HIS AS AMT_PAY_HIS,
CASE WHEN H.SO_TIEN_THANH_TOAN IS NOT NULL THEN (ISNULL(H.SO_TIEN_THANH_TOAN,0)) ELSE A.PAY_AMT END AS TOTAL_AMT_PAY,
TL4.TLFullName AS TRANSFER_FULLNAME,TL5.TLFullName AS TRANSFER_RECIEVER_FULLNAME,
TL6.TLFullName AS REC_DEBIT_NAME, TL6.TLNANME AS REC_DEBIT_CODE,
TL7.TLFullName AS EMP_NAME, TL7.TLNANME AS EMP_CODE,
ISNULL(PO.PO_CODE, CT.CONTRACT_CODE) AS PO_CODE ,ISNULL(PO.PO_NAME, CT.[CONTRACT_NAME]) AS PO_NAME,
PO.SUP_NAME,
SUP.TAX_NO AS SUP_TAX_NO,
CUS.CUSTOMER_CODE AS CUST_CODE,
CUS.CUSTOMER_NAME AS CUST_NAME,
PM.PAY_PHASE KY_TAM_UNG,
H.APPROVE_DT_KT NGAY_HOAN_UNG,
H.REQ_PAY_CODE AS SO_PHIEU_HOAN_UNG
-- SELECT END
FROM TR_REQ_ADVANCE_PAYMENT A
LEFT JOIN CM_AUTH_STATUS B ON A.AUTH_STATUS=B.AUTH_STATUS
LEFT JOIN CM_AUTH_STATUS C ON A.AUTH_STATUS_KT=C.AUTH_STATUS
LEFT JOIN TL_USER TL ON A.MAKER_ID=TL.TLNANME
LEFT JOIN TL_USER TL1 ON A.CHECKER_ID=TL1.TLNANME
LEFT JOIN TL_USER TL2 ON A.MAKER_ID_KT=TL2.TLNANME
LEFT JOIN TL_USER TL3 ON A.CHECKER_ID_KT=TL3.TLNANME
LEFT JOIN dbo.CM_BRANCH BR ON A.BRANCH_ID=BR.BRANCH_ID
LEFT JOIN dbo.CM_BRANCH BR1 ON A.BRANCH_CREATE=BR1.BRANCH_ID
LEFT JOIN dbo.CM_DEPARTMENT DP ON DP.DEP_ID=A.DEP_ID
--Luanlt--2019/10/15-Sửa AL,AL1
LEFT JOIN CM_ALLCODE AL ON A.REQ_TYPE = AL.CDVAL AND AL.CDNAME='REQ_TYPE' AND AL.CDTYPE = 'REQ_TYPE'
LEFT JOIN CM_ALLCODE AL1 ON A.REQ_PAY_TYPE = AL1.CDVAL AND AL1.CDNAME='REQ_PAY_TYPE' AND AL1.CDTYPE = 'REQ_TRANSFER'
LEFT JOIN TL_USER TL4 ON A.TRANSFER_MAKER = TL4.TLNANME
LEFT JOIN TL_USER TL5 ON A.TRASFER_USER_RECIVE = TL5.TLNANME
LEFT JOIN
(
SELECT X.PAY_ADV_ID,X.APPROVE_DT_KT, B.REQ_PAY_CODE, SUM (AMT_DO) PAY_HIS ,(ISNULL(SUM(AMT_USE),0) - ISNULL(SUM(AMT_ADD),0) + ISNULL(SUM(AMT_REVERT),0)) SO_TIEN_THANH_TOAN
FROM TR_REQ_PAYMENT_DT X
INNER JOIN TR_REQ_PAYMENT B ON X.PAY_ID = B.REQ_PAY_ID
WHERE X.AUTH_STATUS_KT ='A'
--LEFT JOIN TR_REQ_ADVANCE_PAYMENT Y ON X.PAY_ADV_ID = Y.REQ_PAY_ID
--WHERE Y.REF_ID = @p_REF_ID
GROUP BY X.PAY_ADV_ID, X.APPROVE_DT_KT,B.REQ_PAY_CODE
) H ON A.REQ_PAY_ID = H.PAY_ADV_ID
LEFT JOIN TL_USER TL6 ON A.RECEIVER_DEBIT = TL6.TLNANME AND A.REQ_TYPE='D'
LEFT JOIN TL_USER TL7 ON TL7.TLNANME = A.REF_ID AND A.REQ_TYPE='I'
LEFT JOIN TR_PO_PAYMENT PM ON A.PAY_PHASE = PM.PAY_ID AND A.REQ_TYPE='P'
LEFT JOIN TR_REQ_ADVANCE_DT DT ON A.REQ_PAY_ID = DT.REQ_PAY_ID AND A.REQ_TYPE ='P' AND DT.[TYPE]='ADV_PAY'
LEFT JOIN TR_PO_MASTER PO ON DT.REF_ID = PO.PO_ID AND A.REQ_TYPE='P'
LEFT JOIN TR_CONTRACT CT ON DT.REF_ID = CT.CONTRACT_ID AND A.REQ_TYPE='P' AND DT.[TYPE]='ADV_PAY'
LEFT JOIN CM_SUPPLIER SUP ON PO.SUP_ID = SUP.SUP_ID AND A.REQ_TYPE='P'
LEFT JOIN TR_REQ_ADVANCE_CUS CS ON A.REQ_PAY_ID= CS.REQ_PAY_ID
LEFT JOIN LS_CUSTOMER CUS ON CS.CUST_ID = CUS.CUSTOMER_ID AND A.REQ_TYPE='D'
WHERE 1=1
AND(A.REQ_PAY_ID =@p_REQ_PAY_ID OR @p_REQ_PAY_ID IS NULL OR @p_REQ_PAY_ID ='' )
AND (A.AUTH_STATUS_KT ='A')
ORDER BY A.CREATE_DT DESC
-- PAGING END
END;
END -- PAGING
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Altering [dbo].[CON_MASTER_Search]'
GO
ALTER PROCEDURE [dbo].[CON_MASTER_Search]
@p_CONSTRUCT_ID varchar(15)=NULL,
@p_CONSTRUCT_CODE varchar(15)=NULL,
@p_CONSTRUCT_NAME nvarchar(100)=NULL,
@p_PLAN_ID varchar(15)=NULL,
@p_DIVI_ID varchar(15)=NULL,
@p_CONST_NAME nvarchar(50) = NULL,
@p_CONSTRUCT_ADDR nvarchar(200)=NULL,
@p_LENGTH decimal=NULL,
@p_WIDTH decimal=NULL,
@p_CONSTRUCT_AREA decimal=NULL,
@p_FLOORS int=NULL,
@p_FLOORS_AREA decimal=NULL,
@p_YEAR_EXE varchar(4)=NULL,
@p_CONSTRUCT_TYPE varchar(15)=NULL,
@p_TOTAL_AMT decimal=NULL,
@p_COST_ESTIMATE decimal=NULL,
@p_COST_EXE decimal=NULL,
@p_COST_INCURRED decimal=NULL,
@p_CONST_PURPOSE varchar(15)=NULL,
@p_DESCRIPTION nvarchar(2000)=NULL,
@p_START_DT VARCHAR(20)=NULL,
@p_END_DT VARCHAR(20)=NULL,
@p_DATE_EXE VARCHAR(20)=NULL,
@p_COMPLETION_DT VARCHAR(20)=NULL,
@p_IS_FINISH varchar(1)=NULL,
@p_CONSTRUCT_PROGRESS decimal=NULL,
@p_RECORD_STATUS varchar(1)=NULL,
@p_MAKER_ID varchar(15)=NULL,
@p_CREATE_DT VARCHAR(20)=NULL,
@p_AUTH_STATUS varchar(1)=NULL,
@p_CHECKER_ID varchar(15)=NULL,
@p_APPROVE_DT VARCHAR(20)=NULL,
@p_CONST_ID varchar(15)=NULL,
@p_REQUEST_ID varchar(15)=NULL,
@p_REQ_CODE varchar(15)=NULL,
@p_BRANCH_ID varchar(15)=NULL,
@p_STREET nvarchar(200)=NULL,
@p_LOCATION varchar(15)=NULL,
@p_SCALE nvarchar(1000)=NULL,
@p_ENGINEER nvarchar(500)=NULL,
@p_BRANCH_NAME_ETX nvarchar(500)=NULL,
@p_LEVEL varchar(10),
@p_MaxResultCount int = NULL,
@p_SkipCount int = NULL,
@p_Sorting varchar(100) = NULL,
@p_TotalCount int = NULL
AS
BEGIN -- PAGING
declare @tmp table(BRANCH_ID varchar(15))
IF(@p_LEVEL = 'ALL')
BEGIN
insert into @tmp SELECT BRANCH_ID FROM [dbo].[CM_BRANCH_GETCHILDID](@p_BRANCH_ID)
END
-- PAGING BEGIN
SELECT
A.*,
dbo.FN_GET_CHINHANH(A.BRANCH_ID,'KV') KHU_VUC,
dbo.FN_GET_CHINHANH(A.BRANCH_ID,'CN') CHI_NHANH,
case when A.BRANCH_NAME_ETX IS NULL OR A.BRANCH_NAME_ETX = '' THEN BBB.BRANCH_NAME ELSE A.BRANCH_NAME_ETX END AS CONST_NAME,
--C.REQ_DT,
CON_HQ_T.CONTENT AS CONS_HQ_TYPE_NAME,
REQ_AMT.TOTAL_AMT AS CP_DUOC_DUYET,
BID.CONTRACT_VALUE,
BID.TOTAL_AMT_KT,
BID.PAID_VALUE,
BID.OUTSTANDINGVALUE,
CASE WHEN TOTAL_EMPTY_AMT_KT = 0 THEN N'Quyết toán' ELSE '' END AS CONST_NOTE,
BID.SUM_ARISE_VALUE,
AU.AUTH_STATUS_NAME,
BBB.BRANCH_CODE,
AA.CONTENT CONST_TYPE_NAME,
'' AS PAYMENT_STATUS
-- SELECT END
FROM CON_MASTER AS A
-- GIANT 06/12/2021
LEFT JOIN CM_ALLCODE AA ON AA.CDVAL = A.CONST_TYPE AND CDNAME = 'REQ_CON_TYPE' AND CDTYPE = 'CON'
LEFT JOIN CM_BRANCH BBB ON BBB.BRANCH_ID = A.BRANCH_ID
INNER JOIN CON_REQUEST_DOC_PARENT_VIEW C ON A.REQUEST_ID = C.CON_REQUEST_DOC_ID
LEFT JOIN CM_ALLCODE CON_HQ_T ON CON_HQ_T.CDNAME='REQ_HQ_TYPE' AND CON_HQ_T.CDType='CON' AND A.HQ_TYPE = CON_HQ_T.CDVAL
LEFT JOIN (
SELECT
REQUEST_ID,
0 AS CONTRACT_VALUE,
0 AS TOTAL_AMT_KT,
0 AS PAID_VALUE,
0 AS OUTSTANDINGVALUE,
0 AS SUM_ARISE_VALUE,
0 AS TOTAL_EMPTY_AMT_KT
FROM BID_MASTER
GROUP BY(REQUEST_ID)
) BID ON A.REQUEST_ID = BID.REQUEST_ID
LEFT JOIN (
SELECT REQ_ID, SUM(TOTAL_AMT) AS TOTAL_AMT
FROM CON_REQUEST_DOC
GROUP BY REQ_ID
) REQ_AMT ON REQ_AMT.REQ_ID = A.REQUEST_ID
LEFT JOIN CM_AUTH_STATUS AU ON A.AUTH_STATUS=AU.AUTH_STATUS
WHERE
(@p_CONSTRUCT_ID IS NULL OR @p_CONSTRUCT_ID='' OR A.CONSTRUCT_ID = @p_CONSTRUCT_ID) AND
(@p_CONSTRUCT_CODE IS NULL OR @p_CONSTRUCT_CODE='' OR CONSTRUCT_CODE = @p_CONSTRUCT_CODE) AND
(@p_CONSTRUCT_NAME IS NULL OR @p_CONSTRUCT_NAME='' OR CONSTRUCT_NAME = @p_CONSTRUCT_NAME) AND
(@p_PLAN_ID IS NULL OR @p_PLAN_ID='' OR PLAN_ID = @p_PLAN_ID) AND
(@p_DIVI_ID IS NULL OR @p_DIVI_ID='' OR DIVI_ID = @p_DIVI_ID) AND
(@p_CONSTRUCT_ADDR IS NULL OR @p_CONSTRUCT_ADDR='' OR CONSTRUCT_ADDR = @p_CONSTRUCT_ADDR) AND
(@p_LENGTH IS NULL OR LENGTH = @p_LENGTH) AND
(@p_WIDTH IS NULL OR WIDTH = @p_WIDTH) AND
(@p_CONSTRUCT_AREA IS NULL OR CONSTRUCT_AREA = @p_CONSTRUCT_AREA) AND
(@p_FLOORS IS NULL OR FLOORS = @p_FLOORS) AND
(@p_FLOORS_AREA IS NULL OR FLOORS_AREA = @p_FLOORS_AREA) AND
(@p_YEAR_EXE IS NULL OR @p_YEAR_EXE='' OR YEAR_EXE = @p_YEAR_EXE) AND
(@p_CONSTRUCT_TYPE IS NULL OR @p_CONSTRUCT_TYPE='' OR HQ_TYPE = @p_CONSTRUCT_TYPE) AND
(@p_TOTAL_AMT IS NULL OR A.TOTAL_AMT = @p_TOTAL_AMT) AND
(@p_COST_ESTIMATE IS NULL OR COST_ESTIMATE = @p_COST_ESTIMATE) AND
(@p_COST_EXE IS NULL OR COST_EXE = @p_COST_EXE) AND
(@p_COST_INCURRED IS NULL OR COST_INCURRED = @p_COST_INCURRED) AND
(@p_CONST_PURPOSE IS NULL OR @p_CONST_PURPOSE='' OR CONST_PURPOSE = @p_CONST_PURPOSE) AND
(@p_DESCRIPTION IS NULL OR @p_DESCRIPTION='' OR DESCRIPTION = @p_DESCRIPTION) AND
(@p_START_DT IS NULL OR DATEDIFF(DAYOFYEAR,START_DT,CONVERT(datetime, @p_START_DT,103)) = 0) AND
(@p_END_DT IS NULL OR DATEDIFF(DAYOFYEAR,END_DT,CONVERT(datetime, @p_END_DT,103)) = 0) AND
(@p_DATE_EXE IS NULL OR DATEDIFF(DAYOFYEAR,DATE_EXE,CONVERT(datetime, @p_DATE_EXE,103)) = 0) AND
(@p_COMPLETION_DT IS NULL OR DATEDIFF(DAYOFYEAR,COMPLETION_DT,CONVERT(datetime, @p_COMPLETION_DT,103)) = 0) AND
(@p_IS_FINISH IS NULL OR @p_IS_FINISH='' OR IS_FINISH = @p_IS_FINISH) AND
(@p_CONSTRUCT_PROGRESS IS NULL OR CONSTRUCT_PROGRESS = @p_CONSTRUCT_PROGRESS) AND
(@p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS='' OR A.RECORD_STATUS = @p_RECORD_STATUS) AND
(@p_MAKER_ID IS NULL OR @p_MAKER_ID='' OR A.MAKER_ID = @p_MAKER_ID) AND
(@p_CREATE_DT IS NULL OR DATEDIFF(DAYOFYEAR,A.CREATE_DT,CONVERT(datetime, @p_CREATE_DT,103)) = 0) AND
(@p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS='' OR A.AUTH_STATUS = @p_AUTH_STATUS) AND
(@p_CHECKER_ID IS NULL OR @p_CHECKER_ID='' OR A.CHECKER_ID = @p_CHECKER_ID) AND
(@p_APPROVE_DT IS NULL OR DATEDIFF(DAYOFYEAR,A.APPROVE_DT,CONVERT(datetime, @p_APPROVE_DT,103)) = 0) AND
(@p_CONST_ID IS NULL OR @p_CONST_ID='' OR CONST_ID = @p_CONST_ID) AND
(@p_REQUEST_ID IS NULL OR @p_REQUEST_ID='' OR A.REQUEST_ID = @p_REQUEST_ID) AND
(@p_BRANCH_ID IS NULL OR @p_BRANCH_ID='' OR (@p_LEVEL = 'UNIT' AND A.BRANCH_ID = @p_BRANCH_ID) OR (@p_LEVEL = 'ALL' AND EXISTS(SELECT * FROM @tmp T WHERE T.BRANCH_ID = A.BRANCH_ID))) AND
(@p_STREET IS NULL OR @p_STREET='' OR STREET = @p_STREET) AND
(@p_LOCATION IS NULL OR @p_LOCATION='' OR LOCATION = @p_LOCATION) AND
(@p_SCALE IS NULL OR @p_SCALE='' OR SCALE = @p_SCALE) AND
(@p_ENGINEER IS NULL OR @p_ENGINEER='' OR ENGINEER = @p_ENGINEER) AND
(@p_BRANCH_NAME_ETX IS NULL OR @p_BRANCH_NAME_ETX='' OR BRANCH_NAME_ETX = @p_BRANCH_NAME_ETX) AND
(@p_CONST_NAME IS NULL OR @p_CONST_NAME = '' OR ISNULL(A.BRANCH_NAME_ETX, BBB.BRANCH_NAME) LIKE '%' + @p_CONST_NAME + '%') AND
(@p_REQ_CODE IS NULL OR @p_REQ_CODE = '' OR (EXISTS(SELECT * FROM CON_REQUEST_DOC CC WHERE CC.REQUEST_PARENT = A.REQUEST_ID AND CC.REQ_CODE = @p_REQ_CODE)))
AND A.RECORD_STATUS = '1'
ORDER BY A.CREATE_DT DESC
-- PAGING END
END -- PAGING
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Creating [dbo].[TR_REQ_PAY_METHOD_ById]'
GO
CREATE PROC [dbo].[TR_REQ_PAY_METHOD_ById]
@p_REQ_PAY_ID varchar(15)
AS
BEGIN
SELECT A.*,T.TLFullName AS EMP_NAME
FROM TR_REQ_PAY_METHOD A
LEFT JOIN TL_USER T ON A.EMP_ID = T.TLNANME
WHERE A.REQ_PAY_ID =@p_REQ_PAY_ID
END
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Creating [dbo].[TR_REQ_PAY_DETAIL_PERIOD_BYID]'
GO
CREATE PROC [dbo].[TR_REQ_PAY_DETAIL_PERIOD_BYID]
@p_REQ_PAY_ID VARCHAR(15)= NULL
AS
BEGIN
SELECT B.SUP_ID, A.* ,ISNULL(B.CONTRACT_CODE,B.CONTRACT_ID) AS CONTRACT_CODE , B.CONTRACT_NAME, C.REQ_PAY_CODE,
S.ACC_NUM,S.ACC_NAME,S.BANK_NAME,S.ACC_NUM_OUT,S.ACC_NAME_OUT,S.BANK_NAME_OUT, S.TAX_NO AS SUP_TAX_NO,
B.CONTRACT_ID, S.SUP_NAME AS ACC_NAME
FROM TR_REQ_ADVANCE_DT A
INNER JOIN TR_CONTRACT B ON A.REF_ID = B.CONTRACT_ID
LEFT JOIN CM_SUPPLIER S ON B.SUP_ID = S.SUP_ID
LEFT JOIN TR_REQ_PAYMENT C ON A.REQ_PAY_ID = C.REQ_PAY_ID
WHERE A.REQ_PAY_ID =@p_REQ_PAY_ID
END
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Altering [dbo].[TR_REQ_PAYMENT_Upd]'
GO
ALTER PROCEDURE [dbo].[TR_REQ_PAYMENT_Upd]
@p_REQ_PAY_ID varchar(15)= NULL,
@p_REQ_PAY_CODE varchar(50) = NULL,
@p_REQ_DT VARCHAR(20)= NULL,
@p_BRANCH_ID varchar(15) = NULL,
@p_DEP_ID varchar(15) = NULL,
@p_REQ_REASON nvarchar(MAX) = NULL,
@p_REQ_TYPE varchar(15) = NULL,
@P_REQ_ENTRIES nvarchar(MAX) = NULL,
@p_REQ_DESCRIPTION nvarchar(MAX) = NULL,
@p_REF_ID varchar(15) = NULL,
@p_RECEIVER_PO nvarchar(250) = NULL,
@p_REQ_PAY_TYPE varchar(15) = NULL,
@p_REQ_TYPE_CURRENCY nvarchar(50) = NULL,
@p_REQ_AMT decimal(18, 0) = NULL,
@p_REQ_TEMP_AMT decimal(18, 0) = NULL,
@p_MAKER_ID varchar(15) = NULL,
@p_CREATE_DT varchar(25) = NULL,
@p_EDITOR_ID varchar(15) = NULL,
@p_AUTH_STATUS varchar(1) = NULL,
@p_CHECKER_ID varchar(15) = NULL,
@p_APPROVE_DT varchar(25) = NULL,
@p_CREATE_DT_KT varchar(25) = NULL,
@p_MAKER_ID_KT varchar(15) = NULL,
@p_AUTH_STATUS_KT varchar(1) = NULL,
@p_CHECKER_ID_KT varchar(1) = NULL,
@p_APPROVE_DT_KT varchar(25)= null,
@p_CONFIRM_NOTE nvarchar(500) = NULL,
@p_BRANCH_CREATE varchar(15) = NULL,
@p_NOTES varchar(15) = NULL,
@p_RECORD_STATUS varchar(1) = NULL,
@p_TRANSFER_MAKER nvarchar(50) = NULL,
@p_TRANSFER_DT varchar(25) = NULL,
@p_TRASFER_USER_RECIVE varchar(15) = NULL,
@p_PROCESS varchar(15) = NULL,
@p_PAY_PHASE VARCHAR(15) = NULL,
@p_RATE DECIMAL(18,2) = 0,
@p_IS_PERIOD VARCHAR(5) = NULL,
@p_AMT_PAY decimal(18, 0) = NULL,
@p_XMP_TEMP XML = NULL,
@p_XMP_TEMP_2 XML = NULL,
@p_XMP_TEMP_METHOD XML = NULL,
@p_XMP_TEMP_BUDGET XML = NULL,
@p_XMP_TEMP_SERVICE XML = NULL,
@p_XMP_TEMP_ATTACH XML = NULL,
@p_XMP_TEMP_INVOICE XML = NULL,
@p_TYPE_FUNCTION VARCHAR(15) = NULL,
@p_XMP_TEMP_PO XML = NULL,
@p_XMP_TEMP_SCHEDULE XML = NULL,
@p_XMP_TEMP_PERIOD XML = NULL,
@p_XMP_ADVANCE_DT XML = NULL
AS
--Validation is here
/*
DECLARE @ERRORSYS NVARCHAR(15) = ''
IF ( NOT EXISTS ( SELECT * FROM ASS_COLLECT WHERE ))
SET @ERRORSYS = ''
IF @ERRORSYS <> ''
BEGIN
SELECT ErrorCode Result, '' CAR_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS
RETURN '0'
END
*/
--Luanlt-2019/10/15 Disable Validation
--DECLARE @ERRORSYS NVARCHAR(15) = ''
--IF EXISTS(SELECT * FROM TR_PO_MASTER WHERE REF_ID = @p_REF_ID )
--BEGIN
-- SET @ERRORSYS = 'ASSC-00005'
-- SELECT ErrorCode Result, '' REQ_PAY_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS
-- RETURN '-1'
--END
IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS ='U'))
BEGIN
SELECT '-1' Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đã được gửi phê duyệt thành công trước đó. Bạn không được quyền chỉnh sửa' ErrorDesc
RETURN '-1'
END
IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND PROCESS IS NOT NULL AND PROCESS <>''))
BEGIN
SELECT '-1' Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đã được kí xác nhận từ các cấp. Bạn không được quyền chỉnh sửa' ErrorDesc
RETURN '-1'
END
IF @p_REQ_PAY_CODE IS NULL OR @p_REQ_PAY_CODE =''
BEGIN
SELECT '-1' Result, '' REQ_PAY_ID, N'Mã số phiếu không được phép để trống' ErrorDesc
RETURN '-1'
END
--IF EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_CODE = @p_REQ_PAY_CODE AND REQ_PAY_ID <> @p_REQ_PAY_ID)
--BEGIN
-- SELECT '-1' Result, '' REQ_PAY_ID, N'Mã số phiếu đã tồn tại trong hệ thống' ErrorDesc
-- RETURN '-1'
--END
DECLARE @ROLE_KI_NHAY VARCHAR(50)
SET @ROLE_KI_NHAY =(SELECT TOP 1 RoleName FROM TL_USER WHERE TLNANME =@p_TRASFER_USER_RECIVE)
IF(@ROLE_KI_NHAY IS NOT NULL AND @ROLE_KI_NHAY <>'' AND @ROLE_KI_NHAY IN ('TPGD','GDDV','PGD','PTGD','TGD','HDQT','TP','PP','TBP','KTT','GDK','KSV','TC','NVTC','TPTC'))
BEGIN
PRINT @ROLE_KI_NHAY
END
ELSE
BEGIN
SET @ROLE_KI_NHAY =(SELECT TOP 1 RoleName FROM TL_USER_V2 WHERE TLNANME =@p_TRASFER_USER_RECIVE)
IF(@ROLE_KI_NHAY IS NULL OR @ROLE_KI_NHAY ='')
BEGIN
SET @ROLE_KI_NHAY =(SELECT TOP 1 ROLE_NEW FROM TL_SYS_ROLE_MAPPING WHERE ROLE_OLD =(SELECT TOP 1 ROLENAME FROM TL_USER WHERE TLNANME=@p_TRASFER_USER_RECIVE))
END
END
--SET @ROLE_KI_NHAY =(SELECT RoleName FROM TL_USER_V2 WHERE TLNANME =@p_TRASFER_USER_RECIVE)
IF(@ROLE_KI_NHAY IS NOT NULL AND @ROLE_KI_NHAY <> '' AND @ROLE_KI_NHAY IN ('TP','GDDV','KTT','TPTC','TC','TPGD'))
BEGIN
SELECT '-1' Result, '' REQ_PAY_ID, N'Bạn không được phép chọn cấp trưởng đơn vị làm cấp phê duyệt trung gian. Vui lòng bỏ qua hoặc chọn cấp phó phòng, trưởng bộ phận' ErrorDesc
RETURN '-1'
END
BEGIN TRANSACTION
DECLARE @VAT decimal(18, 0) =NULL, @TRANS_NO nvarchar(50)=NULL,
@TRANS_DT VARCHAR(20)=NULL,@INVOICE_SIGN nvarchar(50) = NULL,@INVOICE_NO_SIGN nvarchar(50) = NULL,@INVOICE_NO nvarchar(50) = NULL,@INVOICE_DT VARCHAR(20) = NULL,
@SELLER nvarchar(500) = NULL,@TAX_NO nvarchar(15) = NULL,@GOODS_NAME nvarchar(500) = NULL,
@PRICE decimal(18, 0) = NULL,@TAX decimal(18, 0) = NULL,@NOTES NVARCHAR(MAX) = NULL,@VAT_RATE DECIMAL(18,0),@ACC_NO VARCHAR(25),@ACC_NAME NVARCHAR(250),@ISSUED_BY NVARCHAR(250),
@ISSUED_DT VARCHAR(20),@CURRENCY VARCHAR(15)= NULL,@RATE DECIMAL(18,2), @TYPE_VAT VARCHAR(15),@TYPE_FUNC VARCHAR(15), @PDN_TT_LIST_INVOICE VARCHAR(1000)
DECLARE @PAY_ADV_ID VARCHAR(15),@TYPE_TRANSFER VARCHAR(15),@REQ_PAY_ADV_CODE VARCHAR(15),@REASON NVARCHAR(1000),@REF_TYPE VARCHAR(15), @TRN_DATE VARCHAR(15)
DECLARE @AMT_ADVANCED DECIMAL(18,0),@AMT_DO DECIMAL(18,0),
@AMT_REMAIN DECIMAL(18,0),@AMT_PAY DECIMAL(18,0),@AMT_USE DECIMAL(18,2),@AMT_REVERT DECIMAL(18,2), @AMT_ADD DECIMAL(18,2)
DECLARE @TOTAL_SCHEDULE_AMT DECIMAL(18,0) =0
DECLARE @INDEX_AD INT =0, @INDEX_SV INT =0,@INDEX INT =0, @INDEX_IV INT =0, @INDEX_NS INT =0, @INDEX_INVOICE INT = 0, @INDEX_METHOD INT = 0
DECLARE @hdoc INT, @hDoc2 INT, @hDocMeThod INT, @hdocBudget INT, @hdocService INT, @hdocAttach INT, @hdocInvoice INT, @hdocPO INT,
@hdocSchedule INT, @hdocPeriod INT, @hdocRecurring INT
EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XMP_TEMP;
EXEC sp_xml_preparedocument @hDoc2 OUTPUT, @p_XMP_TEMP_2;
EXEC sp_xml_preparedocument @hDocMeThod OUTPUT, @p_XMP_TEMP_METHOD;
EXEC sp_xml_preparedocument @hdocBudget OUTPUT, @p_XMP_TEMP_BUDGET;
EXEC sp_xml_preparedocument @hdocService OUTPUT, @p_XMP_TEMP_SERVICE;
EXEC sp_xml_preparedocument @hdocAttach OUTPUT, @p_XMP_TEMP_ATTACH;
EXEC sp_xml_preparedocument @hdocInvoice OUTPUT, @p_XMP_TEMP_INVOICE;
EXEC sp_xml_preparedocument @hdocPO OUTPUT, @p_XMP_TEMP_PO;
EXEC sp_xml_preparedocument @hdocSchedule OUTPUT, @p_XMP_TEMP_SCHEDULE;
EXEC sp_xml_preparedocument @hdocPeriod OUTPUT, @p_XMP_TEMP_PERIOD;
EXEC sp_xml_preparedocument @hdocRecurring OUTPUT, @p_XMP_ADVANCE_DT;
DECLARE XmlData CURSOR FOR
SELECT *
FROM
OPENXML(@hdocInvoice, '/Root/XmlData', 2)
WITH(TRANS_NO nvarchar(50),TRANS_DT VARCHAR(20),INVOICE_SIGN nvarchar(50),INVOICE_NO_SIGN nvarchar(50),
INVOICE_NO nvarchar(50),INVOICE_DT VARCHAR(20) ,SELLER nvarchar(500),TAX_NO nvarchar(15),GOODS_NAME nvarchar(500) ,
PRICE decimal(18,2),TAX decimal(18, 2),VAT decimal(18,2),NOTE NVARCHAR(MAX),VAT_RATE decimal(18,2),CURRENCY VARCHAR(15), RATE DECIMAL(18,2),TYPE_VAT VARCHAR(15),TYPE_FUNC VARCHAR(15))
OPEN XmlData;
--CURSOR 2
DECLARE XmlDataPay CURSOR FOR
SELECT *
FROM
OPENXML(@hDoc2, '/Root/XmlDataPay', 2)
WITH(PAY_ADV_ID nvarchar(50),AMT_ADVANCED decimal(18, 0),AMT_DO decimal(18,2),
AMT_REMAIN decimal(18,2),AMT_PAY decimal(18,2),AMT_USE decimal(18,2),AMT_REVERT DECIMAL(18,0),AMT_ADD DECIMAL(18,2),CURRENCY VARCHAR(15), RATE DECIMAL(18,2), TRN_DATE VARCHAR(15))
OPEN XmlDataPay;
------------------------
--Luanlt---
--MethodCursor
DECLARE @RECEIVE_ID varchar(15),@RECEIVE_NAME nvarchar(100),@REQ_PAY_REASON nvarchar(MAX),@TOTAL_AMT_METHOD decimal(18,2),
@REQ_PAY_TYPE varchar(1),@REQ_PAY_DESC nvarchar(MAX),@REQ_PAY_ENTRIES nvarchar(MAX),@CHECK_IN VARCHAR(15)
DECLARE XmlDataMethod CURSOR FOR
SELECT *
FROM
OPENXML(@hdocMethod, 'Root/XmlDataMethod',2)
WITH(RECEIVE_ID varchar(15),RECEIVE_NAME nvarchar(100),REQ_PAY_REASON nvarchar(MAX),TOTAL_AMT decimal(18,2),
REQ_PAY_TYPE varchar(1),REQ_PAY_DESC nvarchar(MAX),REQ_PAY_ENTRIES nvarchar(MAX),ACC_NO VARCHAR(250),
ACC_NAME NVARCHAR(250),ISSUED_BY NVARCHAR(250), ISSUED_DT VARCHAR(20),CURRENCY VARCHAR(15), RATE DECIMAL(18,2),CHECK_IN VARCHAR(15),TYPE_TRANSFER VARCHAR(15))
OPEN XmlDataMethod
----------
--CatCursor
DECLARE @REQ_ADV_ID varchar(15),@CAT_NAME nvarchar(100),@TOTAL_AMT_CAT decimal(18,2), @DEPT_ID VARCHAR(15)
DECLARE XmlDataCat CURSOR FOR
SELECT *
FROM
OPENXML(@hdoc, 'Root/XmlDataCat',2)
WITH(REQ_ADV_ID VARCHAR(15),CAT_NAME nvarchar(100),TOTAL_AMT decimal(18,2), DEPT_ID VARCHAR(15),CURRENCY VARCHAR(15), RATE DECIMAL(18,2))
OPEN XmlDataCat
---------------
--ServiceCursor
DECLARE @REQ_PAY_SERVICE_NAME nvarchar(100),@RECEIVE_ID_SERVICE varchar(15),@RECEIVE_NAME_SERVICE nvarchar(100),@REQ_PAY_REASON_SERVICE nvarchar(MAX),
@TOTAL_AMT_SERVICE decimal(18,2),
@REQ_PAY_TYPE_SERVICE varchar(1),@REQ_PAY_DESC_SERVICE nvarchar(MAX),@REQ_PAY_ENTRIES_SERVICE nvarchar(MAX),@DEPT_ID_SRV VARCHAR(15)
DECLARE XmlDataService CURSOR FOR
SELECT *
FROM
OPENXML(@hdocService, 'Root/XmlDataService',2)
WITH(REQ_PAY_SERVICE_NAME nvarchar(100),RECEIVE_ID_SERVICE varchar(15),RECEIVE_NAME_SERVICE nvarchar(100),REQ_PAY_REASON_SERVICE nvarchar(MAX),
TOTAL_AMT_SERVICE decimal(18,2),REQ_PAY_TYPE_SERVICE varchar(1),REQ_PAY_DESC_SERVICE nvarchar(MAX),REQ_PAY_ENTRIES_SERVICE nvarchar(MAX),
DEPT_ID VARCHAR(15),CURRENCY VARCHAR(15), RATE DECIMAL(18,2))
OPEN XmlDataService
---------------
--ScheduleCursor
DECLARE @PO_ID varchar(15),@TERM_PAY varchar(15),@AMT_PAY_SCHEDULE decimal(18,2),@REQ_ADV_ID_SCHE VARCHAR(15),@AMT_ADVANCE_SCHEDULE decimal(18,2),
@AMT_REMAIN_SCHEDULE decimal(18,2),@REQ_AD_DT varchar(20),@PROCESS varchar(15),@PAY_ID VARCHAR(15),@AMT_PAY_DO DECIMAL(18,2),@AMT_PAY_REAL DECIMAL(18,2)
DECLARE XmlDataSchedule CURSOR FOR
SELECT *
FROM
OPENXML(@hdocSchedule, 'Root/XmlDataSchedule',2)
WITH(PO_ID varchar(15),TERM_PAY varchar(15),AMT_PAY_SCHEDULE decimal(18,2),REQ_ADV_ID varchar(15),AMT_ADVANCE_SCHEDULE decimal(18,2),
AMT_REMAIN_SCHEDULE decimal(18,2),REQ_AD_DT varchar(20),PROCESS varchar(15), PAY_ID VARCHAR(15),REF_ID VARCHAR(15),REQ_PAY_DESC NVARCHAR(250),
REQ_PAY_ENTRIES NVARCHAR(250),CURRENCY VARCHAR(15), RATE DECIMAL(18,2),AMT_PAY_DO DECIMAL(18,2),AMT_PAY_REAL DECIMAL(18,2))
OPEN XmlDataSchedule
--END luanlt---
-- DS HANG MUC NGAN SACH
DECLARE @TRADE_ID varchar(15),@GD_ID varchar(15),@AMT_APP decimal(18,2),@AMT_EXE decimal(18,2),
@AMT_REMAIN_GD decimal(18,2),@TYPE_COST VARCHAR(15), @FR_LEVEL INT ,@TO_LEVEL INT, @MONTH_RATE VARCHAR(4), @YEAR_RATE VARCHAR(4)
DECLARE XmlDataGood CURSOR FOR
SELECT *
FROM
OPENXML(@hdocBudget, 'Root/XmlDataGood',2)
WITH(TRADE_ID varchar(15),GD_ID varchar(15),AMT_APP decimal(18,2),AMT_DO decimal(18,2),
AMT_EXE decimal(18,2),AMT_REMAIN decimal(18,2),CURRENCY VARCHAR(15), RATE DECIMAL(18,2),
REASON NVARCHAR(1000),TYPE_COST VARCHAR(15), FR_LEVEL INT ,TO_LEVEL INT, MONTH_RATE VARCHAR(4), YEAR_RATE VARCHAR(4))
OPEN XmlDataGood
---- END CURSOR HANG MUC NGAN SACH
-- DINH KEM CHUNG TU DINH KEM
DECLARE @ATTACH_ID varchar(15),@CON_ID varchar(100),@CONT_CODE VARCHAR(50), @CON_NOTES VARCHAR(1000),
@CON_DESC NVARCHAR(1000),@CON_TYPE VARCHAR(15),@AMT_ATT DECIMAL(18,2),@REF_DT VARCHAR(20), @LICENSE_DT VARCHAR(15)
DECLARE XmlAttach CURSOR FOR
SELECT *
FROM
OPENXML(@hdocAttach, 'Root/XmlAttach',2)
WITH(ATTACH_ID varchar(15),CON_ID varchar(100),CONT_CODE VARCHAR(50), CON_NOTES NVARCHAR(1000),
CON_DESC NVARCHAR(1000),CON_TYPE VARCHAR(15),AMT_ATT DECIMAL(18,2),REF_DT VARCHAR(20), LICENSE_DT VARCHAR(15))
OPEN XmlAttach
-- END
UPDATE TR_REQ_PAYMENT SET
REF_ID = @p_REF_ID,
DEP_ID= @p_DEP_ID,REQ_REASON = @p_REQ_REASON, REQ_PAY_TYPE = @p_REQ_PAY_TYPE,REQ_AMT = @p_REQ_AMT,
NOTES= @p_NOTES,
REQ_TYPE= @p_REQ_TYPE,REQ_DESCRIPTION = @p_REQ_DESCRIPTION,RECEIVER_PO = @p_RECEIVER_PO,TRANSFER_MAKER =@p_TRANSFER_MAKER,
REQ_TEMP_AMT=@p_REQ_TEMP_AMT,REQ_ENTRIES = @P_REQ_ENTRIES,BRANCH_ID = @p_BRANCH_ID,REQ_PAY_CODE = @p_REQ_PAY_CODE, AUTH_STATUS='E', IS_PERIOD =@p_IS_PERIOD,
TRASFER_USER_RECIVE =@p_TRASFER_USER_RECIVE, RATE = @p_RATE, AMT_PAY = @p_AMT_PAY
WHERE REQ_PAY_ID =@p_REQ_PAY_ID
-- BUA DOAN NAY DE XU LY LOI KHONG TIM DUOC NHA CUNG CAP
UPDATE CM_SUPPLIER SET ACC_NUM ='' WHERE ACC_NUM IS NULL
UPDATE CM_SUPPLIER SET ACC_NUM_OUT ='' WHERE ACC_NUM_OUT IS NULL
--
UPDATE TR_REQ_PAY_SERVICE SET REQ_PAY_ID= 'XX'+ RIGHT(REQ_PAY_ID,13)
WHERE REQ_PAY_ID NOT IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE REQ_TYPE IN ('I','D'))
--
UPDATE TR_REQ_PAY_SCHEDULE SET REQ_PAY_ID= 'XX'+ RIGHT(REQ_PAY_ID,13)
WHERE REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE REQ_TYPE ='P' AND IS_PERIOD IS NOT NULL AND IS_PERIOD <>'' AND IS_PERIOD='Y') AND TRN_TYPE ='PAY' AND REQ_PAY_ID =@p_REQ_PAY_ID
IF @@Error <> 0 GOTO ABORT
--Insert XmlData
DELETE FROM TR_REQ_PAY_INVOICE WHERE REQ_PAY_ID = @p_REQ_PAY_ID
FETCH NEXT FROM XmlData INTO @TRANS_NO , @TRANS_DT ,@INVOICE_SIGN ,@INVOICE_NO_SIGN,@INVOICE_NO ,@INVOICE_DT ,@SELLER ,
@TAX_NO ,@GOODS_NAME ,@PRICE ,@TAX,@VAT,@NOTES,@VAT_RATE,@CURRENCY,@RATE,@TYPE_VAT,@TYPE_FUNC
WHILE @@fetch_status=0
BEGIN
SET @INDEX_IV = @INDEX_IV +1
-- KHI NAO BAM GUI PHE DUYET HE THONG MOI CHECK VALIDATE
IF(@p_TYPE_FUNCTION ='SEND')
BEGIN
IF(LEN(@INVOICE_NO) < 1)
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID, N'Hóa đơn đính kèm, dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Số hóa đơn '+ @INVOICE_NO +N' không được để trống' ErrorDesc
RETURN '-1'
END
IF(LEN(@INVOICE_NO) > 8)
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID, N'Hóa đơn đính kèm, dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Số hóa đơn '+ @INVOICE_NO +N' phải bé hơn 9' ErrorDesc
RETURN '-1'
END
IF(EXISTS(
SELECT * FROM TR_REQ_PAY_INVOICE WHERE INVOICE_NO =@INVOICE_NO AND INVOICE_NO_SIGN = @INVOICE_NO_SIGN AND INVOICE_SIGN =@INVOICE_SIGN AND TAX_NO =@TAX_NO AND TAX =@TAX AND AUTH_STATUS <>'D'
AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS NOT IN ('E','D'))
))
BEGIN
SET @PDN_TT_LIST_INVOICE = (select STUFF( (select '; ' + DTA.REQ_PAY_CODE FROM TR_REQ_PAYMENT DTA WHERE REQ_PAY_ID IN
(SELECT REQ_PAY_ID FROM TR_REQ_PAY_INVOICE WHERE INVOICE_NO =@INVOICE_NO AND INVOICE_NO_SIGN = @INVOICE_NO_SIGN AND INVOICE_SIGN =@INVOICE_SIGN AND TAX_NO =@TAX_NO AND TAX =@TAX
AND AUTH_STATUS <>'D'
AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS NOT IN ('E','D') AND MAKER_ID NOT IN (SELECT TLNANME FROM TL_USER WHERE RoleName ='DISABLE' OR AUTH_STATUS ='U')))
FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, ''))
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Số hóa đơn '+ @INVOICE_NO +N' đã tồn tại trong hệ thống' ErrorDesc
RETURN '-1'
END
IF(@GOODS_NAME IS NULL OR @GOODS_NAME ='')
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Tên mặt hàng trong lưới hóa đơn không được để trống' ErrorDesc
RETURN '-1'
END
-- TÊN NGƯỜI BÀN
IF(@SELLER IS NULL OR @SELLER ='')
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Người bán trong lưới hóa đơn không được để trống' ErrorDesc
RETURN '-1'
END
-- MÃ SỐ THUẾ
-- TÊN NGƯỜI BÀN
IF(@TAX_NO IS NULL OR @TAX_NO ='')
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Mã số thuế trong lưới hóa đơn không được để trống' ErrorDesc
RETURN '-1'
END
-- NGÀY HÓA ĐƠN
IF(@INVOICE_DT IS NULL OR @INVOICE_DT ='')
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Ngày hóa đơn trong lưới hóa đơn không được để trống' ErrorDesc
RETURN '-1'
END
-- SỐ HÓA ĐƠN
IF(@INVOICE_NO IS NULL OR @INVOICE_NO ='')
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Số hóa đơn trong lưới hóa đơn không được để trống' ErrorDesc
RETURN '-1'
END
-- KÍ HIỆU HÓA ĐƠN
IF(@INVOICE_NO_SIGN IS NULL OR @INVOICE_NO_SIGN ='')
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Kí hiệu số hóa đơn trong lưới hóa đơn không được để trống' ErrorDesc
RETURN '-1'
END
-- KÍ HIỆU HÓA ĐƠN
IF(@INVOICE_SIGN IS NULL OR @INVOICE_SIGN ='')
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Kí hiệu mẫu hóa đơn trong lưới hóa đơn không được để trống' ErrorDesc
RETURN '-1'
END
-- KÍ HIỆU HÓA ĐƠN
IF(@PRICE IS NULL OR @PRICE =0)
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Số tiền hóa đơn trong lưới hóa đơn không được để trống' ErrorDesc
RETURN '-1'
END
END
--SET @INDEX = @INDEX +1
DECLARE @p_REQ_INV_ID VARCHAR(15);
EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_INVOICE', @p_REQ_INV_ID OUT;
IF @p_REQ_INV_ID='' OR @p_REQ_INV_ID IS NULL GOTO ABORT;
INSERT INTO TR_REQ_PAY_INVOICE(REQ_PAYDT_ID,REQ_PAY_ID,TRANS_NO,TRANS_DT,INVOICE_SIGN,INVOICE_NO,INVOICE_DT,SELLER,TAX_NO,GOODS_NAME,PRICE,TAX,VAT,NOTE,
MAKER_ID,CREATE_DT,EDITOR_ID,AUTH_STATUS,CHECKER_ID,APPROVE_DT,
CREATE_DT_KT,MAKER_ID_KT,AUTH_STATUS_KT,CHECKER_ID_KT,APPROVE_DT_KT,RECORD_STATUS,INVOICE_NO_SIGN,VAT_RATE,CURRENCY,RATE,PRICE_KT,VAT_KT,TOTAL_AMT_KT,TYPE_VAT,TYPE_FUNC)
VALUES (@p_REQ_INV_ID,@p_REQ_PAY_ID , @TRANS_NO , NULL ,@INVOICE_SIGN ,@INVOICE_NO ,CONVERT(DATE,@INVOICE_DT,103) ,UPPER(([dbo].[RemoveVietNamese](@SELLER))),@TAX_NO ,UPPER(([dbo].[RemoveVietNamese](@GOODS_NAME))) ,@PRICE ,@TAX,@VAT,@NOTES,
@p_MAKER_ID,GETDATE(),NULL,'U',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'1',@INVOICE_NO_SIGN,@VAT_RATE,@CURRENCY,@RATE,@PRICE,@VAT,@PRICE+@VAT,@TYPE_VAT,@TYPE_FUNC)
IF @@error<>0 GOTO ABORT;
FETCH NEXT FROM XmlData
INTO @TRANS_NO , @TRANS_DT,@INVOICE_SIGN,@INVOICE_NO_SIGN,@INVOICE_NO ,@INVOICE_DT ,@SELLER ,@TAX_NO ,@GOODS_NAME ,@PRICE ,@TAX,@VAT,@NOTES,@VAT_RATE,@CURRENCY,@RATE,@TYPE_VAT,@TYPE_FUNC
END;
CLOSE XmlData;
DEALLOCATE XmlData;
--- INSERT CAC HANG MUC NGAN SACH
DELETE FROM TR_REQ_PAY_BUDGET WHERE REQ_PAY_ID=@p_REQ_PAY_ID
--- INSERT CAC HANG MUC NGAN SACH
FETCH NEXT FROM XmlDataGood INTO @TRADE_ID,@GD_ID ,@AMT_APP ,@AMT_DO,@AMT_EXE ,@AMT_REMAIN_GD,@CURRENCY,
@RATE,@REASON,@TYPE_COST, @FR_LEVEL,@TO_LEVEL, @MONTH_RATE, @YEAR_RATE
WHILE @@fetch_status=0 BEGIN
--- KIEM TRA NEU NGAN SACH SU DUNG THUC THE LON HON NGAN SACH CON LAI
SET @INDEX_NS = @INDEX_NS +1
-- KHI NAO BAM GUI PHE DUYET HE THONG MOI CHECK VALIDATE
IF(@p_TYPE_FUNCTION ='SEND')
BEGIN
IF(ISNULL(@AMT_EXE,0) =0)
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Số tiền sử dụng thực tế phải lớn hơn không.' ErrorDesc
RETURN '-1'
END
--IF((@AMT_EXE > @AMT_REMAIN_GD) AND ((SELECT GD_TYPE_ID FROM CM_GOODS WHERE GD_ID =@GD_ID) ='NS'))
--BEGIN
-- ROLLBACK TRANSACTION
-- SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng thực tế không được vượt quá ngân sách còn lại.' ErrorDesc
-- RETURN '-1'
--END
IF(NOT EXISTS(SELECT * FROM PL_IMPORT_DT WHERE TRADE_ID =@TRADE_ID AND IMP_YEAR =YEAR(GETDATE()))
AND NOT EXISTS (SELECT * FROM PL_MASTER WHERE PLAN_ID =(SELECT TOP 1 PLAN_ID FROM PL_TRADEDETAIL WHERE TRADE_ID =@TRADE_ID) AND YEAR =YEAR(GETDATE()))
)
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng phải chọn lại ngân sách của năm hiện tại. Không được phép sử dụng ngân sách năm cũ.' ErrorDesc
RETURN '-1'
END
END
DECLARE @p_BUDGET_ID VARCHAR(15);
EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_BUDGET', @p_BUDGET_ID OUT;
IF @p_BUDGET_ID='' OR @p_BUDGET_ID IS NULL GOTO ABORT;
INSERT INTO TR_REQ_PAY_BUDGET(BUDG_ID,GD_ID,REQ_PAY_ID,TRADE_ID,AMT_APP,AMT_DO,AMT_EXE,AMT_REMAIN,MAKER_ID,CREATE_DT,CURRENCY,RATE,REASON,TYPE_COST , FR_LEVEL ,TO_LEVEL, MONTH_RATE, YEAR_RATE)
VALUES (@p_BUDGET_ID,@GD_ID,@p_REQ_PAY_ID,@TRADE_ID,@AMT_APP,@AMT_DO,@AMT_EXE,@AMT_REMAIN_GD,@p_MAKER_ID, GETDATE(),@CURRENCY,@RATE,@REASON,@TYPE_COST, @FR_LEVEL,@TO_LEVEL, @MONTH_RATE, @YEAR_RATE)
IF @@error<>0 GOTO ABORT;
FETCH NEXT FROM XmlDataGood INTO @TRADE_ID,@GD_ID ,@AMT_APP ,@AMT_DO,@AMT_EXE ,@AMT_REMAIN_GD,@CURRENCY,
@RATE,@REASON,@TYPE_COST, @FR_LEVEL,@TO_LEVEL, @MONTH_RATE, @YEAR_RATE
END;
CLOSE XmlDataGood;
DEALLOCATE XmlDataGood;
--INSERT FROM MethodCursor
DELETE FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID = @p_REQ_PAY_ID
SET @INDEX = 0
FETCH NEXT FROM XmlDataMethod INTO @RECEIVE_ID,@RECEIVE_NAME,@REQ_PAY_REASON,@TOTAL_AMT_METHOD,@REQ_PAY_TYPE,
@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@ACC_NO, @ACC_NAME,@ISSUED_BY, @ISSUED_DT,@CURRENCY,@RATE,@CHECK_IN,@TYPE_TRANSFER
WHILE @@fetch_status=0
BEGIN
-- KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE
IF(@p_TYPE_FUNCTION ='SEND')
BEGIN
SET @INDEX_INVOICE = @INDEX_INVOICE+1
----------------------- begin validate ------------------------
IF(@ACC_NO IS NULL OR @ACC_NO = '')
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin phương thức thanh toán, dòng ' + CONVERT(VARCHAR(5),@INDEX_INVOICE)+N': số tài khoản '+ N' không được để trống' ErrorDesc
RETURN '-1'
END
IF(@REQ_PAY_TYPE = '1' AND (@ISSUED_DT = '' OR @ISSUED_DT IS NULL))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin phương thức thanh toán, dòng ' + CONVERT(VARCHAR(5),@INDEX_INVOICE)+N': Ngày cấp CMND '+ N' không được để trống' ErrorDesc
RETURN '-1'
END
----------------------- end validate --------------------------
END
IF(@REQ_PAY_TYPE<>'1')
BEGIN
SET @ISSUED_DT = NULL
END
IF(@TYPE_TRANSFER IS NULL OR @TYPE_TRANSFER ='')
BEGIN
SET @TYPE_TRANSFER = 'A'
END
SET @INDEX = @INDEX +1
DECLARE @p_REQ_PAY_METHOD_ID VARCHAR(15);
EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_METHOD', @p_REQ_PAY_METHOD_ID OUT;
IF @p_REQ_PAY_METHOD_ID='' OR @p_REQ_PAY_METHOD_ID IS NULL GOTO ABORT;
INSERT INTO TR_REQ_PAY_METHOD
VALUES (@p_REQ_PAY_METHOD_ID,@p_REQ_PAY_ID,@RECEIVE_ID,@REQ_PAY_REASON,@TOTAL_AMT_METHOD,@REQ_PAY_TYPE,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,'',@p_MAKER_ID,GETDATE(),@ACC_NO, @ACC_NAME,@ISSUED_BY,CONVERT(DATE,@ISSUED_DT,103),@CURRENCY,@RATE,@CHECK_IN,@TYPE_TRANSFER)
IF @@error<>0 GOTO ABORT;
FETCH NEXT FROM XmlDataMethod INTO @RECEIVE_ID,@RECEIVE_NAME,@REQ_PAY_REASON,@TOTAL_AMT_METHOD,@REQ_PAY_TYPE,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@ACC_NO, @ACC_NAME,@ISSUED_BY, @ISSUED_DT,@CURRENCY,@RATE,@CHECK_IN,@TYPE_TRANSFER
END
CLOSE XmlDataMethod;
DEALLOCATE XmlDataMethod;
--- END INSERT NGAN SACH
--- INSERT VAO BANG CHUNG TU DINH KEM
-- INSERT CHUNG TU DINH KEM
DELETE FROM TR_REQ_PAY_ATTACH WHERE REQ_PAY_ID =@p_REQ_PAY_ID
--OPEN XmlAttach;
FETCH NEXT FROM XmlAttach INTO @ATTACH_ID,@CON_ID,@CONT_CODE,@NOTES,@CON_DESC,@CON_TYPE,@AMT_ATT,@REF_DT, @LICENSE_DT
WHILE @@fetch_status=0
BEGIN
IF (@REF_DT='')
BEGIN
SET @REF_DT = NULL
END
EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_ATTACH', @ATTACH_ID OUT;
IF @ATTACH_ID='' OR @ATTACH_ID IS NULL GOTO ABORT;
INSERT INTO TR_REQ_PAY_ATTACH(ATTACH_ID,REQ_PAY_ID,REF_ID,REF_CODE,NOTES,[DESCRIPTION],[TYPE],[AMT],REF_DT, LICENSE_DT) VALUES
(@ATTACH_ID,@p_REQ_PAY_ID,@CON_ID,@CONT_CODE,@NOTES,@CON_DESC,@CON_TYPE,@AMT_ATT,CONVERT(DATE,@REF_DT,103) ,CONVERT(DATE, @LICENSE_DT,103))
IF @@error<>0 GOTO ABORT;
FETCH NEXT FROM XmlAttach INTO @ATTACH_ID,@CON_ID,@CONT_CODE,@NOTES,@CON_DESC,@CON_TYPE,@AMT_ATT,@REF_DT, @LICENSE_DT
END
CLOSE XmlAttach;
DEALLOCATE XmlAttach;
----END
------------------------
IF(@p_REQ_TYPE = 'I')
BEGIN
--BEGIN CURRSOR 2
-- doanptt 24/12/2021 Xóa hợp đồng định kỳ và hợp đồng PO trước khi thêm mới ở 2 IF sau
DELETE FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID= @p_REQ_PAY_ID
DELETE FROM TR_REQ_PAYMENT_DT WHERE PAY_ID = @p_REQ_PAY_ID
FETCH NEXT FROM XmlDataPay INTO @PAY_ADV_ID, @AMT_ADVANCED ,@AMT_DO,@AMT_REMAIN,@AMT_PAY ,@AMT_USE ,@AMT_REVERT,@AMT_ADD,@CURRENCY,@RATE, @TRN_DATE
WHILE @@fetch_status=0
BEGIN
SET @INDEX_AD = @INDEX_AD +1
SET @REQ_PAY_ADV_CODE = (SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@PAY_ADV_ID)
IF(@p_TYPE_FUNCTION ='SEND')
BEGIN
-- KIEM TRA XEM CO PHIEU NAO DANG DUOC THANH TOAN HOAN TAM UNG MA CHUA DUYET HAY CHUA
--IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_DT WHERE (PAY_ADV_ID =@PAY_ADV_ID AND (AUTH_STATUS_KT <>'A' OR AUTH_STATUS_KT IS NULL)) AND PAY_ID <> @p_REQ_PAY_ID))
IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_DT WHERE (PAY_ADV_ID =@PAY_ADV_ID AND (AUTH_STATUS ='A' AND ISNULL(AUTH_STATUS_KT,'') <> 'A')) AND PAY_ID <> @p_REQ_PAY_ID))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_AD)+ N': Phiếu tạm ứng số '+@REQ_PAY_ADV_CODE+ N' đang được thanh toán hoàn tạm ứng. Vui lòng đợi giao dịch hoàn tất' ErrorDesc
RETURN '-1'
END
-- KIEM TRA NEU SO TIEN DE NGHI HOAN TAM ƯNG LON HON SO TIEN CON LAI CAN PHAI TAM UNG
IF(@AMT_REVERT>(@AMT_REMAIN -@AMT_USE) AND @AMT_REVERT >0)
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_AD)+ N': Số tiền hoàn ứng không được vượt quá '+FORMAT((@AMT_REMAIN -@AMT_USE),'#,#', 'vi-VN') ErrorDesc
RETURN '-1'
END
END
DECLARE @p_REQ_PAYDT_ID VARCHAR(15);
EXEC SYS_CodeMasters_Gen 'TR_REQ_PAYMENT_DT', @p_REQ_PAYDT_ID OUT;
IF @p_REQ_PAYDT_ID='' OR @p_REQ_PAYDT_ID IS NULL GOTO ABORT;
INSERT INTO TR_REQ_PAYMENT_DT
VALUES (@p_REQ_PAYDT_ID,@PAY_ADV_ID,@p_REQ_PAY_ID , ISNULL(@AMT_ADVANCED,0) ,ISNULL(@AMT_DO,0),ISNULL(@AMT_REMAIN,0),
ISNULL(@AMT_PAY,0) ,ISNULL(@AMT_USE,0) ,ISNULL(@AMT_REVERT,0), ISNULL(@AMT_ADD,0), CONVERT(DATE,@TRN_DATE,103) ,@p_MAKER_ID ,GETDATE() ,NULL ,NULL,'U' ,NULL ,NULL ,NULL ,NULL,NULL,@CURRENCY,@RATE)
IF @@error<>0 GOTO ABORT;
FETCH NEXT FROM XmlDataPay INTO @PAY_ADV_ID, @AMT_ADVANCED ,@AMT_DO,@AMT_REMAIN,@AMT_PAY ,@AMT_USE ,@AMT_REVERT,@AMT_ADD,@CURRENCY,@RATE, @TRN_DATE
END
CLOSE XmlDataPay;
DEALLOCATE XmlDataPay;
--END CURSOR 2--------------------------
-------------------------
--INSERT FROM CatCursor
DELETE FROM TR_REQ_PAY_CAT WHERE REQ_PAY_ID = @p_REQ_PAY_ID
FETCH NEXT FROM XmlDataCat INTO @REQ_ADV_ID,@CAT_NAME,@TOTAL_AMT_CAT,@DEPT_ID,@CURRENCY,@RATE
WHILE @@fetch_status=0
BEGIN
SET @INDEX = @INDEX +1
DECLARE @p_REQ_PAY_CAT_ID VARCHAR(15);
EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_CAT', @p_REQ_PAY_CAT_ID OUT;
IF @p_REQ_PAY_CAT_ID='' OR @p_REQ_PAY_CAT_ID IS NULL GOTO ABORT;
INSERT INTO TR_REQ_PAY_CAT
VALUES (@p_REQ_PAY_CAT_ID,@p_REQ_PAY_ID,@REQ_ADV_ID,@CAT_NAME,@TOTAL_AMT_CAT,@DEPT_ID,@p_MAKER_ID,GETDATE(),@CURRENCY,@RATE)
IF @@error<>0 GOTO ABORT;
FETCH NEXT FROM XmlDataCat INTO @REQ_ADV_ID,@CAT_NAME,@TOTAL_AMT_CAT,@DEPT_ID,@CURRENCY,@RATE
END
CLOSE XmlDataCat;
DEALLOCATE XmlDataCat;
END
IF(@p_REQ_TYPE = 'D' OR @p_REQ_TYPE ='I')
BEGIN
DECLARE @SUM_TTCT_LINK DECIMAL(18,0), @SUM_TT_CT DECIMAL(18,0), @SUM_KUY_KE_TT DECIMAL(18,0),@SUM_PYCMS_LINK DECIMAL(18,0), @PYCMS_CODE_LIST VARCHAR(250),
@PDNTT_CODE_LIST VARCHAR(250)
SET @SUM_KUY_KE_TT=0
----------------------------
DELETE FROM TR_REQ_PAY_SERVICE WHERE REQ_PAY_ID = @p_REQ_PAY_ID
--INSERT FROM ServiceCursor
SET @INDEX = 0
FETCH NEXT FROM XmlDataService INTO @REQ_PAY_SERVICE_NAME,@RECEIVE_ID_SERVICE,@RECEIVE_NAME_SERVICE,@REQ_PAY_REASON_SERVICE,@TOTAL_AMT_SERVICE,
@REQ_PAY_TYPE_SERVICE,@REQ_PAY_DESC_SERVICE,@REQ_PAY_ENTRIES_SERVICE,@DEPT_ID_SRV,@CURRENCY,@RATE
WHILE @@fetch_status=0
BEGIN
SET @INDEX = @INDEX +1
--------------- begin validate--------------
IF(@p_TYPE_FUNCTION ='SEND')
BEGIN
IF(@DEPT_ID_SRV IS NULL OR @DEPT_ID_SRV ='')
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin các dịch vụ thanh toán, dòng '+ CONVERT(VARCHAR(5),@INDEX)+ N': Phòng ban chịu chi phí không được để trống' ErrorDesc
RETURN '-1'
END
IF(@TOTAL_AMT_SERVICE IS NULL)
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin các dịch vụ thanh toán, dòng '+ CONVERT(VARCHAR(5),@INDEX)+ N': Số tiền thanh toán không được để trống' ErrorDesc
RETURN '-1'
END
IF(@TOTAL_AMT_SERVICE < 0)
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin các dịch vụ thanh toán, dòng '+ CONVERT(VARCHAR(5),@INDEX)+ N': Số tiền thanh toán không thể nhỏ hơn 0' ErrorDesc
RETURN '-1'
END
END
--------------- end validate ----------------
SET @SUM_PYCMS_LINK =ISNULL((SELECT SUM(TOTAL_AMT) FROM TR_REQUEST_DOC WHERE PL_REQ_ID =@RECEIVE_ID_SERVICE),0)
SET @SUM_TT_CT =(SELECT ISNULL(TOTAL_AMT,0) FROM PL_REQUEST_DOC WHERE REQ_ID =@RECEIVE_ID_SERVICE)
SET @PYCMS_CODE_LIST = (select STUFF( (select '; ' + DTA.REQ_CODE FROM TR_REQUEST_DOC DTA WHERE PL_REQ_ID =@RECEIVE_ID_SERVICE
FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, ''))
SET @PDNTT_CODE_LIST = (select STUFF( (select '; ' + DTA.REQ_PAY_CODE FROM TR_REQ_PAYMENT DTA WHERE REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAY_SERVICE WHERE EMP_ID =@RECEIVE_ID_SERVICE) AND REQ_PAY_ID <> @p_REQ_PAY_ID
FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, ''))
--IF(@RECEIVE_ID_SERVICE IS NOT NULL AND @RECEIVE_ID_SERVICE <> '')
--BEGIN
-- SET @SUM_PYCMS_LINK = @SUM_PYCMS_LINK +@TOTAL_AMT_SERVICE
--END
--SET @SUM_KUY_KE_TT = @SUM_KUY_KE_TT + @TOTAL_AMT_SERVICE
SET @SUM_TTCT_LINK =(SELECT SUM(TOTAL_AMT*ISNULL(RATE,1)) FROM TR_REQ_PAY_SERVICE WHERE REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT) AND REQ_PAY_ID <> @p_REQ_PAY_ID AND EMP_ID =@RECEIVE_ID_SERVICE)
IF(@p_TYPE_FUNCTION ='SEND')
BEGIN
IF(((ISNULL(@SUM_TTCT_LINK,0) +ISNULL(@SUM_PYCMS_LINK,0) + ISNULL(@TOTAL_AMT_SERVICE,0)) > ISNULL(@SUM_TT_CT,0)) AND @RECEIVE_ID_SERVICE IS NOT NULL AND @RECEIVE_ID_SERVICE <> '')
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID,'' AS REQ_PAY_CODE,
N'Dòng '+ CONVERT(VARCHAR(5),@INDEX)+N': Thông tin chi tiết về hạn mức sử dụng của tờ trình số: '+(SELECT TOP 1 ISNULL(REQ_CODE,'') FROM PL_REQUEST_DOC WHERE REQ_ID =@RECEIVE_ID_SERVICE)+N' như sau:'
+ CHAR(10) + N'* Số tiền các phiếu yêu cầu mua sắm số:'+ISNULL(@PYCMS_CODE_LIST,'')+N' đã sử dụng: '+FORMAT(ISNULL(@SUM_PYCMS_LINK,0),'#,#', 'vi-VN') +' VND'+
+ CHAR(10) +N'* Số tiền ở các phiếu thanh toán số: '+ISNULL(@PDNTT_CODE_LIST,'')+N' đã sử dụng: '+ FORMAT(ISNULL(@SUM_TTCT_LINK,0),'#,#', 'vi-VN') +' VND'+
+ CHAR(10) +N'* Số tiền còn lại được phép thanh toán là: '+FORMAT(ISNULL(@SUM_TT_CT,0) -ISNULL(@SUM_TTCT_LINK,0) -ISNULL(@SUM_PYCMS_LINK,0),'#,#', 'vi-VN') +' VND' ErrorDesc
RETURN '-1'
END
END
DECLARE @p_REQ_PAY_SERVICE_ID VARCHAR(15);
EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_SERVICE', @p_REQ_PAY_SERVICE_ID OUT;
IF @p_REQ_PAY_SERVICE_ID='' OR @p_REQ_PAY_SERVICE_ID IS NULL GOTO ABORT;
INSERT INTO TR_REQ_PAY_SERVICE(SERVICE_ID,REQ_PAY_ID,[SERVICE_NAME],EMP_ID,REQ_PAY_REASON,TOTAL_AMT,REQ_PAY_TYPE,REQ_PAY_DESC,REQ_PAY_ENTRIES,MAKER_ID,CREATE_DT,DEPT_ID,CURRENCY,RATE)
VALUES (@p_REQ_PAY_SERVICE_ID,@p_REQ_PAY_ID,@REQ_PAY_SERVICE_NAME,@RECEIVE_ID_SERVICE,@REQ_PAY_REASON_SERVICE,@TOTAL_AMT_SERVICE,
@REQ_PAY_TYPE_SERVICE,@REQ_PAY_DESC_SERVICE,@REQ_PAY_ENTRIES_SERVICE,@p_MAKER_ID,GETDATE(),@DEPT_ID_SRV,@CURRENCY,@RATE)
IF @@error<>0 GOTO ABORT;
FETCH NEXT FROM XmlDataService INTO @REQ_PAY_SERVICE_NAME,@RECEIVE_ID_SERVICE,@RECEIVE_NAME_SERVICE,@REQ_PAY_REASON_SERVICE,@TOTAL_AMT_SERVICE,@REQ_PAY_TYPE_SERVICE,
@REQ_PAY_DESC_SERVICE,@REQ_PAY_ENTRIES_SERVICE,@DEPT_ID_SRV,@CURRENCY,@RATE
END
CLOSE XmlDataService;
DEALLOCATE XmlDataService;
END
IF((@p_REQ_TYPE = 'P' AND (@p_IS_PERIOD <>'Y' OR @p_IS_PERIOD IS NULL)) OR @p_REQ_TYPE ='I')
BEGIN
----------------------------
--ELSE IF((@p_REQ_TYPE = 'P' AND @p_IS_PERIOD = 'Y') OR @p_REQ_TYPE='I')
IF(@p_REQ_TYPE = 'P' AND (@p_IS_PERIOD <>'Y' OR @p_IS_PERIOD IS NULL))
BEGIN
DELETE FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID= @p_REQ_PAY_ID
END
DECLARE @INDEX_PO INT, @REF_ID VARCHAR(15),@IS_CLOSED VARCHAR(1)
DECLARE XmlDataPO CURSOR FOR
SELECT *
FROM
OPENXML(@hdocPO, '/Root/XmlDataPO', 2)
WITH(REF_ID varchar(15),IS_CLOSED VARCHAR(1),REF_TYPE VARCHAR(15))
OPEN XmlDataPO;
SET @INDEX_PO = 0
FETCH NEXT FROM XmlDataPO INTO @REF_ID,@IS_CLOSED,@REF_TYPE
WHILE @@fetch_status=0
BEGIN
IF(EXISTS(SELECT * FROM TR_PO_MASTER WHERE PO_ID =@REF_ID AND AUTH_STATUS <>'A'))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO số '+
(SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' chưa được phê duyệt. Vui lòng phê duyệt PO trước khi tạo phiếu thanh toán' ErrorDesc
RETURN '-1'
END
SET @INDEX_PO = @INDEX_PO +1
-- KHI NAO BAM GUI PHE DUYET HE THONG MOI CHECK VALIDATE
IF(@p_TYPE_FUNCTION ='SEND')
BEGIN
-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
--IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REF_TYPE ='C' AND REQ_PAY_ID
--IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL)))
--BEGIN
-- ROLLBACK TRANSACTION
-- SELECT '-1' as Result, '' REQ_PAY_ID, '' AS REQ_PAY_CODE,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': Hợp đồng số '+
-- (SELECT CONTRACT_ID FROM TR_CONTRACT WHERE CONTRACT_ID = @REF_ID)+N' đang được tạm ứng. Vui lòng đợi giao dịch hoàn tất' ErrorDesc
-- RETURN '-1'
--END
---- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
--IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REF_TYPE ='C' AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL) AND REQ_PAY_ID <>@p_REQ_PAY_ID))
--BEGIN
-- ROLLBACK TRANSACTION
-- SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': Hợp đồng số '+
-- (SELECT CONTRACT_ID FROM TR_CONTRACT WHERE CONTRACT_ID = @REF_ID)+N' đang được thanh toán. Vui lòng đợi giao dịch hoàn tất' ErrorDesc
-- RETURN '-1'
--END
--IF(EXISTS(SELECT * FROM TR_REQ_PAY_SCHEDULE WHERE REF_ID =@REF_ID AND PAY_ID =@PAY_ID AND
-- REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL) AND REQ_PAY_ID <>@p_REQ_PAY_ID))
--BEGIN
-- ROLLBACK TRANSACTION
-- SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': Hợp đồng số '+
-- (SELECT CONTRACT_ID FROM TR_CONTRACT WHERE CONTRACT_ID = @REF_ID)+N' đang được thanh toán. Vui lòng đợi giao dịch hoàn tất' ErrorDesc
-- RETURN '-1'
--END
-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REF_TYPE ='P' AND REQ_PAY_ID
IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT NOT IN ('A','E','R') OR AUTH_STATUS_KT IS NULL)))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID, '' AS REQ_PAY_CODE,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N':PO số '+
(SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' đang được tạm ứng. Vui lòng đợi giao dịch hoàn tất' ErrorDesc
RETURN '-1'
END
-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REF_TYPE ='P' AND REF_ID IN (SELECT PO_ID FROM TR_PO_MASTER WHERE IS_CLOSED='Y')))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO số '+
(SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' đã được thanh toán xong. Vui lòng chọn PO khác để tạm ứng hoặc xóa bản nháp này' ErrorDesc
RETURN '-1'
END
END
DECLARE @REQ_PAYDTID VARCHAR(15);
EXEC SYS_CodeMasters_Gen 'TR_REQ_ADVANCE_DT', @REQ_PAYDTID OUT;
IF @REQ_PAYDTID='' OR @REQ_PAYDTID IS NULL GOTO ABORT;
INSERT INTO TR_REQ_ADVANCE_DT (REQ_PAYDTID,REQ_PAY_ID,REF_ID,TYPE,MAKER_ID,CREATE_DT,IS_CLOSED,REF_TYPE) VALUES
(@REQ_PAYDTID,@p_REQ_PAY_ID,@REF_ID,'PAY',@p_MAKER_ID,GETDATE(),@IS_CLOSED,@REF_TYPE)
IF @@error<>0 GOTO ABORT;
FETCH NEXT FROM XmlDataPO INTO @REF_ID,@IS_CLOSED,@REF_TYPE
END
CLOSE XmlDataPO;
DEALLOCATE XmlDataPO;
--INSERT FROM ScheduleCursor
DELETE FROM TR_REQ_PAY_SCHEDULE WHERE REQ_PAY_ID = @p_REQ_PAY_ID
SET @INDEX_PO = 0
FETCH NEXT FROM XmlDataSchedule INTO @PO_ID,@TERM_PAY,@AMT_PAY_SCHEDULE,@REQ_ADV_ID_SCHE,@AMT_ADVANCE_SCHEDULE,@AMT_REMAIN_SCHEDULE,@REQ_AD_DT,
@PROCESS,@PAY_ID,@REF_ID,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@CURRENCY,@RATE,@AMT_PAY_DO,@AMT_PAY_REAL
WHILE @@fetch_status=0
BEGIN
--IF(@AMT_REMAIN_SCHEDULE =0)
--BEGIN
-- SET @PROCESS ='3'
--END
--IF(@PROCESS <>'2')
--BEGIN
-- SET @TOTAL_SCHEDULE_AMT = @TOTAL_SCHEDULE_AMT +@AMT_REMAIN_SCHEDULE
--END
SET @TOTAL_SCHEDULE_AMT = @TOTAL_SCHEDULE_AMT +(@AMT_PAY_SCHEDULE -@AMT_ADVANCE_SCHEDULE -@AMT_PAY_DO)
----
SET @INDEX_PO = @INDEX_PO +1
IF(@p_TYPE_FUNCTION ='SEND' AND @p_REQ_TYPE ='P')
BEGIN
IF(ISNULL(@AMT_PAY_REAL,0) < ISNULL(@AMT_ADVANCE_SCHEDULE,0))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': Số tiền thanh toán thực tế tối thiểu phải bằng số tiền đã tạm ứng : ' +FORMAT(SUM(@AMT_ADVANCE_SCHEDULE),'#,#', 'vi-VN') ErrorDesc
RETURN '-1'
END
END
DECLARE @p_REQ_PAY_SCHEDULE_ID VARCHAR(15);
EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_SCHEDULE', @p_REQ_PAY_SCHEDULE_ID OUT;
IF @p_REQ_PAY_SCHEDULE_ID='' OR @p_REQ_PAY_SCHEDULE_ID IS NULL GOTO ABORT;
INSERT INTO TR_REQ_PAY_SCHEDULE (SCHEDULE_ID,REQ_PAY_ID,PAY_ID,AMT_PAY,PAY_PHASE,REQ_ADV_ID,AMT_ADVANCE,AMT_PAY_DO,AMT_REMAIN,REQ_PAY_DT,REQ_AD_DT,PROCESS,MAKER_ID,
CREATE_DT,AUTH_STATUS_KT,PAYMENT_STATUS,TRN_TYPE,REF_ID,REQ_PAY_DESC,REQ_PAY_ENTRIES,CURRENCY,RATE, AMT_PAY_REAL)
VALUES (@p_REQ_PAY_SCHEDULE_ID,@p_REQ_PAY_ID,@PAY_ID,@AMT_PAY_SCHEDULE,@TERM_PAY,@REQ_ADV_ID_SCHE,@AMT_ADVANCE_SCHEDULE,
--IIF(@PROCESS<>'2',(@AMT_PAY_SCHEDULE-@AMT_ADVANCE_SCHEDULE),0),
@AMT_PAY_DO,
@AMT_REMAIN_SCHEDULE,GETDATE(),CONVERT(DATETIME,@REQ_AD_DT,103),@PROCESS,@p_MAKER_ID,GETDATE(),'U','','PAY',@REF_ID,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@CURRENCY,@RATE,@AMT_PAY_REAL)
IF @@error<>0 GOTO ABORT;
FETCH NEXT FROM XmlDataSchedule INTO @PO_ID,@TERM_PAY,@AMT_PAY_SCHEDULE,@REQ_ADV_ID_SCHE,@AMT_ADVANCE_SCHEDULE,@AMT_REMAIN_SCHEDULE,@REQ_AD_DT,
@PROCESS,@PAY_ID,@REF_ID,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@CURRENCY,@RATE,@AMT_PAY_DO,@AMT_PAY_REAL
END
CLOSE XmlDataSchedule;
DEALLOCATE XmlDataSchedule;
---- VALIDATE SO TIEN
--IF(@p_REQ_AMT > ISNULL(@TOTAL_SCHEDULE_AMT,0))
--BEGIN
-- ROLLBACK TRANSACTION
-- SELECT '-1' as Result, '' REQ_PAY_ID, N'Số tiền thanh toán phải nhỏ hơn hoặc bằng tổng số tiền còn lại cần thanh toán: '+ FORMAT(SUM(@TOTAL_SCHEDULE_AMT),'#,#', 'vi-VN') ErrorDesc
-- RETURN '-1'
--END
------
END
-- NEU LA THANH TOAN CAC HOP DONG DINH KY
IF((@p_REQ_TYPE = 'P' AND @p_IS_PERIOD = 'Y') OR @p_REQ_TYPE='I')
BEGIN
-- INSERT DATAPERIOD
IF(@p_REQ_TYPE = 'P' AND @p_IS_PERIOD = 'Y')
BEGIN
DELETE FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID= @p_REQ_PAY_ID
END
DECLARE @INDEX_PERIOD INT, @CONTRACT_PERIOD_ID VARCHAR(15),@IS_PERIOD_CLOSED VARCHAR(1)
DECLARE XmlDataRecurring CURSOR FOR
SELECT *
FROM
OPENXML(@hdocRecurring, '/Root/XmlDataRecurring', 2)
WITH(CONTRACT_ID varchar(15),IS_CLOSED VARCHAR(1),REF_TYPE VARCHAR(15))
OPEN XmlDataRecurring;
SET @INDEX_PERIOD = 0
FETCH NEXT FROM XmlDataRecurring INTO @CONTRACT_PERIOD_ID,@IS_PERIOD_CLOSED,@REF_TYPE
WHILE @@fetch_status=0
BEGIN
/*IF(EXISTS(SELECT * FROM TR_PO_MASTER WHERE PO_ID =@REF_ID AND AUTH_STATUS <>'A'))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO số '+
(SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' chưa được phê duyệt. Vui lòng phê duyệt PO trước khi tạo phiếu thanh toán' ErrorDesc
RETURN '-1'
END
SET @INDEX_PO = @INDEX_PO +1
-- KHI NAO BAM GUI PHE DUYET HE THONG MOI CHECK VALIDATE
IF(@p_TYPE_FUNCTION ='SEND')
BEGIN
IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REF_TYPE ='P' AND REQ_PAY_ID
IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT NOT IN ('A','E','R') OR AUTH_STATUS_KT IS NULL)))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID, '' AS REQ_PAY_CODE,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N':PO số '+
(SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' đang được tạm ứng. Vui lòng đợi giao dịch hoàn tất' ErrorDesc
RETURN '-1'
END
-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REF_TYPE ='P' AND REF_ID IN (SELECT PO_ID FROM TR_PO_MASTER WHERE IS_CLOSED='Y')))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO số '+
(SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' đã được thanh toán xong. Vui lòng chọn PO khác để tạm ứng hoặc xóa bản nháp này' ErrorDesc
RETURN '-1'
END
END*/
DECLARE @REQ_PAYDTID_PERIOD VARCHAR(15);
EXEC SYS_CodeMasters_Gen 'TR_REQ_ADVANCE_DT', @REQ_PAYDTID_PERIOD OUT;
IF @REQ_PAYDTID_PERIOD='' OR @REQ_PAYDTID_PERIOD IS NULL GOTO ABORT;
INSERT INTO TR_REQ_ADVANCE_DT (REQ_PAYDTID,REQ_PAY_ID,REF_ID,TYPE,MAKER_ID,CREATE_DT,IS_CLOSED,REF_TYPE)
VALUES(@REQ_PAYDTID_PERIOD,@p_REQ_PAY_ID,@CONTRACT_PERIOD_ID,'PAY',@p_MAKER_ID,GETDATE(),@IS_PERIOD_CLOSED,@REF_TYPE)
IF @@error<>0 GOTO ABORT;
FETCH NEXT FROM XmlDataRecurring INTO @CONTRACT_PERIOD_ID,@IS_PERIOD_CLOSED,@REF_TYPE
END
CLOSE XmlDataRecurring;
DEALLOCATE XmlDataRecurring;
-- INSERT DETAIL PERIOD
DELETE FROM TR_REQ_PAY_PERIOD WHERE REQ_PAY_ID = @p_REQ_PAY_ID
DECLARE XmlDataPeriod CURSOR FOR
SELECT *
FROM
OPENXML(@hdocPeriod, '/Root/XmlDataPeriod', 2)
WITH(CONTRACT_ID varchar(15),PAY_DT_REAL VARCHAR(20),PAY_TYPE VARCHAR(5),
OLD_INDEX DECIMAL(18,0),NEW_INDEX DECIMAL(18,0),AMT_PAY DECIMAL(18,2),CURRENCY VARCHAR(5), RATE DECIMAL(18,0),FROM_DATE VARCHAR(20), TO_DATE VARCHAR(20), AD_PAY_ID VARCHAR(15), PROCESS VARCHAR(5),PARENT_ID VARCHAR(15),PAY_PHASE NVARCHAR(250),REASON NVARCHAR(2000))
OPEN XmlDataPeriod;
DECLARE @CONTRACT_ID varchar(15),@PAY_DT_REAL VARCHAR(20),@PAY_TYPE VARCHAR(5),
@OLD_INDEX DECIMAL(18,0),@NEW_INDEX DECIMAL(18,0),@AMT_PAY_PERIOD DECIMAL(18,2),@FROM_DATE VARCHAR(20),@TO_DATE VARCHAR(20),@AD_PAY_ID VARCHAR(15), @_PROCESS VARCHAR(15),@PARENT_ID VARCHAR(15),@PAY_PHASE NVARCHAR(250),@REASON_TTDK NVARCHAR(2000)
FETCH NEXT FROM XmlDataPeriod INTO @CONTRACT_ID ,@PAY_DT_REAL ,@PAY_TYPE ,
@OLD_INDEX ,@NEW_INDEX ,@AMT_PAY_PERIOD,@CURRENCY,@RATE,@FROM_DATE,@TO_DATE,@AD_PAY_ID, @_PROCESS,@PARENT_ID,@PAY_PHASE,@REASON_TTDK
WHILE @@fetch_status=0
BEGIN
-- KHI NAO BAM GUI PHE DUYET HE THONG MOI CHECK VALIDATE
IF(@p_TYPE_FUNCTION ='SEND')
BEGIN
IF(@NEW_INDEX <=@OLD_INDEX AND (@NEW_INDEX >0 AND @OLD_INDEX >0) )
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin thanh toán hợp đồng định kì: Chỉ số mới phải lớn hơn chỉ số cũ' ErrorDesc
RETURN '-1'
END
-- NEU LÀ DINH KI THI HD PHAI KHAC NULL
IF(@CONTRACT_ID IS NULL OR @CONTRACT_ID ='' )
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin thanh toán hợp đồng định kì: Cột Số hợp đồng không được phép để trống' ErrorDesc
RETURN '-1'
END
-- KIEM TRA CHI TIET HOP DONG PHAI NAM TRONG DANH SACH CAC HOP DONG
IF(@CONTRACT_ID IS NOT NULL AND @CONTRACT_ID <> '' )
BEGIN
IF(NOT EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND REF_ID =@CONTRACT_ID))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin thanh toán hợp đồng định kì - Số hợp đồng phải nằm trong danh sách các hợp đồng được chọn trên lưới Hợp đồng định kì' ErrorDesc
RETURN '-1'
END
END
END
--IF(@CONTRACT_ID IS NULL OR @CONTRACT_ID ='' )
-- BEGIN
-- ROLLBACK TRANSACTION
-- SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Cột Số hợp đồng không được phép để trống' ErrorDesc
-- RETURN '-1'
--END
DECLARE @PERIOD_ID VARCHAR(15);
EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_PERIOD', @PERIOD_ID OUT;
IF @PERIOD_ID='' OR @PERIOD_ID IS NULL GOTO ABORT;
INSERT INTO TR_REQ_PAY_PERIOD(PERIOD_ID,REQ_PAY_ID,PAY_TYPE, CONTRACT_ID,PAY_DT_REAL,OLD_INDEX,NEW_INDEX,AMT_PAY,AUTH_STATUS_KT,CURRENCY,RATE,FROM_DATE,TO_DATE,AD_PAY_ID,PROCESS,PARENT_ID,PAY_PHASE,REASON)
VALUES (@PERIOD_ID,@p_REQ_PAY_ID,'PAY',@CONTRACT_ID,CONVERT(DATE,@PAY_DT_REAL,103),
@OLD_INDEX ,@NEW_INDEX ,@AMT_PAY_PERIOD,'U',@CURRENCY,@RATE,CONVERT(DATE,@FROM_DATE,103),CONVERT(DATE,@TO_DATE,103),@AD_PAY_ID, @_PROCESS,@PARENT_ID,@PAY_PHASE,@REASON_TTDK)
IF @@error<>0 GOTO ABORT;
FETCH NEXT FROM XmlDataPeriod INTO @CONTRACT_ID ,@PAY_DT_REAL ,@PAY_TYPE ,
@OLD_INDEX ,@NEW_INDEX ,@AMT_PAY_PERIOD,@CURRENCY,@RATE,@FROM_DATE,@TO_DATE,@AD_PAY_ID, @_PROCESS,@PARENT_ID,@PAY_PHASE,@REASON_TTDK
END
CLOSE XmlDataPeriod;
DEALLOCATE XmlDataPeriod;
-- VALIDATE SO TIEN
--IF(@p_REQ_AMT >= @TOTAL_SCHEDULE_AMT)
--BEGIN
-- ROLLBACK TRANSACTION
-- SELECT '-1' as Result, '' REQ_PAY_ID, N'Số tiền thanh toán phải nhỏ hơn hoặc bằng tổng số tiền còn lại cần thanh toán: '+FORMAT(SUM(@TOTAL_SCHEDULE_AMT),'#,#', 'vi-VN') ErrorDesc
-- RETURN '-1'
--END
--INSERT DETAIL PERIOD
/*print 'insert detail period else if'
DELETE FROM TR_REQ_PAY_PERIOD WHERE REQ_PAY_ID = @p_REQ_PAY_ID
DECLARE XmlDataPeriod CURSOR FOR
SELECT *
FROM
OPENXML(@hdocPeriod, '/Root/XmlDataPeriod', 2)
WITH(REF_ID varchar(15),IS_CLOSED VARCHAR(1),REF_TYPE VARCHAR(15))
OPEN XmlDataPeriod;
SET @INDEX_PO = 0
FETCH NEXT FROM XmlDataPeriod INTO @REF_ID,@IS_CLOSED,@REF_TYPE
WHILE @@fetch_status=0
BEGIN
SET @INDEX_PO = @INDEX_PO +1
DECLARE @REQ_PAYDTID_C VARCHAR(15);
EXEC SYS_CodeMasters_Gen 'TR_REQ_ADVANCE_DT', @REQ_PAYDTID_C OUT;
IF @REQ_PAYDTID_C='' OR @REQ_PAYDTID_C IS NULL GOTO ABORT;
INSERT INTO TR_REQ_ADVANCE_DT (REQ_PAYDTID,REQ_PAY_ID,REF_ID,TYPE,MAKER_ID,CREATE_DT,IS_CLOSED,REF_TYPE) VALUES
(@REQ_PAYDTID_C,@p_REQ_PAY_ID,@REF_ID,'PAY',@p_MAKER_ID,GETDATE(),@IS_CLOSED,@REF_TYPE)
IF @@error<>0 GOTO ABORT;
FETCH NEXT FROM XmlDataPeriod INTO @REF_ID,@IS_CLOSED,@REF_TYPE
END
CLOSE XmlDataPeriod;
DEALLOCATE XmlDataPeriod;*/
--- CUSOR DANH SACH LICH THANH TOAN PO - HD
----------------------------
/*--INSERT FROM PERIOD
DECLARE XmlDataPeriod CURSOR FOR
SELECT *
FROM
OPENXML(@hdocPeriod, '/Root/XmlDataPeriod', 2)
WITH(CONTRACT_ID varchar(15),PAY_DT_REAL VARCHAR(20),PAY_TYPE VARCHAR(5),
OLD_INDEX DECIMAL(18,0),NEW_INDEX DECIMAL(18,0),AMT_PAY DECIMAL(18,2),CURRENCY VARCHAR(5), RATE DECIMAL(18,0),FROM_DATE VARCHAR(20), TO_DATE VARCHAR(20), AD_PAY_ID VARCHAR(15),
PROCESS VARCHAR(5),PARENT_ID VARCHAR(15),PAY_PHASE NVARCHAR(250),REASON NVARCHAR(2000))
OPEN XmlDataPeriod;
--DECLARE @CONTRACT_ID varchar(15),@PAY_DT_REAL VARCHAR(20),@PAY_TYPE VARCHAR(5),
--@OLD_INDEX DECIMAL(18,0),@NEW_INDEX DECIMAL(18,0),@AMT_PAY_PERIOD DECIMAL(18,2),@FROM_DATE VARCHAR(20),@TO_DATE VARCHAR(20),@AD_PAY_ID VARCHAR(15), @_PROCESS VARCHAR(15),@PARENT_ID VARCHAR(15),@PAY_PHASE NVARCHAR(250)
FETCH NEXT FROM XmlDataPeriod INTO @CONTRACT_ID ,@PAY_DT_REAL ,@PAY_TYPE ,
@OLD_INDEX ,@NEW_INDEX ,@AMT_PAY_PERIOD,@CURRENCY,@RATE,@FROM_DATE,@TO_DATE,@AD_PAY_ID, @_PROCESS,@PARENT_ID,@PAY_PHASE,@REASON_TTDK
WHILE @@fetch_status=0
BEGIN
-- KHI NAO BAM GUI PHE DUYET HE THONG MOI CHECK VALIDATE
IF(@p_TYPE_FUNCTION ='SEND')
BEGIN
--IF(EXISTS(SELECT CONTRACT_ID
--FROM TR_CONTRACT
--WHERE CONTRACT_ID = @REF_ID AND CONVERT(DATE,END_DT,103) < CONVERT(DATE,GETDATE(),103) AND END_DT IS NOT NULL AND CONT_TYPE ='DK' AND CONT_TYPE IS NOT NULL AND CONT_TYPE <>''))
--BEGIN
-- ROLLBACK TRANSACTION
-- SELECT '-1' as Result, '' REQ_PAY_ID, '' AS REQ_PAY_CODE,N'Thanh toán hợp đồng định kì đã đóng' ErrorDesc
-- RETURN '-1'
--END
IF(@PAY_PHASE IS NULL OR @PAY_PHASE ='')
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Lưới chi tiết thanh toán định kì: Kì thanh toán không được để trống' ErrorDesc
RETURN '-1'
END
IF(@NEW_INDEX <=@OLD_INDEX AND (@NEW_INDEX >0 AND @OLD_INDEX >0) )
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Lưới chi tiết thanh toán định kì: Chỉ số mới phải lớn hơn chỉ số cũ' ErrorDesc
RETURN '-1'
END
IF( @PAY_ADV_ID IS NOT NULL AND @PAY_ADV_ID <> '' AND (SELECT ISNULL(REQ_AMT,0.00) - ISNULL(PAY_AMT,0.00) FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@PAY_ADV_ID) <=0)
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Bạn không được phép hoàn tạm ứng cho phiếu đã được hoàn ứng xong! Vui lòng gỡ khỏi danh sách kì thanh toán & hoàn ứng' ErrorDesc
RETURN '-1'
END
IF(@PROCESS ='2' AND (@AD_PAY_ID IS NULL OR @AD_PAY_ID =''))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' Result,'' REQ_PAY_ID,N'Lưới chi tiết thanh toán định kì: Tại hình thức thanh toán Hoàn ứng, số phiếu tạm ứng không được phép để trống' ErrorDesc
RETURN '-1'
END
-- NEU LÀ DINH KI THI HD PHAI KHAC NULL
IF(@CONTRACT_ID IS NULL OR @CONTRACT_ID ='' )
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin thanh toán hợp đồng định kì: Cột Số hợp đồng không được phép để trống' ErrorDesc
RETURN '-1'
END
-- KIEM TRA CHI TIET HOP DONG PHAI NAM TRONG DANH SACH CAC HOP DONG
IF(@CONTRACT_ID IS NOT NULL AND @CONTRACT_ID <> '' )
BEGIN
IF(NOT EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND REF_ID =@CONTRACT_ID))
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin thanh toán hợp đồng định kì - Số hợp đồng phải nằm trong danh sách các hợp đồng được chọn trên lưới Hợp đồng định kì' ErrorDesc
RETURN '-1'
END
END
END
--DECLARE @PERIOD_ID VARCHAR(15);
EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_PERIOD', @PERIOD_ID OUT;
IF @PERIOD_ID='' OR @PERIOD_ID IS NULL GOTO ABORT;
INSERT INTO TR_REQ_PAY_PERIOD(PERIOD_ID,REQ_PAY_ID,PAY_TYPE, CONTRACT_ID,PAY_DT_REAL,OLD_INDEX,NEW_INDEX,AMT_PAY,AUTH_STATUS_KT,CURRENCY,RATE,FROM_DATE,TO_DATE,AD_PAY_ID,PROCESS,PARENT_ID,PAY_PHASE,REASON)
VALUES (@PERIOD_ID,@p_REQ_PAY_ID,'PAY',@CONTRACT_ID,CONVERT(DATE,@PAY_DT_REAL,103),
@OLD_INDEX ,@NEW_INDEX ,@AMT_PAY_PERIOD,'U',@CURRENCY,@RATE,CONVERT(DATE,@FROM_DATE,103),CONVERT(DATE,@TO_DATE,103),@AD_PAY_ID, @_PROCESS,@PARENT_ID,@PAY_PHASE,@REASON_TTDK)
-- LUCTV 16 03 2021 BO SUNG BANG LOG DE FIX LOI HOÀN TẠM ỨNG ĐỊNH KỲ NHƯNG SỐ PHIẾU BỊ TRỐNG
INSERT INTO TR_REQ_PAY_PER_LOG VALUES (@p_REQ_PAY_ID, @PAY_ADV_ID)
IF @@error<>0 GOTO ABORT;
FETCH NEXT FROM XmlDataPeriod INTO @CONTRACT_ID ,@PAY_DT_REAL ,@PAY_TYPE ,
@OLD_INDEX ,@NEW_INDEX ,@AMT_PAY_PERIOD,@CURRENCY,@RATE,@FROM_DATE,@TO_DATE,@AD_PAY_ID, @_PROCESS,@PARENT_ID,@PAY_PHASE,@REASON_TTDK
END
CLOSE XmlDataPeriod;
DEALLOCATE XmlDataPeriod;*/
---- VALIDATE SO TIEN
--IF(@p_REQ_AMT >= @TOTAL_SCHEDULE_AMT)
--BEGIN
-- ROLLBACK TRANSACTION
-- SELECT '-1' as Result, '' REQ_PAY_ID, N'Số tiền thanh toán phải nhỏ hơn hoặc bằng tổng số tiền còn lại cần thanh toán: '+FORMAT(SUM(@TOTAL_SCHEDULE_AMT),'#,#', 'vi-VN') ErrorDesc
-- RETURN '-1'
--END
--
END
COMMIT TRANSACTION
IF(@p_TYPE_FUNCTION ='SEND') -- KIEM TRA NEU 2 BIEN XML KHAC NULL TUC LA DANG TRONG QUA TRINH LUU NHAP
BEGIN
DECLARE @BRANCH_TYPE_CR VARCHAR(15)
SET @BRANCH_TYPE_CR =(SELECT TOP 1 BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@p_BRANCH_CREATE)
DECLARE @SUM_THANH_TOAN DECIMAL(18,0) =0, @SUM_PHUONG_THUC DECIMAL(18,0) =0, @SUM_NGAN_SACH DECIMAL(18,2) =0, @SUM_USE_REAL DECIMAL(18,2), @SUM_SERVICE DECIMAL(18,0),
@SUM_SCHEDULE DECIMAL(18,0), @SUM_PERIOD DECIMAL(18,0), @SUM_PAY_BACK DECIMAL(18,0) =0, @SUM_ADD DECIMAL(18,0)
SET @SUM_THANH_TOAN =(SELECT ISNULL(SUM(REQ_AMT * ISNULL(RATE,1)),0) FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
SET @SUM_PHUONG_THUC =ABS((SELECT ISNULL(SUM(TOTAL_AMT * ISNULL(RATE,1)),0) FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID
AND (TYPE_TRANSFER ='A' OR TYPE_TRANSFER IS NULL OR TYPE_TRANSFER ='')) - (SELECT ISNULL(SUM(TOTAL_AMT * ISNULL(RATE,1)),0) FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID
AND TYPE_TRANSFER ='R'))
SET @SUM_NGAN_SACH =(SELECT ISNULL(SUM(AMT_EXE * ISNULL(RATE,1)),0) FROM TR_REQ_PAY_BUDGET WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
SET @SUM_SERVICE =(SELECT ISNULL(SUM(TOTAL_AMT * ISNULL(RATE,1)),0) FROM TR_REQ_PAY_SERVICE WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
SET @SUM_PERIOD =(SELECT ISNULL(SUM(AMT_PAY * ISNULL(RATE,1)),0) FROM TR_REQ_PAY_PERIOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
SET @SUM_SCHEDULE =(SELECT ISNULL(SUM(AMT_PAY_REAL * ISNULL(RATE,1)),0) FROM TR_REQ_PAY_SCHEDULE WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
IF(@p_REQ_TYPE ='I')
BEGIN
SET @SUM_USE_REAL =(SELECT ISNULL(SUM(AMT_USE*ISNULL(RATE,1)),0) FROM TR_REQ_PAYMENT_DT WHERE PAY_ID =@p_REQ_PAY_ID)
SET @SUM_PAY_BACK =(SELECT ISNULL(SUM(AMT_REVERT*ISNULL(RATE,1)),0) FROM TR_REQ_PAYMENT_DT WHERE PAY_ID =@p_REQ_PAY_ID)
SET @SUM_ADD =(SELECT ISNULL(SUM(AMT_ADD*ISNULL(RATE,1)),0) FROM TR_REQ_PAYMENT_DT WHERE PAY_ID =@p_REQ_PAY_ID)
SET @SUM_PHUONG_THUC =(SELECT ISNULL(SUM(TOTAL_AMT * ISNULL(RATE,1)),0) FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND TYPE_TRANSFER ='A') -
(SELECT ISNULL(SUM(TOTAL_AMT * ISNULL(RATE,1)),0) FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND TYPE_TRANSFER ='R')
END
IF(@p_REQ_TYPE ='P' AND @p_IS_PERIOD ='Y' AND @p_IS_PERIOD <>'' AND @p_IS_PERIOD IS NOT NULL)
BEGIN
SET @SUM_USE_REAL =(SELECT ISNULL(SUM(AMT_PAY*ISNULL(RATE,1)),0) FROM TR_REQ_PAY_PERIOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
--SET @SUM_PAY_BACK =(SELECT ISNULL(SUM(AMT_PAY*ISNULL(RATE,1)),0) FROM TR_REQ_PAY_PERIOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND PROCESS <> '0')
END
IF(@p_REQ_TYPE ='P' AND (@p_IS_PERIOD ='N' OR (@p_IS_PERIOD ='' OR @p_IS_PERIOD IS NULL)))
BEGIN
SET @SUM_USE_REAL =(SELECT ISNULL(SUM(AMT_PAY_REAL*ISNULL(RATE,1)),0) FROM TR_REQ_PAY_SCHEDULE WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
SET @SUM_PAY_BACK =(SELECT ISNULL(SUM(AMT_ADVANCE*ISNULL(RATE,1)),0) FROM TR_REQ_PAY_SCHEDULE WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
END
IF(@p_REQ_TYPE ='D')
BEGIN
SET @SUM_USE_REAL =(SELECT ISNULL(SUM(TOTAL_AMT*ISNULL(RATE,1)),0) FROM TR_REQ_PAY_SERVICE WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
END
IF(@p_REQ_TYPE = 'D' AND ROUND(@SUM_NGAN_SACH,0) <> ROUND(@SUM_THANH_TOAN,0))
BEGIN
SELECT '-1' as Result, '' REQ_PAY_ID, N'Số tiền sử dụng ngân sách và chi phí phải bằng số tiền bạn cần thanh toán là: ' + FORMAT(SUM(@SUM_THANH_TOAN),'#,#', 'vi-VN') ErrorDesc
RETURN '-1'
END
IF(@p_REQ_TYPE <> 'D' AND ROUND(@SUM_NGAN_SACH,0) <> ROUND(@SUM_USE_REAL,0))
BEGIN
SELECT '-1' as Result, '' REQ_PAY_ID, N'Số tiền sử dụng ngân sách và chi phí phải bằng số tiền bạn sử dụng thực tế là: ' + FORMAT(SUM(@SUM_USE_REAL),'#,#', 'vi-VN') ErrorDesc
RETURN '-1'
END
--IF(ISNULL(@SUM_USE_REAL,0) - ISNULL(@SUM_PAY_BACK,0) <> @SUM_PHUONG_THUC)
--BEGIN
-- SELECT '-1' as Result, '' REQ_PAY_ID, N'Số tiền phương thức thanh toán tương ứng với số tiền thanh toán trừ số tiền hoàn tạm ứng: ' + FORMAT((ISNULL(@SUM_USE_REAL,0) - ISNULL(@SUM_PAY_BACK,0)),'#,#', 'vi-VN') ErrorDesc
-- RETURN '-1'
--END
--IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE TRASFER_USER_RECIVE ='' OR TRASFER_USER_RECIVE IS NULL) AND @BRANCH_TYPE_CR ='HS' AND @p_REQ_TYPE ='I')
--BEGIN
-- DECLARE @USER_TP VARCHAR(15)
-- SET @USER_TP =(SELECT TOP 1 TLNANME FROM TL_USER WHERE SECUR_CODE =@p_DEP_ID AND RoleName IN ('GDDV','TPTC','TC','KTT'))
-- UPDATE TR_REQ_PAYMENT SET TRASFER_USER_RECIVE =@USER_TP WHERE REQ_PAY_ID =@p_REQ_PAY_ID
--END
--ELSE
--IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE TRASFER_USER_RECIVE ='' OR TRASFER_USER_RECIVE IS NULL) AND @BRANCH_TYPE_CR ='PGD')
--BEGIN
-- --DECLARE @USER_TPGD VARCHAR(15)
-- --SET @USER_TPGD =(SELECT TOP 1 TLNANME FROM TL_USER WHERE SECUR_CODE =@p_DEP_ID AND RoleName IN ('TPGD'))
-- DECLARE @USER_TPGD VARCHAR(15)
-- --SET @USER_TPGD =(SELECT TOP 1 TLNANME FROM TL_USER WHERE SECUR_CODE =@p_DEP_ID AND
-- --(RoleName IN ('TPGD') OR RoleName IN (SELECT ROLE_OLD FROM TL_SYS_ROLE_MAPPING WHERE ROLE_NEW ='TPGD')))
-- SET @USER_TPGD =(SELECT TOP 1 TLNANME FROM TL_USER WHERE SECUR_CODE =@p_DEP_ID AND RoleName IN ('TPGD'))
-- IF(@USER_TPGD IS NULL OR @USER_TPGD ='')
-- BEGIN
-- SET @USER_TPGD = (SELECT TOP 1 TLNANME FROM TL_USER_V2 WHERE TLSUBBRID = @p_BRANCH_CREATE
-- AND RoleName ='TPGD')
-- END
-- UPDATE TR_REQ_PAYMENT SET TRASFER_USER_RECIVE =@USER_TPGD WHERE REQ_PAY_ID =@p_REQ_PAY_ID
--END
IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE TRASFER_USER_RECIVE <> '' AND TRASFER_USER_RECIVE IS NOT NULL AND REQ_PAY_ID =@p_REQ_PAY_ID) AND @BRANCH_TYPE_CR ='PGD')
BEGIN
SELECT '-1' as Result, '' REQ_PAY_ID, N'Cấp độ phòng giao dịch vui lòng không được chọn cấp phê duyệt trung gian' ErrorDesc
RETURN '-1'
END
IF(@p_REQ_TYPE <> 'I')
BEGIN
IF(NOT EXISTS(SELECT * FROM TR_REQ_PAY_BUDGET WHERE REQ_PAY_ID =@p_REQ_PAY_ID))
BEGIN
SELECT '-1' as Result, '' REQ_PAY_ID, N'Thông tin hạng mục ngân sách và chi phí không được để trống. Vui lòng chọn ngân sách và chi phí' ErrorDesc
RETURN '-1'
END
--IF(ISNULL(@SUM_USE_REAL,0) - ISNULL(@SUM_PAY_BACK,0) <> @SUM_PHUONG_THUC)
--BEGIN
-- SELECT '-1' as Result, '' REQ_PAY_ID, N'Số tiền phương thức thanh toán tương ứng với số tiền thanh toán trừ số tiền hoàn tạm ứng: ' + FORMAT((ISNULL(@SUM_USE_REAL,0) - ISNULL(@SUM_PAY_BACK,0)),'#,#', 'vi-VN') ErrorDesc
-- RETURN '-1'
--END
IF(ROUND(@SUM_THANH_TOAN,0) <> ROUND(@SUM_PHUONG_THUC,0))
BEGIN
SELECT '-1' as Result, '' REQ_PAY_ID, N'Số tiền phương thức thanh toán phải bằng số tiền bạn cần thanh toán là: ' + FORMAT(SUM(@SUM_THANH_TOAN),'#,#', 'vi-VN') ErrorDesc
RETURN '-1'
END
END
ELSE
BEGIN
IF(ISNULL(@SUM_USE_REAL,0) >0)
BEGIN
IF(NOT EXISTS(SELECT * FROM TR_REQ_PAY_BUDGET WHERE REQ_PAY_ID =@p_REQ_PAY_ID))
BEGIN
SELECT '-1' as Result, '' REQ_PAY_ID, N'Thông tin hạng mục ngân sách và chi phí không được để trống. Vui lòng chọn ngân sách và chi phí' ErrorDesc
RETURN '-1'
END
IF(ROUND(@SUM_NGAN_SACH,0) <> ROUND(@SUM_USE_REAL,0))
BEGIN
SELECT '-1' as Result, '' REQ_PAY_ID, N'Số tiền sử dụng ngân sách và chi phí phải bằng số tiền sử dụng thực tế trên lưới hoàn tạm ứng: ' + FORMAT(SUM(@SUM_USE_REAL),'#,#', 'vi-VN') ErrorDesc
RETURN '-1'
END
IF(ISNULL(@SUM_USE_REAL,0) <> (ISNULL(@SUM_SERVICE,0) + ISNULL(@SUM_PERIOD,0) + ISNULL(@SUM_SCHEDULE,0)))
BEGIN
SELECT '-1' as Result, '' REQ_PAY_ID, N'Tổng số tiền thanh toán dịch vụ, thanh toán nhà cung cấp, thanh toán định kì phải bằng số tiền sử dụng thực tế trên lưới hoàn tạm ứng: ' + FORMAT(SUM(@SUM_USE_REAL),'#,#', 'vi-VN')
+ ' ' + FORMAT(SUM(@SUM_SERVICE),'#,#', 'vi-VN') + ' ' + FORMAT(SUM(@SUM_PERIOD),'#,#', 'vi-VN') + ' ' + FORMAT(SUM(@SUM_SCHEDULE),'#,#', 'vi-VN') ErrorDesc
RETURN '-1'
END
END
--IF(ABS((ISNULL(@SUM_ADD,0) - ISNULL(@SUM_PAY_BACK,0))) <> @SUM_PHUONG_THUC)
IF(((ISNULL(@SUM_ADD,0) - ISNULL(@SUM_PAY_BACK,0))) <> @SUM_PHUONG_THUC)
BEGIN
SELECT '-1' as Result, '' REQ_PAY_ID, N'Số tiền phương thức thanh toán (hiệu số thanh toán và trích từ tai khoản) tương ứng với số tiền chi bổ sung trừ số tiền hoàn tạm ứng: ' + FORMAT(ABS((ISNULL(@SUM_ADD,0) - ISNULL(@SUM_PAY_BACK,0))),'#,#', 'vi-VN') + ' ' + CAST(@SUM_PHUONG_THUC as nvarchar) ErrorDesc
RETURN '-1'
END
END
IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS='U'))
BEGIN
SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đã được gửi phê duyệt trước đó! Vui lòng đợi các cấp phê duyệt' ErrorDesc
RETURN '-1'
END
-- CAP NHAT TINH TRANG DUYET KE TOAN LA DANG XU LY
UPDATE TR_REQ_PAYMENT SET AUTH_STATUS ='U', PROCESS = NULL,CREATE_DT = GETDATE() WHERE REQ_PAY_ID =@p_REQ_PAY_ID
INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
VALUES(@p_REQ_PAY_ID,'SEND',@p_MAKER_ID,GETDATE(), N'Đơn vị gửi phê duyệt',N'Đơn vị tạo phiếu thanh toán và gửi phê duyệt')
--- Luu log chinh sua
INSERT INTO TR_REQ_PAY_INVOICE_LOG SELECT * FROM TR_REQ_PAY_INVOICE WHERE REQ_PAY_ID =@p_REQ_PAY_ID
-----
UPDATE TR_REQ_PAY_SCHEDULE SET AMT_REMAIN =0.00 WHERE AMT_REMAIN <0
UPDATE TR_REQ_PAY_BUDGET SET AMT_APP= ROUND(AMT_APP,0), AMT_REMAIN = ROUND(AMT_REMAIN,0)
IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE (TRASFER_USER_RECIVE <> '' AND TRASFER_USER_RECIVE IS NOT NULL) AND REQ_PAY_ID =@p_REQ_PAY_ID))
BEGIN
SELECT '4' as Result, @p_REQ_PAY_ID REQ_PAY_ID, N'Đơn vị gửi phiếu phê duyệt phiếu đề nghị thanh toán số: ' + ISNULL(@p_REQ_PAY_CODE,'') + N' thành công. Vui lòng đợi cấp phê duyệt trung gian xác nhận phiếu' ErrorDesc
RETURN '4'
END
ELSE
BEGIN
SELECT '4' as Result, @p_REQ_PAY_ID REQ_PAY_ID, N'Đơn vị gửi phiếu phê duyệt phiếu đề nghị thanh toán số: ' + ISNULL(@p_REQ_PAY_CODE,'') + N' thành công. Vui lòng đợi trưởng đơn vị phê duyệt phiếu' ErrorDesc
RETURN '4'
END
END
--IF(1=1)
--GOTO ABORT
SELECT '0' as Result, @p_REQ_PAY_ID REQ_PAY_ID, '' ErrorDesc
RETURN '0'
ABORT:
BEGIN
ROLLBACK TRANSACTION
CLOSE XmlData;
DEALLOCATE XmlData;
CLOSE XmlDataPay;
DEALLOCATE XmlDataPay;
Close XmlDataMethod;
Close XmlDataCat;
CLOSE XmlDataService;
CLOSE XmlDataSchedule;
Deallocate XmlDataMethod;
Deallocate XmlDataCat;
DEALLOCATE XmlDataService;
DEALLOCATE XmlDataSchedule;
SELECT '-1' as Result, '' REQ_PAY_ID, '' ErrorDesc
RETURN '-1'
End
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Creating [dbo].[BUD_CONTRACT_CUST_MASTER_Search]'
GO
CREATE PROCEDURE [dbo].[BUD_CONTRACT_CUST_MASTER_Search]
@p_CONTRACT_ID varchar(15) = NULL,
@p_BUILDING_ID varchar(15) = NULL,
@p_CONTRACT_NO nvarchar(100) = NULL,
@p_VERSION_NO int =0,
@p_CUST_ID varchar(15) = NULL,
@p_INPUT_DT VARCHAR(20) = NULL,
@p_AMEND_DT VARCHAR(20) = NULL,
@p_FROM_DT VARCHAR(20) = NULL,
@p_TO_DATE VARCHAR(20) = NULL,
@p_CLOSE_DT VARCHAR(20) = NULL,
@p_MONTHS int = NULL,
@p_RENT_PRICE numeric(18) = NULL,
@p_NOTES NVARCHAR(MAX) = NULL,
@p_BRANCH_ID VARCHAR(15) = NULL,
@p_RECORD_STATUS varchar(1) = NULL,
@p_AUTH_STATUS varchar(1) = NULL,
@p_STATUS VARCHAR(1) = NULL,
@p_MAKER_ID varchar(15) = NULL,
@p_CREATE_DT VARCHAR(20) = NULL,
@p_CHECKER_ID varchar(15) = NULL,
@p_APPROVE_DT VARCHAR(20) = NULL,
@p_XML_TEMP xml = NULL,
@p_VAT DECIMAL(18,0)= NULL,
@p_VAT_AMT DECIMAL(18,0) =NULL,
@p_DEPOSITS_AMT DECIMAL(18,0) =NULL,
@p_PAYMENT_SHEDULE NVARCHAR(500)= NULL,
@p_TOP INT = 10,
@p_FROM_MONTH int= NULL,
@p_TO_MONTH int = NULL,
@p_FROMDATE VARCHAR(25) = NULL,
@p_TODATE VARCHAR(25)= NULL,
@p_LEVEL VARCHAR(15)='ALL',
@p_USER_LOGIN VARCHAR(15) -----BAODNQ 4/1/2021: Truyền thêm USER_LOGIN----
AS
BEGIN -- PAGING
declare @p_BRANCH_LOGIN VARCHAR(15)
--set @p_BRANCH_LOGIN = (select TLSUBBRID from TL_USER where TLNANME=@p_MAKER_ID)
set @p_BRANCH_LOGIN = (select TLSUBBRID from TL_USER where TLNANME=@p_USER_LOGIN)
DECLARE @tmp table(BRANCH_ID varchar(15))
insert into @tmp SELECT BRANCH_ID FROM [dbo].[CM_BRANCH_GETCHILDID](@p_BRANCH_LOGIN)
--------BAODNQ 5/1/2021: Khai báo role USER_LOGIN-------------------
DECLARE @p_USER_LOGIN_ROLE VARCHAR(50)
SET @p_USER_LOGIN_ROLE = (SELECT RoleName FROM TL_USER WHERE TLNANME = @p_USER_LOGIN)
-----------
IF(@p_TOP IS NULL OR @P_TOP = '' OR @P_TOP = 0)
-- PAGING BEGIN
SELECT A.*,B.AUTH_STATUS_NAME,C.NUM_FLOOR,
C.BUILDING_NAME,BR.BRANCH_NAME,LS.CUSTOMER_NAME,CM.CONTENT AS TINHTRANG_HOPDONG,
-----BAODNQ 30/12/2021: Lấy thêm cột full name----
D.TLFullName AS SIGN_USER_FULLNAME
-- SELECT END
FROM BUD_CONTRACT_CUST_MASTER A
LEFT JOIN CM_AUTH_STATUS B ON A.AUTH_STATUS=B.AUTH_STATUS
LEFT JOIN BUD_MASTER C ON A.BUILDING_ID = C.BUILDING_ID
LEFT JOIN CM_BRANCH BR ON BR.BRANCH_ID = A.BRANCH_ID
LEFT JOIN LS_CUSTOMER LS ON LS.CUSTOMER_ID = A.CUST_ID
LEFT JOIN CM_ALLCODE CM ON A.[STATUS] = CM.CDVAL AND CDNAME='CONTRACT_STATUS' AND CDTYPE='CONTRACT'
----BAODNQ 30/12/2021: Kết thêm bảng TL_USER----
LEFT JOIN TL_USER D ON A.SIGN_USER = D.TLNANME
WHERE 1 = 1
AND (A.CONTRACT_ID LIKE '%' + @p_CONTRACT_ID + '%' OR @p_CONTRACT_ID IS NULL OR @p_CONTRACT_ID = '')
AND (A.BUILDING_ID LIKE '%' + @p_BUILDING_ID + '%' OR @p_BUILDING_ID IS NULL OR @p_BUILDING_ID = '')
AND (A.CONTRACT_NO LIKE '%' + @p_CONTRACT_NO + '%' OR @p_CONTRACT_NO IS NULL OR @p_CONTRACT_NO = '')
AND (A.CUST_ID LIKE '%' + @p_CUST_ID + '%' OR @p_CUST_ID IS NULL OR @p_CUST_ID = '')
AND (A.INPUT_DT =CONVERT(DATE, @p_INPUT_DT, 103) OR @p_INPUT_DT IS NULL OR @p_INPUT_DT = '')
AND (A.AMEND_DT =CONVERT(DATE, @p_AMEND_DT, 103) OR @p_AMEND_DT IS NULL OR @p_AMEND_DT = '')
AND (A.TO_DATE =CONVERT(DATE, @p_TO_DATE, 103) OR @p_TO_DATE IS NULL OR @p_TO_DATE = '')
AND (A.CLOSE_DT =CONVERT(DATE, @p_CLOSE_DT, 103) OR @p_CLOSE_DT IS NULL OR @p_CLOSE_DT = '')
AND (A.RENT_PRICE = @p_RENT_PRICE OR @p_RENT_PRICE IS NULL OR @p_RENT_PRICE =0)
AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '')
AND (A.AUTH_STATUS LIKE '%' + @p_AUTH_STATUS + '%' OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '')
AND (A.STATUS LIKE '%' + @p_STATUS + '%' OR @p_STATUS IS NULL OR @p_STATUS = '')
AND (CONVERT(DATE,A.CREATE_DT,103) >=CONVERT(DATE, @p_FROMDATE, 103) OR @p_FROMDATE IS NULL OR @p_FROMDATE = '')
AND (CONVERT(DATE,A.CREATE_DT,103) <=CONVERT(DATE, @p_TODATE, 103) OR @p_TODATE IS NULL OR @p_TODATE = '')
AND (ISNULL(A.MONTHS,0) >= @p_FROM_MONTH OR @p_FROM_MONTH IS NULL OR @p_FROM_MONTH = 0)
AND (ISNULL(A.MONTHS,0) <= @p_TO_MONTH OR @p_TO_MONTH IS NULL OR @p_TO_MONTH = 0)
AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '')
AND (A.APPROVE_DT =CONVERT(DATE, @p_APPROVE_DT, 103) OR @p_APPROVE_DT IS NULL OR @p_APPROVE_DT = '')
AND (A.BRANCH_ID IN (SELECT BRANCH_ID FROM @tmp))
-----BAODNQ 4/1/2021: Thêm điều kiện select----
AND (A.MAKER_ID = @p_USER_LOGIN
OR (A.SIGN_USER = @p_USER_LOGIN AND A.IS_SEND_APPR = 'Y')
OR ((@p_USER_LOGIN_ROLE IN ('GDDV','PGD', 'TP', 'PP','TPGD','PPGD'))
AND A.IS_SEND_APPR = 'Y'
AND (
(ISNULL(A.SIGN_USER,'') ='' OR ((ISNULL(A.SIGN_USER,'') <>'' AND A.SIGN_DT IS NOT NULL )))
)
)
)
-- PAGING END
ELSE
-- PAGING BEGIN
SELECT TOP(CONVERT(INT,@P_TOP))A.*,B.AUTH_STATUS_NAME,C.NUM_FLOOR,
C.BUILDING_NAME,BR.BRANCH_NAME,LS.CUSTOMER_NAME,CM.CONTENT AS TINHTRANG_HOPDONG,
-----BAODNQ 30/12/2021: Lấy thêm cột full name----
D.TLFullName AS SIGN_USER_FULLNAME
-- SELECT END
FROM BUD_CONTRACT_CUST_MASTER A
LEFT JOIN CM_AUTH_STATUS B ON A.AUTH_STATUS=B.AUTH_STATUS
LEFT JOIN BUD_MASTER C ON A.BUILDING_ID = C.BUILDING_ID
LEFT JOIN CM_BRANCH BR ON BR.BRANCH_ID = A.BRANCH_ID
LEFT JOIN LS_CUSTOMER LS ON LS.CUSTOMER_ID = A.CUST_ID
LEFT JOIN CM_ALLCODE CM ON A.[STATUS] = CM.CDVAL AND CDNAME='CONTRACT_STATUS' AND CDTYPE='CONTRACT'
----BAODNQ 30/12/2021: Kết thêm bảng TL_USER----
LEFT JOIN TL_USER D ON A.SIGN_USER = D.TLNANME
WHERE 1 = 1
AND (A.CONTRACT_ID LIKE '%' + @p_CONTRACT_ID + '%' OR @p_CONTRACT_ID IS NULL OR @p_CONTRACT_ID = '')
AND (A.BUILDING_ID LIKE '%' + @p_BUILDING_ID + '%' OR @p_BUILDING_ID IS NULL OR @p_BUILDING_ID = '')
AND (A.CONTRACT_NO LIKE '%' + @p_CONTRACT_NO + '%' OR @p_CONTRACT_NO IS NULL OR @p_CONTRACT_NO = '')
AND (A.CUST_ID LIKE '%' + @p_CUST_ID + '%' OR @p_CUST_ID IS NULL OR @p_CUST_ID = '')
AND (A.INPUT_DT =CONVERT(DATE, @p_INPUT_DT, 103) OR @p_INPUT_DT IS NULL OR @p_INPUT_DT = '')
AND (A.AMEND_DT =CONVERT(DATE, @p_AMEND_DT, 103) OR @p_AMEND_DT IS NULL OR @p_AMEND_DT = '')
AND (A.TO_DATE =CONVERT(DATE, @p_TO_DATE, 103) OR @p_TO_DATE IS NULL OR @p_TO_DATE = '')
AND (A.CLOSE_DT =CONVERT(DATE, @p_CLOSE_DT, 103) OR @p_CLOSE_DT IS NULL OR @p_CLOSE_DT = '')
AND (A.RENT_PRICE = @p_RENT_PRICE OR @p_RENT_PRICE IS NULL OR @p_RENT_PRICE = 0)
AND (A.RECORD_STATUS =1)
AND (A.AUTH_STATUS LIKE '%' + @p_AUTH_STATUS + '%' OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '')
AND (A.STATUS LIKE '%' + @p_STATUS + '%' OR @p_STATUS IS NULL OR @p_STATUS = '')
AND (CONVERT(DATE,A.CREATE_DT,103) >=CONVERT(DATE, @p_FROMDATE, 103) OR @p_FROMDATE IS NULL OR @p_FROMDATE = '')
AND (CONVERT(DATE,A.CREATE_DT,103) <=CONVERT(DATE, @p_TODATE, 103) OR @p_TODATE IS NULL OR @p_TODATE = '')
AND (ISNULL(A.MONTHS,0) >= @p_FROM_MONTH OR @p_FROM_MONTH IS NULL OR @p_FROM_MONTH = 0)
AND (ISNULL(A.MONTHS,0) <= @p_TO_MONTH OR @p_TO_MONTH IS NULL OR @p_TO_MONTH = 0)
AND ((
(@p_LEVEL = 'ALL' AND A.BRANCH_ID IN (SELECT BRANCH_ID from @tmp))
OR (@p_LEVEL = 'UNIT' AND A.BRANCH_ID = @p_BRANCH_ID)
)
OR @P_BRANCH_ID IS NULL OR @P_BRANCH_ID = '')
--AND (A.BRANCH_ID IN (SELECT BRANCH_ID FROM @tmp))
AND ( A.VERSION_NO =(SELECT MAX(VERSION_NO)
FROM BUD_CONTRACT_CUST_MASTER
WHERE CONTRACT_ID = A.CONTRACT_ID))
-----BAODNQ 4/1/2021: Thêm điều kiện select----
AND (A.MAKER_ID = @p_USER_LOGIN
OR (A.SIGN_USER = @p_USER_LOGIN AND A.IS_SEND_APPR = 'Y')
OR ((@p_USER_LOGIN_ROLE IN ('GDDV','PGD', 'TP', 'PP','TPGD','PPGD'))
AND A.IS_SEND_APPR = 'Y'
AND (
(ISNULL(A.SIGN_USER,'') ='' OR ((ISNULL(A.SIGN_USER,'') <>'' AND A.SIGN_DT IS NOT NULL )))
)
)
)
-- PAGING END
END -- PAGING
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Altering [dbo].[NF_MESSAGE_GetContent]'
GO
ALTER PROCEDURE [dbo].[NF_MESSAGE_GetContent]
@p_TYPE VARCHAR(100) = NULL,
@p_ID varchar(500) = NULL
AS
DECLARE @l_LST_REQ_ID TABLE (
[ID] [int] IDENTITY(1,1) NOT NULL,
[REQ_PAY_ID] [VARCHAR](50) NULL)
INSERT INTO @l_LST_REQ_ID SELECT VALUE FROM WSISPLIT(@p_ID,',')
DECLARE @footer NVARCHAR(4000) = N'
P/s: Vui lòng không phản hồi email này. Đây là email được tạo ra bởi hệ thống tự động.
Thanks and Best Regards'
DECLARE @CODE NVARCHAR(1000), @APPROVEDT DATETIME, @DATETIME VARCHAR(100), @URL VARCHAR(1000)
DECLARE @TILTER_MAIL NVARCHAR(1000) ='', @LINK_UAT NVARCHAR(250)= ''
SET @TILTER_MAIL =ISNULL((SELECT TOP 1 TITLE FROM TL_MESSAGE WHERE PROCESS_ID ='TIL'),N'[PHẦN MỀM QUẢN LÝ TÀI SẢN - AMS]')
--INSERT INTO TL_MESSAGE VALUES ('UAT',N'Đường dẫn truy cập: http://banviet.phanmemquanlytaisan.com','')
--SET @URL = (SELECT TOP 1 TITLE FROM TL_MESSAGE WHERE PROCESS_ID = 'APP')
SET @URL = 'http://localhost:4200/app/admin/'
SET @LINK_UAT =N'
'+(SELECT TOP 1 TITLE FROM TL_MESSAGE WHERE PROCESS_ID = 'UAT')
--DUYET PO
IF @p_TYPE = 'TR_PO_MASTER_Approve'
BEGIN
SELECT @CODE = PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @p_ID
--SET @DATETIME = (SELECT CONVERT(CHAR(11), @APPROVEDT, 103) + LTRIM(RIGHT(CONVERT(CHAR(20), @APPROVEDT, 22), 11)))
SELECT N'[gAMS_Sacombank] Thông báo PO đã được duyệt' AS TITLE,
N'Dear All' +
N',
Số PO: ' + @CODE + N' đã được duyệt.' + @footer
AS MESSAGECONTENT
RETURN 0
END
--DUYET CAP NHAT DON HANG
IF @p_TYPE = 'TR_PO_UP_MASTER_App'
BEGIN
SELECT @CODE = PO_CODE, @APPROVEDT = APPROVE_DT FROM TR_PO_UP_MASTER WHERE PO_UP_ID = @p_ID
SET @DATETIME = (SELECT CONVERT(CHAR(11), @APPROVEDT, 103) + LTRIM(RIGHT(CONVERT(CHAR(20), @APPROVEDT, 22), 11)))
SELECT N'[gAMS_Sacombank] Thông báo đã cập nhập đơn hàng' AS TITLE,
N'Dear All'+
N',
Số PO: ' + @CODE + N' đã nhận hàng vào lúc ' + @DATETIME + @footer
AS MESSAGECONTENT
RETURN 0
END
--DUYET PO SUA CHUA
IF @p_TYPE = 'TR_PO_REPAIR_Approve'
BEGIN
SELECT @CODE = PO_CODE FROM TR_PO_REPAIR WHERE PO_REPAIR_ID = @p_ID
SELECT N'[gAMS_Sacombank] Thông báo PO sửa chữa đã được duyệt' AS TITLE,
N'Dear All' +
N',
Số PO: ' + @CODE + N' đã được duyệt.' + @footer
AS MESSAGECONTENT
RETURN 0
END
--DUYET XUAT SU DUNG DON LE
IF @p_TYPE = 'ASS_USE_SearchResult'
BEGIN
SELECT @CODE = ASSET_CODE FROM ASS_MASTER WHERE ASSET_ID = (SELECT A.ASSET_ID FROM ASS_USE A WHERE A.USE_ID = @p_ID)
SELECT N'[gAMS_Sacombank] Thông báo xuất kho được duyệt' AS TITLE,
N'Dear All' +
N',
Tài sản: ' + @CODE + N' đã được xuất sử dụng.' + @footer
AS MESSAGECONTENT
RETURN 0
END
--DUYET XUAT SU DUNG HANG LOAT
IF @p_TYPE = 'ASS_USE_MULTI_MASTER_SearchResult'
BEGIN
SET @CODE = (SELECT STUFF((SELECT '; ' + DTA.PO_CODE
FROM TR_PO_MASTER DTA
INNER JOIN
(
SELECT A.PO_ID FROM ASS_MASTER_PO A
INNER JOIN ASS_USE_MULTI_DT B ON A.ASSET_ID = B.ASSET_ID AND B.USER_MASTER_ID = @p_ID
GROUP BY A.PO_ID
) PODT ON DTA.PO_ID = PODT.PO_ID
FOR XML PATH('')
),1,1,'')
)
SELECT N'[gAMS_Sacombank] Thông báo xuất kho được duyệt' AS TITLE,
N'Dear All' +
N',
Tài sản thuộc PO: ' + @CODE + N' đã được xuất sử dụng.' + @footer
AS MESSAGECONTENT
RETURN 0
END
--DUYET NHAP MOI VA XUAT SU DUNG CUNG LUC
IF @p_TYPE = 'ASS_ADDNEW_SearchResult'
BEGIN
SET @CODE = (SELECT STUFF((SELECT '; ' + DTA.PO_CODE
FROM ASS_ADDNEW_PO DTA
WHERE DTA.ADDNEW_ID = @p_ID
FOR XML PATH('')
),1,1,'')
)
SELECT N'[gAMS_Sacombank] Thông báo xuất kho được duyệt' AS TITLE,
N'Dear All' +
N',
Tài sản thuộc PO: ' + @CODE + N' đã được xuất sử dụng.' + @footer
AS MESSAGECONTENT
RETURN 0
END
-- NOI DUNG GUI EMAIL
IF @p_TYPE = 'TR_REQ_ADVANCE_PAYMENT_SEND_APR'
BEGIN
SET @CODE = (SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_ID)
SELECT @TILTER_MAIL+N' Thông báo chờ xác nhận phiếu đề nghị tạm ứng' AS TITLE,
N'Dear All' +
N',
Phiếu đề nghị tạm ứng số : ' + @CODE + N' đang chờ xác nhận.' + @footer
AS MESSAGECONTENT
RETURN 0
END
IF @p_TYPE = 'TR_REQ_ADVANCE_PAYMENT_CONFIRM'
BEGIN
SET @CODE = (SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_ID)
SELECT @TILTER_MAIL+N' Thông báo chờ phê duyệt phiếu đề nghị tạm ứng' AS TITLE,
N'Dear All' +
N',
Phiếu đề nghị tạm ứng số : ' + @CODE + N' đang chờ phê duyệt.' + @footer
AS MESSAGECONTENT
RETURN 0
END
IF @p_TYPE = 'TR_REQ_ADVANCE_PAYMENT_APR'
BEGIN
SET @CODE = (SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_ID)
IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID=@p_ID AND REQ_PAY_ID IN (SELECT REQ_ID FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_ID AND STATUS='C' AND ROLE_USER IN ('TGD','HDQT'))))
BEGIN
SELECT @TILTER_MAIL+N' Thông báo chờ phê duyệt phiếu đề nghị tạm ứng' AS TITLE,
N'Dear All' +
N',
Phiếu đề nghị tạm ứng số : ' + @CODE + N' đang chờ bạn phê duyệt.' +
--+
--N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt phiếu đề nghị tạm ứng.'
N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt phiếu đề nghị tạm ứng.'
+
+@footer
AS MESSAGECONTENT
RETURN 0
END
ELSE IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID=@p_ID AND REQ_PAY_ID IN (SELECT REQ_ID FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_ID AND STATUS='C' AND ROLE_USER IN ('TKTGD'))))
BEGIN
IF(NOT EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_ID AND STATUS_JOB ='C' AND TLNAME IN (SELECT TLNANME FROM TL_USER WHERE RoleName ='TKTGD')))
BEGIN
SET @CODE = (SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_ID)
SELECT @TILTER_MAIL+N' Thông báo chờ điều phối / phê duyệt phiếu đề nghị tạm ứng' AS TITLE,
N'Dear All' +
N'
Phiếu đề nghị tạm ứng số : ' + @CODE + N' đang chờ bạn:'+
N'
A- Điều phối cho nhân viên xử lý (Sử dụng màn hình Điều phối tạm ứng / thanh toán, nằm trong phân hệ Quản lý thanh toán/ tạm ứng).'+
N',
B- Hoặc bạn có thể trực tiếp phê duyệt không cần điều phối (Sử dụng Màn hình Quản lý thanh toán/ tạm ứng, nằm trong phân hệ Quản lý thanh toán/ tạm ứng).' + ISNULL(@LINK_UAT,'') + @footer
AS MESSAGECONTENT
RETURN 0
END
ELSE
BEGIN
SET @CODE = (SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_ID)
SELECT @TILTER_MAIL+N' Thông báo chờ chờ phê duyệt cấp Văn Phòng Thư Kí TGĐ' AS TITLE,
N'Dear All' +
N',
Phiếu đề nghị tạm ứng số : ' + @CODE + N' đã được nhân viên xử lý gửi phê duyệt thành công. Bạn có thể phê duyệt phiếu. Phiếu sẽ chuyển đến cấp Tổng Giám Đốc sau khi phê duyệt thành công.' + @footer
AS MESSAGECONTENT
RETURN 0
END
END
-- NEU BUOC XU LY HIEN TAI CHO THU KI HOI DONG QUAN TRI
ELSE IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID=@p_ID AND REQ_PAY_ID IN (SELECT REQ_ID FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_ID AND STATUS='C' AND ROLE_USER IN ('TKHDQT'))))
BEGIN
IF(NOT EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_ID AND STATUS_JOB ='C' AND TLNAME IN (SELECT TLNANME FROM TL_USER WHERE RoleName ='TKHDQT')))
BEGIN
SET @CODE = (SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_ID)
SELECT @TILTER_MAIL+N' Thông báo chờ điều phối / phê duyệt phiếu đề nghị tạm ứng' AS TITLE,
N'Dear All' +
N',
Phiếu đề nghị tạm ứng số : ' + @CODE + N' đang chờ bạn:'+
N'
A- Điều phối cho nhân viên xử lý (Sử dụng màn hình Điều phối tạm ứng / thanh toán, nằm trong phân hệ Quản lý thanh toán/ tạm ứng).'+
N',
B- Hoặc bạn có thể trực tiếp phê duyệt không cần điều phối ( Sử dụng Màn hình Phiếu đề nghị tạm ứng, nằm trong phân hệ Quản lý thanh toán/ tạm ứng).' + ISNULL(@LINK_UAT,'') +
@footer
AS MESSAGECONTENT
RETURN 0
END
ELSE
BEGIN
SET @CODE = (SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_ID)
SELECT @TILTER_MAIL+N' Thông báo chờ chờ phê duyệt cấp Văn Phòng Thư Kí HĐQT' AS TITLE,
N'Dear All' +
N',
Phiếu đề nghị tạm ứng số : ' + @CODE + N' đã được nhân viên xử lý gửi phê duyệt thành công. Bạn có thể phê duyệt phiếu. Phiếu sẽ chuyển đến cấp Hội Đồng Quán Trị sau khi phê duyệt thành công.' + @footer
AS MESSAGECONTENT
RETURN 0
END
END
--
ELSE
BEGIN
IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID=@p_ID AND AUTH_STATUS ='A'))
BEGIN
SELECT @TILTER_MAIL+N' Thông báo chờ kiểm soát viên điều phối phiếu đề nghị tạm ứng' AS TITLE,
N'Dear All' +
N',
Phiếu đề nghị tạm ứng số : ' + @CODE + N' đang chờ kiểm soát viên điều phối cho giao dịch viên.' + @footer
AS MESSAGECONTENT
RETURN 0
END
ELSE
BEGIN
SET @CODE = (SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_ID)
--SET @DATETIME = (SELECT CONVERT(CHAR(11), @APPROVEDT, 103) + LTRIM(RIGHT(CONVERT(CHAR(20), @APPROVEDT, 22), 11)))
SELECT N'[PHẦN MỀM QUẢN LÝ TÀI SẢN - AMS] Thông báo chờ phê duyệt phiếu đề nghị tạm ứng' AS TITLE,
N'Dear All' +
N',
Phiếu đề nghị tạm ứng số : ' + @CODE + N' đang chờ phê duyệt.' + @footer
AS MESSAGECONTENT
RETURN 0
END
END
RETURN 0
END
-- GDV XỬ LÝ XONG GỬI LẠI KẾ TOÁN
IF @p_TYPE = 'TR_REQ_ADVANCE_PAYMENT_KT_SEND_APR'
BEGIN
SET @CODE = (SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_ID)
SELECT @TILTER_MAIL+N' Thông báo chờ kiểm soát phê duyệt phiếu đề nghị tạm ứng' AS TITLE,
N'Dear All' +
N',
Phiếu đề nghị tạm ứng số : ' + @CODE + N' đang chờ kiểm soát viên phê duyệt.' + @footer
AS MESSAGECONTENT
RETURN 0
END
-- KSV PHÊ DUYỆT XONG THÔNG BÁO CHO NGƯỜI TẠO VÀ GIAO DỊCH VIÊN
-- GDV XỬ LÝ XONG GỬI LẠI KẾ TOÁN
IF @p_TYPE = 'TR_REQ_ADVANCE_PAYMENT_KT_APPR'
BEGIN
SET @CODE = (SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_ID)
SELECT @TILTER_MAIL+N' Thông báo phiếu tạm ứng đã được kiểm soát viên phê duyệt' AS TITLE,
N'Dear All' +
N',
Phiếu đề nghị tạm ứng số : ' + @CODE + N' đã được kiểm soát viên phê duyệt .' + @footer
AS MESSAGECONTENT
RETURN 0
END
--------- PHIẾU ĐỀ NGHỊ THANH TOÁN ---------------------------------
-------------------------------------------------------------------------
IF @p_TYPE = 'TR_REQ_PAYMENT_SEND_APR'
BEGIN
SET @CODE = (SELECT REQ_PAY_CODE FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_ID)
--SET @DATETIME = (SELECT CONVERT(CHAR(11), @APPROVEDT, 103) + LTRIM(RIGHT(CONVERT(CHAR(20), @APPROVEDT, 22), 11)))
SELECT @TILTER_MAIL+N' Thông báo chờ xác nhận phiếu đề nghị thanh toán' AS TITLE,
N'Dear All' +
N',
Phiếu đề nghị thanh toán số : ' + @CODE + N' đang chờ xác nhận.' + @footer
AS MESSAGECONTENT
RETURN 0
END
IF @p_TYPE = 'TR_REQ_PAYMENT_CONFIRM'
BEGIN
SET @CODE = (SELECT REQ_PAY_CODE FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_ID)
--SET @DATETIME = (SELECT CONVERT(CHAR(11), @APPROVEDT, 103) + LTRIM(RIGHT(CONVERT(CHAR(20), @APPROVEDT, 22), 11)))
SELECT @TILTER_MAIL+N' Thông báo chờ phê duyệt phiếu đề nghị thanh toán' AS TITLE,
N'Dear All' +
N',
Phiếu đề nghị thanh toán số : ' + @CODE + N' đang chờ phê duyệt.' + @footer
AS MESSAGECONTENT
RETURN 0
END
IF @p_TYPE = 'TR_REQ_PAYMENT_APR'
BEGIN
SET @CODE = (SELECT REQ_PAY_CODE FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_ID)
--SET @DATETIME = (SELECT CONVERT(CHAR(11), @APPROVEDT, 103) + LTRIM(RIGHT(CONVERT(CHAR(20), @APPROVEDT, 22), 11)))
SELECT @TILTER_MAIL+N' Thông báo chờ kiểm soát viên điều phối phiếu đề nghị thanh toán' AS TITLE,
N'Dear All' +
N',
Phiếu đề nghị thanh toán số : ' + @CODE + N' đang chờ kiểm soát viên điều phối cho giao dịch viên.' + @footer
AS MESSAGECONTENT
RETURN 0
END
-- KSV DIEU PHOI TAM UNG CHO GDV
IF @p_TYPE = 'TR_REQ_TRANSFER'
BEGIN
IF(NOT EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM @l_LST_REQ_ID)))
BEGIN
SET @CODE = (select STUFF( (select '; ' + DTA.REQ_PAY_CODE FROM TR_REQ_PAYMENT DTA WHERE REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM @l_LST_REQ_ID)
FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, ''))
SELECT @TILTER_MAIL+N' Thông báo chờ giao dịch viên xử lý hạch toán phiếu đề nghị thanh toán' AS TITLE,
N'Dear All' +
N',
Phiếu đề nghị thanh toán số : ' + @CODE + N' đang chờ giao dịch viên xử lý hạch toán.' + @footer
AS MESSAGECONTENT
RETURN 0
END
ELSE
BEGIN
SET @CODE = (select STUFF( (select '; ' + DTA.REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT DTA WHERE REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM @l_LST_REQ_ID)
FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, ''))
IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID IN (SELECT REQ_PAY_ID FROM @l_LST_REQ_ID) AND STATUS ='C' AND ROLE_USER IN ('TKTGD')))
BEGIN
SELECT @TILTER_MAIL+N' Thông báo chờ giao dịch viên cập nhật ý kiến tại văn phòng Tổng Giám Đốc' AS TITLE,
N'Dear All' +
N',
Phiếu đề nghị tạm ứng số : ' + @CODE + N' đang chờ nhân viên tại văn phòng Tổng Giám Đốc xác nhận nội dung.' + @footer
AS MESSAGECONTENT
END
ELSE IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID IN (SELECT REQ_PAY_ID FROM @l_LST_REQ_ID) AND STATUS ='C' AND ROLE_USER IN ('TKHDQT')))
BEGIN
SELECT @TILTER_MAIL+N' Thông báo chờ giao dịch viên cập nhật ý kiến tại văn phòng Hội Đồng Quản Trí' AS TITLE,
N'Dear All' +
N',
Phiếu đề nghị tạm ứng số : ' + @CODE + N' đang chờ nhân viên tại văn phòng Hội Đồng Quản Trị xác nhận nội dung.' + @footer
AS MESSAGECONTENT
END
ELSE
BEGIN
SELECT @TILTER_MAIL+N' Thông báo chờ giao dịch viên xử lý hạch toán phiếu đề nghị tạm ứng' AS TITLE,
N'Dear All' +
N',
Phiếu đề nghị tạm ứng số : ' + @CODE + N' đang chờ giao dịch viên xử lý hạch toán.' + @footer
AS MESSAGECONTENT
END
RETURN 0
END
END
-- GDV XỬ LÝ XONG GỬI LẠI KẾ TOÁN
IF @p_TYPE = 'TR_REQ_PAYMENT_KT_SEND_APR'
BEGIN
SET @CODE = (SELECT REQ_PAY_CODE FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_ID)
SELECT @TILTER_MAIL+N' Thông báo chờ kiểm soát phê duyệt phiếu đề nghị thanh toán' AS TITLE,
N'Dear All' +
N',
Phiếu đề nghị thanh toán số : ' + @CODE + N' đang chờ kiểm soát viên phê duyệt.' + @footer
AS MESSAGECONTENT
RETURN 0
END
-- KSV PHÊ DUYỆT XONG THÔNG BÁO CHO NGƯỜI TẠO VÀ GIAO DỊCH VIÊN
-- GDV XỬ LÝ XONG GỬI LẠI KẾ TOÁN
IF @p_TYPE = 'TR_REQ_PAYMENT_KT_APR'
BEGIN
SET @CODE = (SELECT REQ_PAY_CODE FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_ID)
SELECT @TILTER_MAIL+N' Thông báo phiếu thanh toán đã được kiểm soát viên phê duyệt' AS TITLE,
N'Dear All' +
N',
Phiếu đề nghị thanh toán số : ' + @CODE + N' đã được kiểm soát viên phê duyệt .' + @footer
AS MESSAGECONTENT
RETURN 0
END
---------- TO TRINH CHU TRUONG
IF (@p_TYPE = 'PL_SEND_APP' OR @p_TYPE ='PL_REQUEST_DOC_App' OR @p_TYPE ='REQ_PROCESS_CHILD_Upd' OR @p_TYPE ='REQ_PROCESS_CHILD_App')
BEGIN
SET @CODE = (SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID =@p_ID)
IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID=@p_ID AND PROCESS_ID IN ('TGD','HDQT')))
BEGIN
SELECT @TILTER_MAIL+N' Thông báo tờ trình chủ trương cần phê duyệt' AS TITLE,
N'Dear All' +
N',
Tờ trình chủ trương số : ' + @CODE + N' đang chờ bạn phê duyệt .' +
--+
--N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt tờ trình.'
N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt tờ trình.'
+
@footer
AS MESSAGECONTENT
RETURN 0
END
ELSE
BEGIN
---- SETUP MAIL THU KI
IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID=@p_ID AND REQ_ID IN (SELECT REQ_ID FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_ID AND STATUS='C' AND ROLE_USER IN ('TKTGD'))))
BEGIN
IF(NOT EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_ID AND STATUS_JOB ='C' AND TLNAME IN (SELECT TLNANME FROM TL_USER WHERE RoleName ='TKTGD')))
BEGIN
SET @CODE = (SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID =@p_ID)
SELECT @TILTER_MAIL+N' Thông báo chờ điều phối / phê duyệt tờ trình chủ trương' AS TITLE,
N'Dear All' +
N',
Tờ trình số : ' + @CODE + N' đang chờ bạn điều phối cho nhân viên xử lý. Hoặc bạn có thể trực tiếp phê duyệt không cần điều phối.' +
N'
Màn hình: Quản lý kế hoạch / Điều phối công việc'+ @footer
AS MESSAGECONTENT
RETURN 0
END
ELSE
BEGIN
SET @CODE = (SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID =@p_ID)
SELECT @TILTER_MAIL+N' Thông báo chờ chờ phê duyệt cấp Văn Phòng Thư Kí TGĐ ' AS TITLE,
N'Dear All' +
N',
Tờ trình số : ' + @CODE + N' đã được nhân viên xử lý gửi phê duyệt thành công. Bạn có thể phê duyệt phiếu. Phiếu sẽ chuyển đến cấp Tổng Giám Đốc sau khi phê duyệt thành công.'
+ N'
Màn hình: Quản lý kế hoạch / Tờ trình chủ trương DVCM/DVDC'+
+ @footer
AS MESSAGECONTENT
RETURN 0
END
END
-- NEU BUOC XU LY HIEN TAI CHO THU KI HOI DONG QUAN TRI
ELSE IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID=@p_ID AND REQ_ID IN (SELECT REQ_ID FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_ID AND STATUS='C' AND ROLE_USER IN ('TKHDQT'))))
BEGIN
IF(NOT EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_ID AND STATUS_JOB ='C' AND TLNAME IN (SELECT TLNANME FROM TL_USER WHERE RoleName ='TKHDQT')))
BEGIN
SET @CODE = (SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID =@p_ID)
SELECT @TILTER_MAIL+N' Thông báo chờ điều phối / phê duyệt tờ trình' AS TITLE,
N'Dear All' +
N',
Tờ trình số : ' + @CODE + N' đang chờ bạn điều phối cho nhân viên xử lý. Hoặc bạn có thể trực tiếp phê duyệt không cần điều phối.' +
CHAR(10) +
N'Màn hình: Quản lý kế hoạch / Điều phối công việc'+ @footer
AS MESSAGECONTENT
RETURN 0
END
ELSE
BEGIN
SET @CODE = (SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID =@p_ID)
SELECT @TILTER_MAIL+N' Thông báo chờ chờ phê duyệt cấp Văn Phòng Thư Kí HĐQT' AS TITLE,
N'Dear All' +
N',
Tờ trình số : ' + @CODE + N' đã được nhân viên xử lý gửi phê duyệt thành công. Bạn có thể phê duyệt phiếu. Phiếu sẽ chuyển đến cấp Hội Đồng Quán Trị sau khi phê duyệt thành công.'
+ N'
Màn hình: Quản lý kế hoạch / Tờ trình chủ trương DVCM/DVDC'
+ @footer
AS MESSAGECONTENT
RETURN 0
END
END
---- END SETUP MAIL THU KI
--SET @DATETIME = (SELECT CONVERT(CHAR(11), @APPROVEDT, 103) + LTRIM(RIGHT(CONVERT(CHAR(20), @APPROVEDT, 22), 11)))
SELECT @TILTER_MAIL+N' Thông báo tờ trình chủ trương cần phê duyệt' AS TITLE,
N'Dear All' +
N',
Tờ trình chủ trương : ' + @CODE + N' đang chờ bạn phê duyệt . ' + @footer
AS MESSAGECONTENT
END
RETURN 0
END
IF ( @p_TYPE ='PL_REQ_PROCESS_CHILD_Ins')
BEGIN
SET @CODE = (select STUFF( (select '; ' + DTA.REQ_CODE FROM PL_REQUEST_DOC DTA WHERE REQ_ID IN (SELECT REQ_PAY_ID FROM @l_LST_REQ_ID)
FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, ''))
SELECT @TILTER_MAIL+N' Thông báo tờ trình chủ trương cần xử lý' AS TITLE,
N'Dear All' +
N',
Tờ trình số : ' + @CODE + N' đang chờ bạn xử lý . Vui lòng vào màn Quản lý kế hoạch / Tờ trình chủ trương DVCM - DVDC, tìm kiếm phiếu và xử lý' + @footer
AS MESSAGECONTENT
RETURN 0
END
ELSE IF(@p_TYPE='REQUEST_DOC_PROCESS_Approve')
BEGIN
SET @CODE = (SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID =@p_ID)
IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID=@p_ID AND PROCESS_ID IN ('TGD','HDQT')))
BEGIN
SELECT @TILTER_MAIL+N' Thông báo tờ trình chủ trương cần phê duyệt' AS TITLE,
N'Dear All' +
N',
Tờ trình chủ trương số : ' + @CODE + N' đang chờ bạn phê duyệt .' +
--+
--N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt tờ trình.'
N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt tờ trình.'
+
@footer
AS MESSAGECONTENT
RETURN 0
END
ELSE
BEGIN
---- SETUP MAIL THU KI
IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID=@p_ID AND REQ_ID IN (SELECT REQ_ID FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_ID AND STATUS='C' AND ROLE_USER IN ('TKTGD'))))
BEGIN
IF(NOT EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_ID AND STATUS_JOB ='C' AND TLNAME IN (SELECT TLNANME FROM TL_USER WHERE RoleName ='TKTGD')))
BEGIN
SET @CODE = (SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID =@p_ID)
SELECT @TILTER_MAIL+N' Thông báo chờ điều phối / phê duyệt tờ trình chủ trương' AS TITLE,
N'Dear All' +
N',
Tờ trình số : ' + @CODE + N' đang chờ bạn điều phối cho nhân viên xử lý. Hoặc bạn có thể trực tiếp phê duyệt không cần điều phối.' +
N'
Sử dụng Màn hình: Quản lý kế hoạch / Điều phối công việc'+ ISNULL(@LINK_UAT,'') + @footer
AS MESSAGECONTENT
RETURN 0
END
ELSE
BEGIN
SET @CODE = (SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID =@p_ID)
SELECT @TILTER_MAIL+N' Thông báo chờ chờ phê duyệt cấp Văn Phòng Thư Kí TGĐ' AS TITLE,
N'Dear All' +
N',
Tờ trình số : ' + @CODE + N' đã được nhân viên xử lý gửi phê duyệt thành công. Bạn có thể phê duyệt phiếu. Phiếu sẽ chuyển đến cấp Tổng Giám Đốc sau khi phê duyệt thành công.'
+N'
Sử dụng Màn hình: Quản lý kế hoạch / Tờ trình chủ trương DVCM - DVDC'+ ISNULL(@LINK_UAT,'') + @footer
AS MESSAGECONTENT
RETURN 0
END
END
-- NEU BUOC XU LY HIEN TAI CHO THU KI HOI DONG QUAN TRI
ELSE IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID=@p_ID AND REQ_ID IN (SELECT REQ_ID FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_ID AND STATUS='C' AND ROLE_USER IN ('TKHDQT'))))
BEGIN
IF(NOT EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_ID AND STATUS_JOB ='C' AND TLNAME IN (SELECT TLNANME FROM TL_USER WHERE RoleName ='TKHDQT')))
BEGIN
SET @CODE = (SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID =@p_ID)
SELECT @TILTER_MAIL+N' Thông báo chờ điều phối / phê duyệt tờ trình' AS TITLE,
N'Dear All' +
N',
Tờ trình số : ' + @CODE + N' đang chờ bạn điều phối cho nhân viên xử lý. Hoặc bạn có thể trực tiếp phê duyệt không cần điều phối.' +
CHAR(10) +
N'
Sử dụng Màn hình: Quản lý kế hoạch / Điều phối công việc'+ISNULL(@LINK_UAT,'') + @footer
AS MESSAGECONTENT
RETURN 0
END
ELSE
BEGIN
SET @CODE = (SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID =@p_ID)
SELECT @TILTER_MAIL+N' Thông báo chờ chờ phê duyệt cấp Văn Phòng Thư Kí HĐQT' AS TITLE,
N'Dear All' +
N',
Tờ trình số : ' + @CODE + N' đã được nhân viên xử lý gửi phê duyệt thành công. Bạn có thể phê duyệt phiếu. Phiếu sẽ chuyển đến cấp Hội Đồng Quán Trị sau khi phê duyệt thành công.'
+N'
Sử dụng Màn hình: Quản lý kế hoạch / Tờ trình chủ trương DVCM - DVDC'+ ISNULL(@LINK_UAT,'') + @footer
AS MESSAGECONTENT
RETURN 0
END
END
---- END SETUP MAIL THU KI
IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID=@p_ID AND PROCESS_ID <> 'APPROVE'))
BEGIN
SELECT @TILTER_MAIL+N' Thông báo tờ trình chủ trương cần được phê duyệt' AS TITLE,
N'Dear All' +
N',
Tờ trình số : ' + @CODE + N' đang chờ bạn phê duyệt .' + @footer
AS MESSAGECONTENT
RETURN 0
END
ELSE
BEGIN
----SET @DATETIME = (SELECT CONVERT(CHAR(11), @APPROVEDT, 103) + LTRIM(RIGHT(CONVERT(CHAR(20), @APPROVEDT, 22), 11)))
SELECT N'[ PHẦN MỀM QUẢN LÝ TÀI SẢN - AMS] Thông báo tờ trình chủ trương đã được phê duyệt hoàn tất' AS TITLE,
N'Dear All' +
N',
Tờ trình số : ' + @CODE + N' đã được phê duyệt hoàn tất và phát sinh phiếu yêu cầu mua sắm .' + @footer
AS MESSAGECONTENT
END
END
RETURN 0
END
---- PHIEU YEU CAU MUA SAM
IF(@p_TYPE = 'TR_REQUEST_DOC_SendApp' OR @p_TYPE ='TR_REQUEST_DOC_App' OR @p_TYPE ='TR_REQ_PROCESS_CHILD_App' OR @p_TYPE ='TR_REQ_PROCESS_CHILD_Upd' OR @p_TYPE='TR_REQ_PROCESS_CHILD_App')
BEGIN
-- KIỂM TRA BƯỚC XỬ LÝ HIỆN TẠI NẾU LÀ TỔNG GIÁM ĐỐC THÌ CHÈN ĐƯỜNG LINK CORE MỚI
SET @CODE = (SELECT REQ_CODE FROM TR_REQUEST_DOC WHERE REQ_ID =@p_ID)
IF(EXISTS(SELECT * FROM TR_REQUEST_DOC WHERE REQ_ID=@p_ID AND PROCESS_ID IN ('TGD','HDQT')))
BEGIN
SELECT @TILTER_MAIL+N' Thông báo phiếu yêu cầu mua sắm cần phê duyệt' AS TITLE,
N'Dear All' +
N',
Phiếu yêu cầu mua sắm : ' + @CODE + N' đang chờ bạn phê duyệt .' +
--+
--N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.'
N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.'
+
@footer
AS MESSAGECONTENT
END
ELSE
BEGIN
SELECT @TILTER_MAIL+N' Thông báo phiếu yêu cầu mua sắm cần phê duyệt' AS TITLE,
N'Dear All' +
N',
Phiếu yêu cầu mua sắm : ' + @CODE + N' đang chờ bạn phê duyệt .' + @footer
AS MESSAGECONTENT
END
RETURN 0
END
IF ( @p_TYPE ='TR_REQ_PROCESS_CHILD_Ins')
BEGIN
SET @CODE = (select STUFF( (select '; ' + DTA.REQ_CODE FROM TR_REQUEST_DOC DTA WHERE REQ_ID IN (SELECT REQ_PAY_ID FROM @l_LST_REQ_ID)
FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, ''))
SELECT @TILTER_MAIL+N' Thông báo phiếu yêu cầu mua sắm cần xử lý' AS TITLE,
N'Dear All' +
N',
Phiếu yêu cầu mua sắm số : ' + @CODE + N' đang chờ bạn xử lý .' + @footer
AS MESSAGECONTENT
RETURN 0
END
IF(@p_TYPE='TR_REQUEST_DOC_PROCESS_Approve')
BEGIN
SET @CODE = (SELECT REQ_CODE FROM TR_REQUEST_DOC WHERE REQ_ID =@p_ID)
--SET @DATETIME = (SELECT CONVERT(CHAR(11), @APPROVEDT, 103) + LTRIM(RIGHT(CONVERT(CHAR(20), @APPROVEDT, 22), 11)))
SELECT N'[ PHẦN MỀM QUẢN LÝ TÀI SẢN - AMS] Thông báo phiếu yêu cầu mua sắm đã được phê duyệt hoàn tất' AS TITLE,
N'Dear All' +
N',
Phiếu yêu cầu mua sắm số : ' + @CODE + N' đã được phê duyệt hoàn tất và phát sinh PO .' + @footer
AS MESSAGECONTENT
END
------datmq 7/1/2022: Quản lý cho thuê------------------------
-----Quản lý trụ sở - gửi YC phê duyệt--------
IF(@p_TYPE = 'BUD_MASTER_SEND_APPROVE')
BEGIN
SET @CODE = (SELECT BUILDING_NAME FROM BUD_MASTER WHERE BUILDING_ID = @p_ID)
SELECT @TILTER_MAIL+N' Thông báo trụ sở cần phê duyệt' AS TITLE,
N'Dear All' +
N',
Thông tin trụ sở: ' + @CODE+ N' đang chờ bạn phê duyệt.' +
--+
--N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.'
N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.'
+
@footer
AS MESSAGECONTENT
END
-----Quản lý trụ sở - cấp phê duyệt trung gian đã xác nhận--------
IF(@p_TYPE = 'BUD_MASTER_CONFIRM')
BEGIN
SET @CODE = (SELECT BUILDING_NAME FROM BUD_MASTER WHERE BUILDING_ID = @p_ID)
SELECT @TILTER_MAIL+N' Thông báo trụ sở cần phê duyệt' AS TITLE,
N'Dear All' +
N',
Thông tin trụ sở: ' +@CODE + N' đã được xác nhận và đang chờ bạn phê duyệt.' +
--+
--N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.'
N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.'
+
@footer
AS MESSAGECONTENT
END
-----Quản lý trụ sở - trưởng đơn vị đã duyệt, trả mail về cho ng tạo--------
IF(@p_TYPE = 'BUD_MASTER_APPROVED')
BEGIN
SET @CODE = (SELECT BUILDING_NAME FROM BUD_MASTER WHERE BUILDING_ID = @p_ID)
SELECT @TILTER_MAIL+N' Thông báo trụ sở đã được phê duyệt' AS TITLE,
N'Dear All' +
N',
Thông tin trụ sở: ' +@CODE+ N' đã được trưởng đơn vị phê duyệt.' +
--+
--N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.'
N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết.'
+
@footer
AS MESSAGECONTENT
END
------BAODNQ 4/1/2022: Quản lý cho thuê------------------------
-----Khai báo DTSD nội bộ - gửi YC phê duyệt--------
IF(@p_TYPE = 'BUD_CONTRACT_MASTER_SEND_APPROVE')
BEGIN
SELECT @TILTER_MAIL+N' Thông báo hợp đồng sử dụng DT nội bộ cần phê duyệt' AS TITLE,
N'Dear All' +
N',
Thông tin hợp đồng DTSD nội bộ đang chờ bạn phê duyệt.' +
--+
--N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.'
N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.'
+
@footer
AS MESSAGECONTENT
END
-----Khai báo DTSD nội bộ - cấp phê duyệt trung gian đã xác nhận--------
IF(@p_TYPE = 'BUD_CONTRACT_MASTER_CONFIRM')
BEGIN
SELECT @TILTER_MAIL+N' Thông báo hợp đồng sử dụng DT nội bộ cần phê duyệt' AS TITLE,
N'Dear All' +
N',
Thông tin hợp đồng DTSD nội bộ đã được xác nhận và đang chờ bạn phê duyệt.' +
--+
--N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.'
N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.'
+
@footer
AS MESSAGECONTENT
END
-----Khai báo DTSD nội bộ - trưởng đơn vị đã duyệt, trả mail về cho ng tạo--------
IF(@p_TYPE = 'BUD_CONTRACT_MASTER_APPROVED')
BEGIN
SELECT @TILTER_MAIL+N' Thông báo hợp đồng sử dụng DT nội bộ đã được phê duyệt' AS TITLE,
N'Dear All' +
N',
Thông tin hợp đồng DTSD nội bộ đã được trưởng đơn vị phê duyệt.' +
--+
--N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.'
N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết.'
+
@footer
AS MESSAGECONTENT
END
-----Quản lý hợp đồng khách thuê - gửi YC phê duyệt--------
IF(@p_TYPE = 'BUD_CONTRACT_CUST_MASTER_SEND_APPROVE')
BEGIN
SET @CODE = (SELECT CONTRACT_NO FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_ID = @p_ID)
SELECT @TILTER_MAIL+N' Thông báo hợp đồng khách thuê trụ sở cần phê duyệt' AS TITLE,
N'Dear All' +
N',
Thông tin hợp đồng khách thuê trụ sở số: ' + @CODE + N' đang chờ bạn phê duyệt.' +
--+
--N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.'
N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.'
+
@footer
AS MESSAGECONTENT
END
-----Quản lý hợp đồng khách thuê - cấp phê duyệt trung gian đã xác nhận--------
IF(@p_TYPE = 'BUD_CONTRACT_CUST_MASTER_CONFIRM')
BEGIN
SET @CODE = (SELECT CONTRACT_NO FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_ID = @p_ID)
SELECT @TILTER_MAIL+N' Thông báo hợp đồng khách thuê trụ sở cần phê duyệt' AS TITLE,
N'Dear All' +
N',
Thông tin hợp đồng khách thuê trụ sở số: ' + @CODE + N' đã được xác nhận và đang chờ bạn phê duyệt.' +
--+
--N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.'
N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.'
+
@footer
AS MESSAGECONTENT
END
-----Quản lý hợp đồng khách thuê - trưởng đơn vị đã duyệt, trả mail về cho ng tạo--------
IF(@p_TYPE = 'BUD_CONTRACT_CUST_MASTER_APPROVED')
BEGIN
SET @CODE = (SELECT CONTRACT_NO FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_ID = @p_ID)
SELECT @TILTER_MAIL+N' Thông báo hợp đồng khách thuê trụ sở đã được phê duyệt' AS TITLE,
N'Dear All' +
N',
Thông tin hợp đồng khách thuê trụ sở số: ' + @CODE + N' đã được phê duyệt.' +
--+
--N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết và phê duyệt yêu cầu.'
N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết.'
+
@footer
AS MESSAGECONTENT
END
-----PhongNT 9/2/2022:Xuất sử dụng tài sản -HCQT--------
IF(@p_TYPE = 'ASS_USE_MULTI_BVB_MASTER')
BEGIN
SELECT @TILTER_MAIL+N'Thông báo xuất sử dụng tài sản cần phê duyệt' AS TITLE,
N'Dear All' +
N',
Bạn có giao dịch xuất sử dụng tài sản có ID: '+@p_ID+ N' cần được phê duyệt.' +
N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết.'
+
@footer
AS MESSAGECONTENT
END
-----Điều chuyển tài sản - HCQT--------
IF(@p_TYPE = 'ASS_TRANSFER_MULTI_APP')
BEGIN
SELECT @TILTER_MAIL+N'Thông báo điều chuyển tài sản cần phê duyệt' AS TITLE,
N'Dear All' +
N',
Bạn có giao dịch điều chuyển tài sản có ID: '+@p_ID+ N' cần được phê duyệt.' +
N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết.'
+
@footer
AS MESSAGECONTENT
END
-----Thu hồi tài sản - HCQT--------
IF(@p_TYPE = 'ASS_COLLECT_MULTI_HCQT_APP')
BEGIN
SELECT @TILTER_MAIL+N'Thông báo thu hồi tài sản cần phê duyệt' AS TITLE,
N'Dear All' +
N',
Bạn có giao dịch thu hồi tài sản có ID: '+@p_ID+ N' cần được phê duyệt.' +
N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết.'
+
@footer
AS MESSAGECONTENT
END
-----Thu hồi tài sản - HCQT--------
IF(@p_TYPE = 'ASS_COLLECT_MULTI_HCQT_APP')
BEGIN
SELECT @TILTER_MAIL+N'Thông báo thu hồi tài sản cần phê duyệt' AS TITLE,
N'Dear All' +
N',
Bạn có giao dịch thu hồi tài sản có ID: '+@p_ID+ N' cần được phê duyệt.' +
N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết.'
+
@footer
AS MESSAGECONTENT
END
-----Thanh lý tài sản - HC--------
IF(@p_TYPE = 'ASS_LIQ_BVB_HC_APP')
BEGIN
SELECT @TILTER_MAIL+N'Thông báo thanh lý tài sản cần phê duyệt' AS TITLE,
N'Dear All' +
N',
Bạn có giao dịch thanh lý tài sản có ID: '+@p_ID+ N' cần được phê duyệt.' +
N'
Anh/Chị vui lòng nhấn vào đây để xem chi tiết.'
+
@footer
AS MESSAGECONTENT
END
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Altering [dbo].[CON_REQUEST_DOC_ViewDetail]'
GO
ALTER PROC [dbo].[CON_REQUEST_DOC_ViewDetail]
@p_CONST_ID varchar(15)
AS
--DECLARE @sErrorCode VARCHAR(20) = ''
--IF NOT EXISTS(SELECT * FROM CAR_MASTER A WHERE A.CAR_ID = @p_CAR_ID OR N_PLATE=@p_N_PLATE)
--BEGIN
-- SET @sErrorCode = 'CAR-00001'
--END
--IF @sErrorCode <> ''
--BEGIN
-- SELECT ErrorCode Result, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @sErrorCode
-- RETURN '-1'
--END
BEGIN TRANSACTION
declare @p_REQ_ID VARCHAR(15) = (SELECT TOP 1 REQUEST_ID FROM CON_MASTER WHERE CONSTRUCT_ID = @p_CONST_ID)
-- THONG TIN VE CONG TRINH
SELECT TOP 1 * FROM CON_MASTER WHERE CONSTRUCT_ID = @p_CONST_ID
-- THONG TIN VE TO TRINH
SELECT * FROM CON_REQUEST_DOC WHERE REQUEST_PARENT = @p_REQ_ID
-- CHI PHI SUA CHUA
SELECT * FROM BID_MASTER_VIEW WHERE REQUEST_ID = @p_REQ_ID
-- THONG TIN THAU
SELECT *
FROM BID_CONTRACTOR_DT C
WHERE REQUEST_ID = @p_REQ_ID
-- DANH SACH HO SO THI CONG
SELECT C.*
FROM TR_CONTRACT C
WHERE REQUEST_ID = @p_REQ_ID
-- CAC DOT THANH TOAN
SELECT CP.*
FROM TR_CONTRACT_PAYMENT CP
WHERE REQUEST_ID = @p_REQ_ID
-- DANH SACH CHI TIET PHAT SINH TANG GIAM
SELECT *
FROM CON_BID_CONTRACTOR_DT_ARISE
WHERE REQ_ID = @p_REQ_ID
-- DANH SÁCH HÀNG HÓA
SELECT *, B.SUP_NAME
FROM CON_REQUEST_HH_DT A
LEFT JOIN CM_SUPPLIER B ON A.SUP_ID = B.SUP_ID
WHERE CONSTRUCT_ID = @p_CONST_ID
-- ĐANH GIÁ NĂNG LỰC NHÀ THẦU
SELECT *
FROM CON_REQUEST_REVIEW_DT
WHERE CONSTRUCT_ID = @p_CONST_ID
-- TIẾN ĐỘ CÔNG TRÌNH
SELECT *
FROM CON_REQUEST_PROCESS_DT
WHERE CONSTRUCT_ID = @p_CONST_ID
COMMIT TRANSACTION
SELECT '0' as Result, '' ErrorDesc
RETURN '0'
ABORT:
BEGIN
ROLLBACK TRANSACTION
SELECT '-1' as Result, '' ErrorDesc
RETURN '-1'
End
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
PRINT N'Altering permissions on [dbo].[sp_generate_inserts]'
GO
GRANT EXECUTE ON [dbo].[sp_generate_inserts] TO [public]
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
COMMIT TRANSACTION
GO
IF @@ERROR <> 0 SET NOEXEC ON
GO
-- This statement writes to the SQL Server Log so SQL Monitor can show this deployment.
IF HAS_PERMS_BY_NAME(N'sys.xp_logevent', N'OBJECT', N'EXECUTE') = 1
BEGIN
DECLARE @databaseName AS nvarchar(2048), @eventMessage AS nvarchar(2048)
SET @databaseName = REPLACE(REPLACE(DB_NAME(), N'\', N'\\'), N'"', N'\"')
SET @eventMessage = N'Redgate SQL Compare: { "deployment": { "description": "Redgate SQL Compare deployed to ' + @databaseName + N'", "database": "' + @databaseName + N'" }}'
EXECUTE sys.xp_logevent 55000, @eventMessage
END
GO
DECLARE @Success AS BIT
SET @Success = 1
SET NOEXEC OFF
IF (@Success = 1) PRINT 'The database update succeeded'
ELSE BEGIN
IF @@TRANCOUNT > 0 ROLLBACK TRANSACTION
PRINT 'The database update failed'
END
GO