Compare commits

...

8 Commits

21 changed files with 529 additions and 190 deletions

View File

@ -283,12 +283,13 @@ namespace HRM.BO
List<ProdBonusAttn> Get(int setupID, int ScheduleID); List<ProdBonusAttn> Get(int setupID, int ScheduleID);
List<ProdBonusAttn> Get(int setupID, DateTime dateTime); List<ProdBonusAttn> Get(int setupID, DateTime dateTime);
List<ProdBonusAttn> GetBySetupLineDate(int setupID, int lineID, DateTime dateTime);
List<ProdBonusAttn> GetBySetupID(int iD); List<ProdBonusAttn> GetBySetupID(int iD);
List<ProdBonusAttn> GetBySetupIDs(string iDs); List<ProdBonusAttn> GetBySetupIDs(string iDs);
List<ProdBonusAttn> GetByLineID(int lineID); List<ProdBonusAttn> GetByLineID(int lineID);
List<ProdBonusAttn> GetbySetupAndLineID(int setupID, int lineID); List<ProdBonusAttn> GetbySetupAndLineID(int setupID, int lineID);
DateTime? GetMaxDate(int setupID, int lineID, DateTime date);
} }
#endregion #endregion

View File

@ -78,8 +78,10 @@ namespace HRM.BO
} }
#endregion #endregion
public string devName { get; set; }
public string EmployeeNo { get; set; } public string devParentName{ get; set; }
public string devGrantParentName{ get; set; }
public string EmployeeNo { get; set; }
public string EmpName { get; set; } public string EmpName { get; set; }
//public Employee Employee { get; set; } //public Employee Employee { get; set; }

View File

@ -90,7 +90,24 @@ namespace HRM.DA
return tc.ExecuteReader(sql); return tc.ExecuteReader(sql);
//return tc.ExecuteReader("SELECT * FROM ProdBonusAttn WHERE ProdBonusSetupID=%n AND CAST(InTime AS date)=%d", setupID, dateTime); //return tc.ExecuteReader("SELECT * FROM ProdBonusAttn WHERE ProdBonusSetupID=%n AND CAST(InTime AS date)=%d", setupID, dateTime);
} }
internal static IDataReader GetBySetupLineDate(TransactionContext tc, int setupID, int lineID, DateTime dateTime)
{
string sql = SQLParser.MakeSQL("SELECT PBA.*, E.EMPLOYEENO FROM ProdBonusAttn PBA Left Join EMPLOYEE E on E.EMPLOYEEID = PBA.EmployeeID WHERE PBA.ProdBonusSetupID=%n AND PBA.ProdBonusLineID=%n AND year(PBA.InTime)= %n AND month(PBA.InTime)= %n AND day(PBA.InTime)= %n ORDER BY TRY_CAST(E.EMPLOYEENO AS INT) ASC",
setupID, lineID, dateTime.Year, dateTime.Month,dateTime.Day);
return tc.ExecuteReader(sql);
}
internal static DateTime? GetMaxDate(TransactionContext tc, int setupID, int lineID, DateTime date)
{
DateTime? value = null;
object obj = tc.ExecuteScalar("SELECT max(intime) FROM ProdBonusAttn WHERE ProdBonusSetupID=%n AND ProdBonusLineID = %n AND OutTime < %d", setupID, lineID, date);
if (obj is not DBNull)
{
value = Convert.ToDateTime(obj);
}
return value;
}
#endregion #endregion
#region Delete function #region Delete function

View File

