--exec
UpdateEmployeeDetailsFromHRMS '1430',''
create procedure [dbo].[UpdateEmployeeDetailsFromHRMS]  
@EmpPayrollNo varchar(50), 
@HRMS_DataBaseName varchar(50),  
@Update_Flag int = 0 output 
as  
begin  
Declare @Sqlstr Varchar(Max) 
Declare @LinkServer as varchar(100)    
Declare @Designation_Name VarChar(100)  
Declare @Department_Name VarChar(100)  
Declare @Branch_Name VarChar(100)  
Declare @Category_Name VarChar(100)  
Declare @Category_Maximum_Employee as int  
Declare @Location_Name VarChar(100)  
Declare @Location_Code VarChar(100)  
Declare @Location_Address VarChar(100)  
Declare @Location_Phone_No VarChar(100)  
Declare @Location_Fax_No VarChar(100)  
Declare @Bank_Name VarChar(100)  
Declare @Bank_Branch_Name VarChar(100)  
Declare @DepartmentID Int 
Declare @Bank_No VarChar(100)  
Declare @Bank_Branch_No VarChar(100)  
declare @Next_Of_Kin varchar(100)  
Declare @EmpCode int  
declare @Emp_Desig_Id int 
declare @Emp_Dept_Id int 
declare @Emp_Branch_Id int 
declare @Emp_Catgegory_Id int  
declare @employmenttype int 
declare @Bank_Id int  
declare @Bank_Branch_Id int 
declare @HRMSCocode int 
declare @Cocode int  
declare @Emp_Weekly_OffType int  
declare @Emp_Weekly_Off int 
declare @Emp_ID int  
declare @Emp_Gender VarChar(50)  
declare @Emp_BloodGroup VarChar(50)  
declare @Emp_NationalIDCountry VarChar(50)  
Declare @strEmp_ID as varchar(10)  
set @Update_Flag = 0  
set @LinkServer= '[' + @HRMS_DataBaseName + '].dbo.'  
-- Paymaster CoCode From HRMS database DT:14-Feb-2014  
--set @Cocode = 3 -- Specify the CoCode for the Payroll
Database where this Procedure will be Created 
IF OBJECT_ID('tempdb.dbo.##TempPaymaster') IS NOT NULL Drop
table  ##TempPaymaster  
exec ('select 
P.PayMaster_CoCode INTO ##TempPaymaster from ' + @LinkServer +
'tblEmployee as E  
Inner join ' + @LinkServer + 'tblPayMaster_Company As P  on P.Paymaster_Cmp_Id =
E.Paymaster_Cmp_Id  
where E.Emp_Payroll_No = ''' + @EmpPayrollNo + '''')  
select @Cocode = PayMaster_CoCode from ##TempPaymaster  
print @Cocode  
DRop table ##TempPaymaster  
--  
IF OBJECT_ID('tempdb.dbo.##TempEmployee_HRMS') IS NOT NULL
Drop table  ##TempEmployee_HRMS    
exec ('select Top 1 A.Cmp_ID,A.Emp_ID, A.Emp_Payroll_No,
a.Emp_First_Name, a.Emp_Middle_Name, a.Emp_Last_Name,a.Emp_Gender,    
 a.Emp_Join_Date,a.Emp_Birth_Date,a.Employment_Type,a.Emp_MaritalStatus_Id,a.Emp_Children,K.Emp_Address
,L.Emp_WorkPhone,  
 M.Emp_P_Address,L.Emp_MobileNo,L.Emp_WorkEmail,Q.Emp_PINNo,Q.Emp_NSSFNo,Q.Emp_NHIFNo,Q.emp_Nationalityid,N.Height,N.weight,N.Blood_Group,  
 O.College_Name,P.Religion_Name,G.Account_No,(R.First_Name
+ ' + ' ' +  ' + R.Last_Name) as
Next_Of_Kin,  
   
B.Desig_Name,C.Dept_Name,C.Dept_ID,D.Branch_Name, e.Category_Name
,e.Maximum_Employee as Category_Maximum_Employee,  
 F.Location_Name,F.Location_Code,F.[Address] as
Location_Address,F.Phone_No as Location_Phone_No,F.Fax_No as
Location_Fax_No,  
 H.Bank_Name,I.Bank_Branch_Name,H.Bank_No,I.Bank_Branch_No,J.Nationality_Name,
A.Emp_WeekOff_Type    
 into
##TempEmployee_HRMS From ' + @LinkServer + 'tblemployee AS A   
 LEFT JOIN ' +
@LinkServer + 'tblDesignation AS B ON (A.Emp_Desig_Id=B.Desig_Id)   
 LEFT JOIN ' +
@LinkServer + 'tblDepartment AS C ON (A.Emp_Dept_Id=C.Dept_Id)   
 LEFT JOIN ' +
@LinkServer + 'tblBranch AS D ON (A.Branch_Id=D.Branch_Id)   
 LEFT JOIN ' +
@LinkServer + 'tblCategory AS E ON (A.Category_Id=E.Category_Id)   
 LEFT JOIN ' +
@LinkServer + 'tblLocation AS F ON (A.Emp_Location_Id=F.Location_Id)   
 LEFT JOIN ' +
@LinkServer + 'tblEmployee_Bank AS G ON (A.Emp_Id=G.Emp_Id)   
 left join ' +
@LinkServer + 'tblBank as H on (G.Bank_Id=H.Bank_Id)   
 left join ' +
@LinkServer + 'TblBank_Branch I on (G.BankBranch_Id=I.BankBranch_Id)   
 left join ' +
@LinkServer + 'tblNationality J on (A.Emp_Nationality_Id=J.Nationality_Id)   
 left join ' +
@LinkServer + 'tblEmployee_Address K on (a.Emp_Id=K.Emp_Id and
a.Cmp_Id=K.Cmp_Id )  
 left join ' +
@LinkServer + 'tblEmployee_Contact L on ( a.Emp_Id=L.Emp_Id and
a.Cmp_Id=L.cmp_id )  
 left join ' +
