1
|
|
2
|
CREATE PROCEDURE [dbo].[PL_TRADE_TRANFER_TO_BRANCH]
|
3
|
@P_REF_CODE VARCHAR(20),
|
4
|
@p_BRANCH_ID VARCHAR(20),
|
5
|
@p_DEP_ID VARCHAR(20),
|
6
|
@p_YEAR INT
|
7
|
AS
|
8
|
|
9
|
BEGIN TRY
|
10
|
BEGIN TRANSACTION;
|
11
|
|
12
|
DECLARE @IS_UPDATE BIT
|
13
|
|
14
|
|
15
|
|
16
|
|
17
|
|
18
|
DECLARE @PLAN_CODE VARCHAR(20),
|
19
|
@PLAN_NAME NVARCHAR(200),
|
20
|
@YEAR INT,
|
21
|
@PLAN_TYPE_ID VARCHAR(15),
|
22
|
@COST_ID VARCHAR(15),
|
23
|
@BRANCH_ID VARCHAR(15),
|
24
|
@BRANCH_CODE VARCHAR(15),
|
25
|
@DEP_ID VARCHAR(15),
|
26
|
@DEP_CODE VARCHAR(15),
|
27
|
@GOOD_ID VARCHAR(15),
|
28
|
@QTY INT,
|
29
|
@TOTAL_AMT DECIMAL(18, 2),
|
30
|
@AMT_ETM DECIMAL(18, 2),
|
31
|
@AMT_EXE DECIMAL(18, 2),
|
32
|
@AMT_TF DECIMAL(18, 2),
|
33
|
@AMT_RECIVE_TF DECIMAL(18, 2),
|
34
|
@NOTES NVARCHAR(1000),
|
35
|
@IMP_AMT NUMERIC(18, 2),
|
36
|
@IMP_QTY NUMERIC(18, 0),
|
37
|
@MARKER_ID VARCHAR(15),
|
38
|
@EDIT_DT DATETIME,
|
39
|
@PLAN_ID VARCHAR(15),
|
40
|
@TRADE_ID VARCHAR(15),
|
41
|
@REF_CODE VARCHAR(20),
|
42
|
@REF_NAME NVARCHAR(200),
|
43
|
@IMP_DT_ID VARCHAR(20)
|
44
|
|
45
|
|
46
|
|
47
|
DECLARE Plan_Master CURSOR FOR
|
48
|
SELECT IM.PLAN_CODE,IM.IMP_NAME,IM.IMP_YEAR,SUM(ISNULL(IMDT.QTY,0)) AS QTY,SUM(ISNULL(IMDT.TOTAL_AMT,0)) AS AMT, IMDT.PLAN_TYPE_ID, IMDT.COST_ID,IMDT.BRANCH_ID,IMDT.DEP_ID,
|
49
|
IMDT.PLAN_ID,IMDT.BRANCH_CODE,IMDT.DEP_CODE
|
50
|
FROM dbo.PL_TRADEDETAIL PT
|
51
|
LEFT JOIN dbo.PL_MASTER PM ON PM.PLAN_ID=PT.PLAN_ID
|
52
|
LEFT JOIN dbo.CM_PLAN_TYPE CT ON CT.PLAN_TYPE_ID=PM.PLAN_TYPE_ID
|
53
|
LEFT JOIN dbo.CM_DVDM CDM ON CDM.DVDM_ID=PM.COST_ID
|
54
|
LEFT JOIN dbo.PL_TRADE_REF REF ON REF.TRADE_ID = PT.TRADE_ID
|
55
|
LEFT JOIN dbo.CM_BRANCH CB ON CB.BRANCH_ID=PM.BRANCH_ID
|
56
|
LEFT JOIN dbo.CM_DEPARTMENT CD ON CD.DEP_ID=PM.DEPT_ID
|
57
|
LEFT JOIN dbo.PL_IMPORT_DT IMDT ON IMDT.PLAN_ID=PT.PLAN_ID AND IMDT.TRADE_ID=PT.TRADE_ID
|
58
|
LEFT JOIN dbo.PL_IMPORT IM ON IM.IMPORT_ID=IMDT.IMPORT_ID
|
59
|
WHERE IM.IMP_YEAR = @p_YEAR AND PT.RECORD_STATUS='1' AND REF.REF_CODE=@P_REF_CODE
|
60
|
GROUP BY IM.PLAN_CODE,IM.IMP_NAME,IM.IMP_YEAR,IMDT.PLAN_TYPE_ID,IMDT.COST_ID,IMDT.BRANCH_ID,IMDT.DEP_ID,IMDT.PLAN_ID,IMDT.BRANCH_CODE,IMDT.DEP_CODE
|
61
|
OPEN Plan_Master;
|
62
|
|
63
|
FETCH NEXT FROM Plan_Master INTO @PLAN_CODE,@PLAN_NAME,@YEAR,@IMP_QTY,@IMP_AMT, @PLAN_TYPE_ID,@COST_ID,@BRANCH_ID,@DEP_ID,@PLAN_ID,@BRANCH_CODE,@DEP_CODE
|
64
|
|
65
|
WHILE @@FETCH_STATUS = 0
|
66
|
BEGIN
|
67
|
|
68
|
SET @PLAN_NAME=N'KẾ HOẠCH NGÂN SÁCH '+ CAST( @YEAR AS VARCHAR(10))
|
69
|
SET @DEP_CODE=(SELECT DEP_CODE FROM dbo.CM_DEPARTMENT WHERE DEP_ID=@p_DEP_ID)
|
70
|
SET @PLAN_CODE= @DEP_CODE+(SELECT RIGHT(CAST( @YEAR AS VARCHAR(10)),2))
|
71
|
|
72
|
EXEC SYS_CodeMasters_Gen 'PL_MASTER', @PLAN_ID out
|
73
|
IF @PLAN_ID='' OR @PLAN_ID IS NULL GOTO ABORT
|
74
|
|
75
|
INSERT INTO dbo.PL_MASTER
|
76
|
(
|
77
|
PLAN_ID, PLAN_CODE,PLAN_NAME,BRANCH_ID,DEPT_ID,EFFECT_DT,PLAN_TYPE,TOTAL_AMT,APPROVE_VALUE,
|
78
|
VERSON,YEAR,STATUS,NOTES,RECORD_STATUS, MAKER_ID,CREATE_DT,AUTH_STATUS,CHECKER_ID,APPROVE_DT,PLAN_TYPE_ID,COST_ID)
|
79
|
VALUES
|
80
|
( @PLAN_ID,@PLAN_CODE,@PLAN_NAME,@p_BRANCH_ID,@p_DEP_ID,GETDATE(),'',@IMP_AMT, @IMP_AMT,
|
81
|
1,@YEAR,'1', N'Mở mới','1', @MARKER_ID,@EDIT_DT,'A', 'admin', GETDATE(), @PLAN_TYPE_ID,@COST_ID
|
82
|
)
|
83
|
|
84
|
|
85
|
|
86
|
|
87
|
|
88
|
DECLARE Plan_Detail CURSOR FOR
|
89
|
SELECT IMP_DT_ID,GOOD_ID,QTY,PT.AMT_APP,PT.NOTES,PT.TRADE_ID,REF.REF_CODE,REF.REF_NAME,PT.AMT_ETM,PT.AMT_EXE,PT.AMT_TF,PT.AMT_RECEIVE_TF
|
90
|
FROM dbo.PL_TRADEDETAIL PT
|
91
|
LEFT JOIN dbo.PL_MASTER PM ON PM.PLAN_ID=PT.PLAN_ID
|
92
|
LEFT JOIN dbo.CM_PLAN_TYPE CT ON CT.PLAN_TYPE_ID=PM.PLAN_TYPE_ID
|
93
|
LEFT JOIN dbo.CM_DVDM CDM ON CDM.DVDM_ID=PM.COST_ID
|
94
|
LEFT JOIN dbo.PL_TRADE_REF REF ON REF.TRADE_ID = PT.TRADE_ID
|
95
|
LEFT JOIN dbo.CM_BRANCH CB ON CB.BRANCH_ID=PM.BRANCH_ID
|
96
|
LEFT JOIN dbo.CM_DEPARTMENT CD ON CD.DEP_ID=PM.DEPT_ID
|
97
|
LEFT JOIN dbo.PL_IMPORT_DT IMDT ON IMDT.PLAN_ID=PT.PLAN_ID AND IMDT.TRADE_ID=PT.TRADE_ID
|
98
|
LEFT JOIN dbo.PL_IMPORT IM ON IM.IMPORT_ID=IMDT.IMPORT_ID
|
99
|
WHERE IM.IMP_YEAR = @p_YEAR AND PT.RECORD_STATUS='1' AND REF.REF_CODE=@P_REF_CODE AND PM.PLAN_TYPE_ID=@PLAN_TYPE_ID AND ISNULL(PM.COST_ID,'')=ISNULL(@COST_ID,'') AND PM.BRANCH_ID=@BRANCH_ID AND PM.DEPT_ID=@DEP_ID
|
100
|
OPEN Plan_Detail
|
101
|
FETCH NEXT FROM Plan_Detail INTO @IMP_DT_ID,@GOOD_ID,@QTY,@TOTAL_AMT,@NOTES,@TRADE_ID,@REF_CODE,@REF_NAME,@AMT_ETM,@AMT_EXE,@AMT_TF,@AMT_RECIVE_TF
|
102
|
WHILE @@FETCH_STATUS = 0
|
103
|
BEGIN
|
104
|
|
105
|
|
106
|
UPDATE dbo.PL_TRADEDETAIL SET PLAN_ID=@PLAN_ID WHERE TRADE_ID=@TRADE_ID
|
107
|
UPDATE dbo.PL_IMPORT_DT SET PLAN_ID=@PLAN_ID,TRADE_ID=@TRADE_ID WHERE IMP_DT_ID=@IMP_DT_ID
|
108
|
|
109
|
FETCH NEXT FROM Plan_Detail INTO @IMP_DT_ID,@GOOD_ID,@QTY,@TOTAL_AMT,@NOTES,@TRADE_ID,@REF_CODE,@REF_NAME,@AMT_ETM,@AMT_EXE,@AMT_TF,@AMT_RECIVE_TF
|
110
|
END
|
111
|
CLOSE Plan_Detail
|
112
|
DEALLOCATE Plan_Detail
|
113
|
FETCH NEXT FROM Plan_Master INTO @PLAN_CODE,@PLAN_NAME,@YEAR,@IMP_QTY,@IMP_AMT, @PLAN_TYPE_ID,@COST_ID,@BRANCH_ID,@DEP_ID,@PLAN_ID,@BRANCH_CODE,@DEP_CODE
|
114
|
END
|
115
|
CLOSE Plan_Master
|
116
|
DEALLOCATE Plan_Master
|
117
|
|
118
|
|
119
|
COMMIT TRANSACTION;
|
120
|
SELECT '0' AS Result,
|
121
|
'' ErrorDesc;
|
122
|
RETURN '0';
|
123
|
END TRY
|
124
|
BEGIN CATCH
|
125
|
ROLLBACK TRANSACTION;
|
126
|
SELECT '-1' AS Result,
|
127
|
'' ErrorDesc;
|
128
|
RETURN '-1';
|
129
|
END CATCH
|
130
|
ABORT:
|
131
|
BEGIN
|
132
|
ROLLBACK TRANSACTION;
|
133
|
SELECT '-1' AS Result,
|
134
|
'' ErrorDesc;
|
135
|
RETURN '-1';
|
136
|
END;
|
137
|
|
138
|
|
139
|
|
140
|
|
141
|
|
142
|
|
143
|
|
144
|
|