public void AddTeacherPayrollRecord(object t) { var teacher = t as Teacher; var record = new PayrollRecord { Teacher = teacher, HoursCount = 0, Rate = teacher.Rate, Payroll = _payroll, Retenu = 0.15 }; if (_payroll.Records == null) { _payroll.Records = new List <PayrollRecord>(); } _payroll.Records.Add(record); if (_payroll.Records.FirstOrDefault(r => r.TeacherId == teacher.Id) == null) { context.PayrollRecords.Add(record); context.SaveChanges(); } if (teacher.Status == TeacherStatus.Permanent) { return; } if (_payrollRecords == null) { _payrollRecords = new ObservableCollection <PayrollRecordViewModel>(); } _payrollRecords.Add(PayrollRecordViewModel.FromPayrollRecord(record)); if (PropertyChanged != null) { PropertyChanged.Invoke(this, new PropertyChangedEventArgs(nameof(PayrollRecords))); } }
public void CreatePayroll(int month, string year) { MonthlyPayroll payroll; var payrollRecords = context.PayrollRecords .Where(p => p.Payroll.Month == month && p.Payroll.AcademicYear == year && p.Teacher.Status == TeacherStatus.Vacataire) .Include(p => p.Payroll) .ToList(); if (payrollRecords != null && payrollRecords.Count > 0) { payroll = payrollRecords[0].Payroll; } else { payroll = context.MonthlyPayrolls .Where(p => p.Month == month && p.AcademicYear == year) .FirstOrDefault(); if (payroll == null) { payroll = new MonthlyPayroll { Month = month, AcademicYear = year }; payroll.Records = new List <PayrollRecord>(); context.MonthlyPayrolls.Add(payroll); } } //var payroll = context.MonthlyPayrolls // .Where(p => p.Month == month && p.AcademicYear == year) // .Include(p => p.Records) // .ThenInclude(r => (r as PayrollRecord).Teacher) // .FirstOrDefault(); foreach (var teacher in context.Teachers.Where(t => t.Status == TeacherStatus.Vacataire).ToList()) { var record = context.PayrollRecords.FirstOrDefault(pr => pr.TeacherId == teacher.Id && pr.PayrollId == payroll.Id); if (record == null) { record = new PayrollRecord { Teacher = teacher, HoursCount = 0, Rate = teacher.Rate, Payroll = _payroll, Retenu = 0.15 }; context.PayrollRecords.Add(record); } payroll.Records.Add(record); } _payroll = payroll; }
public static PayrollRecordViewModel FromPayrollRecord(PayrollRecord record) { return(new PayrollRecordViewModel { Id = record.Id, Teacher = record.Teacher, Payroll = record.Payroll, Rate = record.Rate, HoursCount = record.HoursCount, Retenu = record.Retenu, Record = record }); }
public List <PayrollRecord> CreateMissingPayrollRecords(MonthlyPayroll payroll) { var records = new List <PayrollRecord>(); foreach (var teacher in context.Teachers.Where(t => t.Status == TeacherStatus.Vacataire).ToList()) { var record = new PayrollRecord { Teacher = teacher, HoursCount = 0, Rate = teacher.Rate, Payroll = _payroll, Retenu = 0.15 }; if (!payroll.Records.Select(prVM => prVM.Teacher.Id).Contains(teacher.Id)) { records.Add(record); context.PayrollRecords.Add(record); } } return(records); }
public void Generate(Teacher teacher, Payslip payslip, PayrollRecord payrollRecord, string filename) { var months = new string[] { "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre" }; var template = PdfReader.Open("fiche_paie.pdf"); var page = template.Pages[0]; // Get an XGraphics object for drawing XGraphics gfx = XGraphics.FromPdfPage(page); // Create a font XFont titleFont = new XFont("Calibri", 20, XFontStyle.Bold); XFont normalFont = new XFont("Calibri", 12); // Draw the text //gfx.DrawString("FICHE DE PAIE", titleFont, XBrushes.Black, // new XRect(0, 0, page.Width, page.Height), // XStringFormats.TopCenter); // Draw teacher info box //var teacherInfoRect = new XRect(50, 50, 150, 100); //XPen pen = new XPen(XColors.Black, 1); //gfx.DrawRectangle(pen, teacherInfoRect); // Draw Teacher info gfx.DrawString(teacher.Id.ToString(), normalFont, XBrushes.Black, new XPoint(130, 114), XStringFormats.TopLeft); gfx.DrawString(teacher.CIN, normalFont, XBrushes.Black, new XPoint(130, 129), XStringFormats.TopLeft); gfx.DrawString(teacher.FullName, normalFont, XBrushes.Black, new XPoint(130, 144), XStringFormats.TopLeft); gfx.DrawString(teacher.Grade.ToString(), normalFont, XBrushes.Black, new XPoint(130, 158), XStringFormats.TopLeft); gfx.DrawString(teacher.Status.ToString(), normalFont, XBrushes.Black, new XPoint(130, 172), XStringFormats.TopLeft); gfx.DrawString(teacher.Speciality, normalFont, XBrushes.Black, new XPoint(130, 188), XStringFormats.TopLeft); // Draw Payment info gfx.DrawString(months[payslip.Payment.PaymentDate.Month - 1] + " " + payslip.Payment.PaymentDate.Year, normalFont, XBrushes.Black, new XPoint(382, 114), XStringFormats.TopLeft); gfx.DrawString(payslip.Payment.PaymentDate.ToString(), normalFont, XBrushes.Black, new XPoint(382, 129), XStringFormats.TopLeft); gfx.DrawString(payslip.Payment.PaymentType.ToString(), normalFont, XBrushes.Black, new XPoint(382, 144), XStringFormats.TopLeft); gfx.DrawString(payslip.Payment.Bank ?? "", normalFont, XBrushes.Black, new XPoint(382, 158), XStringFormats.TopLeft); if (payslip.Payment.PaymentType == PaymentType.BankTransfer) { gfx.DrawString(payslip.Payment.Reference, normalFont, XBrushes.Black, new XPoint(382, 172), XStringFormats.TopLeft); } else if (payslip.Payment.PaymentType == PaymentType.Check) { gfx.DrawString(payslip.Payment.Reference, normalFont, XBrushes.Black, new XPoint(382, 188), XStringFormats.TopLeft); } // Draw payroll info gfx.DrawString(payrollRecord.HoursCount.ToString(), normalFont, XBrushes.Black, new XPoint(36, 238), XStringFormats.TopLeft); gfx.DrawString(formatMoney(payrollRecord.Rate), normalFont, XBrushes.Black, new XPoint(135, 238), XStringFormats.TopLeft);; gfx.DrawString(formatMoney(payrollRecord.GrossPay), normalFont, XBrushes.Black, new XPoint(245, 238), XStringFormats.TopLeft); gfx.DrawString("15%", normalFont, XBrushes.Black, new XPoint(350, 238), XStringFormats.TopLeft); gfx.DrawString(formatMoney(payrollRecord.Net), normalFont, XBrushes.Black, new XPoint(447, 238), XStringFormats.TopLeft); // Draw total gfx.DrawString(formatMoney(payrollRecord.Net), normalFont, XBrushes.Black, new XPoint(447, 636), XStringFormats.TopLeft); // Save the document... // const string filename = "HelloWorld.pdf"; template.Save(filename); Process.Start(new ProcessStartInfo(/*Directory.GetCurrentDirectory() + "\\" +*/ filename) { UseShellExecute = true }); // ...and start a viewer. //Process.Start(filename); }