private void incarcaRand(DataGridViewRow pRand, BClientiFacturi pElem, BColectieClientiComenzi pListaLucrari, BColectieClientiPlatiComenzi pListaPlatiPeFact)
        {
            pRand.Tag = pElem;

            double valoare = pListaLucrari.GetValoareTotalaFactura(CDefinitiiComune.EnumTipMoneda.Lei, pElem.CursBNR);
            double achitat = pListaPlatiPeFact.GetValoarePlatita();

            DataGridViewPersonalizat.InitCelulaEditare(pRand, this.lEcranInModificare);

            if (pElem.EsteFiscalizata())
            {
                pRand.Cells[EnumColoaneDGV.colTipDocument.ToString()].Value = BMultiLingv.getElementById(BMultiLingv.EnumDictionar.Factura);

                DataGridViewPersonalizat.IndeparteazaAlerta(pRand, EnumColoaneDGV.colTipDocument.ToString());
            }
            else
            {
                pRand.Cells[EnumColoaneDGV.colTipDocument.ToString()].Value = BMultiLingv.getElementById(BMultiLingv.EnumDictionar.Proforma);

                DataGridViewPersonalizat.SeteazaAlerta(pRand, EnumColoaneDGV.colTipDocument.ToString());
            }

            pRand.Cells[EnumColoaneDGV.colDataEmiterii.ToString()].Value = pElem.DataFactura;
            pRand.Cells[EnumColoaneDGV.colSerieFactura.ToString()].Value = pElem.SerieFactura;
            pRand.Cells[EnumColoaneDGV.colNumarFactura.ToString()].Value = pElem.NumarFactura;
            pRand.Cells[EnumColoaneDGV.colClinica.ToString()].Value      = pElem.DenumireClient;
            DataGridViewPersonalizat.InitCelulaValoareMonetara(pRand, EnumColoaneDGV.colValoare.ToString(), valoare, CDefinitiiComune.EnumTipMoneda.Lei);
            //pRand.Cells[EnumColoaneDGV.colValoare.ToString()].Value = ;
            if (pElem.MonedaFactura != CDefinitiiComune.EnumTipMoneda.Lei)
            {
                DataGridViewPersonalizat.SeteazaAlerta(pRand, EnumColoaneDGV.colValoare.ToString());
            }
            pRand.Cells[EnumColoaneDGV.colValoare.ToString()].ToolTipText = CUtil.GetValoareMonetara(valoare, pElem.MonedaFactura);

            DataGridViewPersonalizat.InitCelulaValoareMonetara(pRand, EnumColoaneDGV.colAchitat.ToString(), achitat, CDefinitiiComune.EnumTipMoneda.Lei);
            DataGridViewPersonalizat.InitCelulaValoareMonetara(pRand, EnumColoaneDGV.colRestPlata.ToString(), valoare - achitat, CDefinitiiComune.EnumTipMoneda.Lei);

            pRand.Cells[EnumColoaneDGV.colCursBNR.ToString()].Value    = pElem.CursBNR;
            pRand.Cells[EnumColoaneDGV.colObservatii.ToString()].Value = pElem.Observatii;

            DataGridViewPersonalizat.InitCelulaStergere(pRand);

            DataGridViewPersonalizat.InitCelulaDeschideClasic(pRand, EnumColoaneDGV.colDetaliiClinica.ToString());
        }
Example #2
0
        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);
        }