@LinkServer + 'tblEmployee_P_Address M on (a.Emp_Id=M.Emp_Id and
a.Cmp_Id=M.Cmp_Id )  
 left join ' +
@LinkServer + 'tblEmployee_Medical N on ( a.Emp_Id=N.Emp_Id and
a.Cmp_Id=N.cmp_id )  
 left join ' +
@LinkServer + 'tblemployee_Degree O on (a.Emp_Id=O.Emp_Id and a.Cmp_Id=O.Cmp_Id
)  
 left join ' +
@LinkServer + 'tblReligion P on (a.Emp_Religion_Id=P.Religion_Id and
a.Cmp_Id=P.Cmp_Id)  
 left join ' +
@LinkServer + 'tblEmployee_Statutory Q on ( a.Emp_Id=Q.Emp_Id and
a.Cmp_Id=Q.cmp_id )  
 left join ' +
@LinkServer + 'tblEmployee_Family R on (a.Emp_Id=R.Emp_Id and a.Cmp_Id=R.cmp_id
and R.Next_Of_Kin=1 )   
 WHERE
A.Emp_Payroll_No= '''+ @EmpPayrollNo + '''')  
 --left join (SELECT
Emp_Id,Cmp_Id, max(Emp_Weekoff) as Emp_Weekoff FROM ' + @LinkServer +
'tblEmployee_Weekoff   
--      group by
Emp_Id,Cmp_Id) as S on (a.Emp_Id=S.Emp_Id and a.Cmp_Id=S.cmp_id)           
select  @HRMSCocode=Cmp_Id,
@Emp_ID = Emp_ID, @Designation_Name
=Desig_Name,@Department_Name=Dept_Name,@DepartmentID = Dept_ID,
@Branch_Name=Branch_Name,   
@Category_Name=Category_Name, @Category_Maximum_Employee =
Category_Maximum_Employee,  
@Location_Name=Location_Name,@Location_Code=Location_Code,@Location_Address=Location_Address,
@Location_Phone_No=Location_Phone_No,@Location_Fax_No=Location_Fax_No,  
@Bank_Name=Bank_Name,@Bank_Branch_Name=Bank_Branch_Name,@Bank_No=Bank_No,@Bank_Branch_No
= Bank_Branch_No,  
@Emp_NationalIDCountry=Nationality_Name,
@Emp_Weekly_OffType=Emp_WeekOff_Type  
 From
