public bool insertPaie(Paie insertPaie, DateTime start, DateTime end, string idEmploye) { try { connexion = new MySqlConnexion(); /*{ System.Globalization.NumberFormatInfo nf = new System.Globalization.NumberFormatInfo() { NumberGroupSeparator = "." }; Brute = float.Parse(Brute, nf); Net = float.Parse(Net.ToString(), nf); HeureSupp = float.Parse(HeureSupp.ToString(), nf); temps = float.Parse(temps.ToString(), nf); }*/ StringBuilder sb = new StringBuilder(); sb.Append("INSERT INTO Paies (idEmploye, idPeriode, montantDueBrute, montantDueNet, nombreHeure,nombreHeureSupp) VALUES("); sb.Append("(SELECT idEmploye FROM Employes WHERE idEmploye ='"); sb.Append(idEmploye); sb.Append("'),(SELECT idPeriode FROM periodepaies WHERE dateDebut ='"); sb.Append(start); sb.Append("' AND dateFin = '"); sb.Append(end); sb.Append("'),"); sb.Append(insertPaie.MontantBrute.ToString().Replace(",", ".")); sb.Append(","); sb.Append(insertPaie.MontantNet.ToString().Replace(",", ".")); sb.Append(","); sb.Append(insertPaie.NombreHeure.ToString().Replace(",", ".")); sb.Append(","); sb.Append(insertPaie.NombreHeureSupp.ToString().Replace(",", ".")); sb.Append(")"); /* string requete = "INSERT INTO Paies (idEmploye, idPeriode, montantDueBrute, montantDueNet, nombreHeure,nombreHeureSupp) VALUES(" +"(SELECT idEmploye FROM Employes WHERE idEmploye ='" + idEmploye + "')," +"(SELECT idPeriode FROM periodepaies WHERE dateDebut = '"+start+"' AND dateFin = '"+end+"')," +""+insertPaie.MontantBrute+","+insertPaie.MontantNet+","+insertPaie.NombreHeure+","+insertPaie.NombreHeureSupp+"" +")";*/ connexion.Query(sb.ToString()); return true; } catch (MySqlException) { return false; } }
public DetailPaieView(IDictionary<string,object> parametre) : this() { _Paie = parametre["paie"] as Paie; }
// Fin de la classe de test. public void GenererPaies() { MySqlPaieService _service = new MySqlPaieService(); DataTable Periode; float temps; try { // Aller chercher tous les employés MySqlEmployeService _emService = new MySqlEmployeService(); IList<Employe> emp = _emService.RetrieveAll(); Periode = _service.PeriodeTemps(); if (Periode.Rows.Count == 0) { throw new Exception("Toutes les périodes de paies ont déjà été générer. Allez en rentré de nouvelle pour la nouvelle année."); } else { DateTime start = (DateTime)Periode.Rows[0][0], end = (DateTime)Periode.Rows[0][1]; DateTime date = DateTime.Now; PeriodePaie tmpTime = new PeriodePaie(date, date); if(tmpTime.Fin < end) { throw new Exception("La période que vous essayez de générer est en cours."); } float HeureSupp = 0; int compteurTemps = 0; int totalEmp = emp.Count; // Pour chaque employé aller chercher leur temps. foreach (Employe em in emp) { { temps = _service.RetrieveCompteurs(em.ID, start, end); // Vérification dans le cas ou personne n'aurais travailler dans cette période. if(temps == 0) { compteurTemps++; if(compteurTemps == totalEmp) { StringBuilder mess = new StringBuilder(); mess.Append("Aucune employé à travail durant la période. Cette période à été noté comme généré: "); mess.Append(start.ToString()); mess.Append(end.ToString()); if (!(_service.periodeGenere(start, end))) { throw new Exception("Problème avec l'état des périodes de paie, vérifier que votre période courrante est cohérente."); } throw new Exception(mess.ToString()); } } else { if (temps > supp) { HeureSupp = temps - supp; temps = temps - supp; } float Brute = ((float)em.Salaire * temps) + ((float)em.SalaireOver * HeureSupp); TimeSpan t = end - start; Double days = t.TotalDays; days = 365/(days+1); double EstimatedAnnualSalary = days * Brute; float Net = 0; Net = Brute * (1 - tauxCombineQC_CA((double)(days * Brute))); Paie tmpPaie = new Paie() { MontantBrute = Brute, MontantNet = Net, NombreHeure = temps, NombreHeureSupp = HeureSupp }; if (!(_service.periodeGenere(start, end))) { throw new Exception("Problème avec l'état des périodes de paie, vérifier que votre période courrante est cohérente."); } // Appel de la fonction de génération de paie. if (!(_service.insertPaie(tmpPaie, start, end, em.ID))) { throw new Exception("Impossible de générer la paie de " + em.Prenom + " , " + em.Nom + " correctements vérifier les dates de vos périodes de paies."); } } } } // change la période paye à terminé. throw new Exception("Réussite de la génération des paies pour la période de :" + (start.Date).ToString("d") + " au " + (end.Date).ToString("d")); } } catch (Exception e) { throw e; } }
public void generateSlipePay(Paie p) { #region headerPDF int PDF_WIDTH = 250; int PDF_MARGIN_LEFT=20; int NEXT_MARGIN_TOP = 60; PdfDocument pdf = new PdfDocument(); pdf.Info.Title = p.Nom + "_Paie"; PdfPage page; page = pdf.AddPage(); page.Orientation = PageOrientation.Portrait; page.Size = PageSize.A4; XGraphics graph = XGraphics.FromPdfPage(page); List<LiaisonProjetEmploye> Liaison = new List<LiaisonProjetEmploye>(); MySqlEmployeService _ServiceMysql = new MySqlEmployeService(); XFont font = new XFont("Consolas", 10.0); //new XFont("Verdana", 20, XFontStyle.Bold); var formatter = new XTextFormatter(graph); XPen penn = new XPen(XColors.Black, 1); penn.DashStyle = XDashStyle.Dash; graph.DrawLine(penn, 0, 3, page.Height, 3); graph.DrawRectangle(new XSolidBrush(XColor.FromArgb(95,95,95)), new XRect(0, 3, page.Height, 30)); var layoutRectangle = new XRect(5, 12.5, page.Width, page.Height); formatter.DrawString("GEM-C Rapport de paie de : " + (p.Nom), font, XBrushes.White, layoutRectangle); layoutRectangle = new XRect(300, 12.5, page.Width, page.Height); formatter.DrawString(("Talon pour la période du : " + p.Periode), font, XBrushes.White, layoutRectangle); graph.DrawLine(penn, 0, 33, 800, 33); graph.DrawRectangle(new XSolidBrush(XColor.FromArgb(255, 243, 229)), new XRect(0, 34, page.Height, 255)); layoutRectangle = new XRect(PDF_MARGIN_LEFT, 40, page.Width, page.Height); formatter.DrawString("Calcul du salaire :", font, XBrushes.Black, layoutRectangle); graph.DrawLine(penn, PDF_MARGIN_LEFT, 55, 150, 55); #endregion if(p.MontantCommission != 0) { drawPDF(PDF_WIDTH, NEXT_MARGIN_TOP, PDF_MARGIN_LEFT, page, font,layoutRectangle, formatter,"Montant commission : ", Math.Round(p.MontantCommission,2).ToString()); NEXT_MARGIN_TOP+=10; } if (p.MontantIndemnite != 0) { drawPDF(PDF_WIDTH, NEXT_MARGIN_TOP, PDF_MARGIN_LEFT, page, font, layoutRectangle, formatter, "Montant indemnite : ", Math.Round(p.MontantIndemnite,2).ToString()); NEXT_MARGIN_TOP += 10; } if (p.MontantPourboire != 0) { drawPDF(PDF_WIDTH, NEXT_MARGIN_TOP, PDF_MARGIN_LEFT, page, font, layoutRectangle, formatter, "Montant pourboire : ", Math.Round(p.MontantPourboire,2).ToString()); NEXT_MARGIN_TOP += 10; } if (p.MontantPrime != 0) { drawPDF(PDF_WIDTH, NEXT_MARGIN_TOP, PDF_MARGIN_LEFT, page, font, layoutRectangle, formatter, "Montant prime : ", Math.Round(p.MontantPrime,2).ToString()); NEXT_MARGIN_TOP += 10; } if (p.MontantAllocations != 0) { drawPDF(PDF_WIDTH, NEXT_MARGIN_TOP, PDF_MARGIN_LEFT, page, font, layoutRectangle, formatter, "Montant allocations : ", Math.Round(p.MontantAllocations, 2).ToString()); NEXT_MARGIN_TOP += 10; } double lesmontants = Math.Round((p.MontantAllocations + p.MontantCommission + p.MontantIndemnite + p.MontantPourboire + p.MontantPrime), 2); if (lesmontants != 0) { drawPDF(PDF_WIDTH, NEXT_MARGIN_TOP, PDF_MARGIN_LEFT, page, font, layoutRectangle, formatter, "", "--------------", ""); NEXT_MARGIN_TOP += 10; drawPDF(PDF_WIDTH, NEXT_MARGIN_TOP, PDF_MARGIN_LEFT, page, font, layoutRectangle, formatter, "Total des montants : ", lesmontants.ToString()); NEXT_MARGIN_TOP += 30; } // ce qui nou intéresse commence drawPDF(PDF_WIDTH, NEXT_MARGIN_TOP, PDF_MARGIN_LEFT, page, font, layoutRectangle, formatter, "Heure regulier : ", Math.Round(p.NombreHeure, 2).ToString(), " hr(s)"); NEXT_MARGIN_TOP += 10; drawPDF(PDF_WIDTH, NEXT_MARGIN_TOP, PDF_MARGIN_LEFT, page, font, layoutRectangle, formatter, "Heure suplémentaire : ", Math.Round(p.NombreHeureSupp, 2).ToString(), " hr(s)"); NEXT_MARGIN_TOP += 10; drawPDF(PDF_WIDTH, NEXT_MARGIN_TOP, PDF_MARGIN_LEFT, page, font, layoutRectangle, formatter, ("Taux rég : " + p.salaire.ToString() + "$ "), Math.Round((p.NombreHeureSupp*(Convert.ToDouble(p.salaire))),2).ToString()); NEXT_MARGIN_TOP+=10; supp : drawPDF(PDF_WIDTH, NEXT_MARGIN_TOP, PDF_MARGIN_LEFT, page, font, layoutRectangle, formatter, "Taux supp : " + Math.Round((Convert.ToDouble(p.salaire) * 1.5), 4).ToString() + " $", Math.Round((p.MontantBrute - lesmontants) - (p.NombreHeure * Convert.ToDouble(p.salaire)), 2).ToString()); NEXT_MARGIN_TOP += 10; drawPDF(PDF_WIDTH, NEXT_MARGIN_TOP, PDF_MARGIN_LEFT, page, font, layoutRectangle, formatter, "", "--------------", ""); NEXT_MARGIN_TOP += 10; drawPDF(PDF_WIDTH, NEXT_MARGIN_TOP, PDF_MARGIN_LEFT, page, font, layoutRectangle, formatter, "Montant brute total : ", Math.Round((p.MontantBrute), 2).ToString()); NEXT_MARGIN_TOP += 10; drawPDF(PDF_WIDTH, NEXT_MARGIN_TOP, PDF_MARGIN_LEFT, page, font, layoutRectangle, formatter, "", "--------------", ""); NEXT_MARGIN_TOP += 10; drawPDF(PDF_WIDTH, NEXT_MARGIN_TOP, PDF_MARGIN_LEFT, page, font, layoutRectangle, formatter, "Montant impôt combiné (Féd. et prov.): ", "-" + (Math.Round(p.MontantBrute, 2) - Math.Round(p.MontantNet, 2)).ToString()); NEXT_MARGIN_TOP += 20; graph.DrawRectangle(XPens.Black, XBrushes.LightSeaGreen, 5, NEXT_MARGIN_TOP-2.5, page.Width-10, page.Height-825); drawPDF(PDF_WIDTH, NEXT_MARGIN_TOP, PDF_MARGIN_LEFT, page, font, layoutRectangle, formatter, "Montant Net du : ", Math.Round(p.MontantNet, 2).ToString()); graph.DrawLine(XPens.Black, 0, 280, 800, 280); #region outputPDF StringBuilder b = new StringBuilder(); b.Append("talon_"); b.Append(p.Nom.ToString()); b.Append("_"); b.Append(String.Format("{0:M/d/yyyy}", Convert.ToDateTime(p.DateGenerationRapport))); b.Append(".pdf"); string pdfFilename = b.ToString().Replace(" ", "_"); pdf.Save(pdfFilename); Process.Start(pdfFilename); #endregion }
private void CorpsAtomiqueD(ref PdfPage page, ref XTextFormatter formatter, ref XFont font, XRect layoutRectangle, ref int height, Paie paie, int tB, int tHS, int tP, int tI) { layoutRectangle = new XRect(25, height += 15, page.Width, page.Height); formatter.DrawString(String.Format("{0:yyyy-MM-dd}", Convert.ToDateTime(paie.DateGenerationRapport)), font, XBrushes.Black, layoutRectangle); layoutRectangle = new XRect(116, height, page.Width, page.Height); formatter.DrawString(paie.Nom.Substring(0, 1).ToString() + "." + paie.Nom.Substring(paie.Nom.IndexOf(' ')).ToString(), font, XBrushes.Black, layoutRectangle); layoutRectangle = new XRect(310, height, page.Width, page.Height); formatter.DrawString(paie.ID.ToString(), font, XBrushes.Black, layoutRectangle); layoutRectangle = new XRect(362, height, page.Width, page.Height); formatter.DrawString(String.Format("{0,"+tB+"}",Math.Round(Convert.ToSingle(paie.MontantBrute), 2)) + "$", font, XBrushes.Black, layoutRectangle); layoutRectangle = new XRect(447, height, page.Width, page.Height); formatter.DrawString(String.Format("{0,"+tHS+"}",Math.Round(Convert.ToSingle(paie.NombreHeureSupp), 2).ToString()), font, XBrushes.Black, layoutRectangle); layoutRectangle = new XRect(530, height, page.Width, page.Height); formatter.DrawString(String.Format("{0,"+tP+"}",Math.Round(Convert.ToSingle(paie.MontantPourboire), 2).ToString()) + "$", font, XBrushes.Black, layoutRectangle); layoutRectangle = new XRect(613, height, page.Width, page.Height); formatter.DrawString(String.Format("{0,"+tI+"}",Math.Round(Convert.ToSingle(paie.MontantIndemnite), 2).ToString()) + "$", font, XBrushes.Black, layoutRectangle); layoutRectangle = new XRect(676, height, page.Width, page.Height); formatter.DrawString(Math.Round(Convert.ToSingle(paie.salaire), 2).ToString() + "$/h", font, XBrushes.Black, layoutRectangle); layoutRectangle = new XRect(759, height, page.Width, page.Height); formatter.DrawString(Math.Round(Convert.ToSingle(paie.NombreHeure), 2).ToString(), font, XBrushes.Black, layoutRectangle); }
private void CorpsAtomique(ref PdfPage page, ref XTextFormatter formatter, ref XFont font, XRect layoutRectangle, ref int height, Paie paie, int tB) { layoutRectangle = new XRect(30, height += 15, page.Width, page.Height); formatter.DrawString(String.Format("{0:yyyy-MM-dd}", Convert.ToDateTime(paie.DateGenerationRapport)), font, XBrushes.Black, layoutRectangle); layoutRectangle = new XRect(136, height, page.Width, page.Height); formatter.DrawString(paie.Nom.Substring(0, 1).ToString() + "." + paie.Nom.Substring(paie.Nom.IndexOf(' ')).ToString(), font, XBrushes.Black, layoutRectangle); layoutRectangle = new XRect(380, height, page.Width, page.Height); formatter.DrawString(paie.ID.ToString(), font, XBrushes.Black, layoutRectangle); layoutRectangle = new XRect(470, height, page.Width, page.Height); formatter.DrawString(String.Format("{0,"+tB+"}",Math.Round(Convert.ToSingle(paie.MontantBrute), 2)) + " $", font, XBrushes.Black, layoutRectangle); }
public bool updatePay(Paie updatePaie) { try { connexion = new MySqlConnexion(); /* * montantDueBrute, montantDueNet, nombreHeure, * nombreHeureSupp, montantPrime, montantIndemnites, * montantAllocations, montantCommissions, montantPourboire */ StringBuilder req = new StringBuilder(); req.Append("UPDATE Paies SET "); req.Append(" montantDueBrute='"); req.Append(updatePaie.MontantBrute.ToString().Replace(",",".")); req.Append("', montantDueNet='"); req.Append(updatePaie.MontantNet.ToString().Replace(",", ".")); req.Append("', nombreHeure='"); req.Append(updatePaie.NombreHeure.ToString().Replace(",", ".")); req.Append("', nombreHeureSupp='"); req.Append(updatePaie.NombreHeureSupp.ToString().Replace(",", ".")); req.Append("', montantPrime='"); req.Append(updatePaie.MontantPrime.ToString().Replace(",", ".")); req.Append("', montantIndemnites='"); req.Append(updatePaie.MontantIndemnite.ToString().Replace(",", ".")); req.Append("', montantAllocations='"); req.Append(updatePaie.MontantAllocations.ToString().Replace(",", ".")); req.Append("', montantCommissions='"); req.Append(updatePaie.MontantCommission.ToString().Replace(",", ".")); req.Append("', montantPourboire='"); req.Append(updatePaie.MontantPourboire.ToString().Replace(",", ".")); req.Append("', updatedetail=NOW() "); req.Append(" WHERE idPaies='"); req.Append(updatePaie.ID.ToString()); req.Append("' "); connexion.Query(req.ToString()); return true; } catch (MySqlException) { return false; } }