private void Save(int invoiceId, int userId)
        {
            BLInvoice       bLInvoice       = new BLInvoice();
            BLInvoiceDetail bLInvoiceDetail = new BLInvoiceDetail();

            if (userId != 0 & invoiceId == 0)
            {
                string              invoiceNumber  = txtInvoiceNumber.Text;
                DateTime            invoiceDate    = dateInvoice.Value;
                ClientFullNameModel clientFullName = (ClientFullNameModel)cmbClientFullName.SelectedItem;
                FullAddressModule   fullAddress    = (FullAddressModule)cmbAddress.SelectedItem;
                if (fullAddress == null)
                {
                    MessageBox.Show("Clientul nu are o adresa, adaugati o adresa clientului pentru a creea o factura!");
                    return;
                }
                int    clientId        = clientFullName.ClientId;
                int    clientAddressId = fullAddress.ClientAddressId;
                string observations    = txtObservations.Text;

                MessageBox.Show(clientAddressId.ToString());

                bLInvoice.AddInvoice(invoiceNumber, invoiceDate, clientId, clientAddressId, userId, observations);
                MessageBox.Show("Factura a fost adaugata cu succes.");
                int invoiceIdValue = bLInvoice.GetInvoiceList(-1, "", DateTime.Now, DateTime.Now, invoiceNumber)[0].InvoiceId;
                Save(invoiceIdValue, 0);
            }
            if (userId == 0 & invoiceId != 0)
            {
                for (int i = 0; i < dataGridDetails.Rows.Count; i++)
                {
                    InvoiceDetailModel detail = new InvoiceDetailModel();
                    detail = (InvoiceDetailModel)dataGridDetails.Rows[i].DataBoundItem;
                    if (detail.Status == 1)
                    {
                        bLInvoiceDetail.AddDetail(invoiceId, detail.ItemName, detail.Qtty, detail.UnitPrice, detail.Amount, detail.Observations);
                    }
                    //INSERT
                    if (detail.Status == 2)
                    {
                        bLInvoiceDetail.UpdateDetail(invoiceId, detail.InvoiceDetailId, detail.ItemName, detail.Qtty, detail.UnitPrice, detail.Amount, detail.Observations);
                    }



                    //UPDATE
                    if (detail.Status == 3)
                    {
                        bLInvoiceDetail.DeleteDetail(invoiceId, detail.InvoiceDetailId);
                    }
                }
            }
        }