示例#1
0
        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)));
            }
        }
示例#2
0
        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;
        }
示例#3
0
 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
     });
 }
示例#4
0
        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);
        }
示例#5
0
        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);
        }