##TempEmployee_HRMS  
WHERE Emp_Payroll_No= @EmpPayrollNo   
--, @Emp_Weekly_Off = 
case when @Emp_Weekly_OffType=1 then Emp_Weekoff else Null End   
SET @Emp_Desig_Id = 0              
SELECT @Emp_Desig_Id = DesignationCode FROM tblDesignation
WHERE UPPER(DesignationName) = UPPER(@Designation_Name)  
SET @Emp_Dept_Id = 0                        
SELECT @Emp_Dept_Id = DepartmentCode FROM tblDepartment
WHERE UPPER(DepartmentName) = UPPER(@Department_Name)  
SET @Emp_Branch_Id= 0            
SELECT @Emp_Branch_Id= BranchCode FROM tblBranch WHERE
UPPER(BranchName) = UPPER(@Location_Name) --@Branch_Name For Nakumatt Location
is MAPPED to BRANCH in Payroll/TA  
SET @Emp_Catgegory_Id= 0                        
SELECT @Emp_Catgegory_Id= CategoryCode FROM tblCategory
WHERE UPPER(CategoryName) = UPPER(@Category_Name)  
SET @Bank_Id= 0                        
SELECT @Bank_Id= BankCode FROM tblBankMaster WHERE UPPER(BankNo)
= UPPER(@Bank_No) --UPPER(BankName) = UPPER(@Bank_Name)  
SET @Bank_Branch_Id= 0 
SELECT @Bank_Branch_Id= BankCode FROM tblBank WHERE
UPPER(BankNo) = UPPER(@Bank_No + @Bank_Branch_No) --UPPER(BankBranch) =
UPPER(@Bank_Branch_Name)  
--IF @Emp_Weekly_OffType=1  
-- Pending  
--   BEGIN  
--      SELECT
@Emp_Weekly_Off=Emp_Weekoff FROM WebHR.dbo.tblEmployee_Weekoff   
--      where Emp_Id =
@Emp_ID and Cmp_Id=@HRMSCocode  
--   END  
IF @Emp_Desig_Id = 0  
 BEGIN                                 
     select  @Emp_Desig_Id 
= max(Designationcode) +1 from tblDesignation  
     Insert INTO
tblDesignation 
(DesignationCode,DesignationName,[Status],Director, MinWorkHours,
CoCode,UserId,EntryDate)   
    
Values(@Emp_Desig_Id ,@Designation_Name,'' ,  
     0,''
,@CoCode,1,GETDATE() )  
   END       
IF @Emp_Dept_Id = 0   
 BEGIN                            
     select
@Emp_Dept_Id= isnull(max(Departmentcode),0)+1 from tblDepartment  
     Insert INTO
tblDepartment  (DepartmentCode
,DepartmentName, DepartmentHead, MaximumEmployees, CoCode, UserId,
EntryDate,ProcessDay,DepartmentId)   
     Values
(@Emp_Dept_Id , @Department_Name, '','', @CoCode
,1,GETDATE(),0,@DepartmentID)  
   END       
IF @Emp_Branch_Id= 0  
 BEGIN                                 
     select
@Emp_Branch_Id=max(BranchCode)+1 from tblBranch 
     Insert INTO
tblBranch  (BranchCode, BranchID ,
BranchName,Address1, Address2, Telephone, Fax, 
CoCode,UserId,EntryDate)   
     Values
(@Emp_Branch_Id
,@Location_Code,@Location_Name,@Location_Address,@Location_Address,@Location_Phone_No,@Location_Fax_No,@CoCode,1,getdate())                      
   END       
 IF @Emp_Catgegory_Id=
0   
 BEGIN                                 
     select
@Emp_Catgegory_Id=MAX(CategoryCode)+1 from tblCategory  
     Insert INTO
