游标死循环
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER PROCEDURE [dbo].[usp_CopyCprDetailsInCpr]
(
@pGuid varchar(50),
@pVersionCode varchar(7)
)
AS
BEGIN
DECLARE @pOldCprHeaderID int,
@pNewCprHeaderID int,
@pOldCprWeeklyID int,
@pNewCprWeeklyID int
BEGIN TRANSACTION
Insert into CprHeader
(
NumberOfPages,CompanyID,CompanyName,
Address,LicenseNumber,SpecialityLicenseNumber,
PayrollNumber,StartDate,EndDate,ProjectOrContractNumber,
ProjectID,AssignedProjectID,ProjectName,ProjectLocation,
ProjectRole,UserID,UserTitle,UserName,SignImage,SignImageType,
SignImageName,Status,ResubmitCount,
NonComplianceIssuesText,NonComplianceIssuesHTML,IsCompliant,
IsNonPerformance,IsLastCpr,IsDraft,HasCertificateIssue,
OriginalFile,CreatedBy,IsPaperCopy
)
select NumberOfPages,CompanyID,CompanyName,
Address,LicenseNumber,SpecialityLicenseNumber,
PayrollNumber,StartDate,EndDate,ProjectOrContractNumber,
ProjectID,AssignedProjectID,ProjectName,ProjectLocation,
ProjectRole,UserID,UserTitle,UserName,SignImage,
SignImageType,SignImageName,1,0,
NonComplianceIssuesText,NonComplianceIssuesHTML,1,
0,0,1,HasCertificateIssue,
OriginalFile,CreatedBy,IsPaperCopy
from CprHeader
where Guid=@pGuid
IF @@ERROR <> 0
BEGIN
ROLLBACK TRANSACTION
RETURN 1
END
SET @pNewCprHeaderID = @@IDENTITY
select @pOldCprHeaderID=CprHeaderID from CprHeader where Guid=@pGuid
DECLARE @WeekNumber tinyint,
@PageNumber int,
@EndDate datetime,
@EmployeeID int,
@EmployeeName varchar(255),
@EmployeeAddress varchar(255),
@EmployeeCity varchar(255),
@EmployeeState varchar(255),
@EmployeeZip varchar(50),
@EmployeeFullAddress varchar(255),
@EmployeeSSN varchar(50),
@WithHoldingExemptions varchar(50),
@RateID int,
@FringeBenefitID int,
@CraftCode varchar(50),
@CraftDescription varchar(255),
@ClassCode varchar(50),
@ClassDescription varchar(255),
@StepCode varchar(50),
@StepDescription varchar(255),
@ApprenticePeriod int,
@ConstructionTrade int,
@RRate decimal(18, 2),
@ORate decimal(18, 2),
@DRate decimal(18, 2),
@GrossThisProject decimal(18, 2),
@GrossAllProjects decimal(18, 2),
@TRHW decimal(18, 2),
@TOHW decimal(18, 2),
@TDHW decimal(18, 2),
@Fed decimal(18, 2),
@FICA decimal(18, 2),
@SIT decimal(18, 2),
@SDI decimal(18, 2),
@Other decimal(18, 2),
@AdditionalDeductions1 decimal(18, 2),
@AdditionalDeductions2 decimal(18, 2),
@AdditionalDeductions3 decimal(18, 2),
@TotalDeductions decimal(18, 2),
@VacationAndHoliday decimal(18, 2),
@HealthAndWelfare decimal(18, 2),
@Pension decimal(18, 2),
@Training decimal(18, 2),
@Fund decimal(18, 2),
@UnionDues decimal(18, 2),
@Travelling decimal(18, 2),
@Savings decimal(18, 2),
@Cash decimal(18, 2),
@AdditionalFringes1 decimal(18, 2),
@AdditionalFringes2 decimal(18, 2),
@AdditionalFringes3 decimal(18, 2),
@NetWages decimal(18, 2),
@CheckNumber varchar(50),
@CheckDate datetime,
@Status int,
@RejectedReason varchar(255),
@IsCompliant bit,
@ModifiedBy int,
@CreatedBy int
DECLARE CursorData CURSOR FOR
Select
CprWeeklyID,WeekNumber, PageNumber, EndDate,
EmployeeID, EmployeeName, EmployeeAddress,
EmployeeCity, EmployeeState, EmployeeZip,
EmployeeFullAddress, EmployeeSSN, WithHoldingExemptions,
RateID,FringeBenefitID,
CraftCode, CraftDescription,
ClassCode, ClassDescription,
StepCode, StepDescription,
ApprenticePeriod, ConstructionTrade,
RRate, ORate, DRate,
GrossThisProject, GrossAllProjects,
TRHW, TOHW, TDHW,
Fed, FICA, SIT, SDI, Other,
AdditionalDeductions1, AdditionalDeductions2, AdditionalDeductions3,
TotalDeductions, VacationAndHoliday,HealthAndWelfare,
Pension,Training,Fund,UnionDues,
Travelling,Savings,Cash,
AdditionalFringes1,AdditionalFringes2,AdditionalFringes3,
NetWages,CheckNumber,CheckDate,Status,RejectedReason,
IsCompliant,ModifiedBy,CreatedBy
From CprWeekly
Where CprHeaderID=@pOldCprHeaderID
OPEN CursorData
FETCH CursorData INTO
@pOldCprWeeklyID,@WeekNumber, @PageNumber, @EndDate,
@EmployeeID, @EmployeeName, @EmployeeAddress,
@EmployeeCity, @EmployeeState, @EmployeeZip,
@EmployeeFullAddress, @EmployeeSSN, @WithHoldingExemptions,
@RateID,@FringeBenefitID,
@CraftCode, @CraftDescription,
@ClassCode, @ClassDescription,
@StepCode, @StepDescription,
@ApprenticePeriod, @ConstructionTrade,
@RRate, @ORate, @DRate,
@GrossThisProject, @GrossAllProjects,
@TRHW, @TOHW, @TDHW,
@Fed, @FICA, @SIT, @SDI, @Other,
@AdditionalDeductions1, @AdditionalDeductions2, @AdditionalDeductions3,
@TotalDeductions, @VacationAndHoliday,@HealthAndWelfare,
@Pension,@Training,@Fund,@UnionDues,
@Travelling,@Savings,@Cash,
@AdditionalFringes1,@AdditionalFringes2,@AdditionalFringes3,
@NetWages,@CheckNumber,@CheckDate,@Status,@RejectedReason,
@IsCompliant,@ModifiedBy,@CreatedBy
WHILE (@@FETCH_STATUS = 0)
BEGIN
INSERT INTO CprWeekly
(
CprHeaderID,WeekNumber, PageNumber, EndDate,
EmployeeID, EmployeeName, EmployeeAddress,
EmployeeCity, EmployeeState, EmployeeZip,
EmployeeFullAddress, EmployeeSSN, WithHoldingExemptions,
RateID,FringeBenefitID,
CraftCode, CraftDescription,
ClassCode, ClassDescription,
StepCode, StepDescription,
ApprenticePeriod, ConstructionTrade,
RRate, ORate, DRate,
GrossThisProject, GrossAllProjects,
TRHW, TOHW, TDHW,
Fed, FICA, SIT, SDI, Other,
AdditionalDeductions1, AdditionalDeductions2, AdditionalDeductions3,
TotalDeductions, VacationAndHoliday,HealthAndWelfare,
Pension,Training,Fund,UnionDues,
Travelling,Savings,Cash,
AdditionalFringes1,AdditionalFringes2,AdditionalFringes3,
NetWages,CheckNumber,CheckDate,Status,RejectedReason,
IsCompliant,ModifiedBy,CreatedBy
)
values (
@pOldCprHeaderID,@WeekNumber, @PageNumber, @EndDate,
@EmployeeID, @EmployeeName, @EmployeeAddress,
@EmployeeCity, @EmployeeState, @EmployeeZip,
@EmployeeFullAddress, @EmployeeSSN, @WithHoldingExemptions,
@RateID,@FringeBenefitID,
@CraftCode, @CraftDescription,
@ClassCode, @ClassDescription,
@StepCode, @StepDescription,
@ApprenticePeriod, @ConstructionTrade,
@RRate, @ORate, @DRate,
@GrossThisProject, @GrossAllProjects,
@TRHW, @TOHW, @TDHW,
@Fed, @FICA, @SIT, @SDI, @Other,
@AdditionalDeductions1, @AdditionalDeductions2, @AdditionalDeductions3,
@TotalDeductions, @VacationAndHoliday,@HealthAndWelfare,
@Pension,@Training,@Fund,@UnionDues,
@Travelling,@Savings,@Cash,
@AdditionalFringes1,@AdditionalFringes2,@AdditionalFringes3,
@NetWages,@CheckNumber,@CheckDate,@Status,@RejectedReason,
@IsCompliant,@ModifiedBy,@CreatedBy
)
IF @@ERROR <> 0
BEGIN
ROLLBACK TRANSACTION
RETURN 2
END
SET @pNewCprWeeklyID = @@IDENTITY
SELECT
@RateID = IsNull(R.RateID,0)
FROM
Rates R
WHERE
R.ActiveRecord = 1
AND R.VersionCode = @pVersionCode
AND R.CraftCode = @CraftCode
AND R.ClassCode = @ClassCode
AND R.ConstructionTrade = @ConstructionTrade
AND IsNull(R.StepCode,'') = IsNull(@StepCode,'')
AND IsNull(R.ApprenticePeriod,0) = IsNull(@ApprenticePeriod,0)
Update CprWeekly
Set RateID=@RateID
Where CprWeeklyID=@pNewCprWeeklyID
Insert Into CprHourly
(
CprWeeklyID,DateWorked,RHW,
OHW,DHW,ActiveRecord
)
select @pNewCprWeeklyID,DateWorked,RHW,
OHW,DHW,ActiveRecord
from CprHourly
where CprWeeklyID=@pOldCprWeeklyID