Merge pull request 'profile issues' (#47) from dev_mashfiq into devqc

Reviewed-on: http://103.197.204.162:3025/CelHRTeam/EchoTex_Payroll/pulls/47
This commit is contained in:
chapal 2025-09-01 12:52:57 +06:00
commit daa69e80b7
45 changed files with 38273 additions and 7876 deletions

View File

@ -1166,7 +1166,7 @@ namespace DatabaseComparison
GO");
sql.AppendFormat("\r\n\r\n");
sql.AppendFormat(@"CREATE VIEW VW_EMPDigitalServiceBook AS
SELECT E.EMPLOYEEID, E.EMPLOYEENO, E.BENGALINAME AS NAME, E.FATHERNAME, E.MOTHERNAME, ES.NAME AS SPOUSENAME, E.JOININGDATE, E.EMPLOYEESTATUS,
SELECT E.EMPLOYEEID, E.EMPLOYEENO, E.BANGLANAME AS NAME, E.FATHERNAME, E.MOTHERNAME, ES.NAME AS SPOUSENAME, E.JOININGDATE, E.EMPLOYEESTATUS,
DES.NAMEINBANGLA AS DESIGNATION, EC.PARMANENTADDRESS AS PARMANENTADDRESS, EC.PRESENTADDRESS AS PRESENTADDRESS, EC.PERMANENTPOSTOFFICE AS POSTOFFICE,
EC.PERMANENTPOSTCODENO AS POSTCODENO, EC.PERMANENTVILLAGE AS VILLAGE, EC.PERMANENTROADNO AS ROADNO,
EC.PERMANENTWARDNO AS WARDNO, E.BIRTHDATE AS BIRTHDATE, E.PHOTOPATH AS PHOTO, E.NATIONALID AS NIDNO, E.HEIGHT AS HEIGHT, E.BLOODGROUP AS BLOODGROUP,

View File

@ -596,38 +596,74 @@ namespace HRM.BO
public const string EmpMaritalStatus = "<<EmpMaritalStatus>>";
// Bangla Tags
public const string EmpNameBangla = "<<bvg>>";
public const string EmpCodeBangla = "<<‡KvW>>";
public const string EmpWorkType = "<<Kv‡RiaiY>>";
public const string EmpSpouseName = "<<¯^vgx/¯¿xibvg>>";
public const string JoiningDateBangla = "<<‡hvM`vb>>";
public const string EmpDesignaionBangla = "<<c`ex>>";
public const string EmpDepartmentBangla = "<<wefvM>>";
public const string BirthDateBangla = "<<Rb¥ZvwiL>>";
public const string ProbationDateBangla = "<<wk¶vbexkZvwiL>>";
public const string GradeBangla = "<<†MÖW>>";
public const string BasicSalaryBangla = "<<gyj†eZb>>";
public const string HouseRentBangla = "<<evoxfvov>>";
public const string ConveyenceBangla = "<<hvZvqvZfvZv>>";
public const string MedicalBangla = "<<wPwKrmvfvZv>>";
public const string FoodBangla = "<<Lv`¨fvZv>>";
public const string AttendenceBonusBangla = "<<ab>>";
public const string ConductBonusBangla = "<<cb>>";
public const string FatherNameBangla = "<<wcZvibvg>>";
public const string MotherNameBangla = "<<gvZvibvg>>";
public const string SpouseNameBangla = "<<¯úvD†Ri bvg>>";
public const string VillagePABangla = "<<¯vqxMÖvg>>";
public const string PostOfficePABangla = "<<¯vqx‡cvóAwdm>>";
public const string ThanaPABangla = "<<¯vqx_vbv>>";
public const string DistrictPABangla = "<<¯vqx‡Rjv>>";
public const string VillageTABangla = "<<eZ©gvbMÖvg>>";
public const string PostOfficeTABangla = "<<eZ©gvb‡cvóAwdm>>";
public const string ThanaTABangla = "<<eZ©gvb_vbv>>";
public const string DistrictTABangla = "<<eZ©gvb‡Rjv>>";
public const string TotalTakaBangla = "<<me©‡gvU>>";
public const string SectionBangla = "<<‡mKkb>>";
public const string BloodGroupBangla = "<<i‡³iMÖæc>>";
public const string FloorBangla = "<<‡d¬vi>>";
//public const string EmpNameBangla = "<<bvg>>";
//public const string EmpCodeBangla = "<<‡KvW>>";
//public const string EmpWorkType = "<<Kv‡RiaiY>>";
//public const string EmpSpouseName = "<<¯^vgx/¯¿xibvg>>";
//public const string JoiningDateBangla = "<<‡hvM`vb>>";
//public const string EmpDesignaionBangla = "<<c`ex>>";
//public const string EmpDepartmentBangla = "<<wefvM>>";
//public const string BirthDateBangla = "<<Rb¥ZvwiL>>";
//public const string ProbationDateBangla = "<<wk¶vbexkZvwiL>>";
//public const string GradeBangla = "<<†MÖW>>";
//public const string BasicSalaryBangla = "<<gyj†eZb>>";
//public const string HouseRentBangla = "<<evoxfvov>>";
//public const string ConveyenceBangla = "<<hvZvqvZfvZv>>";
//public const string MedicalBangla = "<<wPwKrmvfvZv>>";
//public const string FoodBangla = "<<Lv`¨fvZv>>";
//public const string AttendenceBonusBangla = "<<ab>>";
//public const string ConductBonusBangla = "<<cb>>";
//public const string FatherNameBangla = "<<wcZvibvg>>";
//public const string MotherNameBangla = "<<gvZvibvg>>";
//public const string SpouseNameBangla = "<<¯úvD†Ri bvg>>";
//public const string VillagePABangla = "<<¯vqxMÖvg>>";
//public const string PostOfficePABangla = "<<¯vqx‡cvóAwdm>>";
//public const string ThanaPABangla = "<<¯vqx_vbv>>";
//public const string DistrictPABangla = "<<¯vqx‡Rjv>>";
//public const string VillageTABangla = "<<eZ©gvbMÖvg>>";
//public const string PostOfficeTABangla = "<<eZ©gvb‡cvóAwdm>>";
//public const string ThanaTABangla = "<<eZ©gvb_vbv>>";
//public const string DistrictTABangla = "<<eZ©gvb‡Rjv>>";
//public const string TotalTakaBangla = "<<me©‡gvU>>";
//public const string SectionBangla = "<<‡mKkb>>";
//public const string BloodGroupBangla = "<<i‡³iMÖæc>>";
//public const string FloorBangla = "<<‡d¬vi>>";
public const string EmpNameBangla = "EmpNameBangla";
public const string EmpCodeBangla = "EmpCodeBangla";
public const string EmpWorkType = "EmpWorkType";
public const string EmpSpouseName = "EmpSpouseName";
public const string JoiningDateBangla = "JoiningDateBangla";
public const string EmpDesignaionBangla = "EmpDesignaionBangla";
public const string EmpDepartmentBangla = "EmpDepartmentBangla";
public const string BirthDateBangla = "BirthDateBangla";
public const string ProbationDateBangla = "ProbationDateBangla";
public const string GradeBangla = "GradeBangla";
public const string BasicSalaryBangla = "BasicSalaryBangla";
public const string HouseRentBangla = "HouseRentBangla";
public const string ConveyenceBangla = "ConveyenceBangla";
public const string MedicalBangla = "MedicalBangla";
public const string FoodBangla = "FoodBangla";
public const string AttendenceBonusBangla = "AttendenceBonusBangla";
public const string ConductBonusBangla = "ConductBonusBangla";
public const string FatherNameBangla = "FatherNameBangla";
public const string MotherNameBangla = "MotherNameBangla";
public const string SpouseNameBangla = "SpouseNameBangla";
public const string VillagePABangla = "VillagePABangla";
public const string PostOfficePABangla = "PostOfficePABangla";
public const string ThanaPABangla = "ThanaPABangla";
public const string DistrictPABangla = "DistrictPABangla";
public const string VillageTABangla = "VillageTABangla";
public const string PostOfficeTABangla = "PostOfficeTABangla";
public const string ThanaTABangla = "ThanaTABangla";
public const string DistrictTABangla = "DistrictTABangla";
public const string TotalTakaBangla = "TotalTakaBangla";
public const string SectionBangla = "SectionBangla";
public const string BloodGroupBangla = "BloodGroupBangla";
public const string FloorBangla = "FloorBangla";
#endregion

View File

@ -290,7 +290,7 @@ namespace HRM.BO
set { _payrollTypeID = value; }
}
#endregion
#region payrollTypeID : int
#region punishmentID : int
private int _punishmentID;
public int PunishmentID
@ -299,7 +299,7 @@ namespace HRM.BO
set { _punishmentID = value; }
}
#endregion
#region payrollTypeID : int
#region complainID : int
private int _complainID;
public int ComplainID
@ -554,6 +554,7 @@ public Employee Employee { get; set; }
#endregion
public string CreatedByUser { get; set; }
}

View File

@ -77,6 +77,7 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="DocumentFormat.OpenXml" Version="3.3.0" />
<PackageReference Include="iTextSharp" Version="5.5.13.3" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="5.0.12" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />

View File