@ -55,6 +55,20 @@ namespace HRM.DA
{ {
return tc.ExecuteReader("SELECT * FROM ProdBonusWorkSchedule where ProdBonusSetupID=%n", nSetupID); return tc.ExecuteReader("SELECT * FROM ProdBonusWorkSchedule where ProdBonusSetupID=%n", nSetupID);
} }
internal static DataTable GetschedulewithTime(TransactionContext tc, int lineID)
{
return tc.ExecuteDataTable(@"select a.*,bb.scheduleCount , (select max(ps.InTime) from ProdBonusAttn ps where ps.ProdBonusLineID =%n
and DATEADD(dd, 0, DATEDIFF(dd, 0, ps.InTime)) = bb.scheduleDate) as inTime,
(select max(ps.OutTime) from ProdBonusAttn ps where ps.ProdBonusLineID =%n
and DATEADD(dd, 0, DATEDIFF(dd, 0, ps.InTime)) = bb.scheduleDate) as outTime from
(SELECT * FROM ProdBonusWorkSchedule where ProdBonusLineID=%n) a,
(
select DATEADD(dd, 0, DATEDIFF(dd, 0, InTime)) scheduleDate,COUNT(*) scheduleCount from ProdBonusAttn where
ProdBonusLineID =%n group by DATEADD(dd, 0, DATEDIFF(dd, 0, InTime))
) bb
where bb.scheduleDate = DATEADD(dd, 0, DATEDIFF(dd, 0, a.StartDateTime)) ", lineID, lineID, lineID, lineID);
}
internal static IDataReader GetByLineID(TransactionContext tc, int lineID) internal static IDataReader GetByLineID(TransactionContext tc, int lineID)
{ {

View File

@ -159,6 +159,32 @@ namespace HRM.DA
return ProdBonusAttns; return ProdBonusAttns;
} }
public List<ProdBonusAttn> GetBySetupLineDate(int setupID, int lineID, DateTime dateTime)
{
List<ProdBonusAttn> ProdBonusAttns = new List<ProdBonusAttn>();
TransactionContext tc = null;
try
{
tc = TransactionContext.Begin();
DataReader dr = new DataReader(ProdBonusAttnDA.GetBySetupLineDate(tc, setupID, lineID, dateTime));
ProdBonusAttns = this.CreateObjects<ProdBonusAttn>(dr);
dr.Close();
tc.End();
}
catch (Exception e)
{
#region Handle Exception
if (tc != null)
tc.HandleError();
ExceptionLog.Write(e);
throw new ServiceException(e.Message, e);
#endregion
}
return ProdBonusAttns;
}
public List<ProdBonusAttn> GetBySetupID(int setupID) public List<ProdBonusAttn> GetBySetupID(int setupID)
{ {
@ -295,6 +321,31 @@ namespace HRM.DA
return ProdBonusAttns; return ProdBonusAttns;
} }
public DateTime? GetMaxDate(int setupID, int lineID, DateTime date)
{
TransactionContext tc = null;
try
{
DateTime? dateValue = null;
tc = TransactionContext.Begin();
dateValue = ProdBonusAttnDA.GetMaxDate(tc, setupID, lineID, date);
tc.End();
return dateValue;
}
catch (Exception e)
{
#region Handle Exception
if (tc != null)
tc.HandleError();
ExceptionLog.Write(e);
throw new ServiceException(e.Message, e);
#endregion
}
}
public int Save(ProdBonusAttn oProdBonusAttn) public int Save(ProdBonusAttn oProdBonusAttn)
{ {
TransactionContext tc = null; TransactionContext tc = null;

View File

@ -717,8 +717,8 @@ namespace HRM.DA
bonusIntime = oProductionBonusSetup.FromDate > dailyAtt.InTime ? oProductionBonusSetup.FromDate : dailyAtt.InTime; bonusIntime = oProductionBonusSetup.FromDate > dailyAtt.InTime ? oProductionBonusSetup.FromDate : dailyAtt.InTime;
else if (dailyAtt.InTime.GetValueOrDefault().TimeOfDay < tAtt.InTime.TimeOfDay) else if (dailyAtt.InTime.GetValueOrDefault().TimeOfDay < tAtt.InTime.TimeOfDay)
bonusIntime = dailyAtt.InTime.GetValueOrDefault().Date.AddHours(tAtt.InTime.Hour).AddMinutes(tAtt.InTime.Minute); bonusIntime = dailyAtt.InTime.GetValueOrDefault().Date.AddHours(tAtt.InTime.Hour).AddMinutes(tAtt.InTime.Minute);
if (oProductionBonusSetup.ToDate.Date == dailyAtt.AttnDate.Date) //if (oProductionBonusSetup.ToDate.Date == dailyAtt.AttnDate.Date)
bonusOuttime = oProductionBonusSetup.ToDate < dailyAtt.OutTime ? oProductionBonusSetup.ToDate : dailyAtt.OutTime; // bonusOuttime = oProductionBonusSetup.ToDate < dailyAtt.OutTime ? oProductionBonusSetup.ToDate : dailyAtt.OutTime;
else if (dailyAtt.OutTime.GetValueOrDefault().TimeOfDay > tAtt.OutTime.TimeOfDay) else if (dailyAtt.OutTime.GetValueOrDefault().TimeOfDay > tAtt.OutTime.TimeOfDay)
bonusOuttime = dailyAtt.OutTime.GetValueOrDefault().Date.AddHours(tAtt.OutTime.Hour).AddMinutes(tAtt.OutTime.Minute); bonusOuttime = dailyAtt.OutTime.GetValueOrDefault().Date.AddHours(tAtt.OutTime.Hour).AddMinutes(tAtt.OutTime.Minute);
//else if (oShift != null && dailyAtt.InTime.GetValueOrDefault().TimeOfDay < oShift.InTime.TimeOfDay) //else if (oShift != null && dailyAtt.InTime.GetValueOrDefault().TimeOfDay < oShift.InTime.TimeOfDay)
@ -780,8 +780,8 @@ namespace HRM.DA
bonusIntime = oProductionBonusSetup.FromDate > dailyAtt.InTime ? oProductionBonusSetup.FromDate : dailyAtt.InTime; bonusIntime = oProductionBonusSetup.FromDate > dailyAtt.InTime ? oProductionBonusSetup.FromDate : dailyAtt.InTime;
else if (dailyAtt.InTime.GetValueOrDefault().TimeOfDay < tAtt.InTime.TimeOfDay) else if (dailyAtt.InTime.GetValueOrDefault().TimeOfDay < tAtt.InTime.TimeOfDay)
bonusIntime = dailyAtt.InTime.GetValueOrDefault().Date.AddHours(tAtt.InTime.Hour).AddMinutes(tAtt.InTime.Minute); bonusIntime = dailyAtt.InTime.GetValueOrDefault().Date.AddHours(tAtt.InTime.Hour).AddMinutes(tAtt.InTime.Minute);
if (oProductionBonusSetup.ToDate.Date == dailyAtt.AttnDate.Date) //if (oProductionBonusSetup.ToDate.Date == dailyAtt.AttnDate.Date)
bonusOuttime = oProductionBonusSetup.ToDate < dailyAtt.OutTime ? oProductionBonusSetup.ToDate : dailyAtt.OutTime; // bonusOuttime = oProductionBonusSetup.ToDate < dailyAtt.OutTime ? oProductionBonusSetup.ToDate : dailyAtt.OutTime;
else if (dailyAtt.OutTime.GetValueOrDefault().TimeOfDay > tAtt.OutTime.TimeOfDay) else if (dailyAtt.OutTime.GetValueOrDefault().TimeOfDay > tAtt.OutTime.TimeOfDay)
bonusOuttime = dailyAtt.OutTime.GetValueOrDefault().Date.AddHours(tAtt.OutTime.Hour).AddMinutes(tAtt.OutTime.Minute); bonusOuttime = dailyAtt.OutTime.GetValueOrDefault().Date.AddHours(tAtt.OutTime.Hour).AddMinutes(tAtt.OutTime.Minute);
//else if (oShift != null && dailyAtt.InTime.GetValueOrDefault().TimeOfDay < oShift.InTime.TimeOfDay) //else if (oShift != null && dailyAtt.InTime.GetValueOrDefault().TimeOfDay < oShift.InTime.TimeOfDay)

View File

@ -129,6 +129,31 @@ namespace HRM.DA
return ProdBonusWorkSchedules; return ProdBonusWorkSchedules;
} }
public DataTable GetschedulewithTime(int lineid)
{
DataTable items = null;
TransactionContext tc = null;
try
{
tc = TransactionContext.Begin();
items = ProdBonusWorkScheduleDA.GetschedulewithTime(tc, lineid);
tc.End();
}
catch (Exception e)
{
#region Handle Exception
if (tc != null)
tc.HandleError();
ExceptionLog.Write(e);
throw new ServiceException(e.Message, e);
#endregion
}
return items;
}
public List<ProdBonusWorkSchedule> GetWithSetupID(int nSetupID) public List<ProdBonusWorkSchedule> GetWithSetupID(int nSetupID)
{ {
List<ProdBonusWorkSchedule> ProdBonusWorkSchedules = null; List<ProdBonusWorkSchedule> ProdBonusWorkSchedules = null;

View File

@ -393,9 +393,9 @@ namespace HRM.Report
bonusIntime = design.FromDate > dailyAtt.InTime ? design.FromDate : dailyAtt.InTime; bonusIntime = design.FromDate > dailyAtt.InTime ? design.FromDate : dailyAtt.InTime;
else if (dailyAtt.InTime.GetValueOrDefault().TimeOfDay < tAtt.InTime.TimeOfDay) else if (dailyAtt.InTime.GetValueOrDefault().TimeOfDay < tAtt.InTime.TimeOfDay)
bonusIntime = dailyAtt.InTime.GetValueOrDefault().Date.AddHours(tAtt.InTime.Hour).AddMinutes(tAtt.InTime.Minute); bonusIntime = dailyAtt.InTime.GetValueOrDefault().Date.AddHours(tAtt.InTime.Hour).AddMinutes(tAtt.InTime.Minute);
if (design.ToDate.Date == dailyAtt.AttnDate.Date) //if (design.ToDate.Date == dailyAtt.AttnDate.Date)
bonusOuttime = design.ToDate < dailyAtt.OutTime ? design.ToDate : dailyAtt.OutTime; // bonusOuttime = design.ToDate < dailyAtt.OutTime ? design.ToDate : dailyAtt.OutTime;
else if (dailyAtt.OutTime.GetValueOrDefault().TimeOfDay > tAtt.OutTime.TimeOfDay) if (dailyAtt.OutTime.GetValueOrDefault().TimeOfDay > tAtt.OutTime.TimeOfDay)
bonusOuttime = dailyAtt.OutTime.GetValueOrDefault().Date.AddHours(tAtt.OutTime.Hour).AddMinutes(tAtt.OutTime.Minute); bonusOuttime = dailyAtt.OutTime.GetValueOrDefault().Date.AddHours(tAtt.OutTime.Hour).AddMinutes(tAtt.OutTime.Minute);
//else if (oShift != null && dailyAtt.InTime.GetValueOrDefault().TimeOfDay < oShift.InTime.TimeOfDay) //else if (oShift != null && dailyAtt.InTime.GetValueOrDefault().TimeOfDay < oShift.InTime.TimeOfDay)
// bonusIntime = dailyAtt.InTime.GetValueOrDefault().Date.AddHours(oShift.InTime.Hour).AddMinutes(oShift.InTime.Minute); // bonusIntime = dailyAtt.InTime.GetValueOrDefault().Date.AddHours(oShift.InTime.Hour).AddMinutes(oShift.InTime.Minute);

View File

@ -40,8 +40,8 @@ namespace HRM.Report
oDR["PARMANENTADDRESS"] = oDRow["PARMANENTADDRESS"]; oDR["PARMANENTADDRESS"] = oDRow["PARMANENTADDRESS"];
oDR["PRESENTADDRESS"] = oDRow["PRESENTADDRESS"]; oDR["PRESENTADDRESS"] = oDRow["PRESENTADDRESS"];
oDR["BIRTHDATE"] = Convert.ToDateTime(oDRow["BIRTHDATE"]).ToString("dd/MM/yyyy"); oDR["BIRTHDATE"] = Convert.ToDateTime(oDRow["BIRTHDATE"]).ToString("dd/MM/yyyy");
if (oDRow["PHOTO"] is not DBNull) //if (oDRow["PHOTO"] is not DBNull)
oDR["PHOTO"] = Convert.ToBase64String((byte[])oDRow["PHOTO"]); // oDR["PHOTO"] = Convert.ToBase64String((byte[])oDRow["PHOTO"]);
oDR["NIDNO"] = oDRow["NIDNO"]; oDR["NIDNO"] = oDRow["NIDNO"];
oDR["HEIGHT"] = oDRow["HEIGHT"]; oDR["HEIGHT"] = oDRow["HEIGHT"];
oDR["BLOODGROUP"] = GlobalExtensions.BloodGroupToFriendlyName((EnumBloodGroup)Enum.Parse(typeof(EnumBloodGroup), oDR["BLOODGROUP"] = GlobalExtensions.BloodGroupToFriendlyName((EnumBloodGroup)Enum.Parse(typeof(EnumBloodGroup),

View File

@ -42,6 +42,7 @@
<None Remove="Attendence\RDLC\rptMonthlyKPI.rdlc" /> <None Remove="Attendence\RDLC\rptMonthlyKPI.rdlc" />
<None Remove="RDLC\ActiveEmployeeDetail.rdlc" /> <None Remove="RDLC\ActiveEmployeeDetail.rdlc" />
<None Remove="RDLC\Advice.rdlc" /> <None Remove="RDLC\Advice.rdlc" />
<None Remove="RDLC\AllDigitalServiceBook.rdlc" />
<None Remove="RDLC\AllEmpTaxInfo.rdlc" /> <None Remove="RDLC\AllEmpTaxInfo.rdlc" />
<None Remove="RDLC\AllMedicalClaim.rdlc" /> <None Remove="RDLC\AllMedicalClaim.rdlc" />
<None Remove="RDLC\ApointmentLetterForStuff.rdlc" /> <None Remove="RDLC\ApointmentLetterForStuff.rdlc" />
@ -310,6 +311,7 @@
<EmbeddedResource Include="Attendence\RDLC\MultipleJobCardSub.rdlc" /> <EmbeddedResource Include="Attendence\RDLC\MultipleJobCardSub.rdlc" />
<EmbeddedResource Include="Attendence\RDLC\rptMonthlyKPI.rdlc" /> <EmbeddedResource Include="Attendence\RDLC\rptMonthlyKPI.rdlc" />
<EmbeddedResource Include="RDLC\ActiveEmployeeDetail.rdlc" /> <EmbeddedResource Include="RDLC\ActiveEmployeeDetail.rdlc" />
<EmbeddedResource Include="RDLC\AllDigitalServiceBook.rdlc" />
<EmbeddedResource Include="RDLC\AllEmpTaxInfo.rdlc" /> <EmbeddedResource Include="RDLC\AllEmpTaxInfo.rdlc" />
<EmbeddedResource Include="RDLC\AllMedicalClaim.rdlc" /> <EmbeddedResource Include="RDLC\AllMedicalClaim.rdlc" />
<EmbeddedResource Include="RDLC\ApointmentLetterForStuff.rdlc" /> <EmbeddedResource Include="RDLC\ApointmentLetterForStuff.rdlc" />

View File

@ -11,7 +11,9 @@ export class ProdBonusSupervisor {
employeeNo:string; // view purpose employeeNo:string; // view purpose
empName:string; // view purpose empName:string; // view purpose
// employee: Employee; // employee: Employee;
devName: string;
devParentName: string;
devGrantParentName: string;
constructor() { constructor() {
// super(); // super();
this.id = 0; this.id = 0;
@ -24,4 +26,4 @@ export class ProdBonusSupervisor {
this.empName =''; // view purpose this.empName =''; // view purpose
} }
} }

View File

@ -7,6 +7,8 @@ var ProdBonusWorkSchedule = /** @class */ (function () {
this.prodBonusLineID = 0; this.prodBonusLineID = 0;
this.startDateTime = new Date(); this.startDateTime = new Date();
this.endDateTime = new Date(); this.endDateTime = new Date();
this.inTime = undefined;
this.outTime = undefined;
} }
return ProdBonusWorkSchedule; return ProdBonusWorkSchedule;
}()); }());

View File

@ -1 +1 @@
{"version":3,"file":"prodBonusWorkSchedule.js","sourceRoot":"","sources":["prodBonusWorkSchedule.ts"],"names":[],"mappings":";;;AAEA;IAOI;QACI,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;QACZ,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,aAAa,GAAG,IAAI,IAAI,EAAE,CAAC;QAChC,IAAI,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC;IAClC,CAAC;IACL,4BAAC;AAAD,CAAC,AAbD,IAaC;AAbY,sDAAqB"} {"version":3,"file":"prodBonusWorkSchedule.js","sourceRoot":"","sources":["prodBonusWorkSchedule.ts"],"names":[],"mappings":";;;AAEA;IASI;QACI,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;QACZ,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,aAAa,GAAG,IAAI,IAAI,EAAE,CAAC;QAChC,IAAI,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC;QAC9B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;IAC7B,CAAC;IACL,4BAAC;AAAD,CAAC,AAjBD,IAiBC;AAjBY,sDAAqB"}

View File

@ -6,11 +6,15 @@ export class ProdBonusWorkSchedule{
prodBonusLineID: number; prodBonusLineID: number;
startDateTime: Date; startDateTime: Date;
endDateTime: Date; endDateTime: Date;
inTime?: Date;
outTime?: Date;
totalCount?: number;
constructor(){ constructor(){
this.id = 0; this.id = 0;
this.prodBonusLineID = 0; this.prodBonusLineID = 0;
this.startDateTime = new Date(); this.startDateTime = new Date();
this.endDateTime = new Date(); this.endDateTime = new Date();
this.inTime = undefined;
this.outTime = undefined;
} }
} }

View File

@ -111,6 +111,10 @@ export class BonusService {
getLayoutDetails(setUpid: number) { getLayoutDetails(setUpid: number) {
return this.apiService.httpGet<any>('/Bonus/getLayoutDetails/'+ setUpid); return this.apiService.httpGet<any>('/Bonus/getLayoutDetails/'+ setUpid);
} }
GetschedulewithTime(lineid: number) {
return this.apiService.httpGet<any>('/Bonus/GetschedulewithTime/' + lineid);
}
getLines(setupid: number) { getLines(setupid: number) {
return this.apiService.httpGet<ProdBonusLine[]>('/Bonus/getLines/'+ setupid); return this.apiService.httpGet<ProdBonusLine[]>('/Bonus/getLines/'+ setupid);
} }
@ -120,6 +124,9 @@ export class BonusService {
getProdBonusAttnEmployeeList(item: any) { getProdBonusAttnEmployeeList(item: any) {
return this.apiService.httpPost<Employee[]>('/Bonus/getProdBonusAttnEmployeeList', item); return this.apiService.httpPost<Employee[]>('/Bonus/getProdBonusAttnEmployeeList', item);
} }
getProdBonusAttnEmployeeListSwingAndPrinting(item: any) {
return this.apiService.httpPost<Employee[]>('/Bonus/getProdBonusAttnEmployeeListSwingAndPrinting', item);
}
saveAllProdBonusAttn(item: any) { saveAllProdBonusAttn(item: any) {
return this.apiService.httpPost<any[]>('/Bonus/saveAllProdBonusAttn', item); return this.apiService.httpPost<any[]>('/Bonus/saveAllProdBonusAttn', item);
} }

View File

@ -247,10 +247,12 @@
</div> </div>
<div class="p-col-12 p-md-12 p-lg-8"> <div class="p-col-12 p-md-12 p-lg-8">
<input [(ngModel)]="hrEmployee.nationalID" formControlName="nationalId" <input [(ngModel)]="hrEmployee.nationalID" formControlName="nationalId"
id="txtNationalId" pInputText style="width:84%" type="text" [readonly]="!active"> id="txtNationalId" pInputText style="width:84%" type="text">
<!-- [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;" [disabled]="!active" style="width: 15.5%; vertical-align: bottom; padding: 16px;"
(click)="popUpAttachment('NID')"></button> (click)="popUpAttachment('NID')"></button>
<!-- [disabled]="!active" -->
</div> </div>
<div class="p-col-12 p-md-12 p-lg-4"> <div class="p-col-12 p-md-12 p-lg-4">
<label for="txtPassportNo">Passport No</label> <label for="txtPassportNo">Passport No</label>

View File

@ -84,7 +84,7 @@
</div> </div>
<div class="p-col-12" align="right"> <div class="p-col-12" align="right">
<button icon="refresh" kendoButton [primary]="true" style="width: fit-content" (click)="onClickRefresh()" <button icon="refresh" kendoButton [primary]="true" style="width: fit-content" (click)="onClickLoad()"
[disabled]="selectedProdBSdata===undefined||selectedLine===undefined||selectedDate===undefined">Load</button> [disabled]="selectedProdBSdata===undefined||selectedLine===undefined||selectedDate===undefined">Load</button>
</div> </div>
<div class="p-col-12"> <div class="p-col-12">
@ -94,6 +94,7 @@
Remove All Remove All
</button> </button>
<kendo-grid-spacer></kendo-grid-spacer> <kendo-grid-spacer></kendo-grid-spacer>
<label>Attendance Count: {{employeeList.length}} </label>
<!--<button kendoGridExcelCommand type="button" icon="file-excel">Export to <!--<button kendoGridExcelCommand type="button" icon="file-excel">Export to
Excel</button>class="customButton"--> Excel</button>class="customButton"-->
</ng-template> </ng-template>

View File

@ -187,7 +187,7 @@ export class ProductionBonusAttendanceComponent implements OnInit {
) )
} }
onClickRefresh() { onClickLoad() {
// debugger; // debugger;
const fromDate = new Date(this.productionBonusSetup.fromDate.setHours(0, 0, 0, 0)); const fromDate = new Date(this.productionBonusSetup.fromDate.setHours(0, 0, 0, 0));
const toDate = new Date(this.productionBonusSetup.toDate.setHours(0, 0, 0, 0)); const toDate = new Date(this.productionBonusSetup.toDate.setHours(0, 0, 0, 0));
@ -195,6 +195,7 @@ export class ProductionBonusAttendanceComponent implements OnInit {
if (selectedDate >= fromDate && selectedDate <= toDate) { if (selectedDate >= fromDate && selectedDate <= toDate) {
var dataForAttn = { var dataForAttn = {
setupId: this.productionBonusSetup.id, setupId: this.productionBonusSetup.id,
lineId: this.selectedLine.id,
date: this.selectedDate date: this.selectedDate
} }
// console.log(dataForAttn); // console.log(dataForAttn);
@ -225,7 +226,6 @@ export class ProductionBonusAttendanceComponent implements OnInit {
debugger debugger
this.employeeList = resp; this.employeeList = resp;
this.employeeList.forEach(x => this.AddEmployeeGridData(x.id, false)); this.employeeList.forEach(x => this.AddEmployeeGridData(x.id, false));
// console.log('employee List', this.employeeList);
}, },
(err) => { (err) => {
this.notificationService.showError(err.error); this.notificationService.showError(err.error);
@ -246,6 +246,31 @@ export class ProductionBonusAttendanceComponent implements OnInit {
// } // }
// } // }
} }
//New For Swing And Printig
if (this.prodBonusAttn.length <= 0 && (this.productionBonusSetup.productionBonusType == EnumProductionBonusType.Sewing ||
this.productionBonusSetup.productionBonusType == EnumProductionBonusType.Printing)) {
let data = {
prodLine: this.selectedLine,
date: this.selectedDate
}
this.loadingPanelService.ShowLoadingPanel = true;
this.bonusService.getProdBonusAttnEmployeeListSwingAndPrinting(data).subscribe(
(resp) => {
debugger
this.employeeList = resp;
this.employeeList.forEach(x => this.AddEmployeeGridData(x.id, false));
},
(err) => {
this.notificationService.showError(err.error);
this.loadingPanelService.ShowLoadingPanel = false;
},
() => {
this.loadingPanelService.ShowLoadingPanel = false;
}
);
}
if (this.prodBonusAttn.length > 0) { if (this.prodBonusAttn.length > 0) {
debugger; debugger;
for (let i = 0; i < this.prodBonusAttn.length; i++) { for (let i = 0; i < this.prodBonusAttn.length; i++) {
@ -260,7 +285,7 @@ export class ProductionBonusAttendanceComponent implements OnInit {
); );
} }
else { else {
this.notificationService.showWarning('Date did not match with Work Schedule! Schedule not match'); this.notificationService.showWarning('Date did not match with Work Schedule','Schedule not matched!');
} }
} }
onClickAdd() { onClickAdd() {

View File

@ -141,7 +141,7 @@
<label>Line Name</label> <label>Line Name</label>
</div> </div>
<div class="p-col-12 p-lg-5" *ngIf="isNewLine"> <div class="p-col-12 p-lg-5" *ngIf="isNewLine">
<app-dynamic-picker [dynamicPickerView]="_departmentPicker"></app-dynamic-picker> <app-dynamic-picker [dynamicPickerView]="_departmentPicker" (onSelectCompleted)="createWorkSchedule($event)"></app-dynamic-picker>
</div> </div>
<div class="p-col-12 p-lg-5" *ngIf="!isNewLine"> <div class="p-col-12 p-lg-5" *ngIf="!isNewLine">
<input [(ngModel)]="selectedRow.lineName" [readonly]="!isNewLine" type="text" <input [(ngModel)]="selectedRow.lineName" [readonly]="!isNewLine" type="text"
@ -181,50 +181,82 @@
</div> </div>
</div> </div>
<kendo-grid [kendoGridBinding]="prodBonusLine.prodBonusSupervisors" [sortable]="true" [style.height.%]="100" <kendo-grid [kendoGridBinding]="prodBonusLine.prodBonusSupervisors" [sortable]="true" [style.height.%]="100"
[reorderable]="true"><!-- [resizable]="true" [pageSize]="state.take" [skip]="state.skip" [reorderable]="true">
[sort]="state.sort" [pageable]="true" (dataStateChange)="dataStateChange($event)">--> <!-- [resizable]="true" [pageSize]="state.take" [skip]="state.skip"
<kendo-grid-column field="empName" title="Supervisor/Line Chief/Common Worker" [width]="170"> [sort]="state.sort" [pageable]="true" (dataStateChange)="dataStateChange($event)">-->
<kendo-grid-column field="empName" title="Supervisor/Line Chief/Common Worker" [width]="150">
<!-- <ng-template kendoGridCellTemplate let-dataItem let-rowIndex="rowIndex"> <!-- <ng-template kendoGridCellTemplate let-dataItem let-rowIndex="rowIndex">
</ng-template> --> </ng-template> -->
</kendo-grid-column> </kendo-grid-column>
<kendo-grid-column field="employeeNo" title="Employee No" [width]="120"> <kendo-grid-column field="employeeNo" title="Employee No" [width]="100">
<!-- <ng-template kendoGridCellTemplate let-dataItem let-rowIndex="rowIndex"> <!-- <ng-template kendoGridCellTemplate let-dataItem let-rowIndex="rowIndex">
</ng-template> --> </ng-template> -->
</kendo-grid-column> </kendo-grid-column>
<kendo-grid-column field="bonusPercent" title="Bonus Percent" [width]="100">
<kendo-grid-column field="devGrantParentName" title="top Parent (section)" [width]="120">
</kendo-grid-column> </kendo-grid-column>
<kendo-grid-column title="Actions" [width]="200"> <kendo-grid-column field="devParentName" title="parent (floor)" [width]="120">
</kendo-grid-column>
<kendo-grid-column field="devName" title="posted" [width]="120">
</kendo-grid-column>
<kendo-grid-column field="bonusPercent" title="Bonus Percent" [width]="100">
</kendo-grid-column>
<kendo-grid-column title="Actions" [width]="50">
<ng-template kendoGridCellTemplate let-dataItem let-rowIndex="rowIndex"> <ng-template kendoGridCellTemplate let-dataItem let-rowIndex="rowIndex">
<button type="button" kendoButton icon="delete" class="kt-delete" <button type="button" kendoButton icon="delete" class="kt-delete"
style="width: fit-content;" (click)="onClickRemoveSupervisors(dataItem)">Remove</button> style="width: fit-content;" (click)="onClickRemoveSupervisors(dataItem)">
Remove
</button>
</ng-template> </ng-template>
</kendo-grid-column> </kendo-grid-column>
</kendo-grid> </kendo-grid>
</p-tabPanel> </p-tabPanel>
<p-tabPanel header="Work Schedule" leftIcon="pi pi-briefcase"> <p-tabPanel header="Work Schedule" leftIcon="pi pi-briefcase">
<kendo-grid [kendoGridBinding]="prodBonusLine.prodBonusWorkSchedules" [pageable]="true"
[sortable]="true" [reorderable]="true" [resizable]="true"> <app-loading-panel></app-loading-panel>
<div class="p-grid">
<div class="p-col-12 p-lg-3 label-ailgn">
<button type="button" kendoButton class="kt-delete"
style="width: fit-content;" (click)="GetScheduleTime(dataItem)">
Load Time Schedule
</button>
</div>
<div class="p-col-12 p-lg-5 label-ailgn">
this will take around 30 Second or more.
</div>
</div>
<kendo-grid-column field="startDateTime" title="Date" [width]="120"> <kendo-grid [kendoGridBinding]="prodBonusLine.prodBonusWorkSchedules" [pageable]="true"
<ng-template kendoGridCellTemplate let-dataItem let-rowIndex="rowIndex"> [sortable]="true" [reorderable]="true" [resizable]="true">
{{dataItem.startDateTime | date: 'dd MMMM yyyy'}}
</ng-template> <kendo-grid-column field="startDateTime" title="Date" [width]="120">
</kendo-grid-column> <ng-template kendoGridCellTemplate let-dataItem let-rowIndex="rowIndex">
{{dataItem.startDateTime | date: 'dd MMMM yyyy'}}
<!-- <kendo-grid-column field="startDateTime" title="Start Time" width="100"> </ng-template>
<ng-template kendoGridCellTemplate let-dataItem let-rowIndex="rowIndex"> </kendo-grid-column>
{{dataItem.startDateTime | date: 'hh:mm a'}}
</ng-template> <kendo-grid-column field="inTime" title="Start Time" width="100">
</kendo-grid-column> <ng-template kendoGridCellTemplate let-dataItem let-rowIndex="rowIndex">
{{dataItem?.inTime | date: 'hh:mm'}}
<kendo-grid-column field="endDateTime" title="End Time" width="100"> </ng-template>
<ng-template kendoGridCellTemplate let-dataItem let-rowIndex="rowIndex"> </kendo-grid-column>
{{dataItem.endDateTime | date: 'hh:mm a'}}
</ng-template> <kendo-grid-column field="outTime" title="End Time" width="100">
</kendo-grid-column> --> <ng-template kendoGridCellTemplate let-dataItem let-rowIndex="rowIndex">
</kendo-grid> {{dataItem?.outTime | date: 'hh:mm'}}
</p-tabPanel> </ng-template>
</p-tabView> </kendo-grid-column>
<kendo-grid-column field="totalCount" title="Count" width="100">
<!--<ng-template kendoGridCellTemplate let-dataItem let-rowIndex="rowIndex">
{{dataItem.endDateTime | date: 'hh:mm a'}}
</ng-template>-->
</kendo-grid-column>
</kendo-grid>
</p-tabPanel>
</p-tabView>
</div> </div>
</kendo-dialog-content> </kendo-dialog-content>
<kendo-dialog-actions> <kendo-dialog-actions>
@ -238,4 +270,4 @@
</kendo-dialog> </kendo-dialog>
</div> </div>
</p-panel> </p-panel>
</div> </div>

View File

@ -28,6 +28,7 @@ import { numberSymbols } from '@progress/kendo-angular-intl';
import { process, State } from '@progress/kendo-data-query'; import { process, State } from '@progress/kendo-data-query';
import { DataStateChangeEvent } from '@progress/kendo-angular-grid'; import { DataStateChangeEvent } from '@progress/kendo-angular-grid';
import { noUndefined } from '@angular/compiler/src/util'; import { noUndefined } from '@angular/compiler/src/util';
import { EnumStatus } from '../../_models/enums';
@ -70,7 +71,8 @@ export class ProductionBonusSetupComponent implements OnInit {
prodBonusSupervisor: ProdBonusSupervisor; prodBonusSupervisor: ProdBonusSupervisor;
prodBonusParameter: ProdBonusParameter; prodBonusParameter: ProdBonusParameter;
prodBonusAttn: ProdBonusAttn[]; prodBonusAttn: ProdBonusAttn[];
depts: Department[] = [];
layoutNo: string; layoutNo: string;
// programName: string; // programName: string;
// maxPerson: number; // maxPerson: number;
@ -104,7 +106,7 @@ export class ProductionBonusSetupComponent implements OnInit {
department: Department; department: Department;
selectedRow: any; selectedRow: any;
scheduleTime: any;
editDetails: boolean = false; editDetails: boolean = false;
@ -123,37 +125,39 @@ export class ProductionBonusSetupComponent implements OnInit {
this.prodBonusSupervisor = new ProdBonusSupervisor(); this.prodBonusSupervisor = new ProdBonusSupervisor();
this.prodBonusParameter = new ProdBonusParameter(); this.prodBonusParameter = new ProdBonusParameter();
this.prodBonusWork = new ProdBonusWorkSchedule(); this.prodBonusWork = new ProdBonusWorkSchedule();
this.getBonusType(); this.getBonusType();
// this.createForm();
} }
OnclickCheckbox() { OnclickCheckbox() {
debugger; debugger;
if (this.isNewLayout === false) { if (this.isNewLayout === false) {
this.isNewLayout = true; this.isNewLayout = true;
this.productionBonusSetup = new ProductionBonusSetup(); this.productionBonusSetup = new ProductionBonusSetup();
this.prodBonusLine = new ProdBonusLine(); this.prodBonusLine = new ProdBonusLine();
this.prodBonusSupervisor = new ProdBonusSupervisor(); this.prodBonusSupervisor = new ProdBonusSupervisor();
this.prodBonusParameter = new ProdBonusParameter(); this.prodBonusParameter = new ProdBonusParameter();
this.prodBonusWork = new ProdBonusWorkSchedule(); this.prodBonusWork = new ProdBonusWorkSchedule();
this.productionBonusSetup.fromDate = new Date(); this.productionBonusSetup.fromDate = new Date();
this.productionBonusSetup.toDate = new Date(); this.productionBonusSetup.toDate = new Date();
} }
else { else {
this.isNewLayout = false; this.isNewLayout = false;
this.productionBonusSetup.fromDate = undefined; this.productionBonusSetup.fromDate = undefined;
this.productionBonusSetup.toDate = undefined; this.productionBonusSetup.toDate = undefined;
}
this.prodBSdata = undefined;
this.filteredProdBSdata = undefined;
this.selectedProdBSdata = undefined;
this.selectedBonusType = {
label: 'Select Bonus Type...',
value: null
}
this.editDetails = false;
} }
this.prodBSdata = undefined;
this.filteredProdBSdata = undefined;
this.selectedProdBSdata = undefined;
this.selectedBonusType = {
label: 'Select Bonus Type...',
value: null
}
this.editDetails = false;
}
handleFilter(value) { handleFilter(value) {
this.filteredProdBSdata = this.prodBSdata.filter( this.filteredProdBSdata = this.prodBSdata.filter(
@ -268,74 +272,97 @@ export class ProductionBonusSetupComponent implements OnInit {
this.bonusPercent = 0; this.bonusPercent = 0;
} }
onClickAddLine(): void { onClickAddLine(): void {
debugger; debugger;
// this.onEdit = false; // this.onEdit = false;
this.isNewLine = true; this.isNewLine = true;
this.selectedRow = new ProdBonusLine(); this.selectedRow = new ProdBonusLine();
this._departmentPicker = new DynamicPicker(EnumDynamicpickerType.Department, false); this._departmentPicker = new DynamicPicker(EnumDynamicpickerType.Department, false);
this.prodBonusLine = new ProdBonusLine(); this.prodBonusLine = new ProdBonusLine();
this.prodBonusWork = new ProdBonusWorkSchedule(); this.prodBonusWork = new ProdBonusWorkSchedule();
if (this.isNewLayout) {//Add Setup line if (this.isNewLayout) {//Add Setup line
if (this.selectedBonusType === undefined || this.selectedBonusType === null) { if (this.selectedBonusType === undefined || this.selectedBonusType === null) {
return this.notificationService.showWarning('Please select Bonus Type'); return this.notificationService.showWarning('Please select Bonus Type');
} }
this.saveProductionBonusSetup(); this.saveProductionBonusSetup();
// console.log(this.productionBonusSetup); // console.log(this.productionBonusSetup);
debugger; debugger;
if (this.productionBonusSetup.designNo === '' || this.productionBonusSetup.programName === '' || this.productionBonusSetup.fromDate === undefined || if (this.productionBonusSetup.designNo === '' || this.productionBonusSetup.programName === '' || this.productionBonusSetup.fromDate === undefined ||
this.productionBonusSetup.toDate === undefined || this.productionBonusSetup.productionBonusType === null) { this.productionBonusSetup.toDate === undefined || this.productionBonusSetup.productionBonusType === null) {
this.notificationService.showWarning('Please fill up the information of production bonus setup'); this.notificationService.showWarning('Please fill up the information of production bonus setup');
return; return;
} }
this.prodBonusLine.prodBonusSupervisors = []; this.prodBonusLine.prodBonusSupervisors = [];
this.prodBonusLine.prodBonusWorkSchedules = []; this.prodBonusLine.prodBonusWorkSchedules = [];
// console.log(this.prodBonusLine); // console.log(this.prodBonusLine);
// for (let j = 0; j < this.productionBonusSetup.productionBonusLines.length; j++) { // for (let j = 0; j < this.productionBonusSetup.productionBonusLines.length; j++) {
// for (let i = 0; i < this.productionBonusSetup.productionBonusLines[i].prodBonusSupervisors.length; i++) // for (let i = 0; i < this.productionBonusSetup.productionBonusLines[i].prodBonusSupervisors.length; i++)
// this.prodBonusLine.prodBonusSupervisors = this.productionBonusSetup.productionBonusLines[i].prodBonusSupervisors; // this.prodBonusLine.prodBonusSupervisors = this.productionBonusSetup.productionBonusLines[i].prodBonusSupervisors;
// } // }
}
else { //Edit Setup line
// console.log(this.productionBonusSetup);
debugger;
this.prodBonusLine.prodBonusSupervisors = [];
this.prodBonusLine.prodBonusWorkSchedules = [];
}
this.opened = true;
// create schedule
this.loadingPanelService.ShowLoadingPanel = true;
debugger;
if (this.prodBonusLine.id !== 0) {
this.bonusService.getProdBonusAttenbyLineId(this.prodBonusLine.id).subscribe(
(resp) => {
this.prodBonusAttn = resp;
},
(err: any) => {
this.notificationService.showError(err.error);
this.loadingPanelService.ShowLoadingPanel = false;
},
() => {
this.loadingPanelService.ShowLoadingPanel = false;
} }
); else { //Edit Setup line
// console.log(this.productionBonusSetup);
debugger;
this.prodBonusLine.prodBonusSupervisors = [];
this.prodBonusLine.prodBonusWorkSchedules = [];
}
this.opened = true;
// create schedule
this.loadingPanelService.ShowLoadingPanel = true;
debugger;
if (this.prodBonusLine.id !== 0) {
}
} }
} GetScheduleTime(dataItem: any) {
console.log('line');
console.log(this.prodBonusLine.prodBonusWorkSchedules);
this.loadingPanelService.ShowLoadingPanel = true;
this.bonusService.GetschedulewithTime(this.prodBonusLine.prodBonusWorkSchedules[0].prodBonusLineID).subscribe(
(resp) => {
this.scheduleTime = resp;
},
(err: any) => {
this.notificationService.showError(err.error);
this.loadingPanelService.ShowLoadingPanel = false;
},
() => {
console.log(this.scheduleTime);
if (this.prodBonusLine.prodBonusWorkSchedules != undefined) {
var pdrs = this.prodBonusLine.prodBonusWorkSchedules;
pdrs.forEach(x => {
var item = this.scheduleTime.find(y => y.startDateTime == x.startDateTime);
if (item != undefined) {
x.inTime = new Date( item.inTime);
x.outTime = new Date( item.outTime);
x.totalCount = item.scheduleCount;
}
}
);
}
console.log(this.prodBonusLine.prodBonusWorkSchedules);
this.loadingPanelService.ShowLoadingPanel = false;
}
);
}
onCellClickEdit(dataItem: ProdBonusLine) { onCellClickEdit(dataItem: ProdBonusLine) {
// console.log(dataItem); // console.log(dataItem);
this.isNewLine = false; this.isNewLine = false;
this.prodBonusLine = new ProdBonusLine(); this.prodBonusLine = new ProdBonusLine();
debugger;
// if (this.isNewLayout) { //ADD Line // if (this.isNewLayout) { //ADD Line
// this.prodBonusLine.prodBonusSupervisors = []; // this.prodBonusLine.prodBonusSupervisors = [];
// this.prodBonusLine.prodBonusWorkSchedules = []; // this.prodBonusLine.prodBonusWorkSchedules = [];
@ -370,44 +397,44 @@ export class ProductionBonusSetupComponent implements OnInit {
this.opened = true; this.opened = true;
} }
newLine() { newLine() {
if ((this._departmentPicker.selectedID === undefined || this._departmentPicker.selectedID === 0) && if ((this._departmentPicker.selectedID === undefined || this._departmentPicker.selectedID === 0) &&
(this.prodBonusLine.lineName === '' || this.prodBonusLine.lineName === undefined)) { (this.prodBonusLine.lineName === '' || this.prodBonusLine.lineName === undefined)) {
this.notificationService.showWarning('Please Select a Line'); this.notificationService.showWarning('Please Select a Line');
this.close(); this.close();
return; return;
} }
if (this._employee === undefined || this._employee.id === 0) { if (this._employee === undefined || this._employee.id === 0) {
this.notificationService.showWarning('Please Select Supervisor'); this.notificationService.showWarning('Please Select Supervisor');
this.close(); this.close();
return; return;
} }
// if (this.scheduledHours === undefined || this.scheduledHours === 0) { // if (this.scheduledHours === undefined || this.scheduledHours === 0) {
// this.notificationService.showWarning('Please Select Scheduled Hours'); // this.notificationService.showWarning('Please Select Scheduled Hours');
// return; // return;
// } // }
// if (this.bonusPercent === undefined || this.bonusPercent === 0) { // if (this.bonusPercent === undefined || this.bonusPercent === 0) {
// this.notificationService.showWarning('Please Select Bonus Percentage'); // this.notificationService.showWarning('Please Select Bonus Percentage');
// return; // return;
// } // }
debugger; debugger;
this._employee; this._employee;
this.prodBonusLine.prodBonusSupervisors; this.prodBonusLine.prodBonusSupervisors;
if (this.scheduledHours < 0 || this.bonusPercent < 0) { if (this.scheduledHours < 0 || this.bonusPercent < 0) {
this.notificationService.showWarning('Scheduled Hours and Bonus Percentage can\'t be negative'); this.notificationService.showWarning('Scheduled Hours and Bonus Percentage can\'t be negative');
return; return;
} }
// this.isNewLine = true; // this.isNewLine = true;
var newlineSupervisor: ProdBonusSupervisor = new ProdBonusSupervisor(); var newlineSupervisor: ProdBonusSupervisor = new ProdBonusSupervisor();
var newlineParameter: ProdBonusParameter = new ProdBonusParameter(); var newlineParameter: ProdBonusParameter = new ProdBonusParameter();
// var newLayoutWork: ProdBonusWorkSchedule = new ProdBonusWorkSchedule(); // var newLayoutWork: ProdBonusWorkSchedule = new ProdBonusWorkSchedule();
const index = this.prodBonusLine.prodBonusSupervisors.findIndex(sv=> sv.employeeID == this._employee.id); const index = this.prodBonusLine.prodBonusSupervisors.findIndex(sv => sv.employeeID == this._employee.id);
if (index !== -1) { if (index !== -1) {
this.prodBonusLine.prodBonusSupervisors.splice(index, 1); this.prodBonusLine.prodBonusSupervisors.splice(index, 1);
} }
@ -418,10 +445,10 @@ export class ProductionBonusSetupComponent implements OnInit {
newlineSupervisor.bonusPercent = this.bonusPercent; newlineSupervisor.bonusPercent = this.bonusPercent;
newlineSupervisor.prodBonusSetupID = this.productionBonusSetup.id; newlineSupervisor.prodBonusSetupID = this.productionBonusSetup.id;
if (this.isNewLine) { if (this.isNewLine) {
newlineParameter.itemID = this._departmentPicker.selectedID; newlineParameter.itemID = this._departmentPicker.selectedID;
newlineParameter.itemType = 0; newlineParameter.itemType = 0;
newlineParameter.prodBonusSetupID = this.productionBonusSetup.id; newlineParameter.prodBonusSetupID = this.productionBonusSetup.id;
// var department; // var department;
this.basicService.getDepartmentByID(this._departmentPicker.selectedID).subscribe( this.basicService.getDepartmentByID(this._departmentPicker.selectedID).subscribe(
@ -434,11 +461,12 @@ export class ProductionBonusSetupComponent implements OnInit {
() => { () => {
//newlineItem.amount //newlineItem.amount
this.prodBonusLine.prodBonusSupervisors.push(newlineSupervisor); this.prodBonusLine.prodBonusSupervisors.push(newlineSupervisor);
this.prodBonusLine.prodBonusParameters.push(newlineParameter);
//Commented For Test
// this.prodBonusLine.prodBonusParameters.push(newlineParameter);
this.prodBonusLine.scheduledHour = this.scheduledHours; this.prodBonusLine.scheduledHour = this.scheduledHours;
this.prodBonusLine.lineName = this.department.name; this.prodBonusLine.lineName = this.department.name;
// console.log(this.prodBonusLine);
this.clearProdbonusLine(); this.clearProdbonusLine();
// this.notificationService.showSuccess('Supervisor added to the line'); // this.notificationService.showSuccess('Supervisor added to the line');
} }
@ -456,17 +484,19 @@ export class ProductionBonusSetupComponent implements OnInit {
// this.prodBonusLine.prodBonusWorkSchedules.push(newLayoutWork); // this.prodBonusLine.prodBonusWorkSchedules.push(newLayoutWork);
// currentDate.setDate(currentDate.getDate() + 1); // currentDate.setDate(currentDate.getDate() + 1);
// } // }
for (let i = 0; currentDate <= this.productionBonusSetup.toDate; i++) {
let newLayoutWork: ProdBonusWorkSchedule = { // //Commented For Test
prodBonusSetupID: 0, // for (let i = 0; currentDate <= this.productionBonusSetup.toDate; i++) {
prodBonusLineID: 0, // let newLayoutWork: ProdBonusWorkSchedule = {
id: 0, // prodBonusSetupID: 0,
startDateTime: new Date(currentDate.setHours(0, 0, 0, 0)), // prodBonusLineID: 0,
endDateTime: new Date(currentDate.setHours(23, 59, 59, 999)) // id: 0,
}; // startDateTime: new Date(currentDate.setHours(0, 0, 0, 0)),
this.prodBonusLine.prodBonusWorkSchedules.push(newLayoutWork); // endDateTime: new Date(currentDate.setHours(23, 59, 59, 999))
currentDate.setDate(currentDate.getDate() + 1); // };
} // this.prodBonusLine.prodBonusWorkSchedules.push(newLayoutWork);
// currentDate.setDate(currentDate.getDate() + 1);
// }
} }
else { else {
debugger; debugger;
@ -478,12 +508,12 @@ export class ProductionBonusSetupComponent implements OnInit {
// this.prodBonusLine.prodBonusParameters.push(newlineParameter); // this.prodBonusLine.prodBonusParameters.push(newlineParameter);
// console.log(this.prodBonusLine); // console.log(this.prodBonusLine);
this.clearProdbonusLine(); this.clearProdbonusLine();
// this.notificationService.showSuccess('Supervisor added to the line'); // this.notificationService.showSuccess('Supervisor added to the line');
} }
} }
saveProductionBonusSetup(): void { saveProductionBonusSetup(): void {
this.productionBonusSetup.salaryMonth = this.selectedSalaryDate; this.productionBonusSetup.salaryMonth = this.selectedSalaryDate;
@ -498,7 +528,7 @@ export class ProductionBonusSetupComponent implements OnInit {
onClickOk() { onClickOk() {
debugger; debugger;
if (this.isNewLine) { if (this.isNewLine) {
if(this._departmentPicker.selectedID == undefined){ if (this._departmentPicker.selectedID == undefined) {
this.notificationService.showWarning('Please Select a Line'); return; this.notificationService.showWarning('Please Select a Line'); return;
} }
this.prodBonusLine.lineName = this._departmentPicker.selectedObjects[0]['name']; this.prodBonusLine.lineName = this._departmentPicker.selectedObjects[0]['name'];
@ -579,10 +609,38 @@ export class ProductionBonusSetupComponent implements OnInit {
this.editDetails = false; this.editDetails = false;
this.prodBSdata = undefined; this.prodBSdata = undefined;
} }
onScheduledHoursChange(value: number){ onScheduledHoursChange(value: number) {
debugger; debugger;
this.prodBonusLine.scheduledHour = value; this.prodBonusLine.scheduledHour = value;
this.scheduledHours; this.scheduledHours;
this.productionBonusSetup.productionBonusLines this.productionBonusSetup.productionBonusLines
} }
createWorkSchedule(data: any) {
debugger;
var newlineParameter: ProdBonusParameter = new ProdBonusParameter();
if (this.isNewLine){
newlineParameter.itemID = this._departmentPicker.selectedID;
newlineParameter.itemType = 0;
newlineParameter.prodBonusSetupID = this.productionBonusSetup.id;
this.prodBonusLine.prodBonusParameters.push(newlineParameter);
const currentDate = new Date(this.productionBonusSetup.fromDate);
const maxDate = new Date(this.productionBonusSetup.toDate);
maxDate.setDate(this.productionBonusSetup.toDate.getDate() + 1);
for (let i = 0; currentDate <= maxDate; i++) {
let newLayoutWork: ProdBonusWorkSchedule = {
prodBonusSetupID: 0,
prodBonusLineID: 0,
id: 0,
startDateTime: new Date(currentDate.setHours(0, 0, 0, 0)),
endDateTime: new Date(currentDate.setHours(23, 59, 59, 999))
};
this.prodBonusLine.prodBonusWorkSchedules.push(newLayoutWork);
currentDate.setDate(currentDate.getDate() + 1);
}
}
}
} }

View File

@ -22,6 +22,7 @@ using NPOI.SS.Formula.Eval;
using System.Globalization; using System.Globalization;
using Payroll.BO; using Payroll.BO;
using Ease.Core.Model; using Ease.Core.Model;
using Microsoft.AspNetCore.Mvc.ViewFeatures;
namespace HRM.UI.Controllers.Payroll namespace HRM.UI.Controllers.Payroll
{ {
@ -463,6 +464,7 @@ namespace HRM.UI.Controllers.Payroll
CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User);
ProductionBonusSetup item = new ProductionBonusSetup(); ProductionBonusSetup item = new ProductionBonusSetup();
//ProdBonusLine item = new ProdBonusLine(); //ProdBonusLine item = new ProdBonusLine();
List<Department> detps = new DepartmentService().Get(EnumStatus.Regardless, (int)currentUser.PayrollTypeID);
try try
{ {
item = _productionBonusSetupService.Get(ID); item = _productionBonusSetupService.Get(ID);
@ -474,7 +476,33 @@ namespace HRM.UI.Controllers.Payroll
foreach (ProdBonusSupervisor prodSupervisor in prodLine.ProdBonusSupervisors) foreach (ProdBonusSupervisor prodSupervisor in prodLine.ProdBonusSupervisors)
{ {
oEmp = new EmployeeService().Get(prodSupervisor.EmployeeID); oEmp = new EmployeeService().Get(prodSupervisor.EmployeeID);
if (oEmp.DepartmentID != null)
{
var dev = detps.FirstOrDefault(x => x.ID == oEmp.DepartmentID);
prodSupervisor.devName = dev.Name;
if(dev.ParentsID !=null)
{
var pr = detps.FirstOrDefault(x => x.ID == dev.ParentID);
if (pr != null)
{
prodSupervisor.devParentName = pr.Name;
if (pr.ParentsID != null)
{
var gpr = detps.FirstOrDefault(x => x.ID == pr.ParentID);
if (gpr != null)
{
prodSupervisor.devGrantParentName = gpr.Name;
}
}
}
}
}
prodSupervisor.EmpName = oEmp.Name; prodSupervisor.EmpName = oEmp.Name;
prodSupervisor.EmployeeNo = oEmp.EmployeeNo; prodSupervisor.EmployeeNo = oEmp.EmployeeNo;
@ -496,6 +524,25 @@ namespace HRM.UI.Controllers.Payroll
return StatusCode(StatusCodes.Status500InternalServerError, e.Message); return StatusCode(StatusCodes.Status500InternalServerError, e.Message);
} }
return Ok(item);
}
[HttpGet("GetschedulewithTime/{lineid}")]
public ActionResult GetschedulewithTime(int lineid)
{
CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User);
DataTable item =null;
try
{
item = new ProdBonusWorkScheduleService().GetschedulewithTime(lineid);
}
catch (Exception e)
{
return StatusCode(StatusCodes.Status500InternalServerError, e.Message);
}
return Ok(item); return Ok(item);
} }
@ -522,6 +569,7 @@ namespace HRM.UI.Controllers.Payroll
{ {
var item = Newtonsoft.Json.JsonConvert.DeserializeObject(Convert.ToString(processItems)); var item = Newtonsoft.Json.JsonConvert.DeserializeObject(Convert.ToString(processItems));
int setupID = (int)item["setupId"].ToObject<int>(); int setupID = (int)item["setupId"].ToObject<int>();
int lineID = (int)item["lineId"].ToObject<int>();
DateTime date = (DateTime)item["date"].ToObject<DateTime>(); DateTime date = (DateTime)item["date"].ToObject<DateTime>();
CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User); CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User);
@ -529,7 +577,7 @@ namespace HRM.UI.Controllers.Payroll
List<ProdBonusAttn> AttnItems = new List<ProdBonusAttn>(); List<ProdBonusAttn> AttnItems = new List<ProdBonusAttn>();
try try
{ {
AttnItems = _prodBonusAttnService.Get(setupID, date); AttnItems = _prodBonusAttnService.GetBySetupLineDate(setupID, lineID, date);
} }
catch (Exception e) catch (Exception e)
@ -609,6 +657,52 @@ namespace HRM.UI.Controllers.Payroll
return Ok(_oFinalEmployees); return Ok(_oFinalEmployees);
} }
[HttpPost]
[Route("getProdBonusAttnEmployeeListSwingAndPrinting")]
public ActionResult getProdBonusAttnEmployeeListSwingAndPrinting(dynamic pItem)
{
var item = Newtonsoft.Json.JsonConvert.DeserializeObject(Convert.ToString(pItem));
DateTime date = (DateTime)item["date"].ToObject<DateTime>();
ProdBonusLine _oProdBonusLine = (ProdBonusLine)item["prodLine"].ToObject<ProdBonusLine>();
CurrentUser currentUser = CurrentUser.GetCurrentUser(HttpContext.User);
List<Employee> _oEmployees = new EmployeeService().Get(EnumEmployeeStatus.Live, (int)currentUser.PayrollTypeID);
List<Employee> _oFinalEmployees = new List<Employee>();
List<ProdBonusParameter> _oProdBonusParameters = new List<ProdBonusParameter>();
List<ProdBonusSupervisor> _oProdBonusSupervisors = new List<ProdBonusSupervisor>();
List<DailyAttnProcess> _oDailyAttnProsess = new List<DailyAttnProcess>();
List<ProdBonusAttn> _oProdBonusAttns = null;
try
{
DateTime? maxDate = _prodBonusAttnService.GetMaxDate(_oProdBonusLine.ProdBonusSetupID, _oProdBonusLine.ID, date);
if(maxDate != null)
_oProdBonusAttns = _prodBonusAttnService.GetBySetupLineDate(_oProdBonusLine.ProdBonusSetupID, _oProdBonusLine.ID, (DateTime)maxDate);
List<ProdBonusParameter> desigparam = _oProdBonusParameters.Where(o => o.ItemType == EnumBonusItemType.Designation).ToList();
if(_oProdBonusAttns != null && _oProdBonusAttns.Count > 0)
{
foreach (var pda in _oProdBonusAttns)
{
Employee emp = _oEmployees.Find(o => o.ID == pda.EmployeeID);
if (emp != null) _oFinalEmployees.Add(emp);
}
}
string emIds = _oFinalEmployees.Aggregate(new StringBuilder(), (sb, x) => sb.Append(x.ID + ","), sb => sb.ToString().Trim(','));
if (emIds != "")
{
_oDailyAttnProsess = new DailyAttnProcessService().Get(emIds, date.Date, date.Date.AddHours(23.9));
}
}
catch (Exception e)
{
return StatusCode(StatusCodes.Status500InternalServerError, e.Message);
}
return Ok(_oFinalEmployees);
}
[HttpGet("getByLineID/{lineID}")] [HttpGet("getByLineID/{lineID}")]
public ActionResult getByLineID(int lineID) public ActionResult getByLineID(int lineID)
{ {