public static bool Afiseaza(Form pEcranPariente, BClientiFacturi pFactura) { return(Afiseaza(pEcranPariente, pFactura.GetClient(null), pFactura.GetListaLucrari(null), pFactura)); }
static private bool Deseneaza(Graphics g, int pPrinterResolution, bool pPentruEmail) { try { g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality; g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias; } catch (Exception) { } int mulRezolutie = pPrinterResolution;// 1;// e.PageSettings.PrinterResolution.X; int multiplu = mulRezolutie / 96; int spatiuComfort = 0; if (multiplu <= 0) { mulRezolutie = 1; multiplu = 1; } int latimePagina = lLatimePagina * multiplu; int inaltimePagina = lInaltimePagina * multiplu; int margineStanga = lMargineStanga * multiplu; int margineDreapta = lMargineDreapta * multiplu; int margineSus = lMargineSus * multiplu; int margineJos = lMargineJos * multiplu; int latime = latimePagina - (margineStanga + margineDreapta); int inaltime = inaltimePagina - (margineSus + margineJos); int x = margineStanga + 5 * multiplu; int y = margineSus; bool morePages = false; Font fontText = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); Font fontIngrosat = new System.Drawing.Font("Microsoft Sans Serif", 14F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); int distantaLinii = 1 * multiplu; int distantaGrupuri = 5 * multiplu; spatiuComfort = Convert.ToInt32(g.MeasureString("H", fontText).Height); //Capul tabelului string nrCrt = "#"; string dataPrimire = BMultiLingv.getElementById(BMultiLingv.EnumDictionar.Data); string pacient = BMultiLingv.getElementById(BMultiLingv.EnumDictionar.Pacient); string lucrare = BMultiLingv.getElementById(BMultiLingv.EnumDictionar.Lucrare); string nrElem = BMultiLingv.getElementById(BMultiLingv.EnumDictionar.NrElem); string pret = BMultiLingv.getElementById(BMultiLingv.EnumDictionar.Pret); int wNrCrt = Convert.ToInt32(Math.Ceiling(Math.Max(g.MeasureString("999", fontText, latime).Width, g.MeasureString(nrCrt, fontText, latime).Width))); int wDataPrimire = Convert.ToInt32(Math.Ceiling(g.MeasureString("13.02.1983 13", fontText, latime).Width)); int wPret = Convert.ToInt32(Math.Ceiling(g.MeasureString("999.999,00", fontText, latime).Width)); int wNrElem = Convert.ToInt32(Math.Ceiling(g.MeasureString(nrElem, fontText, latime).Width)); int wPacient = Convert.ToInt32(Math.Ceiling(g.MeasureString("BOTOROGEANU Ionut Richard", fontText, latime).Width)); int wLucrare = latime - (wNrCrt + wDataPrimire + wPret + wNrElem + wPacient); int xNrCrt = x; int xDataPrimire = x + wNrCrt + 1; int xPacient = xDataPrimire + wDataPrimire + 1; int xLucrare = xPacient + wPacient + 1; int xNrElem = xLucrare + wLucrare + 1; int xPret = xNrElem + wNrElem + 1; bool listaCompletDesenata = true; using (Brush pensulaPrescriptie = new SolidBrush(Color.Black)) { int wLatimeParti = (latime - (margineStanga + lMargineDreapta)) / 2 - 65 * multiplu; //if (!this.lHeaderDesenat) //{ // //Desenam logo // try // { // float wDisponibil = (this.lLatimePagina - this.lMargineDreapta) - this.lMargineStanga; // using (Image lImagineLogo = getLogoSediu()) // { // if (lImagineLogo != null) // { // RectangleF dreptunghiLogo = new RectangleF(this.lMargineStanga, y, wDisponibil, lImagineLogo.Height * wDisponibil / lImagineLogo.Width); // g.DrawImage(lImagineLogo, dreptunghiLogo); // y += Convert.ToInt32(dreptunghiLogo.Height) + spatiuComfort; //lasam un spatiu intre logo si continut // } // } // } // catch (Exception) // { // //Nu este tragedie daca nu se deseneaza logo-ul // } //} //In stanga sus desenam unitatea g.DrawString(lLocatieFiscala.DenumireFiscala, fontText, pensulaPrescriptie, x, y); string textTemp = string.Empty; SizeF marimeTemp = SizeF.Empty; //In dreapta sus numele clientului textTemp = lFactura.GetClient(null).GetDenumireFiscala(); //string.Format("{0}: {1} {2}: {3} {4}: {5}", BMultiLingv.getElementById(BMultiLingv.EnumDictionar.zi).ToUpper(), lFactura.DataFactura.Day, BMultiLingv.getElementById(BMultiLingv.EnumDictionar.Luna).ToUpper(), lFactura.DataFactura.Month, BMultiLingv.getElementById(BMultiLingv.EnumDictionar.An).ToUpper(), lFactura.DataFactura.Year); marimeTemp = g.MeasureString(textTemp, fontIngrosat, latime); CCL.UI.IHMUtile.ScrieInDreapta(g, pensulaPrescriptie, new RectangleF(x, y, latime, marimeTemp.Height), textTemp, fontText); y += spatiuComfort; if (!lHeaderDesenat) { //Titlul if (lFactura.EsteFiscalizata()) { textTemp = BMultiLingv.getElementById(BMultiLingv.EnumDictionar.Factura).ToUpper(); } else { textTemp = BMultiLingv.getElementById(BMultiLingv.EnumDictionar.Proforma).ToUpper(); } marimeTemp = g.MeasureString(textTemp, fontIngrosat, latime); CCL.UI.IHMUtile.ScrieInCentru(g, pensulaPrescriptie, new RectangleF(x, y, latime, marimeTemp.Height), textTemp, fontIngrosat); y += Convert.ToInt32(marimeTemp.Height); //Data if (lFactura.EsteFiscalizata()) { textTemp = string.Format("{0} {1}/{2}", lFactura.SerieFactura, lFactura.NumarFactura, lFactura.DataFactura.ToString(CConstante.FORMAT_DATA)); } else { textTemp = lFactura.DataFactura.ToString(CConstante.FORMAT_DATA); } marimeTemp = g.MeasureString(textTemp, fontText, latime); CCL.UI.IHMUtile.ScrieInCentru(g, pensulaPrescriptie, new RectangleF(x, y, latime, marimeTemp.Height), textTemp, fontText); y += Convert.ToInt32(marimeTemp.Height) + spatiuComfort / 2; lHeaderDesenat = true; } else { y += spatiuComfort / 2; } //Trasam tabelul g.DrawLine(Pens.Black, x, y, x + latime, y); int yInceputTabel = y; y += spatiuComfort / 3; //Desenam antetul //Nr crt int hMax = 0; SizeF marimeNecesaraAntet = g.MeasureString(nrCrt, fontText, wNrCrt); CCL.UI.IHMUtile.ScrieInCentru(g, pensulaPrescriptie, new RectangleF(xNrCrt, y, wNrCrt, marimeNecesaraAntet.Height), nrCrt, fontText); if (hMax < marimeNecesaraAntet.Height) { hMax = Convert.ToInt32(Math.Ceiling(marimeNecesaraAntet.Height)); } //Data primire marimeNecesaraAntet = g.MeasureString(dataPrimire, fontText, wDataPrimire); g.DrawString(dataPrimire, fontText, pensulaPrescriptie, new RectangleF(xDataPrimire, y, marimeNecesaraAntet.Width, marimeNecesaraAntet.Height)); if (hMax < marimeNecesaraAntet.Height) { hMax = Convert.ToInt32(Math.Ceiling(marimeNecesaraAntet.Height)); } //Pacient marimeNecesaraAntet = g.MeasureString(pacient, fontText, wPacient); g.DrawString(pacient, fontText, pensulaPrescriptie, new RectangleF(xPacient, y, marimeNecesaraAntet.Width, marimeNecesaraAntet.Height)); if (hMax < marimeNecesaraAntet.Height) { hMax = Convert.ToInt32(Math.Ceiling(marimeNecesaraAntet.Height)); } //Lucrare marimeNecesaraAntet = g.MeasureString(lucrare, fontText, wLucrare); g.DrawString(lucrare, fontText, pensulaPrescriptie, new RectangleF(xLucrare, y, marimeNecesaraAntet.Width, marimeNecesaraAntet.Height)); if (hMax < marimeNecesaraAntet.Height) { hMax = Convert.ToInt32(Math.Ceiling(marimeNecesaraAntet.Height)); } //Nr Elem marimeNecesaraAntet = g.MeasureString(nrElem, fontText, wNrElem); CCL.UI.IHMUtile.ScrieInDreapta(g, pensulaPrescriptie, new RectangleF(xNrElem, y, wNrElem, marimeTemp.Height), nrElem, fontText); if (hMax < marimeNecesaraAntet.Height) { hMax = Convert.ToInt32(Math.Ceiling(marimeNecesaraAntet.Height)); } //Pret marimeNecesaraAntet = g.MeasureString(pret, fontText, wPret); CCL.UI.IHMUtile.ScrieInDreapta(g, pensulaPrescriptie, new RectangleF(xPret, y, wPret, marimeTemp.Height), pret, fontText); if (hMax < marimeNecesaraAntet.Height) { hMax = Convert.ToInt32(Math.Ceiling(marimeNecesaraAntet.Height)); } y += hMax + spatiuComfort / 3; //Aici se termina antetul g.DrawLine(Pens.Black, x, y, x + latime, y); y += spatiuComfort / 3; ////De aici incepem desenarea liniilor //g.DrawLine(Pens.Black, x, y, x + latime, y); int indexActual = indexInterventieDesenata; BClientiComenzi interventie = null; int inaltimeNecesaraFooter = Convert.ToInt32(2 * g.MeasureString("TOTAL", fontText).Height); int hNecesar = 0; string nrCrtTemp = string.Empty; string dataPrimireTemp = string.Empty; string pacientTemp = string.Empty; string lucrareTemp = string.Empty; string nrElemTemp = string.Empty; string pretTemp = string.Empty; if (indexActual > 0) { indexActual += 1; } for (int i = indexActual; i < lLiniiRegistru.Count; i++) { interventie = lLiniiRegistru[i]; nrCrtTemp = (i + 1).ToString(); dataPrimireTemp = interventie.DataPrimire.ToString(CConstante.FORMAT_DATA); pacientTemp = interventie.GetNumePrenumePacient(); lucrareTemp = interventie.DenumireLucrare; nrElemTemp = Convert.ToString(interventie.NrElemente); pretTemp = Convert.ToString(interventie.GetValoareMoneda(lFactura.MonedaFactura, lFactura.CursBNR)); hNecesar = getInaltimeNecesaraRandFactura(g, interventie, fontText, wNrCrt, wDataPrimire, wPacient, wLucrare, wNrElem, wPret, xNrCrt, xDataPrimire, xPacient, xLucrare, xNrElem, xPret, nrCrtTemp, dataPrimireTemp, pacientTemp, lucrareTemp, nrElemTemp, pretTemp); if (3 * hNecesar + y > inaltime) { listaCompletDesenata = false; morePages = true; break; } //Desenam linia deseneazaLinieFactura(g, interventie, fontText, pensulaPrescriptie, y, wNrCrt, wDataPrimire, wPacient, wLucrare, wNrElem, wPret, xNrCrt, xDataPrimire, xPacient, xLucrare, xNrElem, xPret, nrCrtTemp, dataPrimireTemp, pacientTemp, lucrareTemp, nrElemTemp, pretTemp); y += hNecesar; indexInterventieDesenata = i; } y += spatiuComfort / 2; //Am terminat interventiile pe pagina sau toate g.DrawLine(Pens.Black, x, y, x + latime, y); y += spatiuComfort / 2; if (listaCompletDesenata) { textTemp = string.Format("TOTAL: {0} (Moneda: {1} | Curs BNR: {2})", lLiniiRegistru.GetTotal(lFactura.MonedaFactura, lFactura.CursBNR), CStructuriComune.StructTipMoneda.GetStringByEnum(lFactura.MonedaFactura), lFactura.CursBNR); } else { textTemp = "Se continuă pe pagina următoare ..."; } marimeNecesaraAntet = g.MeasureString(textTemp, fontText, latime); g.DrawString(textTemp, fontText, pensulaPrescriptie, new RectangleF(xNrCrt, y, marimeNecesaraAntet.Width, marimeNecesaraAntet.Height)); y += Convert.ToInt32(marimeNecesaraAntet.Height / 2); //Am terminat interventiile pe pagina sau toate //g.DrawLine(Pens.Black, x, y, x + latime, y); } fontText.Dispose(); fontText = null; fontIngrosat.Dispose(); fontIngrosat = null; return(morePages); }