@ -1,12 +1,16 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
using System.Data;
using System.IO;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Wordprocessing;
//using Microsoft.Office.Interop;
using Microsoft.Office.Interop.Word;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using Paragraph = DocumentFormat.OpenXml.Wordprocessing.Paragraph;
namespace HRM.BO
{
@ -15,6 +19,7 @@ namespace HRM.BO
private Hashtable _Pair;
private string _OriginalFile;
private string _PreparedFile;
public string PreparedFile => _PreparedFile;
private Application _wordapp;
public MSWord()
{
@ -40,13 +45,13 @@ namespace HRM.BO
}
}
public string PreparedFile
{
get
{
return _PreparedFile;
}
}
//public string PreparedFile
//{
// get
// {
// return _PreparedFile;
// }
//}
public void DeleteFile()
{
@ -183,6 +188,70 @@ namespace HRM.BO
}
}
public void ReplaceWordsDocx(string destFileName, Hashtable tagValueHashTable)
{
if (tagValueHashTable == null || tagValueHashTable.Count == 0)
return;
CreateCopy(destFileName);
try
{
if (!Path.GetExtension(_PreparedFile).Equals(".docx", StringComparison.OrdinalIgnoreCase))
throw new InvalidOperationException("Only .docx files are supported. Please convert your template to .docx.");
using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(_PreparedFile, true))
{
var docPart = wordDoc.MainDocumentPart;
var texts = docPart.Document.Descendants<Text>().ToList();
string docText;
// Load the entire document XML
using (StreamReader sr = new StreamReader(docPart.GetStream()))
{
docText = sr.ReadToEnd();
}
// Perform replacements
_Pair = (tagValueHashTable != null) ? tagValueHashTable : new Hashtable();
foreach (string key in _Pair.Keys)
{
//FindText = sKey;
//ReplaceText = tagValueHashTable[sKey];
string value = tagValueHashTable[key]?.ToString() ?? string.Empty;
docText = docText.Replace(key, value);
}
// Write updated XML back
using (StreamWriter sw = new StreamWriter(docPart.GetStream(FileMode.Create)))
{
sw.Write(docText);
}
}
//using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(_PreparedFile, true))
//{
// var docPart = wordDoc.MainDocumentPart;
// foreach (var text in docPart.Document.Descendants<Text>())
// {
// foreach (string key in tagValueHashTable.Keys)
// {
// string value = tagValueHashTable[key]?.ToString() ?? string.Empty;
// if (text.Text.Contains(key))
// {
// text.Text = text.Text.Replace(key, value);
// }
// }
// }
// docPart.Document.Save();
//}
}
catch (Exception ex)
{
throw new Exception("Error: Could not read file from disk. Original error: " + ex.Message);
}
}
public void printDoc()
{
Microsoft.Office.Interop.Word.Application ac = new Microsoft.Office.Interop.Word.Application();

View File

@ -3769,8 +3769,9 @@ AND ea.EMPLOYEEID=emp.EMPLOYEEID AND ea.LASTLEVEL=1),'') LastAcademic ,
{
tc.CommandTimeOut = 60;
string sSQL = SQLParser.MakeSQL(@"SELECT EMPLOYEEID, EMPLOYEENO, NAME, FATHERNAME, MOTHERNAME, SPOUSENAME, JOININGDATE,
DESIGNATION, BIRTHDATE, NIDNO, HEIGHT, BLOODGROUP, PARMANENTADDRESS, PARMANENTDISTRICT,
PARMANENTTHANA, PRESENTADDRESS, LMDESIGNATION, PHOTO, EDUCATIONLEVEL
DESIGNATION, BIRTHDATE, NIDNO, HEIGHT, BLOODGROUP,
PARMANENTADDRESS, PRESENTADDRESS, POSTOFFICEPA, DISTRICTPA,THANAPA,VILLAGEPA, ROADNOPA, WARDNOPA, POSTOFFICETA, DISTRICTTA, THANATA, VILLAGETA, ROADNOTA, WARDNOTA,
LMDESIGNATION, PHOTO, EDUCATIONLEVEL
FROM dbo.VW_EMPDIGITALSERVICEBOOK
WHERE EMPLOYEEID = %n", empID);
return tc.ExecuteDataSet(sSQL);

View File

@ -443,7 +443,7 @@ namespace HRM.DA
foreach(var item in Groupdate)
{
Thread myNewThread = new Thread(() => Process(item.Key,
EnumProcessMode.Auto, oemp.PayrollTypeID, ouser.ID, emps));
EnumProcessMode.Auto, oemp.PayrollTypeID, ouser.ID, emps, false));
myNewThread.Start();
}
@ -462,16 +462,16 @@ namespace HRM.DA
_shifts = new ShiftService().GetAllShift();
for (DateTime currentDate = ProcessDate; currentDate <= endDate; currentDate = currentDate.AddDays(1))
{
Process(currentDate, EnumProcessMode.Auto, payrollTypeID, processUserID, emp);
Process(currentDate, EnumProcessMode.Auto, payrollTypeID, processUserID, emp, false);
}
}
public void Process(DateTime fromDate, EnumProcessMode prMode, int payrollTypeID, int processUserID, List<Employee> emps)
public void Process(DateTime fromDate, EnumProcessMode prMode, int payrollTypeID, int processUserID, List<Employee> emps, bool overrideManualEntry)
{
bool isEchoTex = new SystemConfigarationService().GetconfigBooleanValue(EnumConfigurationType.Logic, "attendence", "echotexprocess");
if (isEchoTex == true)
{
echoTexProcess(fromDate, prMode, payrollTypeID, processUserID, emps);
echoTexProcess(fromDate, prMode, payrollTypeID, processUserID, emps, overrideManualEntry);
return;
}
_attnRunSummary = new AttnProcessRunSummary();
@ -2565,7 +2565,7 @@ namespace HRM.DA
public void echoTexProcess(DateTime Attdate, EnumProcessMode prMode, int payrolltypeid, int processUserID, List< Employee> employees)
public void echoTexProcess(DateTime Attdate, EnumProcessMode prMode, int payrolltypeid, int processUserID, List< Employee> employees, bool overrideManualEntry)
{
AttnProcessRunSummary oAttnRunSummary = new AttnProcessRunSummary();
@ -2668,7 +2668,7 @@ namespace HRM.DA
.FirstOrDefault(obj => obj.EmployeeID == emp.ID);
// 2. If Attendendence is manually enterred
if (manualEntry != null)
if (manualEntry != null && overrideManualEntry == false)
{
// 2.1 If Both In and Out are Manually Enterred then add the item
if (!manualEntry.OnlyManualInTime && !manualEntry.OnlyManualOutTime)

View File

@ -1,17 +1,19 @@
using System;
using HRM.BO;
using HRM.DA;
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using HRM.BO;
using HRM.DA;
using static HRM.Report.PayrollDataSet.PayrollDataSet;
namespace HRM.Report
{
public class rptDigitalServiceBook
{
public byte[] DigitalServiceBook(int empID, int payrollTypeID, DateTime fromDate, string sEmpIDs, string reportType)
public byte[] DigitalServiceBook(int empID, int payrollTypeID, DateTime fromDate, string sEmpIDs, int? authorizePersionID, string reportType)
{
DataSet dSet = new DataSet();
DataRow oDR = null;
@ -19,6 +21,16 @@ namespace HRM.Report
if (sEmpIDs != null)
empID = Convert.ToInt32(sEmpIDs);
AuthorizedPerson authPerson = null;
if(authorizePersionID != null)
{
authPerson = new AuthorizedPersonService().Get((int)authorizePersionID);
}
//string TargetFolder = @"Documents\EMPPHOTO\";
//string currentDirectory = Directory.GetCurrentDirectory();
string TargetFolder = System.IO.Path.Combine(System.Environment.CurrentDirectory + @"\Documents\EMPPHOTO\");
#region Employee general info
DataSet oEmp = new EmployeeService().GetEmpDigitalServiceBook(empID);
@ -34,25 +46,51 @@ namespace HRM.Report
oDR["FATHERNAME"] = oDRow["FATHERNAME"];
oDR["MOTHERNAME"] = oDRow["MOTHERNAME"];
oDR["SPOUSENAME"] = oDRow["SPOUSENAME"];
oDR["JOININGDATE"] = Convert.ToDateTime(oDRow["JOININGDATE"]).ToString("dd/MM/yyyy");
//oDR["JOININGDATE"] = Convert.ToDateTime(oDRow["JOININGDATE"]).ToString("dd/MM/yyyy");
DateTime jointDate = Convert.ToDateTime(oDRow["JOININGDATE"]);
oDR["JOININGDATE"] = string.Format("{0} {1} {2}", jointDate.Day, GlobalExtensions.BanglaMonth(jointDate), jointDate.Year);
oDR["DESIGNATION"] = oDRow["DESIGNATION"];
//oDR["DESIGNATION"] = rptDigitalServiceBook.ConvertToBijoy(oDRow["DESIGNATION"].ToString());
oDR["PARMANENTADDRESS"] = oDRow["PARMANENTADDRESS"];
oDR["PRESENTADDRESS"] = oDRow["PRESENTADDRESS"];
oDR["BIRTHDATE"] = Convert.ToDateTime(oDRow["BIRTHDATE"]).ToString("dd/MM/yyyy");
//oDR["BIRTHDATE"] = Convert.ToDateTime(oDRow["BIRTHDATE"]).ToString("dd/MM/yyyy");
DateTime birthDate = Convert.ToDateTime(oDRow["BIRTHDATE"]);
oDR["BIRTHDATE"] = string.Format("{0} {1} {2}", birthDate.Day, GlobalExtensions.BanglaMonth(birthDate), birthDate.Year);
//if (oDRow["PHOTO"] is not DBNull)
// oDR["PHOTO"] = Convert.ToBase64String((byte[])oDRow["PHOTO"]);
oDR["NIDNO"] = oDRow["NIDNO"];
oDR["HEIGHT"] = oDRow["HEIGHT"];
oDR["BLOODGROUP"] = GlobalExtensions.BloodGroupToFriendlyName((EnumBloodGroup)Enum.Parse(typeof(EnumBloodGroup),
Convert.ToInt32(oDRow["BLOODGROUP"]).ToString()));
//oDR["BLOODGROUP"] = GlobalExtensions.BloodGroupToFriendlyName((EnumBloodGroup)Enum.Parse(typeof(EnumBloodGroup),
// Convert.ToInt32(oDRow["BLOODGROUP"]).ToString()));
oDR["BLOODGROUP"] = GlobalFunctions.BloodGroupToBangla((EnumBloodGroup)Convert.ToInt32(oDRow["BLOODGROUP"]));
//oDR["BLOODGROUP"] = (EnumBloodGroup)Enum.Parse(typeof(EnumBloodGroup), Convert.ToInt32(oDRow["BLOODGROUP"]).ToString());
oDR["LMDESIGNATION"] = oDRow["LMDESIGNATION"];
//oDR["LMDESIGNATION"] = rptDigitalServiceBook.ConvertToBijoy(oDRow["LMDESIGNATION"].ToString());
oDR["EDUCATIONLEVEL"] = oDRow["EDUCATIONLEVEL"];
oDR["PARMANENTDISTRICT"] = oDRow["PARMANENTDISTRICT"];
oDR["PARMANENTTHANA"] = oDRow["PARMANENTTHANA"];
oDR["POSTOFFICEPA"] = oDRow["POSTOFFICEPA"];
oDR["DISTRICTPA"] = oDRow["DISTRICTPA"];
oDR["THANAPA"] = oDRow["THANAPA"];
oDR["VILLAGEPA"] = oDRow["VILLAGEPA"];
oDR["ROADNOPA"] = oDRow["ROADNOPA"];
oDR["WARDNOPA"] = oDRow["WARDNOPA"];
oDR["POSTOFFICETA"] = oDRow["POSTOFFICETA"];
oDR["DISTRICTTA"] = oDRow["DISTRICTTA"];
oDR["THANATA"] = oDRow["THANATA"];
oDR["VILLAGETA"] = oDRow["VILLAGETA"];
oDR["ROADNOTA"] = oDRow["ROADNOTA"];
oDR["WARDNOTA"] = oDRow["WARDNOTA"];
oDR["PHOTO"] = System.IO.Path.Combine(TargetFolder + string.Format("Image-{0}.jpg", oDRow["EMPLOYEENO"]));
oDR["SIGNATURE"] = System.IO.Path.Combine(TargetFolder + string.Format("Signature-{0}.jpg", oDRow["EMPLOYEENO"]));
if (authPerson != null)
oDR["AUTHSIGN"] = authPerson.Signature;
dTable.Rows.Add(oDR);
//count++;
@ -95,7 +133,9 @@ namespace HRM.Report
foreach (DataRow oDRow in dtEmplifecycle.Rows)
{
oDR = dTable.NewRow();
oDR["EFFECTDATE"] = Convert.ToDateTime(oDRow["EFFECTDATE"]).ToString("dd/MM/yyyy");
//oDR["EFFECTDATE"] = Convert.ToDateTime(oDRow["EFFECTDATE"]).ToString("dd/MM/yyyy");
DateTime efectDate = Convert.ToDateTime(oDRow["EFFECTDATE"]);
oDR["EFFECTDATE"] = string.Format("{0} {1} {2}", efectDate.Day, GlobalExtensions.BanglaMonth(efectDate), efectDate.Year);
//Designation Designation = new DesignationService().Get(Convert.ToInt32(oDRow["DESIGNATIONID"]));
//oDR["DESIGNATION"] = Designation.NameInBangla;
Grade oGrade = new GradeService().Get(Convert.ToInt32(oDRow["GradeID"]));
@ -124,8 +164,14 @@ namespace HRM.Report
foreach (DataRow oDRow in oLeaveEntry.Tables[0].Rows)
{
oDR = dTable.NewRow();
oDR["FROMDATE"] = Convert.ToDateTime(oDRow["APRFROMDATE"]).ToString("dd/MM/yyyy");
oDR["TODATE"] = Convert.ToDateTime(oDRow["APRTODATE"]).ToString("dd/MM/yyyy");
DateTime fromDateDr = Convert.ToDateTime(oDRow["APRFROMDATE"]);
oDR["FROMDATE"] = string.Format("{0} {1} {2}", fromDateDr.Day, GlobalExtensions.BanglaMonth(fromDateDr), fromDateDr.Year);
DateTime toDateDr = Convert.ToDateTime(oDRow["APRTODATE"]);
oDR["TODATE"] = string.Format("{0} {1} {2}", toDateDr.Day, GlobalExtensions.BanglaMonth(toDateDr), toDateDr.Year);
//oDR["FROMDATE"] = Convert.ToDateTime(oDRow["APRFROMDATE"]).ToString("dd/MM/yyyy");
//oDR["TODATE"] = Convert.ToDateTime(oDRow["APRTODATE"]).ToString("dd/MM/yyyy");
oDR["TOTALDAYS"] = Convert.ToInt32(oDRow["APRTOTALDAYS"]).ToString();
dTable.Rows.Add(oDR);
@ -146,7 +192,9 @@ namespace HRM.Report
foreach (DataRow oDRow in oComplain.Tables[0].Rows)
{
oDR = dTable.NewRow();
oDR["EFFECTDATE"] = Convert.ToDateTime(oDRow["EFFECTDATE"]).ToString("dd/MM/yyyy");
//oDR["EFFECTDATE"] = Convert.ToDateTime(oDRow["EFFECTDATE"]).ToString("dd/MM/yyyy");
DateTime efectDate = Convert.ToDateTime(oDRow["EFFECTDATE"]);
oDR["EFFECTDATE"] = string.Format("{0} {1} {2}", efectDate.Day, GlobalExtensions.BanglaMonth(efectDate), efectDate.Year);
//if (oDRow["DESCRIPTIONINBANGLA"] is DBNull)
// oDR["DESCRIPTION"] = oDRow["DESCRIPTION"];
//else

View File

@ -18,10 +18,12 @@ using Org.BouncyCastle.Ocsp;
using HRM.Service;
using HRM.BO.Configuration;
using Microsoft.Extensions.Configuration;
using NPOI.SS.Formula.Functions;
//using NPOI.SS.Formula.Functions;
using System.Collections;
using Microsoft.AspNetCore.Http;
using NPOI.HPSF;
//using NPOI.HPSF;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Wordprocessing;
namespace HRM.Report
{
@ -3569,7 +3571,7 @@ namespace HRM.Report
table.Add(TagOutputConstant.AllowTotal, TotalAllowance.ToString("#,###.00"));
table.Add(TagOutputConstant.TakaInWord, HRM.BO.GlobalFunctions.MillionToInWords((int)TotalAllowance));
sFilePath = sFPath.TrimEnd('\\') + "\\" + oEmp.EmployeeNo + "-" + sLetterName + ".doc";
sFilePath = sFPath.TrimEnd('\\') + "\\" + oEmp.EmployeeNo + "-" + sLetterName + ".docx";
#endregion
@ -3589,7 +3591,7 @@ namespace HRM.Report
table = new EmployeeService().CollectDataForBanglaAppointmentHash(oHREmp, payrollType);
sFilePath = sFPath.TrimEnd('\\') + "\\" + oEmp.EmployeeNo + "-" + sLetterName + ".doc";
sFilePath = sFPath.TrimEnd('\\') + "\\" + oEmp.EmployeeNo + "-" + sLetterName + ".docx";
#endregion
@ -3608,7 +3610,7 @@ namespace HRM.Report
table = new EmployeeService().CollectDataForBanglaAppointmentHash(oHREmp, payrollType);
sFilePath = sFPath.TrimEnd('\\') + "\\" + oEmp.EmployeeNo + "-" + sLetterName + ".doc";
sFilePath = sFPath.TrimEnd('\\') + "\\" + oEmp.EmployeeNo + "-" + sLetterName + ".docx";
#endregion
@ -3619,11 +3621,11 @@ namespace HRM.Report
if (oCandidate.IsEmployee == false)
{
table.Add(TagOutputConstant.CandidateName, oCV.Name);
sFilePath = sFPath.TrimEnd('\\') + "\\" + oCV.TrackNo + "-" + sLetterName + ".doc";
sFilePath = sFPath.TrimEnd('\\') + "\\" + oCV.TrackNo + "-" + sLetterName + ".docx";
}
else
{
sFilePath = sFPath.TrimEnd('\\') + "\\" + oEmp.EmployeeNo + "-" + sLetterName + ".doc";
sFilePath = sFPath.TrimEnd('\\') + "\\" + oEmp.EmployeeNo + "-" + sLetterName + ".docx";
}
break;
@ -3633,26 +3635,49 @@ namespace HRM.Report
if (table != null)
{
#region OLD
//MSWord file = new MSWord();
//FileInfo ossInfo = null;
////file.OriginalFile = letterTemplte.FilePath.Trim();
//file.OriginalFile = System.IO.Path.Combine(System.Environment.CurrentDirectory + "\\Documents\\LetterTempFolder\\" + lFileName);
//ossInfo = new FileInfo(sFilePath);
//if (ossInfo.Exists)
//{
// ossInfo.Delete();
//}
//File.Copy(file.OriginalFile, sFilePath, true);
//file = new MSWord();
//file.OpenWordApplication();
////file.OriginalFile = letterTemplte.FilePath.Trim();
//file.OriginalFile = System.IO.Path.Combine(System.Environment.CurrentDirectory + "\\Documents\\LetterTempFolder\\" + lFileName);
//file.ReplaceWords(sFilePath, table);
//file.CloseWordApplication();
////pdfFilePath = System.IO.Path.ChangeExtension(sFilePath, ".pdf");
////ConvertDocToPdf(sFilePath, pdfFilePath);
//pdfFilePath = sFilePath;
#endregion
string templatePath = System.IO.Path.Combine(System.Environment.CurrentDirectory + "\\Documents\\LetterTempFolder\\" + lFileName);
// Copy template to output file
if (File.Exists(sFilePath))
File.Delete(sFilePath);
File.Copy(templatePath, sFilePath, true);
// Replace placeholders in Word document
//ReplaceWords(sFilePath, table);
MSWord file = new MSWord();
FileInfo ossInfo = null;
//file.OriginalFile = letterTemplte.FilePath.Trim();
file.OriginalFile = System.IO.Path.Combine(System.Environment.CurrentDirectory + "\\Documents\\LetterTempFolder\\" + lFileName);
//file.ReplaceWords(sFilePath, table);
file.ReplaceWordsDocx(sFilePath, table);
ossInfo = new FileInfo(sFilePath);
if (ossInfo.Exists)
{
ossInfo.Delete();
}
File.Copy(file.OriginalFile, sFilePath, true);
file = new MSWord();
file.OpenWordApplication();
//file.OriginalFile = letterTemplte.FilePath.Trim();
file.OriginalFile = System.IO.Path.Combine(System.Environment.CurrentDirectory + "\\Documents\\LetterTempFolder\\" + lFileName);
file.ReplaceWords(sFilePath, table);
file.CloseWordApplication();
//pdfFilePath = System.IO.Path.ChangeExtension(sFilePath, ".pdf");
//ConvertDocToPdf(sFilePath, pdfFilePath);
// pdfFilePath = Path.ChangeExtension(sFilePath, ".pdf"); // (if you later want PDF)
pdfFilePath = sFilePath;
}
@ -3688,5 +3713,61 @@ namespace HRM.Report
System.Runtime.InteropServices.Marshal.ReleaseComObject(wordApp);
}
}
//public void ReplaceWords(string filePath, Hashtable replacements)
//{
// using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(filePath, true))
// {
// var body = wordDoc.MainDocumentPart.Document.Body;
// foreach (var text in body.Descendants<Text>())
// {
// foreach (DictionaryEntry entry in replacements)
// {
// string key = entry.Key.ToString();
// string value = entry.Value?.ToString() ?? string.Empty;
// if (text.Text.Contains(key))
// {
// text.Text = text.Text.Replace(key, value);
// }
// }
// }
// wordDoc.MainDocumentPart.Document.Save();
// }
//}
public void ReplaceWords(string filePath, Hashtable replacements)
{
if (!File.Exists(filePath))
throw new FileNotFoundException("Template file not found", filePath);
if (!Path.GetExtension(filePath).Equals(".docx", StringComparison.OrdinalIgnoreCase))
throw new InvalidOperationException("Only .docx files are supported. Please convert your template to .docx format.");
using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(filePath, true))
{
var documentPart = wordDoc.MainDocumentPart;
string docText = null;
using (var sr = new StreamReader(documentPart.GetStream()))
{
docText = sr.ReadToEnd();
}
foreach (DictionaryEntry entry in replacements)
{
string key = entry.Key.ToString();
string value = entry.Value?.ToString() ?? string.Empty;
docText = docText.Replace(key, value);
}
using (var sw = new StreamWriter(documentPart.GetStream(FileMode.Create)))
{
sw.Write(docText);
}
}
}
}
}

View File

@ -620,6 +620,7 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="DocumentFormat.OpenXml" Version="3.3.0" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
<PackageReference Include="ReportViewerCore.NETCore" Version="15.1.18" />
</ItemGroup>

View File

@ -49,6 +49,8 @@ namespace HRM.Report.PayrollDataSet {
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
[System.ObsoleteAttribute("This API supports obsolete formatter-based serialization. It should not be called" +
" or extended by application code.", DiagnosticId="SYSLIB0051")]
protected DigitalServiceBookDataSet(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) :
base(info, context, false) {
if ((this.IsBinarySerialized(info, context) == true)) {
@ -453,9 +455,33 @@ namespace HRM.Report.PayrollDataSet {
private global::System.Data.DataColumn columnEDUCATIONLEVEL;
private global::System.Data.DataColumn columnPARMANENTDISTRICT;
private global::System.Data.DataColumn columnPOSTOFFICEPA;
private global::System.Data.DataColumn columnPARMANENTTHANA;
private global::System.Data.DataColumn columnDISTRICTPA;
private global::System.Data.DataColumn columnTHANAPA;
private global::System.Data.DataColumn columnVILLAGEPA;
private global::System.Data.DataColumn columnROADNOPA;
private global::System.Data.DataColumn columnWARDNOPA;
private global::System.Data.DataColumn columnPOSTOFFICETA;
private global::System.Data.DataColumn columnDISTRICTTA;
private global::System.Data.DataColumn columnTHANATA;
private global::System.Data.DataColumn columnVILLAGETA;
private global::System.Data.DataColumn columnROADNOTA;
private global::System.Data.DataColumn columnWARDNOTA;
private global::System.Data.DataColumn columnSIGNATURE;
private global::System.Data.DataColumn columnAUTHSIGN;
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
@ -485,6 +511,8 @@ namespace HRM.Report.PayrollDataSet {
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
[System.ObsoleteAttribute("This API supports obsolete formatter-based serialization. It should not be called" +
" or extended by application code.", DiagnosticId="SYSLIB0051")]
protected EMPDigitalServiceBookDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) :
base(info, context) {
this.InitVars();
@ -628,17 +656,113 @@ namespace HRM.Report.PayrollDataSet {
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
public global::System.Data.DataColumn PARMANENTDISTRICTColumn {
public global::System.Data.DataColumn POSTOFFICEPAColumn {
get {
return this.columnPARMANENTDISTRICT;
return this.columnPOSTOFFICEPA;
}
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
public global::System.Data.DataColumn PARMANENTTHANAColumn {
public global::System.Data.DataColumn DISTRICTPAColumn {
get {
return this.columnPARMANENTTHANA;
return this.columnDISTRICTPA;
}
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
public global::System.Data.DataColumn THANAPAColumn {
get {
return this.columnTHANAPA;
}
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
public global::System.Data.DataColumn VILLAGEPAColumn {
get {
return this.columnVILLAGEPA;
}
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
public global::System.Data.DataColumn ROADNOPAColumn {
get {
return this.columnROADNOPA;
}
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
public global::System.Data.DataColumn WARDNOPAColumn {
get {
return this.columnWARDNOPA;
}
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
public global::System.Data.DataColumn POSTOFFICETAColumn {
get {
return this.columnPOSTOFFICETA;
}
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
public global::System.Data.DataColumn DISTRICTTAColumn {
get {
return this.columnDISTRICTTA;
}
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
public global::System.Data.DataColumn THANATAColumn {
get {
return this.columnTHANATA;
}
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
public global::System.Data.DataColumn VILLAGETAColumn {
get {
return this.columnVILLAGETA;
}
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
public global::System.Data.DataColumn ROADNOTAColumn {
get {
return this.columnROADNOTA;
}
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
public global::System.Data.DataColumn WARDNOTAColumn {
get {
return this.columnWARDNOTA;
}
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
public global::System.Data.DataColumn SIGNATUREColumn {
get {
return this.columnSIGNATURE;
}
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
public global::System.Data.DataColumn AUTHSIGNColumn {
get {
return this.columnAUTHSIGN;
}
}
@ -697,8 +821,20 @@ namespace HRM.Report.PayrollDataSet {
string BLOODGROUP,
string LMDESIGNATION,
string EDUCATIONLEVEL,
string PARMANENTDISTRICT,
string PARMANENTTHANA) {
string POSTOFFICEPA,
string DISTRICTPA,
string THANAPA,
string VILLAGEPA,
string ROADNOPA,
string WARDNOPA,
string POSTOFFICETA,
string DISTRICTTA,
string THANATA,
string VILLAGETA,
string ROADNOTA,
string WARDNOTA,
string SIGNATURE,
string AUTHSIGN) {
EMPDigitalServiceBookRow rowEMPDigitalServiceBookRow = ((EMPDigitalServiceBookRow)(this.NewRow()));
object[] columnValuesArray = new object[] {
EMPLOYEEID,
@ -718,8 +854,20 @@ namespace HRM.Report.PayrollDataSet {
BLOODGROUP,
LMDESIGNATION,
EDUCATIONLEVEL,
PARMANENTDISTRICT,
PARMANENTTHANA};
POSTOFFICEPA,
DISTRICTPA,
THANAPA,
VILLAGEPA,
ROADNOPA,
WARDNOPA,
POSTOFFICETA,
DISTRICTTA,
THANATA,
VILLAGETA,
ROADNOTA,
WARDNOTA,
SIGNATURE,
AUTHSIGN};
rowEMPDigitalServiceBookRow.ItemArray = columnValuesArray;
this.Rows.Add(rowEMPDigitalServiceBookRow);
return rowEMPDigitalServiceBookRow;
@ -759,8 +907,20 @@ namespace HRM.Report.PayrollDataSet {
this.columnBLOODGROUP = base.Columns["BLOODGROUP"];
this.columnLMDESIGNATION = base.Columns["LMDESIGNATION"];
this.columnEDUCATIONLEVEL = base.Columns["EDUCATIONLEVEL"];
this.columnPARMANENTDISTRICT = base.Columns["PARMANENTDISTRICT"];
this.columnPARMANENTTHANA = base.Columns["PARMANENTTHANA"];
this.columnPOSTOFFICEPA = base.Columns["POSTOFFICEPA"];
this.columnDISTRICTPA = base.Columns["DISTRICTPA"];
this.columnTHANAPA = base.Columns["THANAPA"];
this.columnVILLAGEPA = base.Columns["VILLAGEPA"];
this.columnROADNOPA = base.Columns["ROADNOPA"];
this.columnWARDNOPA = base.Columns["WARDNOPA"];
this.columnPOSTOFFICETA = base.Columns["POSTOFFICETA"];
this.columnDISTRICTTA = base.Columns["DISTRICTTA"];
this.columnTHANATA = base.Columns["THANATA"];
this.columnVILLAGETA = base.Columns["VILLAGETA"];
this.columnROADNOTA = base.Columns["ROADNOTA"];
this.columnWARDNOTA = base.Columns["WARDNOTA"];
this.columnSIGNATURE = base.Columns["SIGNATURE"];
this.columnAUTHSIGN = base.Columns["AUTHSIGN"];
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
@ -800,10 +960,34 @@ namespace HRM.Report.PayrollDataSet {
base.Columns.Add(this.columnLMDESIGNATION);
this.columnEDUCATIONLEVEL = new global::System.Data.DataColumn("EDUCATIONLEVEL", typeof(string), null, global::System.Data.MappingType.Element);
base.Columns.Add(this.columnEDUCATIONLEVEL);
this.columnPARMANENTDISTRICT = new global::System.Data.DataColumn("PARMANENTDISTRICT", typeof(string), null, global::System.Data.MappingType.Element);
base.Columns.Add(this.columnPARMANENTDISTRICT);
this.columnPARMANENTTHANA = new global::System.Data.DataColumn("PARMANENTTHANA", typeof(string), null, global::System.Data.MappingType.Element);
base.Columns.Add(this.columnPARMANENTTHANA);
this.columnPOSTOFFICEPA = new global::System.Data.DataColumn("POSTOFFICEPA", typeof(string), null, global::System.Data.MappingType.Element);
base.Columns.Add(this.columnPOSTOFFICEPA);
this.columnDISTRICTPA = new global::System.Data.DataColumn("DISTRICTPA", typeof(string), null, global::System.Data.MappingType.Element);
base.Columns.Add(this.columnDISTRICTPA);
this.columnTHANAPA = new global::System.Data.DataColumn("THANAPA", typeof(string), null, global::System.Data.MappingType.Element);
base.Columns.Add(this.columnTHANAPA);
this.columnVILLAGEPA = new global::System.Data.DataColumn("VILLAGEPA", typeof(string), null, global::System.Data.MappingType.Element);
base.Columns.Add(this.columnVILLAGEPA);
this.columnROADNOPA = new global::System.Data.DataColumn("ROADNOPA", typeof(string), null, global::System.Data.MappingType.Element);
base.Columns.Add(this.columnROADNOPA);
this.columnWARDNOPA = new global::System.Data.DataColumn("WARDNOPA", typeof(string), null, global::System.Data.MappingType.Element);
base.Columns.Add(this.columnWARDNOPA);
this.columnPOSTOFFICETA = new global::System.Data.DataColumn("POSTOFFICETA", typeof(string), null, global::System.Data.MappingType.Element);
base.Columns.Add(this.columnPOSTOFFICETA);
this.columnDISTRICTTA = new global::System.Data.DataColumn("DISTRICTTA", typeof(string), null, global::System.Data.MappingType.Element);
base.Columns.Add(this.columnDISTRICTTA);
this.columnTHANATA = new global::System.Data.DataColumn("THANATA", typeof(string), null, global::System.Data.MappingType.Element);
base.Columns.Add(this.columnTHANATA);
this.columnVILLAGETA = new global::System.Data.DataColumn("VILLAGETA", typeof(string), null, global::System.Data.MappingType.Element);
base.Columns.Add(this.columnVILLAGETA);
this.columnROADNOTA = new global::System.Data.DataColumn("ROADNOTA", typeof(string), null, global::System.Data.MappingType.Element);
base.Columns.Add(this.columnROADNOTA);
this.columnWARDNOTA = new global::System.Data.DataColumn("WARDNOTA", typeof(string), null, global::System.Data.MappingType.Element);
base.Columns.Add(this.columnWARDNOTA);
this.columnSIGNATURE = new global::System.Data.DataColumn("SIGNATURE", typeof(string), null, global::System.Data.MappingType.Element);
base.Columns.Add(this.columnSIGNATURE);
this.columnAUTHSIGN = new global::System.Data.DataColumn("AUTHSIGN", typeof(byte[]), null, global::System.Data.MappingType.Element);
base.Columns.Add(this.columnAUTHSIGN);
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
@ -969,6 +1153,8 @@ namespace HRM.Report.PayrollDataSet {
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
[System.ObsoleteAttribute("This API supports obsolete formatter-based serialization. It should not be called" +
" or extended by application code.", DiagnosticId="SYSLIB0051")]
protected SystemInformationDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) :
base(info, context) {
this.InitVars();
@ -1232,6 +1418,8 @@ namespace HRM.Report.PayrollDataSet {
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
[System.ObsoleteAttribute("This API supports obsolete formatter-based serialization. It should not be called" +
" or extended by application code.", DiagnosticId="SYSLIB0051")]
protected LeaveEntryDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) :
base(info, context) {
this.InitVars();
@ -1513,6 +1701,8 @@ namespace HRM.Report.PayrollDataSet {
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
[System.ObsoleteAttribute("This API supports obsolete formatter-based serialization. It should not be called" +
" or extended by application code.", DiagnosticId="SYSLIB0051")]
protected EMPLifecycleDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) :
base(info, context) {
this.InitVars();
@ -1822,6 +2012,8 @@ namespace HRM.Report.PayrollDataSet {
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
[System.ObsoleteAttribute("This API supports obsolete formatter-based serialization. It should not be called" +
" or extended by application code.", DiagnosticId="SYSLIB0051")]
protected ComplainDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) :
base(info, context) {
this.InitVars();
@ -2335,35 +2527,225 @@ namespace HRM.Report.PayrollDataSet {
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
public string PARMANENTDISTRICT {
public string POSTOFFICEPA {
get {
try {
return ((string)(this[this.tableEMPDigitalServiceBook.PARMANENTDISTRICTColumn]));
return ((string)(this[this.tableEMPDigitalServiceBook.POSTOFFICEPAColumn]));
}
catch (global::System.InvalidCastException e) {
throw new global::System.Data.StrongTypingException("The value for column \'PARMANENTDISTRICT\' in table \'EMPDigitalServiceBook\' is DBNu" +
"ll.", e);
throw new global::System.Data.StrongTypingException("The value for column \'POSTOFFICEPA\' in table \'EMPDigitalServiceBook\' is DBNull.", e);
}
}
set {
this[this.tableEMPDigitalServiceBook.PARMANENTDISTRICTColumn] = value;
this[this.tableEMPDigitalServiceBook.POSTOFFICEPAColumn] = value;
}
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
public string PARMANENTTHANA {
public string DISTRICTPA {
get {
try {
return ((string)(this[this.tableEMPDigitalServiceBook.PARMANENTTHANAColumn]));
return ((string)(this[this.tableEMPDigitalServiceBook.DISTRICTPAColumn]));
}
catch (global::System.InvalidCastException e) {
throw new global::System.Data.StrongTypingException("The value for column \'PARMANENTTHANA\' in table \'EMPDigitalServiceBook\' is DBNull." +
"", e);
throw new global::System.Data.StrongTypingException("The value for column \'DISTRICTPA\' in table \'EMPDigitalServiceBook\' is DBNull.", e);
}
}
set {
this[this.tableEMPDigitalServiceBook.PARMANENTTHANAColumn] = value;
this[this.tableEMPDigitalServiceBook.DISTRICTPAColumn] = value;
}
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
public string THANAPA {
get {
try {
return ((string)(this[this.tableEMPDigitalServiceBook.THANAPAColumn]));
}
catch (global::System.InvalidCastException e) {
throw new global::System.Data.StrongTypingException("The value for column \'THANAPA\' in table \'EMPDigitalServiceBook\' is DBNull.", e);
}
}
set {
this[this.tableEMPDigitalServiceBook.THANAPAColumn] = value;
}
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
public string VILLAGEPA {
get {
try {
return ((string)(this[this.tableEMPDigitalServiceBook.VILLAGEPAColumn]));
}
catch (global::System.InvalidCastException e) {
throw new global::System.Data.StrongTypingException("The value for column \'VILLAGEPA\' in table \'EMPDigitalServiceBook\' is DBNull.", e);
}
}
set {
this[this.tableEMPDigitalServiceBook.VILLAGEPAColumn] = value;
}
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
public string ROADNOPA {
get {
try {
return ((string)(this[this.tableEMPDigitalServiceBook.ROADNOPAColumn]));
}
catch (global::System.InvalidCastException e) {
throw new global::System.Data.StrongTypingException("The value for column \'ROADNOPA\' in table \'EMPDigitalServiceBook\' is DBNull.", e);
}
}
set {
this[this.tableEMPDigitalServiceBook.ROADNOPAColumn] = value;
}
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
public string WARDNOPA {
get {
try {
return ((string)(this[this.tableEMPDigitalServiceBook.WARDNOPAColumn]));
}
catch (global::System.InvalidCastException e) {
throw new global::System.Data.StrongTypingException("The value for column \'WARDNOPA\' in table \'EMPDigitalServiceBook\' is DBNull.", e);
}
}
set {
this[this.tableEMPDigitalServiceBook.WARDNOPAColumn] = value;
}
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
public string POSTOFFICETA {
get {
try {
return ((string)(this[this.tableEMPDigitalServiceBook.POSTOFFICETAColumn]));
}
catch (global::System.InvalidCastException e) {
throw new global::System.Data.StrongTypingException("The value for column \'POSTOFFICETA\' in table \'EMPDigitalServiceBook\' is DBNull.", e);
}
}
set {
this[this.tableEMPDigitalServiceBook.POSTOFFICETAColumn] = value;
}
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
public string DISTRICTTA {
get {
try {
return ((string)(this[this.tableEMPDigitalServiceBook.DISTRICTTAColumn]));
}
catch (global::System.InvalidCastException e) {
throw new global::System.Data.StrongTypingException("The value for column \'DISTRICTTA\' in table \'EMPDigitalServiceBook\' is DBNull.", e);
}
}
set {
this[this.tableEMPDigitalServiceBook.DISTRICTTAColumn] = value;
}
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
public string THANATA {
get {
try {
return ((string)(this[this.tableEMPDigitalServiceBook.THANATAColumn]));
}
catch (global::System.InvalidCastException e) {
throw new global::System.Data.StrongTypingException("The value for column \'THANATA\' in table \'EMPDigitalServiceBook\' is DBNull.", e);
}
}
set {
this[this.tableEMPDigitalServiceBook.THANATAColumn] = value;
}
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
public string VILLAGETA {
get {
try {
return ((string)(this[this.tableEMPDigitalServiceBook.VILLAGETAColumn]));
}
catch (global::System.InvalidCastException e) {
throw new global::System.Data.StrongTypingException("The value for column \'VILLAGETA\' in table \'EMPDigitalServiceBook\' is DBNull.", e);
}
}
set {
this[this.tableEMPDigitalServiceBook.VILLAGETAColumn] = value;
}
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
public string ROADNOTA {
get {
try {
return ((string)(this[this.tableEMPDigitalServiceBook.ROADNOTAColumn]));
}
catch (global::System.InvalidCastException e) {
throw new global::System.Data.StrongTypingException("The value for column \'ROADNOTA\' in table \'EMPDigitalServiceBook\' is DBNull.", e);
}
}
set {
this[this.tableEMPDigitalServiceBook.ROADNOTAColumn] = value;
}
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
public string WARDNOTA {
get {
try {
return ((string)(this[this.tableEMPDigitalServiceBook.WARDNOTAColumn]));
}
catch (global::System.InvalidCastException e) {
throw new global::System.Data.StrongTypingException("The value for column \'WARDNOTA\' in table \'EMPDigitalServiceBook\' is DBNull.", e);
}
}
set {
this[this.tableEMPDigitalServiceBook.WARDNOTAColumn] = value;
}
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
public string SIGNATURE {
get {
try {
return ((string)(this[this.tableEMPDigitalServiceBook.SIGNATUREColumn]));
}
catch (global::System.InvalidCastException e) {
throw new global::System.Data.StrongTypingException("The value for column \'SIGNATURE\' in table \'EMPDigitalServiceBook\' is DBNull.", e);
}
}
set {
this[this.tableEMPDigitalServiceBook.SIGNATUREColumn] = value;
}
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
public string AUTHSIGN {
get {
try {
return ((string)(this[this.tableEMPDigitalServiceBook.AUTHSIGNColumn]));
}
catch (global::System.InvalidCastException e) {
throw new global::System.Data.StrongTypingException("The value for column \'AUTHSIGN\' in table \'EMPDigitalServiceBook\' is DBNull.", e);
}
}
set {
this[this.tableEMPDigitalServiceBook.AUTHSIGNColumn] = value;
}
}
@ -2573,26 +2955,170 @@ namespace HRM.Report.PayrollDataSet {
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
public bool IsPARMANENTDISTRICTNull() {
return this.IsNull(this.tableEMPDigitalServiceBook.PARMANENTDISTRICTColumn);
public bool IsPOSTOFFICEPANull() {
return this.IsNull(this.tableEMPDigitalServiceBook.POSTOFFICEPAColumn);
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
public void SetPARMANENTDISTRICTNull() {
this[this.tableEMPDigitalServiceBook.PARMANENTDISTRICTColumn] = global::System.Convert.DBNull;
public void SetPOSTOFFICEPANull() {
this[this.tableEMPDigitalServiceBook.POSTOFFICEPAColumn] = global::System.Convert.DBNull;
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
public bool IsPARMANENTTHANANull() {
return this.IsNull(this.tableEMPDigitalServiceBook.PARMANENTTHANAColumn);
public bool IsDISTRICTPANull() {
return this.IsNull(this.tableEMPDigitalServiceBook.DISTRICTPAColumn);
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
public void SetPARMANENTTHANANull() {
this[this.tableEMPDigitalServiceBook.PARMANENTTHANAColumn] = global::System.Convert.DBNull;
public void SetDISTRICTPANull() {
this[this.tableEMPDigitalServiceBook.DISTRICTPAColumn] = global::System.Convert.DBNull;
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
public bool IsTHANAPANull() {
return this.IsNull(this.tableEMPDigitalServiceBook.THANAPAColumn);
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
public void SetTHANAPANull() {
this[this.tableEMPDigitalServiceBook.THANAPAColumn] = global::System.Convert.DBNull;
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
public bool IsVILLAGEPANull() {
return this.IsNull(this.tableEMPDigitalServiceBook.VILLAGEPAColumn);
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
public void SetVILLAGEPANull() {
this[this.tableEMPDigitalServiceBook.VILLAGEPAColumn] = global::System.Convert.DBNull;
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
public bool IsROADNOPANull() {
return this.IsNull(this.tableEMPDigitalServiceBook.ROADNOPAColumn);
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
public void SetROADNOPANull() {
this[this.tableEMPDigitalServiceBook.ROADNOPAColumn] = global::System.Convert.DBNull;
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
public bool IsWARDNOPANull() {
return this.IsNull(this.tableEMPDigitalServiceBook.WARDNOPAColumn);
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
public void SetWARDNOPANull() {
this[this.tableEMPDigitalServiceBook.WARDNOPAColumn] = global::System.Convert.DBNull;
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
public bool IsPOSTOFFICETANull() {
return this.IsNull(this.tableEMPDigitalServiceBook.POSTOFFICETAColumn);
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
public void SetPOSTOFFICETANull() {
this[this.tableEMPDigitalServiceBook.POSTOFFICETAColumn] = global::System.Convert.DBNull;
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
public bool IsDISTRICTTANull() {
return this.IsNull(this.tableEMPDigitalServiceBook.DISTRICTTAColumn);
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
public void SetDISTRICTTANull() {
this[this.tableEMPDigitalServiceBook.DISTRICTTAColumn] = global::System.Convert.DBNull;
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
public bool IsTHANATANull() {
return this.IsNull(this.tableEMPDigitalServiceBook.THANATAColumn);
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
public void SetTHANATANull() {
this[this.tableEMPDigitalServiceBook.THANATAColumn] = global::System.Convert.DBNull;
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
public bool IsVILLAGETANull() {
return this.IsNull(this.tableEMPDigitalServiceBook.VILLAGETAColumn);
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
public void SetVILLAGETANull() {
this[this.tableEMPDigitalServiceBook.VILLAGETAColumn] = global::System.Convert.DBNull;
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
public bool IsROADNOTANull() {
return this.IsNull(this.tableEMPDigitalServiceBook.ROADNOTAColumn);
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
public void SetROADNOTANull() {
this[this.tableEMPDigitalServiceBook.ROADNOTAColumn] = global::System.Convert.DBNull;
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
public bool IsWARDNOTANull() {
return this.IsNull(this.tableEMPDigitalServiceBook.WARDNOTAColumn);
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
public void SetWARDNOTANull() {
this[this.tableEMPDigitalServiceBook.WARDNOTAColumn] = global::System.Convert.DBNull;
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
public bool IsSIGNATURENull() {
return this.IsNull(this.tableEMPDigitalServiceBook.SIGNATUREColumn);
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
public void SetSIGNATURENull() {
this[this.tableEMPDigitalServiceBook.SIGNATUREColumn] = global::System.Convert.DBNull;
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
public bool IsAUTHSIGNNull() {
return this.IsNull(this.tableEMPDigitalServiceBook.AUTHSIGNColumn);
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
public void SetAUTHSIGNNull() {
this[this.tableEMPDigitalServiceBook.AUTHSIGNColumn] = global::System.Convert.DBNull;
}
}

View File

@ -12,65 +12,77 @@
<xs:element name="DigitalServiceBookDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true" msprop:Generator_UserDSName="DigitalServiceBookDataSet" msprop:EnableTableAdapterManager="true" msprop:Generator_DataSetName="DigitalServiceBookDataSet">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="EMPDigitalServiceBook" msprop:Generator_RowClassName="EMPDigitalServiceBookRow" msprop:Generator_RowEvHandlerName="EMPDigitalServiceBookRowChangeEventHandler" msprop:Generator_RowDeletedName="EMPDigitalServiceBookRowDeleted" msprop:Generator_RowDeletingName="EMPDigitalServiceBookRowDeleting" msprop:Generator_RowEvArgName="EMPDigitalServiceBookRowChangeEvent" msprop:Generator_TablePropName="EMPDigitalServiceBook" msprop:Generator_RowChangedName="EMPDigitalServiceBookRowChanged" msprop:Generator_UserTableName="EMPDigitalServiceBook" msprop:Generator_RowChangingName="EMPDigitalServiceBookRowChanging" msprop:Generator_TableClassName="EMPDigitalServiceBookDataTable" msprop:Generator_TableVarName="tableEMPDigitalServiceBook">
<xs:element name="EMPDigitalServiceBook" msprop:Generator_RowEvHandlerName="EMPDigitalServiceBookRowChangeEventHandler" msprop:Generator_RowDeletedName="EMPDigitalServiceBookRowDeleted" msprop:Generator_RowDeletingName="EMPDigitalServiceBookRowDeleting" msprop:Generator_RowEvArgName="EMPDigitalServiceBookRowChangeEvent" msprop:Generator_TablePropName="EMPDigitalServiceBook" msprop:Generator_RowChangedName="EMPDigitalServiceBookRowChanged" msprop:Generator_UserTableName="EMPDigitalServiceBook" msprop:Generator_RowChangingName="EMPDigitalServiceBookRowChanging" msprop:Generator_RowClassName="EMPDigitalServiceBookRow" msprop:Generator_TableClassName="EMPDigitalServiceBookDataTable" msprop:Generator_TableVarName="tableEMPDigitalServiceBook">
<xs:complexType>
<xs:sequence>
<xs:element name="EMPLOYEEID" msprop:Generator_UserColumnName="EMPLOYEEID" msprop:Generator_ColumnPropNameInTable="EMPLOYEEIDColumn" msprop:Generator_ColumnPropNameInRow="EMPLOYEEID" msprop:Generator_ColumnVarNameInTable="columnEMPLOYEEID" type="xs:string" minOccurs="0" />
<xs:element name="EMPLOYEENO" msprop:Generator_UserColumnName="EMPLOYEENO" msprop:Generator_ColumnPropNameInTable="EMPLOYEENOColumn" msprop:Generator_ColumnPropNameInRow="EMPLOYEENO" msprop:Generator_ColumnVarNameInTable="columnEMPLOYEENO" type="xs:string" minOccurs="0" />
<xs:element name="NAME" msprop:Generator_UserColumnName="NAME" msprop:Generator_ColumnPropNameInTable="NAMEColumn" msprop:Generator_ColumnPropNameInRow="NAME" msprop:Generator_ColumnVarNameInTable="columnNAME" type="xs:string" minOccurs="0" />
<xs:element name="FATHERNAME" msprop:Generator_UserColumnName="FATHERNAME" msprop:Generator_ColumnPropNameInTable="FATHERNAMEColumn" msprop:Generator_ColumnPropNameInRow="FATHERNAME" msprop:Generator_ColumnVarNameInTable="columnFATHERNAME" type="xs:string" minOccurs="0" />
<xs:element name="MOTHERNAME" msprop:Generator_UserColumnName="MOTHERNAME" msprop:Generator_ColumnPropNameInTable="MOTHERNAMEColumn" msprop:Generator_ColumnPropNameInRow="MOTHERNAME" msprop:Generator_ColumnVarNameInTable="columnMOTHERNAME" type="xs:string" minOccurs="0" />
<xs:element name="SPOUSENAME" msprop:Generator_UserColumnName="SPOUSENAME" msprop:Generator_ColumnPropNameInTable="SPOUSENAMEColumn" msprop:Generator_ColumnPropNameInRow="SPOUSENAME" msprop:Generator_ColumnVarNameInTable="columnSPOUSENAME" type="xs:string" minOccurs="0" />
<xs:element name="JOININGDATE" msprop:Generator_UserColumnName="JOININGDATE" msprop:Generator_ColumnPropNameInTable="JOININGDATEColumn" msprop:Generator_ColumnPropNameInRow="JOININGDATE" msprop:Generator_ColumnVarNameInTable="columnJOININGDATE" type="xs:string" minOccurs="0" />
<xs:element name="DESIGNATION" msprop:Generator_UserColumnName="DESIGNATION" msprop:Generator_ColumnPropNameInTable="DESIGNATIONColumn" msprop:Generator_ColumnPropNameInRow="DESIGNATION" msprop:Generator_ColumnVarNameInTable="columnDESIGNATION" type="xs:string" minOccurs="0" />
<xs:element name="PARMANENTADDRESS" msprop:Generator_UserColumnName="PARMANENTADDRESS" msprop:Generator_ColumnPropNameInTable="PARMANENTADDRESSColumn" msprop:Generator_ColumnPropNameInRow="PARMANENTADDRESS" msprop:Generator_ColumnVarNameInTable="columnPARMANENTADDRESS" type="xs:string" minOccurs="0" />
<xs:element name="PRESENTADDRESS" msprop:Generator_UserColumnName="PRESENTADDRESS" msprop:Generator_ColumnPropNameInTable="PRESENTADDRESSColumn" msprop:Generator_ColumnPropNameInRow="PRESENTADDRESS" msprop:Generator_ColumnVarNameInTable="columnPRESENTADDRESS" type="xs:string" minOccurs="0" />
<xs:element name="BIRTHDATE" msprop:Generator_UserColumnName="BIRTHDATE" msprop:Generator_ColumnPropNameInTable="BIRTHDATEColumn" msprop:Generator_ColumnPropNameInRow="BIRTHDATE" msprop:Generator_ColumnVarNameInTable="columnBIRTHDATE" type="xs:string" minOccurs="0" />
<xs:element name="PHOTO" msprop:Generator_UserColumnName="PHOTO" msprop:Generator_ColumnPropNameInTable="PHOTOColumn" msprop:Generator_ColumnPropNameInRow="PHOTO" msprop:Generator_ColumnVarNameInTable="columnPHOTO" type="xs:string" minOccurs="0" />
<xs:element name="NIDNO" msprop:Generator_UserColumnName="NIDNO" msprop:Generator_ColumnPropNameInTable="NIDNOColumn" msprop:Generator_ColumnPropNameInRow="NIDNO" msprop:Generator_ColumnVarNameInTable="columnNIDNO" type="xs:string" minOccurs="0" />
<xs:element name="HEIGHT" msprop:Generator_UserColumnName="HEIGHT" msprop:Generator_ColumnPropNameInTable="HEIGHTColumn" msprop:Generator_ColumnPropNameInRow="HEIGHT" msprop:Generator_ColumnVarNameInTable="columnHEIGHT" type="xs:string" minOccurs="0" />
<xs:element name="BLOODGROUP" msprop:Generator_UserColumnName="BLOODGROUP" msprop:Generator_ColumnPropNameInTable="BLOODGROUPColumn" msprop:Generator_ColumnPropNameInRow="BLOODGROUP" msprop:Generator_ColumnVarNameInTable="columnBLOODGROUP" type="xs:string" minOccurs="0" />
<xs:element name="LMDESIGNATION" msprop:Generator_UserColumnName="LMDESIGNATION" msprop:Generator_ColumnPropNameInTable="LMDESIGNATIONColumn" msprop:Generator_ColumnPropNameInRow="LMDESIGNATION" msprop:Generator_ColumnVarNameInTable="columnLMDESIGNATION" type="xs:string" minOccurs="0" />
<xs:element name="EDUCATIONLEVEL" msprop:Generator_UserColumnName="EDUCATIONLEVEL" msprop:Generator_ColumnPropNameInTable="EDUCATIONLEVELColumn" msprop:Generator_ColumnPropNameInRow="EDUCATIONLEVEL" msprop:Generator_ColumnVarNameInTable="columnEDUCATIONLEVEL" type="xs:string" minOccurs="0" />
<xs:element name="PARMANENTDISTRICT" msprop:Generator_UserColumnName="PARMANENTDISTRICT" msprop:Generator_ColumnPropNameInTable="PARMANENTDISTRICTColumn" msprop:Generator_ColumnPropNameInRow="PARMANENTDISTRICT" msprop:Generator_ColumnVarNameInTable="columnPARMANENTDISTRICT" type="xs:string" minOccurs="0" />
<xs:element name="PARMANENTTHANA" msprop:Generator_UserColumnName="PARMANENTTHANA" msprop:Generator_ColumnPropNameInTable="PARMANENTTHANAColumn" msprop:Generator_ColumnPropNameInRow="PARMANENTTHANA" msprop:Generator_ColumnVarNameInTable="columnPARMANENTTHANA" type="xs:string" minOccurs="0" />
<xs:element name="EMPLOYEEID" msprop:Generator_ColumnPropNameInTable="EMPLOYEEIDColumn" msprop:Generator_ColumnPropNameInRow="EMPLOYEEID" msprop:Generator_UserColumnName="EMPLOYEEID" msprop:Generator_ColumnVarNameInTable="columnEMPLOYEEID" type="xs:string" minOccurs="0" />
<xs:element name="EMPLOYEENO" msprop:Generator_ColumnPropNameInTable="EMPLOYEENOColumn" msprop:Generator_ColumnPropNameInRow="EMPLOYEENO" msprop:Generator_UserColumnName="EMPLOYEENO" msprop:Generator_ColumnVarNameInTable="columnEMPLOYEENO" type="xs:string" minOccurs="0" />
<xs:element name="NAME" msprop:Generator_ColumnPropNameInTable="NAMEColumn" msprop:Generator_ColumnPropNameInRow="NAME" msprop:Generator_UserColumnName="NAME" msprop:Generator_ColumnVarNameInTable="columnNAME" type="xs:string" minOccurs="0" />
<xs:element name="FATHERNAME" msprop:Generator_ColumnPropNameInTable="FATHERNAMEColumn" msprop:Generator_ColumnPropNameInRow="FATHERNAME" msprop:Generator_UserColumnName="FATHERNAME" msprop:Generator_ColumnVarNameInTable="columnFATHERNAME" type="xs:string" minOccurs="0" />
<xs:element name="MOTHERNAME" msprop:Generator_ColumnPropNameInTable="MOTHERNAMEColumn" msprop:Generator_ColumnPropNameInRow="MOTHERNAME" msprop:Generator_UserColumnName="MOTHERNAME" msprop:Generator_ColumnVarNameInTable="columnMOTHERNAME" type="xs:string" minOccurs="0" />
<xs:element name="SPOUSENAME" msprop:Generator_ColumnPropNameInTable="SPOUSENAMEColumn" msprop:Generator_ColumnPropNameInRow="SPOUSENAME" msprop:Generator_UserColumnName="SPOUSENAME" msprop:Generator_ColumnVarNameInTable="columnSPOUSENAME" type="xs:string" minOccurs="0" />
<xs:element name="JOININGDATE" msprop:Generator_ColumnPropNameInTable="JOININGDATEColumn" msprop:Generator_ColumnPropNameInRow="JOININGDATE" msprop:Generator_UserColumnName="JOININGDATE" msprop:Generator_ColumnVarNameInTable="columnJOININGDATE" type="xs:string" minOccurs="0" />
<xs:element name="DESIGNATION" msprop:Generator_ColumnPropNameInTable="DESIGNATIONColumn" msprop:Generator_ColumnPropNameInRow="DESIGNATION" msprop:Generator_UserColumnName="DESIGNATION" msprop:Generator_ColumnVarNameInTable="columnDESIGNATION" type="xs:string" minOccurs="0" />
<xs:element name="PARMANENTADDRESS" msprop:Generator_ColumnPropNameInTable="PARMANENTADDRESSColumn" msprop:Generator_ColumnPropNameInRow="PARMANENTADDRESS" msprop:Generator_UserColumnName="PARMANENTADDRESS" msprop:Generator_ColumnVarNameInTable="columnPARMANENTADDRESS" type="xs:string" minOccurs="0" />
<xs:element name="PRESENTADDRESS" msprop:Generator_ColumnPropNameInTable="PRESENTADDRESSColumn" msprop:Generator_ColumnPropNameInRow="PRESENTADDRESS" msprop:Generator_UserColumnName="PRESENTADDRESS" msprop:Generator_ColumnVarNameInTable="columnPRESENTADDRESS" type="xs:string" minOccurs="0" />
<xs:element name="BIRTHDATE" msprop:Generator_ColumnPropNameInTable="BIRTHDATEColumn" msprop:Generator_ColumnPropNameInRow="BIRTHDATE" msprop:Generator_UserColumnName="BIRTHDATE" msprop:Generator_ColumnVarNameInTable="columnBIRTHDATE" type="xs:string" minOccurs="0" />
<xs:element name="PHOTO" msprop:Generator_ColumnPropNameInTable="PHOTOColumn" msprop:Generator_ColumnPropNameInRow="PHOTO" msprop:Generator_UserColumnName="PHOTO" msprop:Generator_ColumnVarNameInTable="columnPHOTO" type="xs:string" minOccurs="0" />
<xs:element name="NIDNO" msprop:Generator_ColumnPropNameInTable="NIDNOColumn" msprop:Generator_ColumnPropNameInRow="NIDNO" msprop:Generator_UserColumnName="NIDNO" msprop:Generator_ColumnVarNameInTable="columnNIDNO" type="xs:string" minOccurs="0" />
<xs:element name="HEIGHT" msprop:Generator_ColumnPropNameInTable="HEIGHTColumn" msprop:Generator_ColumnPropNameInRow="HEIGHT" msprop:Generator_UserColumnName="HEIGHT" msprop:Generator_ColumnVarNameInTable="columnHEIGHT" type="xs:string" minOccurs="0" />
<xs:element name="BLOODGROUP" msprop:Generator_ColumnPropNameInTable="BLOODGROUPColumn" msprop:Generator_ColumnPropNameInRow="BLOODGROUP" msprop:Generator_UserColumnName="BLOODGROUP" msprop:Generator_ColumnVarNameInTable="columnBLOODGROUP" type="xs:string" minOccurs="0" />
<xs:element name="LMDESIGNATION" msprop:Generator_ColumnPropNameInTable="LMDESIGNATIONColumn" msprop:Generator_ColumnPropNameInRow="LMDESIGNATION" msprop:Generator_UserColumnName="LMDESIGNATION" msprop:Generator_ColumnVarNameInTable="columnLMDESIGNATION" type="xs:string" minOccurs="0" />
<xs:element name="EDUCATIONLEVEL" msprop:Generator_ColumnPropNameInTable="EDUCATIONLEVELColumn" msprop:Generator_ColumnPropNameInRow="EDUCATIONLEVEL" msprop:Generator_UserColumnName="EDUCATIONLEVEL" msprop:Generator_ColumnVarNameInTable="columnEDUCATIONLEVEL" type="xs:string" minOccurs="0" />
<xs:element name="POSTOFFICEPA" msprop:Generator_ColumnPropNameInTable="POSTOFFICEPAColumn" msprop:Generator_ColumnPropNameInRow="POSTOFFICEPA" msprop:Generator_UserColumnName="POSTOFFICEPA" msprop:Generator_ColumnVarNameInTable="columnPOSTOFFICEPA" type="xs:string" minOccurs="0" />
<xs:element name="DISTRICTPA" msprop:Generator_ColumnPropNameInTable="DISTRICTPAColumn" msprop:Generator_ColumnPropNameInRow="DISTRICTPA" msprop:Generator_UserColumnName="DISTRICTPA" msprop:Generator_ColumnVarNameInTable="columnDISTRICTPA" type="xs:string" minOccurs="0" />
<xs:element name="THANAPA" msprop:Generator_ColumnPropNameInRow="THANAPA" msprop:Generator_ColumnPropNameInTable="THANAPAColumn" msprop:Generator_ColumnVarNameInTable="columnTHANAPA" msprop:Generator_UserColumnName="THANAPA" type="xs:string" minOccurs="0" />
<xs:element name="VILLAGEPA" msprop:Generator_ColumnPropNameInRow="VILLAGEPA" msprop:Generator_ColumnPropNameInTable="VILLAGEPAColumn" msprop:Generator_ColumnVarNameInTable="columnVILLAGEPA" msprop:Generator_UserColumnName="VILLAGEPA" type="xs:string" minOccurs="0" />
<xs:element name="ROADNOPA" msprop:Generator_ColumnPropNameInRow="ROADNOPA" msprop:Generator_ColumnPropNameInTable="ROADNOPAColumn" msprop:Generator_ColumnVarNameInTable="columnROADNOPA" msprop:Generator_UserColumnName="ROADNOPA" type="xs:string" minOccurs="0" />
<xs:element name="WARDNOPA" msprop:Generator_ColumnPropNameInRow="WARDNOPA" msprop:Generator_ColumnPropNameInTable="WARDNOPAColumn" msprop:Generator_ColumnVarNameInTable="columnWARDNOPA" msprop:Generator_UserColumnName="WARDNOPA" type="xs:string" minOccurs="0" />
<xs:element name="POSTOFFICETA" msprop:Generator_ColumnPropNameInRow="POSTOFFICETA" msprop:Generator_ColumnPropNameInTable="POSTOFFICETAColumn" msprop:Generator_ColumnVarNameInTable="columnPOSTOFFICETA" msprop:Generator_UserColumnName="POSTOFFICETA" type="xs:string" minOccurs="0" />
<xs:element name="DISTRICTTA" msprop:Generator_ColumnPropNameInRow="DISTRICTTA" msprop:Generator_ColumnPropNameInTable="DISTRICTTAColumn" msprop:Generator_ColumnVarNameInTable="columnDISTRICTTA" msprop:Generator_UserColumnName="DISTRICTTA" type="xs:string" minOccurs="0" />
<xs:element name="THANATA" msprop:Generator_ColumnPropNameInRow="THANATA" msprop:Generator_ColumnPropNameInTable="THANATAColumn" msprop:Generator_ColumnVarNameInTable="columnTHANATA" msprop:Generator_UserColumnName="THANATA" type="xs:string" minOccurs="0" />
<xs:element name="VILLAGETA" msprop:Generator_ColumnPropNameInRow="VILLAGETA" msprop:Generator_ColumnPropNameInTable="VILLAGETAColumn" msprop:Generator_ColumnVarNameInTable="columnVILLAGETA" msprop:Generator_UserColumnName="VILLAGETA" type="xs:string" minOccurs="0" />
<xs:element name="ROADNOTA" msprop:Generator_ColumnPropNameInRow="ROADNOTA" msprop:Generator_ColumnPropNameInTable="ROADNOTAColumn" msprop:Generator_ColumnVarNameInTable="columnROADNOTA" msprop:Generator_UserColumnName="ROADNOTA" type="xs:string" minOccurs="0" />
<xs:element name="WARDNOTA" msprop:Generator_ColumnPropNameInRow="WARDNOTA" msprop:Generator_ColumnPropNameInTable="WARDNOTAColumn" msprop:Generator_ColumnVarNameInTable="columnWARDNOTA" msprop:Generator_UserColumnName="WARDNOTA" type="xs:string" minOccurs="0" />
<xs:element name="SIGNATURE" msprop:Generator_ColumnPropNameInRow="SIGNATURE" msprop:Generator_ColumnPropNameInTable="SIGNATUREColumn" msprop:Generator_ColumnVarNameInTable="columnSIGNATURE" msprop:Generator_UserColumnName="SIGNATURE" type="xs:string" minOccurs="0" />
<xs:element name="AUTHSIGN" msprop:Generator_ColumnPropNameInRow="AUTHSIGN" msprop:Generator_ColumnPropNameInTable="AUTHSIGNColumn" msprop:Generator_ColumnVarNameInTable="columnAUTHSIGN" msprop:Generator_UserColumnName="AUTHSIGN" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="SystemInformation" msprop:Generator_RowClassName="SystemInformationRow" msprop:Generator_RowEvHandlerName="SystemInformationRowChangeEventHandler" msprop:Generator_RowDeletedName="SystemInformationRowDeleted" msprop:Generator_RowDeletingName="SystemInformationRowDeleting" msprop:Generator_RowEvArgName="SystemInformationRowChangeEvent" msprop:Generator_TablePropName="SystemInformation" msprop:Generator_RowChangedName="SystemInformationRowChanged" msprop:Generator_UserTableName="SystemInformation" msprop:Generator_RowChangingName="SystemInformationRowChanging" msprop:Generator_TableClassName="SystemInformationDataTable" msprop:Generator_TableVarName="tableSystemInformation">
<xs:element name="SystemInformation" msprop:Generator_RowEvHandlerName="SystemInformationRowChangeEventHandler" msprop:Generator_RowDeletedName="SystemInformationRowDeleted" msprop:Generator_RowDeletingName="SystemInformationRowDeleting" msprop:Generator_RowEvArgName="SystemInformationRowChangeEvent" msprop:Generator_TablePropName="SystemInformation" msprop:Generator_RowChangedName="SystemInformationRowChanged" msprop:Generator_UserTableName="SystemInformation" msprop:Generator_RowChangingName="SystemInformationRowChanging" msprop:Generator_RowClassName="SystemInformationRow" msprop:Generator_TableClassName="SystemInformationDataTable" msprop:Generator_TableVarName="tableSystemInformation">
<xs:complexType>
<xs:sequence>
<xs:element name="NAME" msprop:Generator_UserColumnName="NAME" msprop:Generator_ColumnPropNameInTable="NAMEColumn" msprop:Generator_ColumnPropNameInRow="NAME" msprop:Generator_ColumnVarNameInTable="columnNAME" type="xs:string" minOccurs="0" />
<xs:element name="CORPORATEADDRESS" msprop:Generator_UserColumnName="CORPORATEADDRESS" msprop:Generator_ColumnPropNameInTable="CORPORATEADDRESSColumn" msprop:Generator_ColumnPropNameInRow="CORPORATEADDRESS" msprop:Generator_ColumnVarNameInTable="columnCORPORATEADDRESS" type="xs:string" minOccurs="0" />
<xs:element name="NAME" msprop:Generator_ColumnPropNameInTable="NAMEColumn" msprop:Generator_ColumnPropNameInRow="NAME" msprop:Generator_UserColumnName="NAME" msprop:Generator_ColumnVarNameInTable="columnNAME" type="xs:string" minOccurs="0" />
<xs:element name="CORPORATEADDRESS" msprop:Generator_ColumnPropNameInTable="CORPORATEADDRESSColumn" msprop:Generator_ColumnPropNameInRow="CORPORATEADDRESS" msprop:Generator_UserColumnName="CORPORATEADDRESS" msprop:Generator_ColumnVarNameInTable="columnCORPORATEADDRESS" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="LeaveEntry" msprop:Generator_RowClassName="LeaveEntryRow" msprop:Generator_RowEvHandlerName="LeaveEntryRowChangeEventHandler" msprop:Generator_RowDeletedName="LeaveEntryRowDeleted" msprop:Generator_RowDeletingName="LeaveEntryRowDeleting" msprop:Generator_RowEvArgName="LeaveEntryRowChangeEvent" msprop:Generator_TablePropName="LeaveEntry" msprop:Generator_RowChangedName="LeaveEntryRowChanged" msprop:Generator_UserTableName="LeaveEntry" msprop:Generator_RowChangingName="LeaveEntryRowChanging" msprop:Generator_TableClassName="LeaveEntryDataTable" msprop:Generator_TableVarName="tableLeaveEntry">
<xs:element name="LeaveEntry" msprop:Generator_RowEvHandlerName="LeaveEntryRowChangeEventHandler" msprop:Generator_RowDeletedName="LeaveEntryRowDeleted" msprop:Generator_RowDeletingName="LeaveEntryRowDeleting" msprop:Generator_RowEvArgName="LeaveEntryRowChangeEvent" msprop:Generator_TablePropName="LeaveEntry" msprop:Generator_RowChangedName="LeaveEntryRowChanged" msprop:Generator_UserTableName="LeaveEntry" msprop:Generator_RowChangingName="LeaveEntryRowChanging" msprop:Generator_RowClassName="LeaveEntryRow" msprop:Generator_TableClassName="LeaveEntryDataTable" msprop:Generator_TableVarName="tableLeaveEntry">
<xs:complexType>
<xs:sequence>
<xs:element name="FROMDATE" msprop:Generator_UserColumnName="FROMDATE" msprop:Generator_ColumnPropNameInTable="FROMDATEColumn" msprop:Generator_ColumnPropNameInRow="FROMDATE" msprop:Generator_ColumnVarNameInTable="columnFROMDATE" type="xs:string" minOccurs="0" />
<xs:element name="TODATE" msprop:Generator_UserColumnName="TODATE" msprop:Generator_ColumnPropNameInTable="TODATEColumn" msprop:Generator_ColumnPropNameInRow="TODATE" msprop:Generator_ColumnVarNameInTable="columnTODATE" type="xs:string" minOccurs="0" />
<xs:element name="TOTALDAYS" msprop:Generator_UserColumnName="TOTALDAYS" msprop:Generator_ColumnPropNameInTable="TOTALDAYSColumn" msprop:Generator_ColumnPropNameInRow="TOTALDAYS" msprop:Generator_ColumnVarNameInTable="columnTOTALDAYS" type="xs:string" minOccurs="0" />
<xs:element name="FROMDATE" msprop:Generator_ColumnPropNameInTable="FROMDATEColumn" msprop:Generator_ColumnPropNameInRow="FROMDATE" msprop:Generator_UserColumnName="FROMDATE" msprop:Generator_ColumnVarNameInTable="columnFROMDATE" type="xs:string" minOccurs="0" />
<xs:element name="TODATE" msprop:Generator_ColumnPropNameInTable="TODATEColumn" msprop:Generator_ColumnPropNameInRow="TODATE" msprop:Generator_UserColumnName="TODATE" msprop:Generator_ColumnVarNameInTable="columnTODATE" type="xs:string" minOccurs="0" />
<xs:element name="TOTALDAYS" msprop:Generator_ColumnPropNameInTable="TOTALDAYSColumn" msprop:Generator_ColumnPropNameInRow="TOTALDAYS" msprop:Generator_UserColumnName="TOTALDAYS" msprop:Generator_ColumnVarNameInTable="columnTOTALDAYS" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="EMPLifecycle" msprop:Generator_RowClassName="EMPLifecycleRow" msprop:Generator_RowEvHandlerName="EMPLifecycleRowChangeEventHandler" msprop:Generator_RowDeletedName="EMPLifecycleRowDeleted" msprop:Generator_RowDeletingName="EMPLifecycleRowDeleting" msprop:Generator_RowEvArgName="EMPLifecycleRowChangeEvent" msprop:Generator_TablePropName="EMPLifecycle" msprop:Generator_RowChangedName="EMPLifecycleRowChanged" msprop:Generator_UserTableName="EMPLifecycle" msprop:Generator_RowChangingName="EMPLifecycleRowChanging" msprop:Generator_TableClassName="EMPLifecycleDataTable" msprop:Generator_TableVarName="tableEMPLifecycle">
<xs:element name="EMPLifecycle" msprop:Generator_RowEvHandlerName="EMPLifecycleRowChangeEventHandler" msprop:Generator_RowDeletedName="EMPLifecycleRowDeleted" msprop:Generator_RowDeletingName="EMPLifecycleRowDeleting" msprop:Generator_RowEvArgName="EMPLifecycleRowChangeEvent" msprop:Generator_TablePropName="EMPLifecycle" msprop:Generator_RowChangedName="EMPLifecycleRowChanged" msprop:Generator_UserTableName="EMPLifecycle" msprop:Generator_RowChangingName="EMPLifecycleRowChanging" msprop:Generator_RowClassName="EMPLifecycleRow" msprop:Generator_TableClassName="EMPLifecycleDataTable" msprop:Generator_TableVarName="tableEMPLifecycle">
<xs:complexType>
<xs:sequence>
<xs:element name="EFFECTDATE" msprop:Generator_UserColumnName="EFFECTDATE" msprop:Generator_ColumnPropNameInTable="EFFECTDATEColumn" msprop:Generator_ColumnPropNameInRow="EFFECTDATE" msprop:Generator_ColumnVarNameInTable="columnEFFECTDATE" type="xs:string" minOccurs="0" />
<xs:element name="DESIGNATION" msprop:Generator_UserColumnName="DESIGNATION" msprop:Generator_ColumnPropNameInTable="DESIGNATIONColumn" msprop:Generator_ColumnPropNameInRow="DESIGNATION" msprop:Generator_ColumnVarNameInTable="columnDESIGNATION" type="xs:string" minOccurs="0" />
<xs:element name="BASICSALARY" msprop:Generator_UserColumnName="BASICSALARY" msprop:Generator_ColumnPropNameInTable="BASICSALARYColumn" msprop:Generator_ColumnPropNameInRow="BASICSALARY" msprop:Generator_ColumnVarNameInTable="columnBASICSALARY" type="xs:string" minOccurs="0" />
<xs:element name="HOUSERENT" msprop:Generator_ColumnPropNameInRow="HOUSERENT" msprop:Generator_ColumnPropNameInTable="HOUSERENTColumn" msprop:Generator_ColumnVarNameInTable="columnHOUSERENT" msprop:Generator_UserColumnName="HOUSERENT" type="xs:string" minOccurs="0" />
<xs:element name="MEDICAL" msprop:Generator_ColumnPropNameInRow="MEDICAL" msprop:Generator_ColumnPropNameInTable="MEDICALColumn" msprop:Generator_ColumnVarNameInTable="columnMEDICAL" msprop:Generator_UserColumnName="MEDICAL" type="xs:string" minOccurs="0" />
<xs:element name="BONUS" msprop:Generator_ColumnPropNameInRow="BONUS" msprop:Generator_ColumnPropNameInTable="BONUSColumn" msprop:Generator_ColumnVarNameInTable="columnBONUS" msprop:Generator_UserColumnName="BONUS" type="xs:string" minOccurs="0" />
<xs:element name="EFFECTDATE" msprop:Generator_ColumnPropNameInTable="EFFECTDATEColumn" msprop:Generator_ColumnPropNameInRow="EFFECTDATE" msprop:Generator_UserColumnName="EFFECTDATE" msprop:Generator_ColumnVarNameInTable="columnEFFECTDATE" type="xs:string" minOccurs="0" />
<xs:element name="DESIGNATION" msprop:Generator_ColumnPropNameInTable="DESIGNATIONColumn" msprop:Generator_ColumnPropNameInRow="DESIGNATION" msprop:Generator_UserColumnName="DESIGNATION" msprop:Generator_ColumnVarNameInTable="columnDESIGNATION" type="xs:string" minOccurs="0" />
<xs:element name="BASICSALARY" msprop:Generator_ColumnPropNameInTable="BASICSALARYColumn" msprop:Generator_ColumnPropNameInRow="BASICSALARY" msprop:Generator_UserColumnName="BASICSALARY" msprop:Generator_ColumnVarNameInTable="columnBASICSALARY" type="xs:string" minOccurs="0" />
<xs:element name="HOUSERENT" msprop:Generator_UserColumnName="HOUSERENT" msprop:Generator_ColumnPropNameInTable="HOUSERENTColumn" msprop:Generator_ColumnPropNameInRow="HOUSERENT" msprop:Generator_ColumnVarNameInTable="columnHOUSERENT" type="xs:string" minOccurs="0" />
<xs:element name="MEDICAL" msprop:Generator_UserColumnName="MEDICAL" msprop:Generator_ColumnPropNameInTable="MEDICALColumn" msprop:Generator_ColumnPropNameInRow="MEDICAL" msprop:Generator_ColumnVarNameInTable="columnMEDICAL" type="xs:string" minOccurs="0" />
<xs:element name="BONUS" msprop:Generator_UserColumnName="BONUS" msprop:Generator_ColumnPropNameInTable="BONUSColumn" msprop:Generator_ColumnPropNameInRow="BONUS" msprop:Generator_ColumnVarNameInTable="columnBONUS" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Complain" msprop:Generator_RowClassName="ComplainRow" msprop:Generator_RowEvHandlerName="ComplainRowChangeEventHandler" msprop:Generator_RowDeletedName="ComplainRowDeleted" msprop:Generator_RowDeletingName="ComplainRowDeleting" msprop:Generator_RowEvArgName="ComplainRowChangeEvent" msprop:Generator_TablePropName="Complain" msprop:Generator_RowChangedName="ComplainRowChanged" msprop:Generator_UserTableName="Complain" msprop:Generator_RowChangingName="ComplainRowChanging" msprop:Generator_TableClassName="ComplainDataTable" msprop:Generator_TableVarName="tableComplain">
<xs:element name="Complain" msprop:Generator_RowEvHandlerName="ComplainRowChangeEventHandler" msprop:Generator_RowDeletedName="ComplainRowDeleted" msprop:Generator_RowDeletingName="ComplainRowDeleting" msprop:Generator_RowEvArgName="ComplainRowChangeEvent" msprop:Generator_TablePropName="Complain" msprop:Generator_RowChangedName="ComplainRowChanged" msprop:Generator_UserTableName="Complain" msprop:Generator_RowChangingName="ComplainRowChanging" msprop:Generator_RowClassName="ComplainRow" msprop:Generator_TableClassName="ComplainDataTable" msprop:Generator_TableVarName="tableComplain">
<xs:complexType>
<xs:sequence>
<xs:element name="EFFECTDATE" msprop:Generator_UserColumnName="EFFECTDATE" msprop:Generator_ColumnPropNameInTable="EFFECTDATEColumn" msprop:Generator_ColumnPropNameInRow="EFFECTDATE" msprop:Generator_ColumnVarNameInTable="columnEFFECTDATE" type="xs:string" minOccurs="0" />
<xs:element name="DESCRIPTION" msprop:Generator_UserColumnName="DESCRIPTION" msprop:Generator_ColumnPropNameInTable="DESCRIPTIONColumn" msprop:Generator_ColumnPropNameInRow="DESCRIPTION" msprop:Generator_ColumnVarNameInTable="columnDESCRIPTION" type="xs:string" minOccurs="0" />
<xs:element name="EFFECTDATE" msprop:Generator_ColumnPropNameInTable="EFFECTDATEColumn" msprop:Generator_ColumnPropNameInRow="EFFECTDATE" msprop:Generator_UserColumnName="EFFECTDATE" msprop:Generator_ColumnVarNameInTable="columnEFFECTDATE" type="xs:string" minOccurs="0" />
<xs:element name="DESCRIPTION" msprop:Generator_ColumnPropNameInTable="DESCRIPTIONColumn" msprop:Generator_ColumnPropNameInRow="DESCRIPTION" msprop:Generator_UserColumnName="DESCRIPTION" msprop:Generator_ColumnVarNameInTable="columnDESCRIPTION" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>

View File

@ -4,7 +4,7 @@
Changes to this file may cause incorrect behavior and will be lost if
the code is regenerated.
</autogenerated>-->
<DiagramLayout xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ex:showrelationlabel="False" ViewPortX="0" ViewPortY="0" xmlns:ex="urn:schemas-microsoft-com:xml-msdatasource-layout-extended" xmlns="urn:schemas-microsoft-com:xml-msdatasource-layout">
<DiagramLayout xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ex:showrelationlabel="False" ViewPortX="0" ViewPortY="43" xmlns:ex="urn:schemas-microsoft-com:xml-msdatasource-layout-extended" xmlns="urn:schemas-microsoft-com:xml-msdatasource-layout">
<Shapes>
<Shape ID="DesignTable:EMPDigitalServiceBook" ZOrder="5" X="19" Y="101" Height="391" Width="202" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="387" />
<Shape ID="DesignTable:SystemInformation" ZOrder="4" X="235" Y="104" Height="67" Width="177" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="63" />

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -3963,8 +3963,8 @@ namespace HRM.Report
GetParameters(payrollTypeId);
////GetImageFromEmpFileUpload(empId);
rParam = new ReportParameter("Photo", _PATH);
reportParameters.Add(rParam);
//rParam = new ReportParameter("Photo", _PATH);
//reportParameters.Add(rParam);
if (reportParameters != null)
localReport.SetParameters(reportParameters);
Warning[] warnings;

View File

@ -40,6 +40,7 @@ export class EmpLifeCycle extends BaseObject {
punishmentID: number;
isPayrollTypeChanged: boolean;
isTransferReceived: boolean;
createdByUser: string;
constructor() {
super();

View File

@ -504,7 +504,7 @@ export class EmployeeServices {
return this.apiService.httpPost('/Employee/updateBanglaInformation', params);
}
updateBanglaContactInformation(params : any) {
return this.apiService.httpPost('/Employee/updateBanglaContactInformation', params);
return this.apiService.httpPost<number>('/Employee/updateBanglaContactInformation', params);
}
getPFExceptionData() {
return this.apiService.httpGet<any[]>('/Employee/getPFExceptionData');

View File

@ -14,7 +14,7 @@ export class ApiService {
public isSSO = false;
public versionDeployement = false;
// public versionNumber = `V-${GlobalfunctionExtension.generateVersionNumber(new Date(2025, 1, 25))}-`+"01";
public versionNumber = `V-20250427-`+"01";
public versionNumber = `V-20250724-`+"01";
public static BASE_URL = '';
public base_url = '';
// public currentLink = '';

View File

@ -2,7 +2,7 @@
<form>
<div class="card card-w-title">
<div class="p-grid form-group">
<div class="p-col-12 p-md-4">
<div class="p-col-12 p-md-6 p-lg-4">
<div class="p-col-12">
<label for="processFromDate">Process From</label>
</div>
@ -17,7 +17,7 @@
</div>
</div>
<div class="p-col-12 p-md-4">
<div class="p-col-12 p-md-6 p-lg-4">
<div class="p-col-12">
<label for="processToDate">Process To</label>
</div>
@ -32,17 +32,17 @@
</div>
</div>
<div class="p-col-12 p-md-2">
<div class="p-col-12 p-md-4 p-lg-1">
<div class="p-col-12">
<label for="chkIWithEmployee">Employee Wise</label>
</div>
<div class="p-col-12">
<input type="checkbox" (change)="checkBoxChange()" [checked]="withEmployee"
id="withEmployee" kendoCheckBox/>
id="chkIWithEmployee" kendoCheckBox/>
</div>
</div>
<div class="p-col-12 p-md-2" *ngIf="withEmployee">
<div class="p-col-12 p-md-4 p-lg-2" *ngIf="withEmployee">
<div class="p-col-12">
<label for="employeePicker">Select Employee</label>
</div>
@ -54,6 +54,16 @@
></app-employee-picker>
</div>
</div>
<div class="p-col-12 p-md-4 p-lg-1" *ngIf="enableManualEntry">
<div class="p-col-12">
<label for="chkOverrideManualEntry">Override Manual Entry</label>
</div>
<div class="p-col-12">
<input type="checkbox" [checked]="overrideManualEntry" (change)="checkBoxChangeOverrideManualEntry()"
id="manualEntry" kendoCheckBox/>
</div>
</div>
</div>
<div class="p-grid form-group">
<div class="p-col-12 p-md-5">

View File

@ -27,6 +27,8 @@ export class AttendanceProcessComponent {
processStatus: string = "";
withEmployee: boolean = false;
showModal: boolean = false;
enableManualEntry: boolean = false;
overrideManualEntry: boolean = false;
constructor(public attnService: AttendanceServices, public datatransferservice: DataTransferService,
public loadingPanel: loadingPanelService,
public notificationService: HRMNotificationService,
@ -65,6 +67,13 @@ export class AttendanceProcessComponent {
}
public GetSelectedEmployee(childData) {
this.selectedEmployees = childData;
if (this.selectedEmployees != undefined && this.selectedEmployees.length == 1) {
this.enableManualEntry = true;
}
else {
this.enableManualEntry = false;
}
this.overrideManualEntry = false;
}
public onSave(e): void {
@ -91,16 +100,16 @@ export class AttendanceProcessComponent {
// }
//}
var attnRequest: { fromDate: Date, toDate: Date, isWithEmployee: boolean, employeeID: number }[];
var attnRequest: { fromDate: Date, toDate: Date, isWithEmployee: boolean, employeeID: number, overrideManualEntry: boolean }[];
attnRequest = [];
attnRequest.push({ "fromDate": this.fromDate, "toDate": this.toDate, "isWithEmployee": true, "employeeID": 0 });
debugger
attnRequest.push({ "fromDate": this.fromDate, "toDate": this.toDate, "isWithEmployee": true, "employeeID": 0, "overrideManualEntry": this.overrideManualEntry });
if (this.withEmployee) {
if (this.selectedEmployees != undefined && this.selectedEmployees.length > 0) {
attnRequest = [];
this.selectedEmployees.forEach(x => {
attnRequest.push({ "fromDate": this.fromDate, "toDate": this.toDate, "isWithEmployee": false, "employeeID": x.employeeID });
attnRequest.push({ "fromDate": this.fromDate, "toDate": this.toDate, "isWithEmployee": false, "employeeID": x.employeeID, "overrideManualEntry": this.overrideManualEntry });
});
}
@ -138,8 +147,18 @@ export class AttendanceProcessComponent {
else
this.withEmployee = true;
this.enableManualEntry = false;
this.overrideManualEntry = false;
}
public onClickNotInWorkPlanEmployee() {
this.showModal = true;
}
public checkBoxChangeOverrideManualEntry() {
if (this.overrideManualEntry) {
this.overrideManualEntry = false;
}
else
this.overrideManualEntry = true;
}
}

View File

@ -35,6 +35,8 @@ import { TextBoxModule } from "@progress/kendo-angular-inputs";
import { LabelModule } from "@progress/kendo-angular-label";
import { FloatingLabelModule } from "@progress/kendo-angular-label";
import { IconsModule } from "@progress/kendo-angular-icons";
import { UploadModule } from '@progress/kendo-angular-upload';
import { ButtonsModule } from '@progress/kendo-angular-buttons';
import { ReactiveFormsModule, FormsModule } from '@angular/forms';
import { TabViewModule } from 'primeng/tabview';
@ -129,7 +131,9 @@ import { HallOfFameUploaderComponent } from './hall-of-fame-uploader/hall-of-fam
IconsModule,
LabelModule,
PanelModule,
CardManagemnetModule
CardManagemnetModule,
UploadModule,
ButtonsModule
],
declarations: [
NationalityComponent,

View File

@ -38,9 +38,9 @@
<kendo-dropdownlist [(ngModel)]="selectedInstitutionID" [data]="institutions"
[defaultItem]="{ name: 'Select institution/Board', id: null }" [textField]="'name'"
[valueField]="'id'" [valuePrimitive]="true" class="form-control form-control-sm input-sm"
[filterable]="true" (filterChange)="handleFilterInstitution($event)"
(valueChange)="selectInstitutionEvent($event)" formControlName="institutionPicker"
style="width:100%;">
<!-- [filterable]="true" (filterChange)="handleFilterInstitution($event)" -->
<!-- [disabled]="(selectedEducationTypeID == undefined ||selectedEducationTypeID == null) || (selectedEducationLevelID == undefined || selectedEducationLevelID == null)" -->
</kendo-dropdownlist>
</div>
@ -52,8 +52,8 @@
<kendo-dropdownlist class="form-control form-control-sm" id="subject" [data]="educationDiscipline"
[defaultItem]="{ description: 'Select a discipline', id: null }" [textField]="'description'"
[valueField]="'id'" [valuePrimitive]="true" [(ngModel)]="selectedDisciplineID"
[filterable]="true" (filterChange)="handleFilter($event)" formControlName="disciplinePicker"
style="width:100%">
formControlName="disciplinePicker" style="width:100%">
<!-- [filterable]="true" (filterChange)="handleFilter($event)" -->
<!-- [disabled]="isEditActive"
[disabled]="selectedEducationLevelID == undefined || selectedEducationLevelID == null" -->
</kendo-dropdownlist>

View File

@ -230,8 +230,8 @@ export class AcademicEntryComponent implements OnInit {
},
() => {
this.educationLevels = this.alleducationLevels;
this.educationDiscipline = this.alleducationDiscipline;
this.institutions = this.allinstitutions;
this.educationDiscipline = this.alleducationDiscipline.sort((a, b) => a.description.localeCompare(b.description));
this.institutions = this.allinstitutions.sort((a, b) => a.name.localeCompare(b.name));
this.resultTypes = this.allresultTypes;
this.loadingPanelService.ShowLoadingPanel = false;

View File

@ -45,8 +45,9 @@ export class ContactComponent implements OnInit {
this.basicService.getAllDistricts().subscribe((resp) => {
this.districts = resp;
},
() => {
(err: any) => {
this.loadingPanel.ShowLoadingPanel = false;
this.notificationService.showError(err.error);
},
() => {
@ -58,8 +59,9 @@ export class ContactComponent implements OnInit {
this.basicService.getAllThanas(value).subscribe((resp) => {
this.permanentThanas = resp;
},
() => {
(err: any) => {
this.loadingPanel.ShowLoadingPanel = false;
this.notificationService.showError(err.error);
},
() => {
@ -71,8 +73,9 @@ export class ContactComponent implements OnInit {
this.basicService.getAllThanas(value).subscribe((resp) => {
this.presentThanas = resp;
},
() => {
(err: any) => {
this.loadingPanel.ShowLoadingPanel = false;
this.notificationService.showError(err.error);
},
() => {
@ -135,7 +138,8 @@ export class ContactComponent implements OnInit {
}
},
(err: any) => {
this.loadingPanel.ShowLoadingPanel = false;
this.notificationService.showError(err.error);
},
() => {
if (this.employeeService.hrEmployee.id != undefined && this.employeeService.hrEmployee.id != 0) {
@ -147,7 +151,9 @@ export class ContactComponent implements OnInit {
this.basicService.getAllRelations().subscribe((resp) => {
this.relations = resp;
},
() => {
(err) => {
this.loadingPanel.ShowLoadingPanel = false;
this.notificationService.showError(err.error);
},
() => {
@ -186,8 +192,9 @@ export class ContactComponent implements OnInit {
(resp) => {
this.contact.id = resp;
},
() => {
(err) => {
this.loadingPanel.ShowLoadingPanel = false;
this.notificationService.showError(err.error);
},
() => {
this.loadingPanel.ShowLoadingPanel = false;
@ -222,8 +229,9 @@ export class ContactComponent implements OnInit {
this.presentThanas = resp;
this.contact.presentThanaID = this.contact.permanentThanaID;
},
() => {
(err) => {
this.loadingPanel.ShowLoadingPanel = false;
this.notificationService.showError(err.error);
},
() => {

View File

@ -25,14 +25,17 @@
</div>
</div>
<p-tabView [scrollable]="true">
<p-tabView #tabView
[(activeIndex)]="activeIndex"
(onChange)="onTabChange($event, tabView)"
[scrollable]="true">
<p-tabPanel header="General" leftIcon="pi pi-user">
<app-general [isActive]="!newEmployee" [employeeNo]="this.employeeService.hrEmployee.employeeNo"
<app-general #general [isActive]="!newEmployee" [employeeNo]="this.employeeService.hrEmployee.employeeNo"
(defaultNationalityHandler)="defaultNationalityHandler($event)"
(defaultEmployeeTypeHandler)="defaultEmployeeTypeHandler($event)"></app-general>
</p-tabPanel>
<p-tabPanel header="Contacts" leftIcon="pi pi-phone">
<app-contact (saveContact)="saveContact($event)"></app-contact>
<app-contact #contact (saveContact)="saveContact($event)"></app-contact>
</p-tabPanel>
<!-- <p-tabPanel header="Bangla" leftIcon="pi pi-star">
<app-bangla></app-bangla>

View File

@ -1,4 +1,4 @@
import { Component, OnInit } from '@angular/core';
import { Component, OnInit, ViewChild } from '@angular/core';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { EmployeeServices } from '../../_services/employee/employee.service';
import { empFileuploads, HrEmployee } from '../../_models/HREmployee/hrEmployee';
@ -13,6 +13,8 @@ import { HRMNotificationService } from '../../app.notification.service';
import { DomSanitizer } from '@angular/platform-browser';
import { Nationality } from '../nationality/nationality';
import { Category } from 'src/app/_models/Basic/category';
import { GeneralComponent } from './general/general.component';
import { ContactComponent } from './contact/contact.component';
@Component({
selector: 'app-employee-profile',
@ -34,6 +36,15 @@ export class EmployeeProfileComponent implements OnInit {
isDisplay = false;
defaultNationality: Nationality;
defaultEmployeeType: Category;
activeIndex: number = 0;
previousIndex: number = 0; // 👈 track the previous tab index manually
@ViewChild('general') generalComponent!: GeneralComponent;
@ViewChild('contact') contactComponent!: ContactComponent;
newEmpSaved: boolean = false;
newEmpContactSaved: boolean = false;
constructor(private fb: FormBuilder,
public employeeService: EmployeeServices,
public basicService: BasicService,
@ -189,8 +200,10 @@ export class EmployeeProfileComponent implements OnInit {
checkValue(value: any) {
debugger
if (value === true) {
this.hrEmployeeProfile = new HrEmployee();
this.refreshEmployee(new HrEmployee());
// this.loadingPanel.ShowLoadingPanel = true;
@ -209,6 +222,7 @@ export class EmployeeProfileComponent implements OnInit {
}
else {
this.employeeService.hrEmployee.employeeNo = undefined;
this.employeeService.Employee_Get_Completed.next(new HrEmployee());
}
}
@ -325,5 +339,85 @@ export class EmployeeProfileComponent implements OnInit {
defaultEmployeeTypeHandler(dataItem: Category) {
this.defaultEmployeeType = dataItem;
}
onTabChange(event: any, tabView: any) {
const nextIndex = event.index;
const currentIndex = this.previousIndex; // 👈 previous tab before switch
const currentTab = tabView.tabs[currentIndex];
const nextTab = tabView.tabs[nextIndex];
debugger
if (this.newEmployee) {
if (currentTab.header.toLowerCase() == 'general' && !this.newEmpSaved) {
setTimeout(() => {
if (this.generalComponent != undefined && this.generalComponent.personalInfo.valid === false && this.generalComponent.hrEmployee.employeeNo === '') {
this.notificationService.showError('Required Fields Can\'t Be Empty');
this.activeIndex = currentIndex;
this.previousIndex = currentIndex;
return;
}
this.generalComponent.SavePersonalInfo();
this.newEmpSaved = true;
return;
});
}
if (currentTab.header.toLowerCase() == 'contacts' && !this.newEmpContactSaved) {
setTimeout(() => {
if (!this.contactComponent.contactForm.valid) {
this.notificationService.showWarning('Must Entry field can\'t be Empty');
this.activeIndex = currentIndex;
this.previousIndex = currentIndex;
return;
}
this.contactComponent.SaveContact();
this.newEmpContactSaved = true;
return;
});
}
}
if (currentTab.header.toLowerCase() == 'general') {
if (this.generalComponent != undefined && this.contactComponent != undefined) {
if (this.generalComponent.contact.id == 0) {
this.contactComponent.contact.id = this.generalComponent.contact.id;
}
if (this.generalComponent.contact.presentPOInBangla != null && this.generalComponent.contact.presentPOInBangla != "") {
this.contactComponent.contact.presentPOInBangla = this.generalComponent.contact.presentPOInBangla;
}
if (this.generalComponent.contact.presentAddressInBangla != null && this.generalComponent.contact.presentAddressInBangla != "") {
this.contactComponent.contact.presentAddressInBangla = this.generalComponent.contact.presentAddressInBangla;
}
if (this.generalComponent.contact.parmanentPOInBangla != null && this.generalComponent.contact.parmanentPOInBangla != "") {
this.contactComponent.contact.parmanentPOInBangla = this.generalComponent.contact.parmanentPOInBangla;
}
if (this.generalComponent.contact.permanentAddressInBangla != null && this.generalComponent.contact.permanentAddressInBangla != "") {
this.contactComponent.contact.permanentAddressInBangla = this.generalComponent.contact.permanentAddressInBangla;
}
}
}
if (nextTab.header.toLowerCase() == 'attachments') {
debugger;
this.employeeService.getEmployeeAttachments(this.selectedEmployee != undefined ? this.selectedEmployee.employeeID : this.employeeService.hrEmployee.id)
.subscribe(
(resp) => {
this.attachments = resp;
},
(x) => {
console.log(x);
this.loadingPanel.ShowLoadingPanel = false;
},
() => {
this.loadingPanel.ShowLoadingPanel = false;
this.hrEmployeeProfile.attachments = this.attachments;
}
);
}
// ✅ Save current as previous after successful switch
this.previousIndex = nextIndex;
}
}

View File

@ -12,13 +12,13 @@
required style="width:100%">
</div>
<div class="p-col-12 p-md-6 p-lg-2" >
<!-- <div class="p-col-12 p-md-6 p-lg-2" >
<label for="txtSpouseNameInBangla">Name (Bn)</label>
</div>
<div class="p-col-12 p-md-6 p-lg-4" style="margin: auto;">
<input id="txtSpouseNameInBangla" formControlName="banglaname" class="bangla-font"
[(ngModel)]="spouse.nameinbangla" type="text" pInputText style="width:100%">
</div>
</div> -->
<div class="p-col-12 p-md-6 p-lg-2" style="margin: auto;">
<label>Level of Education</label>
@ -57,6 +57,7 @@
<kendo-datepicker [(ngModel)]="spouse.marriageDate" [format]="'dd-MMM-yyyy'"
formControlName="marriageDate" id="dtpMarriageDate" style="width:100%"></kendo-datepicker>
</div>
<div class="p-lg-6"></div>
<!-- <div class="p-col-12 p-md-6 p-lg-2" style="margin: auto;">
<label>Insurance Id</label>

View File

@ -11,7 +11,11 @@
<div style="position: relative; display: inline-block;">
<img id="imgProfilePicture" [src]="employeePhoto"
style="height: 180px; width: 180px; border-radius: 50%; border: 1px solid #52527A;" />
<button class="editImage" (click)="fileInput.click()"
<!-- <button class="editImage" (click)="fileInput.click()"
style="position: absolute; bottom: 18px; right: 18px;">
<span class="editIcon">&#9998;</span>
</button> -->
<button class="editImage" (click)="triggerUploadClick()"
style="position: absolute; bottom: 18px; right: 18px;">
<span class="editIcon">&#9998;</span>
</button>
@ -25,8 +29,16 @@
</div>
</div>
<div class="p-col-12 p-md-12 p-lg-12" align="center">
<input formControlName="empPhoto" id="fupEmpPhoto" #fileInput
(change)="selectFile($event)" type="file" style="display: none;">
<!-- <input formControlName="empPhoto" id="fupEmpPhoto" #fileInput
(change)="selectProfilePhoto($event)" type="file" style="display: none;"> -->
<!-- <kendo-upload #fileInput formControlName="empPhoto" id="fupEmpPhoto"
[autoUpload]="false" [multiple]="false" [saveUrl]="'noop'" [removeUrl]="'noop'"
(select)="selectProfilePhoto($event)" style="width: 100%;display: none;">
</kendo-upload> -->
<kendo-upload #uploadPhoto formControlName="empPhoto" id="fupEmpPhoto" [autoUpload]="false"
[multiple]="false" [saveUrl]="'noop'" [removeUrl]="'noop'"
(select)="selectProfilePhoto($event)" style="width: 100%; display: none;">
</kendo-upload>
</div>
<div class="p-col-12 p-md-12 p-lg-12" style="height: 76px;">
@ -179,8 +191,7 @@
</div>
<div class="p-col-12 p-lg-12" align="right" style="margin-top: 20px;">
<button class="k-button k-primary" kendoButton icon="save"
(click)="SavePersonalInfo()">
<button class="k-button k-primary" kendoButton icon="save" (click)="SavePersonalInfo()">
<!-- (click)="SavePersonalInfo()"> -->
Save
</button>
@ -207,11 +218,16 @@
</div>
<div class="p-col-12 p-md-12 p-lg-8">
<input [(ngModel)]="hrEmployee.drivingLicenceNo" formControlName="drivingLicenseNo"
id="txtDrivingLicenseNo" pInputText style="width: 84%" type="text"
id="txtDrivingLicenseNo" pInputText style="width: 100%" type="text"
[readonly]="!active">
<button class="k-button k-primary" kendoButton icon="k-i-attachment-45 k-i-clip-45"
<!-- style="width: 84%" -->
<!-- <button class="k-button k-primary" kendoButton icon="k-i-attachment-45 k-i-clip-45"
style="width: 15.5%; vertical-align: bottom; padding: 16px;" [disabled]="!active"
(click)="popUpAttachment('DLN')"></button>
(click)="popUpAttachment('DLN')"></button> -->
<kendo-upload #uploadDL [autoUpload]="false" [multiple]="false" [saveUrl]="'noop'"
[removeUrl]="'noop'" (select)="selectFileDrivingLicense($event)"
style="width: 100%;">
</kendo-upload>
</div>
<div class="p-col-12 p-md-12 p-lg-4">
<label for="txtPassportNo">Height in centemeter</label>
@ -239,10 +255,15 @@
<label for="empSignaturePhotoId">Signature</label>
</div>
<div class="p-col-12 p-md-12 p-lg-8">
<input id="empSignaturePhotoId" pInputText style="width:84%" type="text" [readonly]="true">
<button class="k-button k-primary" kendoButton icon="k-i-attachment-45 k-i-clip-45"
<input id="empSignaturePhotoId" pInputText style="width:100%" type="text"
[readonly]="true">
<!-- style="width: 84%" -->
<!-- <button class="k-button k-primary" kendoButton icon="k-i-attachment-45 k-i-clip-45"
style="width: 15.5%; vertical-align: bottom; padding: 16px;" [disabled]="!active"
(click)="popUpAttachment('Signature')"></button>
(click)="popUpAttachment('Signature')"></button> -->
<kendo-upload #uploadSig [autoUpload]="false" [multiple]="false" [saveUrl]="'noop'"
[removeUrl]="'noop'" (select)="selectSignature($event)" style="width: 100%;">
</kendo-upload>
</div>
</div>
@ -256,22 +277,44 @@
</div>
<div class="p-col-12 p-md-12 p-lg-8">
<input [(ngModel)]="hrEmployee.nationalID" formControlName="nationalId"
id="txtNationalId" pInputText style="width:84%" type="text">
id="txtNationalId" pInputText type="text" style="width:100%">
<!-- style="width:84%" -->
<!-- [readonly]="!active" -->
<button class="k-button k-primary" kendoButton icon="k-i-attachment-45 k-i-clip-45"
<!-- <button class="k-button k-primary" kendoButton icon="k-i-attachment-45 k-i-clip-45"
style="width: 15.5%; vertical-align: bottom; padding: 16px;"
(click)="popUpAttachment('NID')"></button>
<!-- [disabled]="!active" -->
(click)="popUpAttachment('NID')" [disabled]="!active"></button> -->
<!-- <input [(ngModel)]="NIDFiles" (change)="selectFileNationalId($event)" type="file" pInputText
style="width: 100%;padding: 5px;margin:5px 0;"> -->
<!-- <kendo-upload [saveUrl]="uploadSaveUrl" [removeUrl]="uploadRemoveUrl">
</kendo-upload> -->
<!-- <kendo-upload
[autoUpload]="false"
[saveUrl]="'noop'"
[removeUrl]="'noop'"
(select)="onFileSelect($event)">
</kendo-upload> -->
<kendo-upload #uploadNID [autoUpload]="false" [multiple]="false" [saveUrl]="'noop'"
[removeUrl]="'noop'" (select)="selectFileNationalId($event)" style="width: 100%;">
</kendo-upload>
</div>
<div class="p-col-12 p-md-12 p-lg-4">
<label for="txtPassportNo">Passport No</label>
</div>
<div class="p-col-12 p-md-12 p-lg-8">
<input [(ngModel)]="hrEmployee.passportNo" formControlName="passportNo"
id="txtPassportNo" pInputText style="width:84%;" type="text" [readonly]="!active">
<button class="k-button k-primary" kendoButton icon="k-i-attachment-45 k-i-clip-45"
id="txtPassportNo" pInputText style="width:100%;" type="text" [readonly]="!active">
<!-- style="width:84%;" -->
<!-- <button class="k-button k-primary" kendoButton icon="k-i-attachment-45 k-i-clip-45"
style="width: 15.5%; vertical-align: bottom; padding: 16px;" [disabled]="!active"
(click)="popUpAttachment('PNo')"></button>
(click)="popUpAttachment('PNo')"></button> -->
<kendo-upload #uploadPassPort [autoUpload]="false" [multiple]="false" [saveUrl]="'noop'"
[removeUrl]="'noop'" (select)="selectPassport($event)" style="width: 100%;">
</kendo-upload>
</div>
<div class="p-col-12 p-md-12 p-lg-4">
<label for="txtSpouseNameBangla">Spouse Name Bangla</label>
@ -299,7 +342,8 @@
<label for="">Bangla Information</label>
</div>
<div class="p-col-12 p-md-12 p-lg-8">
<button class="k-button k-primary" style="width: 100%;" kendoButton icon="info" (click)="DisplayBanglaInformation()">
<button class="k-button k-primary" style="width: 100%;" kendoButton icon="info"
(click)="DisplayBanglaInformation()">
View & Update
</button>
</div>
@ -316,10 +360,15 @@
</div>
<div class="p-col-12 p-md-12 p-lg-8">
<input [(ngModel)]="hrEmployee.tinNo" formControlName="tin" id="txtTin" pInputText
style="width:84%" type="text" [readonly]="!active">
<button class="k-button k-primary" kendoButton icon="k-i-attachment-45 k-i-clip-45"
type="text" [readonly]="!active" style="width:100%">
<!-- style="width:84%" -->
<!-- <button class="k-button k-primary" kendoButton icon="k-i-attachment-45 k-i-clip-45"
style="width: 15.5%; vertical-align: bottom; padding: 16px;" [disabled]="!active"
(click)="popUpAttachment('TIN')"></button>
(click)="popUpAttachment('TIN')"></button> -->
<kendo-upload #uploadTIN [autoUpload]="false" [multiple]="false" [saveUrl]="'noop'"
[removeUrl]="'noop'" (select)="selectFileTin($event)" style="width: 100%;">
</kendo-upload>
</div>
<div class="p-col-12 p-md-12 p-lg-4">
<label for="dtpPassportIssueDate">Passport Issue Date</label>
@ -362,14 +411,13 @@
</div>
<div class="p-col-12 p-md-12 p-lg-4"></div>
<div class="p-col-12 p-md-12 p-lg-4" style="margin-top: 11px;">
<button class="k-button k-primary" kendoButton icon="add"
(click)="AddAccessCard()">
<button class="k-button k-primary" kendoButton icon="add" (click)="AddAccessCard()"
[disabled]="!active">
Add Access Card
</button>
</div>
<div class="p-col-12 p-md-12 p-lg-4" style="margin-top: 11px;" align="right">
<button class="k-button k-primary" kendoButton icon="save"
(click)="SavePersonalInfo()">
<button class="k-button k-primary" kendoButton icon="save" (click)="SavePersonalInfo()">
<!-- (click)="SavePersonalInfo()"> -->
Save
</button>
@ -463,8 +511,8 @@
</p-tabView>
<kendo-dialog class="blur-background" *ngIf="nidPopUp||tinPopUp||dlnoPopUp||passnoPopUp||signaturePopUp" (close)="close()"
[width]="450">
<kendo-dialog class="blur-background" *ngIf="nidPopUp||tinPopUp||dlnoPopUp||passnoPopUp||signaturePopUp"
(close)="close()" [width]="450">
<app-loading-panel></app-loading-panel>
<kendo-dialog-titlebar>
<div style="font-size: 18px; line-height: 1.3em;"><span class=""></span>Attcahment</div>
@ -515,23 +563,23 @@
<label for="txtSpouseNameBangla">Spouse Name</label>
</div>
<div class="p-col-12 p-md-6 p-lg-3" style="margin: auto;">
<input class="bangla-font" formControlName="spouseNameBangla"
[(ngModel)]="hrEmployee.spouseNameBangla" pInputText style="width:100%" type="text">
<input class="bangla-font" formControlName="spouseNameBangla" [(ngModel)]="hrEmployee.spouseNameBangla"
pInputText style="width:100%" type="text">
</div>
<div class="p-col-12 p-md-6 p-lg-3" style="margin: auto;">
<label for="txtFatherNameBangla">Father's Name</label>
</div>
<div class="p-col-12 p-md-6 p-lg-3" style="margin: auto;">
<input class="bangla-font" formControlName="fatherNameBangla"
[(ngModel)]="hrEmployee.fatherNameBangla" pInputText style="width:100%" type="text">
<input class="bangla-font" formControlName="fatherNameBangla" [(ngModel)]="hrEmployee.fatherNameBangla"
pInputText style="width:100%" type="text">
</div>
<div class="p-col-12 p-md-6 p-lg-3" style="margin: auto;">
<label for="txtMotherNameBangla">Mother's Name</label>
</div>
<div class="p-col-12 p-md-6 p-lg-3" style="margin: auto;">
<input formControlName="motherNameBangla" [(ngModel)]="hrEmployee.motherNameBangla"
class="bangla-font" pInputText style="width:100%" type="text">
<input formControlName="motherNameBangla" [(ngModel)]="hrEmployee.motherNameBangla" class="bangla-font"
pInputText style="width:100%" type="text">
</div>
<!-- <div class="p-col-12 p-md-12 p-lg-12" style="margin: auto;" align="right">
@ -596,8 +644,7 @@
</div>
</div>
<div class="p-col-12 p-md-12 p-lg-12" style="margin: auto;" align="right">
<button class="k-button k-primary" kendoButton icon="save"
(click)="SaveBanglaContactInformation()">
<button class="k-button k-primary" kendoButton icon="save" (click)="saveBanglaInfo()">
Save
</button>
</div>

View File

@ -1,4 +1,4 @@
import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';
import { FormControl, FormGroup, Validators } from '@angular/forms';
import { DataTransferService } from '../../../data.transfer.service';
import { EmployeeServices } from '../../../_services/employee/employee.service';
@ -33,6 +33,9 @@ import { Nationality } from '../../nationality/nationality';
import { EmpContact } from 'src/app/_models/HREmployee/empContact';
import { Thana } from '../../thana/thana';
import { CardManagemnetModule } from 'src/app/attendance/access-card-management/card-management.module';
import { Observable, EMPTY } from 'rxjs';
import { tap, finalize, catchError } from 'rxjs/operators';
import { FileInfo, UploadComponent } from '@progress/kendo-angular-upload';
@Component({
selector: 'app-general',
@ -53,6 +56,13 @@ import { CardManagemnetModule } from 'src/app/attendance/access-card-management/
border-radius: 5px;
border: 1px solid #52527A;
}
::ng-deep .k-upload .k-actions, .k-upload .k-action-buttons, .k-upload .k-columnmenu-actions {
display: none;
}
::ng-deep .k-upload .k-dropzone {
padding: 3px 3px;
}
`]
})
/* general component*/
@ -61,8 +71,21 @@ export class GeneralComponent implements OnInit {
@Input() public set isActive(isActive: boolean) {
this.active = isActive;
this.uploadDL.clearFiles();
this.uploadSig.clearFiles();
this.uploadNID.clearFiles();
this.uploadPassPort.clearFiles();
this.uploadTIN.clearFiles();
}
@ViewChild('uploadDL') uploadDL: UploadComponent;
@ViewChild('uploadSig') uploadSig: UploadComponent;
@ViewChild('uploadNID') uploadNID: UploadComponent;
@ViewChild('uploadPassPort') uploadPassPort: UploadComponent;
@ViewChild('uploadTIN') uploadTIN: UploadComponent;
// @ViewChild('uploadPhoto') uploadPhoto: UploadComponent;
@ViewChild('uploadPhoto', { read: ElementRef }) uploadPhotoRef!: ElementRef;
active: boolean = false;
NIDFiles: any;
@ -70,9 +93,15 @@ export class GeneralComponent implements OnInit {
DLfiles: any;
Passfiles: any;
Sigfiles: any;
selectedNidFiles: any;
selectedTinFiles?: FileList;
selectedDlFiles: any;
// selectedNidFiles: any;
// selectedTinFiles?: FileList;
// selectedDlFiles: any;
selectedNidFiles: File[] = [];
selectedTinFiles: File[] = [];
selectedDlFiles: File[] = [];
selectedPassportFiles: File[] = [];
selectedSignature: File[] = [];
selectedFiles: File[] = [];
departmentPicker: DynamicPicker;
gradePicker: DynamicPicker;
religionPicker: DynamicPicker;
@ -101,7 +130,7 @@ export class GeneralComponent implements OnInit {
employeeTypes: Category[];
religions: Religion[];
public userRoleselectableSettings: SelectableSettings;
selectedFiles?: FileList;
// selectedFiles?: FileList;
currentFile?: File;
employeePhoto: any;
empSigneture: any;
@ -116,7 +145,7 @@ export class GeneralComponent implements OnInit {
nationalities: Nationality[];
defaultNationality: Nationality;
defaultEmployeeType: Category;
nameBangla: string = 'asasas';
nameBangla: string = '';
defaultPhoto = "assets/photos/profile-default.jpg";
photoPath = "Documents/EMPPHOTO";
isDisplay: boolean = false;
@ -405,7 +434,7 @@ export class GeneralComponent implements OnInit {
this.empSigneture = this.sanitizer.bypassSecurityTrustResourceUrl(`data:image/png;base64, ${resp}`);
} else {
this.employeePhoto = this.defaultPhoto;
// this.employeePhoto = this.defaultPhoto;
}
},
@ -450,6 +479,7 @@ export class GeneralComponent implements OnInit {
// }
// }
SavePersonalInfo() {
debugger
// console.log(this.hrEmployee.banglaName);
// return;
if (this.personalInfo.valid === false && this.hrEmployee.employeeNo === '') {
@ -473,7 +503,8 @@ export class GeneralComponent implements OnInit {
this.hrEmployee.id = resp.id;
if (this.active == false) {
this.hrEmployee.employeeNo = resp.employeeNo;
this.employeeService.hrEmployee.employeeNo = resp.employeeNo;
// this.employeeService.hrEmployee.employeeNo = resp.employeeNo;
this.employeeService.hrEmployee = resp;
}
}
},
@ -495,6 +526,45 @@ export class GeneralComponent implements OnInit {
if (this.selectedDlFiles !== null && this.selectedDlFiles !== undefined && this.selectedDlFiles.length > 0) {
this.saveFile(this.hrEmployee.id, this.selectedDlFiles, enumEmpFileUploadType.DrivingLicense);
}
if (this.selectedPassportFiles !== null && this.selectedPassportFiles !== undefined && this.selectedPassportFiles.length > 0) {
this.saveFile(this.hrEmployee.id, this.selectedPassportFiles, enumEmpFileUploadType.passport);
}
if (this.selectedSignature !== null && this.selectedSignature !== undefined && this.selectedSignature.length > 0) {
const file: File | null = this.selectedSignature[0];
this.currentFile = file;
this.employeeService.uploadEmpFile(this.currentFile, this.hrEmployee.id, this.hrEmployee.id, enumEmpFileUploadType.signature).subscribe(
(resp: any) => {
this.empSigneture = this.sanitizer.bypassSecurityTrustResourceUrl(`data:image/png;base64, ${resp.body}`);
// console.log(resp.body);
//this.Sigfiles = resp;// this.sanitizer.bypassSecurityTrustResourceUrl(`data:image/png;base64, ${resp.body}`);
},
(err: any) => {
this.notificationService.showError(err.error);
this.currentFile = undefined;
}, () => {
this.signaturePopUp = false;
this.notificationService.showSuccess("Signature Uploaded Successfully!")
});
}
if (this.selectedFiles !== null && this.selectedFiles !== undefined && this.selectedFiles.length > 0) {
const file: File | null = this.selectedFiles[0];
this.currentFile = file;
debugger;
this.employeeService.uploadEmpFile(this.currentFile, this.hrEmployee.id, this.hrEmployee.id, enumEmpFileUploadType.Profile_Picture).subscribe(
(resp: any) => {
console.log('image data');
// console.log(resp.body);
//this.employeePhoto = resp;
this.employeePhoto = this.sanitizer.bypassSecurityTrustResourceUrl(`data:image/png;base64, ${resp.body}`);
},
(err: any) => {
this.notificationService.showError(err.error);
this.currentFile = undefined;
});
this.selectedFiles = undefined;
}
}
);
}
@ -531,7 +601,8 @@ export class GeneralComponent implements OnInit {
saveFile(feferenceID: number, selectedFiles: any, type: enumEmpFileUploadType) {
debugger;
if (selectedFiles != undefined && selectedFiles.length > 0) {
const file: File | null = selectedFiles.item(0);
// const file: File | null = selectedFiles.item(0);
const file: File | null = selectedFiles[0];
this.currentFile = file;
this.employeeService.uploadEmpFile(file, this.employeeService.hrEmployee.id, feferenceID, type).subscribe(
(resp: any) => {
@ -554,6 +625,79 @@ export class GeneralComponent implements OnInit {
this.selectedNidFiles = undefined;
this.NIDFiles = undefined;
}
if (type === enumEmpFileUploadType.passport) {
this.selectedPassportFiles = undefined;
this.Passfiles = undefined;
}
}
private getSavePersonalInfoObservable(): Observable<HrEmployee> | null {
debugger;
if (this.personalInfo.valid === false && this.hrEmployee.employeeNo === '') {
this.notificationService.showError('Required Fields Can\'t Be Empty');
return null;
}
this.loadingPanel.ShowLoadingPanel = true;
this.hrEmployee.name = this.hrEmployee.firstName;
if (this.hrEmployee.middleName !== null) {
this.hrEmployee.name += ' ' + this.hrEmployee.middleName;
}
if (this.hrEmployee.lastName !== null) {
this.hrEmployee.name += ' ' + this.hrEmployee.lastName;
}
return this.employeeService.saveHrPersonalInfo(this.hrEmployee).pipe(
tap((resp: HrEmployee) => {
debugger;
if (resp != undefined) {
this.hrEmployee.id = resp.id;
if (!this.active) {
this.hrEmployee.employeeNo = resp.employeeNo;
this.employeeService.hrEmployee = resp;
}
if (this.selectedTinFiles?.length > 0) {
this.saveFile(this.hrEmployee.id, this.selectedTinFiles, enumEmpFileUploadType.TIN);
}
if (this.selectedNidFiles?.length > 0) {
this.saveFile(this.hrEmployee.id, this.selectedNidFiles, enumEmpFileUploadType.nationalID);
}
if (this.selectedDlFiles?.length > 0) {
this.saveFile(this.hrEmployee.id, this.selectedDlFiles, enumEmpFileUploadType.DrivingLicense);
}
}
}),
finalize(() => {
this.loadingPanel.ShowLoadingPanel = false;
}),
catchError((err) => {
debugger;
console.error(err);
this.notificationService.showError(err.error);
return EMPTY; // No emission on error
})
);
}
saveBanglaInfo() {
if (!this.active) {
const personalInfo$ = this.getSavePersonalInfoObservable();
if (personalInfo$) {
personalInfo$.subscribe({
next: () => {
debugger;
this.isDisplay = false;
this.notificationService.showSuccess('Data saved successfully');
this.SaveBanglaContactInformation();
}
});
}
else {
this.isDisplay = false;
}
// If null, validation failed — nothing is executed
} else {
this.SaveBanglaContactInformation();
}
}
saveBanglaPersonalInformation() {
const data = {
@ -589,6 +733,14 @@ export class GeneralComponent implements OnInit {
this.loadingPanel.ShowLoadingPanel = true;
this.employeeService.updateBanglaContactInformation(data).subscribe(
(resp: any) => {
// debugger
// if(this.contact.id == 0)
// this.employeeService.hrEmployee.contacts[0].id = resp;
// this.employeeService.hrEmployee.contacts[0].presentPOInBangla = this.contact.presentPOInBangla;
// this.employeeService.hrEmployee.contacts[0].presentAddressInBangla = this.contact.presentAddressInBangla,
// this.employeeService.hrEmployee.contacts[0].parmanentPOInBangla = this.contact.parmanentPOInBangla;
// this.employeeService.hrEmployee.contacts[0].permanentAddressInBangla = this.contact.permanentAddressInBangla;
}, (err) => {
this.loadingPanel.ShowLoadingPanel = false;
@ -620,53 +772,53 @@ export class GeneralComponent implements OnInit {
});
}
selectFile(event: any): void {
if (this.hrEmployee.id == 0) {
this.notificationService.showWarning('select an employee to change the profile picture');
return;
}
// selectFile(event: any): void {
// if (this.hrEmployee.id == 0) {
// this.notificationService.showWarning('select an employee to change the profile picture');
// return;
// }
if (confirm('Are you sure change the profile picture? selected picture will be store in database as well as will be used as profile picture.') == false) {
return;
}
debugger;
this.selectedFiles = event.target.files;
// if (confirm('Are you sure change the profile picture? selected picture will be store in database as well as will be used as profile picture.') == false) {
// return;
// }
// debugger;
// this.selectedFiles = event.target.files;
if (this.selectedFiles.length > 0) {
const file: File | null = this.selectedFiles.item(0);
this.currentFile = file;
debugger;
this.employeeService.uploadEmpFile(this.currentFile, this.hrEmployee.id, this.hrEmployee.id, enumEmpFileUploadType.Profile_Picture).subscribe(
(resp: any) => {
console.log('image data');
// console.log(resp.body);
//this.employeePhoto = resp;
this.employeePhoto = this.sanitizer.bypassSecurityTrustResourceUrl(`data:image/png;base64, ${resp.body}`);
},
(err: any) => {
this.notificationService.showError(err.error);
this.currentFile = undefined;
});
// if (this.selectedFiles.length > 0) {
// const file: File | null = this.selectedFiles.item(0);
// this.currentFile = file;
// debugger;
// this.employeeService.uploadEmpFile(this.currentFile, this.hrEmployee.id, this.hrEmployee.id, enumEmpFileUploadType.Profile_Picture).subscribe(
// (resp: any) => {
// console.log('image data');
// // console.log(resp.body);
// //this.employeePhoto = resp;
// this.employeePhoto = this.sanitizer.bypassSecurityTrustResourceUrl(`data:image/png;base64, ${resp.body}`);
// },
// (err: any) => {
// this.notificationService.showError(err.error);
// this.currentFile = undefined;
// });
this.selectedFiles = undefined;
}
}
// this.selectedFiles = undefined;
// }
// }
upload(): void {
if (this.selectedFiles.length > 0) {
const file: File | null = this.selectedFiles.item(0);
this.currentFile = file;
this.employeeService.uploadEmpFile(this.currentFile, this.hrEmployee.id, this.hrEmployee.id, enumEmpFileUploadType.Profile_Picture).subscribe(
(event: any) => {
},
(err: any) => {
this.notificationService.showError(err.error);
this.currentFile = undefined;
});
this.selectedFiles = undefined;
}
}
// upload(): void {
// if (this.selectedFiles.length > 0) {
// const file: File | null = this.selectedFiles.item(0);
// this.currentFile = file;
// this.employeeService.uploadEmpFile(this.currentFile, this.hrEmployee.id, this.hrEmployee.id, enumEmpFileUploadType.Profile_Picture).subscribe(
// (event: any) => {
// },
// (err: any) => {
// this.notificationService.showError(err.error);
// this.currentFile = undefined;
// });
// this.selectedFiles = undefined;
// }
// }
RolePermission() {
console.log('Role Permission');
@ -822,77 +974,120 @@ export class GeneralComponent implements OnInit {
}
selectFileTin(event: any): void {
this.selectedTinFiles = event.target.files;
const file = this.selectedTinFiles.item(0);
// if (file.size > 500000) {
// this.notificationService.showError('File size can not be more than 500kb');
// this.selectedTinFiles = undefined;
// selectFileTin(event: any): void {
// this.selectedTinFiles = event.target.files;
// const file = this.selectedTinFiles.item(0);
// // if (file.size > 500000) {
// // this.notificationService.showError('File size can not be more than 500kb');
// // this.selectedTinFiles = undefined;
// // return;
// // }
// }
// selectFileNationalId(event: any): void {
// this.selectedNidFiles = event.target.files;
// const file = this.selectedNidFiles.item(0);
// // if (file.size > 500000) {
// // this.notificationService.showError('File size can not be more than 500kb');
// // this.selectedNidFiles = undefined;
// // return;
// // }
// }
// selectFileDrivingLicense(event: any): void {
// this.selectedDlFiles = event.target.files;
// const file = this.selectedDlFiles.item(0);
// // if (file.size > 500000) {
// // this.notificationService.showError('File size can not be more than 500kb');
// // this.selectedDlFiles = undefined;
// // return;
// // }
// }
// selectPassport(event: any): void {
// this.selectedDlFiles = event.target.files;
// const file = this.selectedDlFiles.item(0);
// // if (file.size > 500000) {
// // this.notificationService.showError('File size can not be more than 500kb');
// // this.selectedDlFiles = undefined;
// // return;
// // }
// }
// selectSignature(event: any): void {
// if (this.hrEmployee.id == 0) {
// this.notificationService.showWarning('select an employee to change the profile picture');
// return;
// }
}
selectFileNationalId(event: any): void {
this.selectedNidFiles = event.target.files;
const file = this.selectedNidFiles.item(0);
// if (file.size > 500000) {
// this.notificationService.showError('File size can not be more than 500kb');
// this.selectedNidFiles = undefined;
// if (confirm('Are you sure change the signature picture? selected picture will be store in database as well as will be used as signature picture.') == false) {
// return;
// }
}
selectFileDrivingLicense(event: any): void {
this.selectedDlFiles = event.target.files;
const file = this.selectedDlFiles.item(0);
// if (file.size > 500000) {
// this.notificationService.showError('File size can not be more than 500kb');
// this.selectedDlFiles = undefined;
// return;
// this.selectedFiles = event.target.files;
// if (this.selectedFiles.length > 0) {
// const file: File | null = this.selectedFiles.item(0);
// this.currentFile = file;
// this.employeeService.uploadEmpFile(this.currentFile, this.hrEmployee.id, this.hrEmployee.id, enumEmpFileUploadType.signature).subscribe(
// (resp: any) => {
// this.empSigneture = this.sanitizer.bypassSecurityTrustResourceUrl(`data:image/png;base64, ${resp.body}`);
// // console.log(resp.body);
// //this.Sigfiles = resp;// this.sanitizer.bypassSecurityTrustResourceUrl(`data:image/png;base64, ${resp.body}`);
// },
// (err: any) => {
// this.notificationService.showError(err.error);
// this.currentFile = undefined;
// }, () => {
// this.signaturePopUp = false;
// this.notificationService.showSuccess("Signature Uploaded Successfully!")
// });
// this.selectedFiles = undefined;
// }
}
selectPassport(event: any): void {
this.selectedDlFiles = event.target.files;
const file = this.selectedDlFiles.item(0);
// if (file.size > 500000) {
// this.notificationService.showError('File size can not be more than 500kb');
// this.selectedDlFiles = undefined;
// return;
// }
selectFileTin(event: { files: FileInfo[] }): void {
this.selectedTinFiles = event.files
.map(f => f.rawFile)
.filter((f): f is File => f instanceof File);
const file = this.selectedTinFiles[0];
}
selectSignature(event: any): void {
if (this.hrEmployee.id == 0) {
this.notificationService.showWarning('select an employee to change the profile picture');
return;
selectFileNationalId(event: { files: FileInfo[] }): void {
debugger;
// Extract File[] from FileInfo[]
this.selectedNidFiles = event.files
.map(f => f.rawFile)
.filter((f): f is File => f instanceof File);
const file = this.selectedNidFiles[0];
}
if (confirm('Are you sure change the signature picture? selected picture will be store in database as well as will be used as signature picture.') == false) {
return;
selectFileDrivingLicense(event: { files: FileInfo[] }): void {
this.selectedDlFiles = event.files
.map(f => f.rawFile)
.filter((f): f is File => f instanceof File);
// const file = this.selectedDlFiles[0];
}
this.selectedFiles = event.target.files;
if (this.selectedFiles.length > 0) {
const file: File | null = this.selectedFiles.item(0);
this.currentFile = file;
this.employeeService.uploadEmpFile(this.currentFile, this.hrEmployee.id, this.hrEmployee.id, enumEmpFileUploadType.signature).subscribe(
(resp: any) => {
this.empSigneture = this.sanitizer.bypassSecurityTrustResourceUrl(`data:image/png;base64, ${resp.body}`);
// console.log(resp.body);
//this.Sigfiles = resp;// this.sanitizer.bypassSecurityTrustResourceUrl(`data:image/png;base64, ${resp.body}`);
},
(err: any) => {
this.notificationService.showError(err.error);
this.currentFile = undefined;
}, () => {
this.signaturePopUp = false;
this.notificationService.showSuccess("Signature Uploaded Successfully!")
});
this.selectedFiles = undefined;
selectPassport(event: { files: FileInfo[] }): void {
this.selectedPassportFiles = event.files
.map(f => f.rawFile)
.filter((f): f is File => f instanceof File);
// const file = this.selectedPassportFiles[0];
}
selectSignature(event: { files: FileInfo[] }): void {
this.selectedSignature = event.files
.map(f => f.rawFile)
.filter((f): f is File => f instanceof File);
}
selectProfilePhoto(event: { files: FileInfo[] }): void {
debugger
this.selectedFiles = event.files
.map(f => f.rawFile)
.filter((f): f is File => f instanceof File);;
}
triggerUploadClick(): void {
const input = this.uploadPhotoRef.nativeElement.querySelector('input[type="file"]');
if (input) {
input.click();
}
}
changePassword() {
if (this.userPassword == '') {

View File

@ -79,7 +79,10 @@
<label for="txtGrade">Status</label>
</div>
<div class="p-col-12 p-lg-1" align="center">:</div>
<div class="p-col-12 p-lg-4">{{ _statusString }}</div>
<div class="p-col-12 p-lg-4"
[ngStyle]="{ 'color': _statusString === 'Discontinued' ? 'red' : 'inherit' }">
{{ _statusString }}
</div>
<div class="p-col-12 p-lg-1">
<label for="txtBasicSalary">Basic Salary</label>
@ -102,6 +105,12 @@
</div>
<div class="p-col-12 p-lg-1" align="center">:</div>
<div class="p-col-12 p-lg-4">{{ _employee.categoryName }}</div>
<div class="p-col-12 p-lg-1">
<label for="txtCategory">Joining Date</label>
</div>
<div class="p-col-12 p-lg-1" align="center">:</div>
<div class="p-col-12 p-lg-4">{{ _employee.joiningDate | date: 'dd MMM yyyy'}}</div>
</div>
</fieldset>
</div>
@ -509,7 +518,7 @@
<kendo-grid-column
field="effectDate"
title="Effect Date"
width="15%"
width="13%"
>
<ng-template
kendoGridCellTemplate
@ -525,12 +534,29 @@
<kendo-grid-column
field="description"
title="Description"
width="77%"
width="70%"
>
</kendo-grid-column>
<kendo-grid-column
field=""
title="Created by"
width="10%"
>
<ng-template
kendoGridCellTemplate
let-dataItem
let-rowIndex="rowIndex"
>
{{ dataItem.createdByUser }}
<br>
<label style="font-size: 12px; color: darkgray;">On {{ dataItem.createdDate | date : "dd-MMM-yyyy" }}</label>
</ng-template>
</kendo-grid-column>
<kendo-grid-command-column
title="Action"
width="8%"
width="7%"
>
<ng-template
kendoGridCellTemplate

View File

@ -127,6 +127,7 @@ export class LifeCycleEntryComponent implements OnInit {
ngOnInit() {
this._employee = new Employee();
this._employee.joiningDate = undefined;
this._empLifeCycle = new EmpLifeCycle();
this._CurrentEmpgranogram = new OrganogramBasic();
this.lifecycleService.GetByUserID().subscribe(
@ -174,6 +175,7 @@ export class LifeCycleEntryComponent implements OnInit {
private CreateFormValidator(): void {
this._employee = new Employee();
this._employee.joiningDate = undefined;
this._fromValidator = new FormBuilder().group({
loginId: ['', Validators.required],
name: ['', Validators.required],
@ -353,6 +355,8 @@ export class LifeCycleEntryComponent implements OnInit {
this._empLifeCycle = new EmpLifeCycle();
this._lifecycleHistory = [];
this._employee = new Employee();
this._employee.joiningDate = undefined;
this._statusString = undefined;
return;
}
this.loadingPanelService.ShowLoadingPanel = true;

View File

@ -2,7 +2,7 @@
<div class="p-grid card">
<div class="p-col-12 p-md-12" style="padding: 7px;">
<div class="p-grid">
<div class="p-col-5">
<div class="p-col-12 p-md-5">
<app-employee-picker (ItemSelected)="GetSelectedEmployee($event)"></app-employee-picker>
</div>
@ -14,9 +14,18 @@
style="width:100%">
</kendo-datepicker>
</div> -->
<div class="p-col-5">
<div class="p-col-12 p-md-1" style="margin: auto"></div>
<div class="p-col-6 p-md-2" style="margin: auto">
<label>Authorized Person</label>
</div>
<div class="p-col-2">
<div class="p-col-6 p-md-2">
<kendo-dropdownlist [data]="authorizedPersonList"
[defaultItem]="{ name: 'Select..', id: null }" [textField]="'name'" [valueField]="'id'"
[valuePrimitive]="true" [(ngModel)]="selectedPersonID" id="signatory">
</kendo-dropdownlist>
</div>
<div class="p-col-12 p-md-2">
<button kendoButton style="width: 100%; margin-right: 5%" (click)="onPreview('PDF')"
class="k-primary">Preview</button>
</div>

View File

@ -31,6 +31,8 @@ import { ApiService } from '../../app.api.service';
import { NgxExtendedPdfViewerService, PDFPrintRange } from 'ngx-extended-pdf-viewer';
import { Employee } from '../../_models/Employee/employee';
import { saveAs } from 'file-saver';
import { LetterRequestService } from 'src/app/_services/letter-request/letter-request.service';
import { AuthorizedPerson } from 'src/app/adhoc-feature/authorized-persons/authorizedPerson';
@Component({
selector: 'app-digital-service-book',
@ -49,6 +51,8 @@ export class DigitalServiceBookComponent implements OnInit {
fromDate: Date = new Date();
toDate: Date = new Date();
payrolltype: PayrollType;
authorizedPersonList: AuthorizedPerson[] = [];
selectedPersonID: number;
// user: User;
constructor(public employeeService: EmployeeServices,
@ -64,6 +68,7 @@ export class DigitalServiceBookComponent implements OnInit {
public taxService: TaxService,
public salaryService: SalaryService,
public leaveYearService: LeaveService,
public letterRequestService: LetterRequestService,
public router: Router,
public authService: AuthService) {
this.apiService.selectedMenuName = 'Digital Service Book';
@ -95,7 +100,7 @@ export class DigitalServiceBookComponent implements OnInit {
// this.setSelectableSettings();
// this.loadBank();
this.loadDataAuthorizedPersons();
this.loadLoggedInEmployee();
}
loadLoggedInEmployee() {
@ -135,13 +140,14 @@ export class DigitalServiceBookComponent implements OnInit {
const data = {
reportid: 1000,
itemid: 0,
itemid: this.selectedPersonID != undefined ? this.selectedPersonID : null,
// empIds: '',
empIds: this.selectedEmp.employeeID,
reportType: type,
// fromDate: this.selectedMonth,
fromDate: new Date().toDateString(),
toDate: new Date().toDateString()
toDate: new Date().toDateString(),
};
this.loadingPanel.ShowLoadingPanel = true;
console.log(data);
@ -211,4 +217,20 @@ export class DigitalServiceBookComponent implements OnInit {
this.printService.print();
}
loadDataAuthorizedPersons() {
this.loadingPanel.ShowLoadingPanel = true;
this.letterRequestService.getAuthorisedPersons().subscribe(
(resp) => {
this.authorizedPersonList = resp;
},
(err) => {
this.notificationService.showError(err.error);
this.loadingPanel.ShowLoadingPanel = false;
},
() => {
this.loadingPanel.ShowLoadingPanel = false;
},
);
}
}

File diff suppressed because one or more lines are too long

View File

@ -2697,6 +2697,7 @@ namespace HRM.UI.Controllers.Attendance
DateTime fromDate = DateTime.Today;
DateTime toDate = DateTime.Today;
bool withoutEmployee = true;
bool overrideManualEntry = false;
List<SearchEmployee> emps = null;
List<Employee> employees = null;
int empid;
@ -2711,6 +2712,7 @@ namespace HRM.UI.Controllers.Attendance
fromDate = (DateTime)item["fromDate"].ToObject<DateTime>();
toDate = (DateTime)item["toDate"].ToObject<DateTime>();
withoutEmployee = (bool)item["isWithEmployee"].ToObject<bool>();
overrideManualEntry = (bool)item["overrideManualEntry"].ToObject<bool>();
if (withoutEmployee == true) break;
if (withoutEmployee == false && emps == null)
emps = new List<SearchEmployee>();
@ -2735,7 +2737,7 @@ namespace HRM.UI.Controllers.Attendance
for (DateTime attDate = fromDate; attDate <= toDate; attDate = attDate.AddDays(1))
{
new AttendanceProcess().Process(new DateTime(attDate.Year, attDate.Month, attDate.Day),
EnumProcessMode.Manual, (int)currentUser.PayrollTypeID, currentUser.UserID, employees);
EnumProcessMode.Manual, (int)currentUser.PayrollTypeID, currentUser.UserID, employees, overrideManualEntry);
}
}
catch (Exception e)

View File

@ -2165,6 +2165,7 @@ namespace HRM.UI.Controllers
ec.PresentAddressInBangla = presentAddressInBangla;
ec.PermanentAddressInBangla = presentAddressInBangla;
_hrEmployeeService.SaveContact(ec);
return Ok(ec.ID);
}
}
catch (Exception ex)

View File

@ -119,7 +119,13 @@ namespace HRM.UI.Controllers
{
try
{
return Ok(this._lifeCycleService.GetEmpID(EmpID));
List<EmpLifeCycle> empLifeCycles = this._lifeCycleService.GetEmpID(EmpID);
List<User> users = _userService.GetAll();
foreach (var empLifeCycle in empLifeCycles)
{
empLifeCycle.CreatedByUser = users.Find(u=> u.ID == empLifeCycle.CreatedBy)?.UserName;
}
return Ok(empLifeCycles);
}
catch (Exception ex)
{

View File

@ -816,7 +816,7 @@ namespace HRM.UI.Controllers
ltemplate.Type = EnumDocType.Desktop_Letter;
ltemplate.TypeID = (int)EnumDocType.Desktop_Letter;
lFileName = "Staff.doc";
lFileName = "Staff.docx";
}
else
{
@ -828,7 +828,7 @@ namespace HRM.UI.Controllers
ltemplate.Type = EnumDocType.Desktop_Letter;
ltemplate.TypeID = (int)EnumDocType.Desktop_Letter;
lFileName = "Worker.doc";
lFileName = "Worker.docx";
}

View File

@ -633,7 +633,7 @@ namespace HRM.UI.Controllers.Report
bytes = rptLeave.ShowCCWiseLeaveEncashmentReturn(itemid, payrollTypeId, reportType);
break;
case EnumReportType.DigitalServiceBook:
bytes = new rptDigitalServiceBook().DigitalServiceBook(currentUser.EmployeeID.HasValue ? currentUser.EmployeeID.Value : 0, (int)currentUser.PayrollTypeID, fromDate, sEmpIDs, reportType);
bytes = new rptDigitalServiceBook().DigitalServiceBook(currentUser.EmployeeID.HasValue ? currentUser.EmployeeID.Value : 0, (int)currentUser.PayrollTypeID, fromDate, sEmpIDs, itemid == 0 ? null : itemid, reportType);
break;
case EnumReportType.SalaryAllocationReportEmployeeWise:
bytes = new rptJV().showJVSalaryDetailEmployeeWReport(1, GlobalFunctions.LastDateOfMonth(fromDate), null, payrollTypeId, reportType);
@ -1811,7 +1811,7 @@ namespace HRM.UI.Controllers.Report
ltemplate.Type = EnumDocType.Desktop_Letter;
ltemplate.TypeID = (int)EnumDocType.Desktop_Letter;
lFileName = "Worker.doc";
lFileName = "Worker.docx";
sFilePath = new rptEmployee().Generate(ltemplate, employeeID, payrollTypeId, downloadPath, lFileName);
break;
@ -1824,7 +1824,7 @@ namespace HRM.UI.Controllers.Report
ltemplate.Type = EnumDocType.Desktop_Letter;
ltemplate.TypeID = (int)EnumDocType.Desktop_Letter;
lFileName = "Staff.doc";
lFileName = "Staff.docx";
sFilePath = new rptEmployee().Generate(ltemplate, employeeID, payrollTypeId, downloadPath, lFileName);
break;

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 KiB

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,129 @@
B‡Kv‡U· wjwg‡UW
wb‡qvMcÎ
Kg(C)KZ(C)v‡`i Rb¨ cÖ‡hvR¨
‡hvM`v‡bi ZvwiL t JoiningDateBangla
--------------------------------------------------------------------------------
KvW(C) bs : EmpCodeBangla
(‡d-vi - FloorBangla)
IME/HR/F-16
RbYen ZvwiL t
wcZvi bvg t
gvZvi bvg t
¯'vqx wVKvbv
i‡³i MÖæc t
MÖvg t
‡cvó Awdm t
_vbv t
‡Rjv t
cÖv_x(C)i ¯^v¶i
GBP,Avi ,wW
Echotex Limited, Head Office: Road No # 4, House No # 139 , Mohakhali New DOHS, Dhaka-1206. Tel # (02) 9881717,9882177, Fax # (02) 9883430
Factory: Pollibiddut(Chandra),Kaliakoire,Gazipur-1751,Mob:01786-339955,Tel # (06822) 51877, Fax # (06822) 51876
EmpNameBangla
EmpDesignaionBangla
EmpDepartmentBangla
VillagePABangla
PostOfficePABangla
ThanaPABangla
DistrictPABangla
VillageTABangla
PostOfficeTABangla
ThanaTABangla
DistrictTABangla
FatherNameBangla
MotherNameBangla
BirthDateBangla
wbqgvejx t
1| PjwZ gvm †kl nIqvi cieZx(C) 07(mvZ)Kg(C) w`e‡mi g‡a¨ gRyix cwi‡kva Kiv n‡e|
2| mvavib Kg(C)NUv ˆ`wbK 08(AvU) NUv |
3| mvßvwnK QywU 1(GK) w`b, ˆbwgwËK QywU eQ‡i 10(`k) w`b , Amy¯'ZvRwbZ QywU c~Y(C) †eZ‡b 14(‡PŠÏ) w`b, evwl(C)K QywU (AvBbvbymv‡i) 18 w`‡b 01(GK) w`b, Drme QywU eQ‡i 12 (ev‡iv) w`b, gvZ...Z¡Kvjxb QywU
ïay gvÎ gwnjv‡`i Rb¨ AvBbvbymv‡i cÖm‡ei c~‡e(C) 60 w`b cÖm‡ei c‡i 60 w`b (‡gvU 120w`b) Ges wcZ...Z¡Kvjxb QywU ïaygvÎ cyiæl‡`i Rb¨ d¨v+-wii wbqgvbymv‡i 07 w`b|
4| ¯'vqxfv‡e wb‡qvMcÖvß mK‡j eQ‡i `yB C‡` g~j †eZb nv‡i Drme †evbvm cv‡eb| Kv‡iv PvKzix ¯'vqx bv n‡j †evbvm cÖ`v‡bi mgq wZwb g~j †eZb 10% †evbvm cv‡eb|
5| KZ...(C)cÿ cÖ‡qvR‡b Avcbvi mKj kZ(C) AcwiewZ(C)Z †i‡L †Kv¤úvbxi Ab¨vb¨ d¨v+-wi‡Z A_ev GKB d¨v+-ixi Ab¨ †Kvb wefv‡M ev kvLvq ev wkd&U G e`wj Ki‡Z cvi‡e|
6| ‡Kv¤úvbxi wbqgvbymv‡i evrmwiK gRyix e„wx Kiv n‡e|
7| ¯'vqx fv‡e wb‡qvwRZ Kg(C)KZ(C)v PvKzix n‡Z Aemvb wb‡Z PvB‡j gvwjK‡K 60(lvU) w`‡bi wjwLZ †bvwUk cÖ`vb Ki‡Z n‡e A_ev 60(lvU) w`‡bi g~j †eZ‡bi mgcwigvb A_(C)
gvwjK‡K cÖ`vb Ki‡Z n‡e| KZ(C)...cÿ Avcbv‡K eiLv¯Í e¨ZxZ PvKzix nB‡Z Aemvb NUv‡Z PvB‡j 120 (GKk wek) w`‡bi wjwLZ †bvwUk cÖ`vb Ki‡e A_ev 120 (GKk wek)
w`‡bi g~j †eZ‡bi mgcwigvb A_(C) cÖ`vb Ki‡e|
8| KZ...(C)c¶ B"Qv Ki‡j Am`vPi‡Yi Rb¨ wb¤œwjwLZ †h †Kvb cÖKvi `Û cÖ`vb Ki‡Z cvi‡e-
K) PvKzix n‡Z AcmviY L) bx‡Pi c‡`, †MÖ‡W ev †eZb †¯‡j AbwaK 01(GK) ermi ch(C)šÍ Avbqb M) AbwaK 01 (GK) erm‡ii Rb¨ c‡`vbœwZ eÜ N) AbwaK 01(GK) erm‡ii Rb¨ †eZb e„wx eÜ O) Rwigvbv P) AbwaK 07(mvZ) w`b ch(C)šÍ webv ‡eZ‡b mvgwqK eiLv¯Í Q) mZKx(C)KiY |
9| Avcwb AÎ cÖwZôv‡b _vKv Ae¯'vq Ab¨ †Kvb cÖwZôv‡b PvKzix Ki‡Z cvi‡eb bv A_ev cÖwZôv‡bi e¨em¨v msuvšÍ †Kvb †Mvcb Z_¨vw` KvD‡K cÖ`vb Ki‡eb bv|
10| †Kvb †iwR/vW(C) wPwKrmK KZ...(C)K cÖZ¨vwqZ kvixwiK ev gvbwmK AÿgZv A_ev `xN(C)‡gqvw` Ae¨nZ fMœ-¯^v¯'¨ ev Amy¯'¨Zvi Kvi‡Y PvKzix n‡Z wWmPvR(C) Kiv n‡e|
11| Avcbvi Awf‡hvM I civgk(C) GBP.Avi Awdm, Awf‡hvM e· A_ev I‡qj‡dqvi Awdmv‡ii Kv‡Q wjwLZfv‡e Rvbvb|
12| Avcbvi wVKvbv cwieZ(C)b Ki‡j 07(mvZ) w`‡bi g‡a¨ Awdm‡K wjwLZfv‡e Aek¨B Rvbv‡Z n‡e|
13| wbqwgZ †bvwUk †ev‡W(C)i w`‡K j¶¨ ivLyb Ges Ab¨vb¨ Z_¨vw` Rvb‡Z Awdm PjvKvjxb mg‡q Awd‡m †hvMv‡hvM Kiæb|
14| Avcbvi Av‡e`‡bi †cªwÿ‡Z fwel¨ Znwej AvBbvbymv‡i g~j †eZb †_‡K 8% nv‡i KZ(C)b K‡i fwel¨ Znwej MwVZ n‡e| fwel¨ Znwej AvBbvbyhvqx cwiPvwjZ n‡e|
15| PvKzixi eqm Kgc‡ÿ 5 (cuvP) eQi c~Y(C) n‡j ‡Kv¤úvbxi cwjwm Abymv‡i MÖvPzBwU cÖ`vb Kiv n‡e|
16| Avcbv‡K wbivcËv wewagvjv †g‡b I (cÖ‡hvR¨ †ÿ‡Î) wc.wc.B (e¨vw³MZ myiÿv mvgMª(C)x) cwiavb K‡i KvR Ki‡Z n‡e|
17| †Kvb Kg(C)KZ(C)v eqm 60 eQi c~Y(C) n‡j wZwb PvKzix n‡Z ¯^vfvweK Aemi MÖnb Ki‡eb|
18| Avcbvi wb‡qv‡Mi hveZxq kZ(C)vejx †Kv¤úvbxi wbqgvbymv‡i cwiPvwjZ n‡e|
19| KZ...(C)cÿ KZ(C)„K Awc(C)Z `vwqZ¡ h_vh_fv‡e cvjb Ki‡Z n‡e|
20| †Kv¤úvbxi mKj wbqg-Kvbyb h_vh_ fv‡e cÖwZcvjb Ki‡Z n‡e|
Avwg my¯'¨ I ¯^Áv‡b D‡jøwLZ k‡Z(C) m¤§Z n‡q wb‡qvM c‡Î ¯^v¶i K‡i 1(GK) Kwc Abywjwc MÖnb Kijvg|
†eZb wnmve t
K) g~j †eZb t
L) evoxfvov t
M) wPwKrmv fvZv t
N) hvZvqvZ fvZv t
O) Lv`¨ fvZv t
me(C)‡gvU t
BasicSalaryBangla
UvKv
HouseRentBangla
UvKv
MedicalBangla
UvKv
ConveyenceBangla
UvKv
FoodBangla
UvKv
SectionBangla
SectionBangla
SpouseNameBangla
BloodGroupBangla
Avcbvi JoiningDateBangla Bs Zvwi‡Li Av‡e`‡bi I KZ...(C)c‡¶i mv‡_ mv¶v‡Zi wfwˇZ Avcbv‡K †Kv¤úvwbi EmpDepartmentBangla wefv‡M EmpDesignaionBangla c‡` †MÖW - GradeBangla, G JoiningDateBangla Bs ZvwiL n‡Z wk¶vbwek wn‡m‡e wb‡qvM cÖ`vb Kiv nj| wk¶vbwekKvj JoiningDateBangla Bs ZvwiL n‡Z ProbationDateBangla Bs ZvwiL ch(C)šÍ |
D³ †gqv` AwZuvšÍ n‡j ¯'vqx Kg(C)Pvix wnmv‡e MY¨ Kiv n‡e| D³ 03(wZb) gv‡m KZ...(C)cÿ mš`ó bv n‡j AviI 03(wZb) gvm wkÿvbwekKvj e„wx Kiv n‡Z cv‡i|
wefvM t
‡mKkb t
bvg t
Kv‡Ri aiY t
¯^vgx/¯¿xi bvg t
c`ex t
eZ(C)gvb wVKvbv
MÖvg t
‡cvó Awdm t
_vbv t
‡Rjv t
TotalTakaBangla
UvKv

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,117 @@
B‡Kv‡U· wjwg‡UW
wb‡qvMcÎ
kªwg‡Ki Rb¨ cÖ‡hvR¨
‡hvM`v‡bi ZvwiL t JoiningDateBangla
--------------------------------------------------------------------------------
KvW(C) bs : EmpCodeBangla
(‡d-vi - FloorBangla)
IME/HR/F-16
bvg t
RbYen ZvwiL t
wcZvi bvg t
gvZvi bvg t
¯'vqx wVKvbv
c`ex t
‡mKkb t
¯^vgx/¯¿xi bvg t
wefvM t
i‡³i MÖæc t
eZ(C)gvb wVKvbv
MÖvg t
‡cvó Awdm t
_vbv t
‡Rjv t
‡Rjv t
Kv‡Ri aiY t
_vbv t
‡cvó Awdm t
MÖvg t
cÖv_x(C)i ¯^v¶i
GBP,Avi ,wW
Echotex Limited, Head Office: Road No # 4, House No # 139 , Mohakhali New DOHS, Dhaka-1206. Tel # (02) 9881717,9882177, Fax # (02) 9883430
Factory: Pollibiddut(Chandra),Kaliakoire,Gazipur-1751,Mob:01786-339955,Tel # (06822) 51877, Fax # (06822) 51876
EmpNameBangla
EmpDesignaionBangla
EmpDepartmentBangla
VillagePABangla
PostOfficePABangla
ThanaPABangla
DistrictPABangla
VillageTABangla
PostOfficeTABangla
ThanaTABangla
DistrictTABangla
FatherNameBangla
MotherNameBangla
BirthDateBangla
wbqgvejx t
1| PjwZ gvm †kl nIqvi cieZx(C) 07(mvZ)Kg(C) w`e‡mi g‡a¨ gRyix cwi‡kva Kiv n‡e|
2| mvavib Kg(C)NUv ˆ`wbK 08(AvU) NUv, Gi AwZwi³ n‡j Ifvi UvBg cÖ`vb Kiv n‡e|
3| IfviUvBg fvZv AvBbvbymv‡i †`Iqv nq| †hgb t {(g~j †eZb/208)x 2 x AwZwi³ Kv‡Ri NUv}=AwZwi³ gRyixi UvKv|
4| mvßvwnK QywU 1(GK) w`b, ˆbwgwËK QywU eQ‡i 10(`k) w`b , Amy¯'ZvRwbZ QywU c~Y(C) †eZ‡b 14(‡PŠÏ) w`b, evwl(C)K QywU (AvBbvbymv‡i) 18 w`‡b 01(GK) w`b, Drme QywU eQ‡i 12 (ev‡iv) w`b, gvZ...Z¡Kvjxb QywU
ïay gvÎ gwnjv kÖwgKe„‡`i Rb¨ AvBbvbymv‡i cÖm‡ei c~‡e(C) 60 w`b cÖm‡ei c‡i 60 w`b (‡gvU 120w`b) Ges wcZ...Z¡Kvjxb QywU ïaygvÎ cyiæl kÖwgKe„‡`i Rb¨ d¨v+-wii wbqgvbymv‡i 07 w`b|
5| weiwZ I Avnv‡ii mgq 01(GK)NUv|
6| †Kv¤úvbxi wbqg Abymv‡i (cÖ‡hvR¨ †ÿ‡Î) †cÖvWvKkb, AvPiY, nvwRiv †evbvm cÖ`vb Kiv n‡e|
7| ¯'vqxfv‡e wb‡qvMcÖvß mK‡j eQ‡i `yB C‡` g~j gRyix /†eZb nv‡i Drme †evbvm cv‡eb| Kv‡iv PvKzix ¯'vqx bv n‡j †evbvm cÖ`v‡bi mgq wZwb g~j gRyixi 10% †evbvm cv‡eb|
8| KZ...(C)cÿ cÖ‡qvR‡b Avcbvi mKj kZ(C) AcwiewZ(C)Z †i‡L †Kv¤úvbxi Ab¨vb¨ d¨v+-wi‡Z A_ev GKB d¨v+-ixi Ab¨ †Kvb wefv‡M ev kvLvq ev wkd&U G e`wj Ki‡Z cvi‡e|
9| kÖg AvBb Abymv‡i evrmwiK gRyix e„wx Kiv n‡e|
10| ¯'vqxfv‡e wb‡qvwRZ †Kvb kªwgK PvKzix n‡Z Aemvb wb‡Z PvB‡j Òevsjv‡`k kªg AvBb,2006ÓGi aviv 27 (kªwgK KZ(C)...K PvKyixi Aemvb) Abymv‡i kªwgK KZ(C)...K
gvwjK‡K 60(lvU) w`‡bi wjwLZ †bvwUk cÖ`vb Ki‡Z n‡e A_ev 60(lvU) w`‡bi gRyixi mgcwigvY A_(C) gvwjK‡K cª`vb Ki‡Z n‡e|
11| KZ...(C)c¶ B"Qv Ki‡j Am`vPi‡Yi Rb¨ wb¤œwjwLZ †h †Kvb cÖKvi `Û cÖ`vb Ki‡Z cvi‡e -
K) PvKzix n‡Z AcmviY L) bx‡Pi c‡`, †MÖ‡W ev †eZb †¯‡j AbwaK 01(GK) ermi ch(C)šÍ Avbqb M) AbwaK 01 (GK) erm‡ii Rb¨ c‡`vbœwZ eÜ N) AbwaK 01(GK) erm‡ii Rb¨ gRyix
e„wx eÜ O) Rwigvbv P) AbwaK 07(mvZ) w`b ch(C)šÍ webv gRyix‡Z /webv †LvivKx‡Z mvgwqK eiLv¯Í Q) mZKx(C)KiY |
12| Avcwb AÎ cÖwZôv‡b _vKv Ae¯'vq Ab¨ †Kvb cÖwZôv‡b PvKzix Ki‡Z cvi‡eb bv A_ev cÖwZôv‡bi e¨em¨v msuvšÍ †Kvb †Mvcb Z_¨vw` KvD‡K cÖ`vb Ki‡eb bv|
13| K) KZ...(C)c¶ hw` †Kvb ¯'vqx kªwgK‡K cÖ‡qvRb AwZwi³Zvi Kvi‡Y PvKzixi Aemvb NUv‡Z Pvb, Z‡e kªwgK‡K 30 w`‡bi (1 gv‡mi) wjwLZ †bvwUk cª`vb Ki‡e| hw` †Kvb †bvwUk bv
†`Iqv nq †m‡¶‡Î †bvwU‡ki cwie‡Z(C) †bvwUk †gqv` 30 w`‡bi (1 gv‡mi) gRyixi mgcwigvY A_(C) kªwgK‡K cÖ`vb Ki‡e |
L) KZ...(C)c¶ hw` †Kvb ¯'vqx kªwg‡Ki eiLv¯Í e¨ZxZ PvKzix Aemvb NUv‡Z Pvb, Z‡e kªwgK‡K 120 w`‡bi (4 gv‡mi) wjwLZ †bvwUk cª`vb Ki‡Z n‡e | hw` †Kvb ‡bvwUk bv ‡`Iqv nq
†m‡¶‡Î †bvwU‡ki cwie‡Z(C) †bvwUk †gqv` 120 w`‡bi (4 gv‡mi) gRyixi mgcwigvY A_(C) kªwgK‡K cÖ`vb Ki‡e |
14| †Kvb †iwR/vW(C) wPwKrmK KZ...(C)K cÖZ¨vwqZ kvixwiK ev gvbwmK AÿgZv A_ev `xN(C)‡gqvw` Ae¨nZ fMœ-¯^v¯'¨ ev Amy¯'¨Zvi Kvi‡Y PvKzix n‡Z wWmPvR(C) Kiv n‡e|
15| Avcbvi Awf‡hvM I civgk(C) GBP.Avi Awdm, Awf‡hvM e· A_ev I‡qj‡dqvi Awdmv‡ii Kv‡Q wjwLZfv‡e Rvbvb|
16| Avcbvi wVKvbv cwieZ(C)b Ki‡j 07(mvZ) w`‡bi g‡a¨ Awdm‡K wjwLZfv‡e Aek¨B Rvbv‡Z n‡e|
17| wbqwgZ †bvwUk †ev‡W(C)i w`‡K j¶¨ ivLyb Ges Ab¨vb¨ Z_¨vw` Rvb‡Z Awdm PjvKvjxb mg‡q Awd‡m †hvMv‡hvM Kiæb|
18| Avcbvi Av‡e`‡bi †cªwÿ‡Z fwel¨ Znwej AvBbvbymv‡i g~j †eZb †_‡K 8% nv‡i KZ(C)b K‡i fwel¨ Znwej MwVZ n‡e| fwel¨ Znwej AvBbvbyhvqx cwiPvwjZ n‡e|
19| PvKzixi eqm Kgc‡ÿ 5 (cuvP) eQi c~Y(C) n‡j evsjv‡`k kªg AvBb Abymv‡i MÖvPzBwU cÖ`vb Kiv n‡e|
20| Avcbv‡K wbivcËv wewagvjv †g‡b I (cÖ‡hvR¨ †ÿ‡Î) wc.wc.B (e¨vw³MZ myiÿv mvgMª(C)x) cwiavb K‡i KvR Ki‡Z n‡e|
21| †Kvb kÖwg‡Ki eqm 60 eQi c~Y(C) n‡j wZwb PvKzix n‡Z ¯^vfvweK Aemi MÖnb Ki‡eb|
22| Avcbvi wb‡qv‡Mi hveZxq kZ(C)vejx evsjv‡`k kÖg-AvBb Abyhvqx cwiPvwjZ n‡e|
Avwg my¯'¨ I ¯^Áv‡b D‡jøwLZ k‡Z(C) m¤§Z n‡q wb‡qvM c‡Î ¯^v¶i K‡i 1(GK) Kwc Abywjwc MÖnb Kijvg|
†eZb I gRyix wb¤œiƒc wnmve t
K) g~j †eZb t
L) evoxfvov t
M) wPwKrmv fvZv t
N) hvZvqvZ fvZv t
O) Lv`¨ fvZv t
me(C)‡gvU t
BasicSalaryBangla
UvKv
HouseRentBangla
UvKv
MedicalBangla
UvKv
ConveyenceBangla
UvKv
FoodBangla
UvKv
TotalTakaBangla
UvKv
SectionBangla
SectionBangla
SpouseNameBangla
BloodGroupBangla
Avcbvi JoiningDateBangla Bs Zvwi‡Li Av‡e`‡bi I KZ...(C)c‡¶i mv‡_ mv¶v‡Zi wfwˇZ Avcbv‡K †Kv¤úvwbi EmpDepartmentBangla wefv‡M EmpDesignaionBangla c‡` †MÖW -GradeBangla, G JoiningDateBangla Bs ZvwiL n‡Z wk¶vbwek wn‡m‡e wb‡qvM cÖ`vb Kiv nj| wk¶vbwekKvj JoiningDateBangla Bs ZvwiL n‡Z ProbationDateBangla Bs ZvwiL ch(C)šÍ |
D³ †gqv` AwZuvšÍ n‡j ¯'vqx kªwgK wnmv‡e MY¨ Kiv n‡e| `¶ kªwg‡Ki †¶‡Î D³ 03(wZb) gv‡m `¶Zvi cÖgvY bv w`‡Z cvi‡j KZ...(C)c¶ `¶Zv cÖgv‡Yi Rb¨ AviI 03(wZb) gvm wk¶vbwekKvj e„wx Ki‡Z cvi‡e|