tblCategory 
(CategoryCode,CategoryName,MaximumEmployees,CoCode,UserId,EntryDate)   
     Values
(@Emp_Catgegory_Id,@Category_Name,@Category_Maximum_Employee,@CoCode,1,GETDATE())  
   END    
   IF @Bank_Id= 0   
 BEGIN                                 
     select
@Bank_Id=MAX(BankCode) + 1 from tblBankMaster 
     Insert INTO
tblBankMaster 
(BankCode,BankName,BankNo,CoCode)  
     VALUES
(@Bank_Id,@Bank_Name,@Bank_No,@CoCode)  
   END       
   IF @Bank_Branch_Id=
0   
 BEGIN        
     select
@Bank_Branch_Id=MAX(BankCode) + 1 from tblBank 
     Insert INTO
tblBank  (BankCode,
BankNo,BankName,BankBranch,cocode,BankMasterCode)   
     VALUES
(@Bank_Branch_Id,@Bank_No+@Bank_Branch_No,@Bank_Name,@Bank_Branch_Name,@Cocode,@Bank_Id)  
   END  
 set @Next_Of_Kin=''  
 set  @strEmp_ID = CONVERT(varchar(10),
@Emp_ID)  
 if not exists(select
* from tblEmployee where LTRIM(RTRIM(EmpNo)) LIKE LTRIM(rtrim(@EmpPayrollNo)
))  
 begin  
  SELECT @EmpCode =
isnull(MAX(EMPCODE),0) + 1 FROM tblEmployee 
  -- select WeeklyOffDay,*
from tblEmployee   
  Insert Into
tblEmployee  
  (Cocode,EmpCode,
EmpNo, FamilyName, FatherName, OtherNames, EmpName, Sex, DateOfJoining,
DateOfBirth, EmploymentType,  
  MaritialStatus,
NoOfChildren, BranchCode, DepartmentCode, CategoryCode, DesignationCode,  
  LocalAddress1,
LocalAddress2, LocalTelephone, PermanentAddress1, PermanentAddress2,  
  PermanentTelephone,
EmailAddress, PINNo, NSSFNo, NHIFNo, NationalIDPPno, NationalIDCountry, Height,
Weight, BloodGroup,ChargeNSSF,ChargeNHIF,UniversityName,Religion,NextOfKin,BankName,BankBranch,BankCode,BankAccountNo)  
  select
@CoCode,@EmpCode,emp_payroll_no,Emp_Last_Name,'',Emp_First_Name + ' ' +
Emp_Middle_Name,Emp_First_Name + ' ' + Emp_Middle_Name + ' ' +
Emp_Last_Name  
  ,CASE Emp_Gender
WHEN 1 then 'M' WHEN 2 then 'F' END,Emp_Join_Date,Emp_Birth_Date,  
  case Employment_Type
when 1 then 0 when 2 then 1 when 3 then 0 end asemploymenttype,  
 
Emp_MaritalStatus_Id,Emp_Children,@Emp_Branch_Id,@Emp_Dept_Id,@Emp_Catgegory_Id,@Emp_Desig_Id,Emp_Address
,'',Emp_WorkPhone,  
 
Emp_P_Address,'',Emp_MobileNo,Emp_WorkEmail,Emp_PINNo,Emp_NSSFNo,Emp_NHIFNo,emp_Nationalityid,@Emp_NationalIDCountry,Height,[weight],  
  CASE Blood_Group
WHEN 1 Then 'A-' WHEN 2 Then 'A+' WHEN 3 Then 'B-' WHEN 4 Then 'B+'  
       WHEN 5 Then 'AB-' WHEN 6 Then 'AB+' WHEN 7
Then 'O-'WHEN 8 Then 'O+' END   
 
,1,1,College_Name,Religion_Name,@Next_Of_Kin
,@Bank_Name,@Bank_Branch_Name,@Bank_Branch_Id,Account_No  
  from
##TempEmployee_HRMS     
  where
ltrim(rtrim(Emp_Payroll_No)) like LTRIM(rtrim(@EmpPayrollNo))   
  --WeeklyOffDay  
  IF
