private void ConstruiesteRanduriDGV()
        {
            this.dgvListaVenituriEtape.IncepeContructieRanduri();

            var listaEtape = BEtape.GetListByParam(EnumStare.Activa, null);

            if (this.lVenituri == null)
            {
                //Mod creare ... incarcam cu BEtape

                foreach (var elem in listaEtape)
                {
                    incarcaRand(this.dgvListaVenituriEtape.AdaugaRandNou(), elem);
                }
            }
            else
            {
                //Mod modificare ... incarcam cu BColectieUtilizatoriVenituriDetalii
                var listaElem = BUtilizatoriVenituriDetalii.GetListByParam(this.lVenituri.Id, null);

                foreach (var etapa in listaEtape)
                {
                    incarcaRand(this.dgvListaVenituriEtape.AdaugaRandNou(), etapa, listaElem.GetByIdEtapa(etapa.Id));
                }
            }

            this.dgvListaVenituriEtape.FinalizeazaContructieRanduri();
        }
        private void incarcaRand(DataGridViewRow pRand, BEtape pEtapa, BUtilizatoriVenituriDetalii pVenitDetalii)
        {
            pRand.Tag = pVenitDetalii;

            pRand.Cells[EnumColoaneDGV.colEtapa.ToString()].Value = pEtapa.Denumire;
            pRand.Cells[EnumColoaneDGV.colEtapa.ToString()].Tag   = pEtapa;

            if (pVenitDetalii != null)
            {
                DataGridViewPersonalizat.InitCelulaValoareMonetara(pRand, EnumColoaneDGV.colPret.ToString(), pVenitDetalii.Pret);
            }
        }
        private void DgvListaVenituriEtape_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
            if (this.lSeIncarca || e.RowIndex < 0)
            {
                return;
            }
            try
            {
                incepeIncarcarea();

                //In modul creare vom recupera Dictionarul cu id etapa si pret la salvare

                if (this.lVenituri != null)
                {
                    //In mod modificare facem update sau insert in BUtilizatoriVenituriDetalii  in functie de ce avem in Tag rand
                    //recuperam numele coloanei si ne asiguram ca e coloana pret

                    string denumireColoanaSelectata = this.dgvListaVenituriEtape.Columns[e.ColumnIndex].Name;
                    if (denumireColoanaSelectata.Equals(EnumColoaneDGV.colPret.ToString()))
                    {
                        BEtape etape = this.dgvListaVenituriEtape.Rows[e.RowIndex].Cells[EnumColoaneDGV.colEtapa.ToString()].Tag as BEtape;
                        BUtilizatoriVenituriDetalii pretVenituriDetalii = this.dgvListaVenituriEtape.Rows[e.RowIndex].Tag as BUtilizatoriVenituriDetalii;

                        if (pretVenituriDetalii != null)
                        {
                            if (pretVenituriDetalii != null)
                            {
                                //Update
                                pretVenituriDetalii.UpdatePret(CUtil.GetAsDouble(this.dgvListaVenituriEtape.Rows[e.RowIndex].Cells[e.ColumnIndex].Value));
                            }
                        }
                        else
                        {
                            double pretNou = CUtil.GetAsDouble(this.dgvListaVenituriEtape.Rows[e.RowIndex].Cells[e.ColumnIndex].Value);

                            int id = BUtilizatoriVenituriDetalii.Add(this.lVenituri.Id, etape.Id, pretNou, null);

                            if (id > 0)
                            {
                                pretVenituriDetalii = new BUtilizatoriVenituriDetalii(id);
                            }
                        }

                        incarcaRand(this.dgvListaVenituriEtape.Rows[e.RowIndex], etape, pretVenituriDetalii);
                    }
                }
                else
                {
                    //Validam Pret valoare introdusa
                    string name = this.dgvListaVenituriEtape.Columns[e.ColumnIndex].Name;
                    if (name.Equals(EnumColoaneDGV.colPret.ToString()))
                    {
                        string text = Convert.ToString(this.dgvListaVenituriEtape.Rows[e.RowIndex].Cells[e.ColumnIndex].Value);
                        if (!string.IsNullOrEmpty(text) && !CUtil.PermiteDoarNumericeDinString(text))
                        {
                            this.dgvListaVenituriEtape.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = CUtil.ExtrageDoarNumericeDinString(text);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                GestiuneErori.AfiseazaMesaj(this.GetFormParinte(), ex);
            }
            finally
            {
                finalizeazaIncarcarea();
            }
        }