@Emp_Weekly_OffType=1  
  Exec ('update
tblEmployee set WeeklyOffDay = ( select max(Emp_Weekoff) as Emp_Weekoff FROM '
+ @LinkServer + 'tblEmployee_Weekoff where Emp_ID  = ' + 
@strEmp_ID + ') where EmpNo = '''+ @EmpPayrollNo + '''')  
--        
 end  
else  
 begin  
 SELECT
@employmenttype = case Employment_Type when 1 then 0 when 2 then 1 when 3 then
0 end,  
  @Emp_Gender =  Case Emp_Gender WHEN 1 Then 'M' WHEN 2 Then
'F' END ,  
  @Emp_BloodGroup =
CASE Blood_Group WHEN 1 Then 'A-' WHEN 2 Then 'A+' WHEN 3 Then 'B-' WHEN 4 Then
'B+'  
    WHEN 5 Then 'AB-'
WHEN 6 Then 'AB+' WHEN 7 Then 'O-' WHEN 8 Then 'O+' END   
  FROM
##TempEmployee_HRMS    
  WHERE
ltrim(rtrim(Emp_Payroll_No)) like LTRIM(rtrim(@EmpPayrollNo))   
  update
tblemployee  
  set   
  FamilyName=A.Emp_Last_Name,  
 
OtherNames=A.Emp_First_Name + ' ' + A.Emp_Middle_Name,  
 
EmpName=A.Emp_First_Name + ' ' + A.Emp_Middle_Name + ' ' +
A.Emp_Last_Name,  
 
Sex=@Emp_Gender,  
 
DateOfJoining=A.Emp_Join_Date,  
 
DateOfBirth=A.Emp_Birth_Date,  
  EmploymentType=@employmenttype,  
 
MaritialStatus=A.Emp_MaritalStatus_Id, 
 
NoOfChildren=A.Emp_Children,  
 
BranchCode=@Emp_Branch_Id,  
 
DepartmentCode=@Emp_Dept_Id,  
 
CategoryCode=@Emp_Catgegory_Id,  
 
DesignationCode=@Emp_Desig_Id,  
 
LocalAddress1=A.Emp_Address,  
 
LocalTelephone=A.Emp_WorkPhone,  
 
PermanentAddress1=A.Emp_P_Address, 
 
PermanentTelephone=A.Emp_MobileNo, 
 
EmailAddress=A.Emp_WorkEmail,   
 
PINNo=A.Emp_PINNo,  
 
NSSFNo=A.Emp_NSSFNo,   
 
NHIFNo=A.Emp_NHIFNo,   
 
NationalIDPPno=A.Emp_NationalityId,  
 
NationalIDCountry=@Emp_NationalIDCountry,  
  Height=
A.Height,   
 
Weight=A.[weight],  
 
BloodGroup=@Emp_BloodGroup,  
 
UniversityName=A.College_Name,  
 
Religion=A.Religion_Name,  
 
NextOfKin=@Next_Of_Kin,  
 
BankName=@Bank_Name,  
 
BankBranch=@Bank_Branch_Name,  
 
BankCode=@Bank_Branch_Id,  
 
BankAccountNo=A.Account_No FROM  
  ##TempEmployee_HRMS
as A   
  where
LTRIM(RTRIM(EMPNO)) = 
LTRIM(rtrim(@EmpPayrollNo))--ltrim(rtrim(a.emp_payroll_no)) like LTRIM(rtrim(@EmpPayrollNo))  
  IF
@Emp_Weekly_OffType=1  
  exec ('update
tblEmployee set WeeklyOffDay = ( select max(Emp_Weekoff) as Emp_Weekoff FROM '
+ @LinkServer + 'tblEmployee_Weekoff where Emp_ID  = ' + 
@strEmp_ID + ') where EmpNo = '''+ @EmpPayrollNo + '''')  
 End   
 set @Update_Flag =
1  
end  
 Return  
 
No comments:
Post a Comment
Kindly Comment and Thanks in Advance for Commenting