public bool guardarDB(fa_notaCreDeb_Info info)
        {
            try
            {
                #region Variables
                int Secuencia               = 1;
                ct_cbtecble_Data odata_ct   = new ct_cbtecble_Data();
                cxc_cobro_Data   odata_cobr = new cxc_cobro_Data();
                #endregion

                using (Entities_facturacion db_f = new Entities_facturacion())
                {
                    #region Nota de debito credito

                    #region Cabecera
                    fa_notaCreDeb Entity = new fa_notaCreDeb
                                           //db_f.fa_notaCreDeb.Add(new fa_notaCreDeb
                    {
                        IdEmpresa          = info.IdEmpresa,
                        IdSucursal         = info.IdSucursal,
                        IdBodega           = info.IdBodega,
                        IdNota             = info.IdNota = get_id(info.IdEmpresa, info.IdSucursal, info.IdBodega),
                        IdPuntoVta         = info.IdPuntoVta,
                        CodNota            = info.CodNota,
                        CreDeb             = info.CreDeb.Trim(),
                        CodDocumentoTipo   = info.CodDocumentoTipo,
                        Serie1             = info.Serie1,
                        Serie2             = info.Serie2,
                        NumNota_Impresa    = info.NumNota_Impresa,
                        NumAutorizacion    = info.NumAutorizacion,
                        Fecha_Autorizacion = info.Fecha_Autorizacion,
                        IdCliente          = info.IdCliente,
                        no_fecha           = info.no_fecha.Date,
                        no_fecha_venc      = info.no_fecha_venc.Date,
                        IdTipoNota         = info.IdTipoNota,
                        sc_observacion     = info.sc_observacion,
                        Estado             = info.Estado = "A",
                        NaturalezaNota     = info.NaturalezaNota,
                        IdCtaCble_TipoNota = info.IdCtaCble_TipoNota,

                        IdUsuario = info.IdUsuario
                    };
                    #endregion

                    #region Detalle
                    foreach (var item in info.lst_det)
                    {
                        db_f.fa_notaCreDeb_det.Add(new fa_notaCreDeb_det
                        {
                            IdEmpresa           = info.IdEmpresa,
                            IdSucursal          = info.IdSucursal,
                            IdBodega            = info.IdBodega,
                            IdNota              = info.IdNota,
                            Secuencia           = Secuencia++,
                            IdProducto          = item.IdProducto,
                            sc_cantidad         = item.sc_cantidad,
                            sc_cantidad_factura = item.sc_cantidad_factura,
                            sc_Precio           = item.sc_Precio,
                            sc_descUni          = item.sc_descUni,
                            sc_PordescUni       = item.sc_PordescUni,
                            sc_precioFinal      = item.sc_precioFinal,
                            vt_por_iva          = item.vt_por_iva,
                            sc_iva              = item.sc_iva,
                            IdCod_Impuesto_Iva  = item.IdCod_Impuesto_Iva,
                            sc_subtotal         = item.sc_subtotal,
                            sc_total            = item.sc_total,
                            IdCentroCosto       = item.IdCentroCosto,
                            IdPunto_Cargo       = item.IdPunto_Cargo,
                            IdPunto_cargo_grupo = item.IdPunto_cargo_grupo
                        });
                    }
                    #endregion

                    #region Cruce
                    Secuencia = 1;
                    foreach (var item in info.lst_cruce)
                    {
                        db_f.fa_notaCreDeb_x_fa_factura_NotaDeb.Add(new fa_notaCreDeb_x_fa_factura_NotaDeb
                        {
                            IdEmpresa_nt              = info.IdEmpresa,
                            IdSucursal_nt             = info.IdSucursal,
                            IdBodega_nt               = info.IdBodega,
                            IdNota_nt                 = info.IdNota,
                            secuencia                 = Secuencia++,
                            IdEmpresa_fac_nd_doc_mod  = item.IdEmpresa_fac_nd_doc_mod,
                            IdSucursal_fac_nd_doc_mod = item.IdSucursal_fac_nd_doc_mod,
                            IdBodega_fac_nd_doc_mod   = item.IdBodega_fac_nd_doc_mod,
                            IdCbteVta_fac_nd_doc_mod  = item.IdCbteVta_fac_nd_doc_mod,
                            vt_tipoDoc                = item.vt_tipoDoc,
                            Valor_Aplicado            = item.Valor_Aplicado,
                            fecha_cruce               = DateTime.Now,
                        });
                    }
                    #endregion

                    #region Talonario
                    fa_PuntoVta_Data data_puntovta = new fa_PuntoVta_Data();
                    tb_sis_Documento_Tipo_Talonario_Data data_talonario = new tb_sis_Documento_Tipo_Talonario_Data();
                    fa_PuntoVta_Info info_puntovta = new fa_PuntoVta_Info();
                    tb_sis_Documento_Tipo_Talonario_Info ultimo_talonario = new tb_sis_Documento_Tipo_Talonario_Info();
                    tb_sis_Documento_Tipo_Talonario_Info info_talonario   = new tb_sis_Documento_Tipo_Talonario_Info();
                    info_puntovta = data_puntovta.get_info(info.IdEmpresa, info.IdSucursal, info.IdPuntoVta);

                    if (info_puntovta != null && info.NaturalezaNota == "SRI")
                    {
                        if (info_puntovta.EsElectronico == true)
                        {
                            ultimo_talonario = data_talonario.GetUltimoNoUsado(info.IdEmpresa, info_puntovta.codDocumentoTipo, info_puntovta.Su_CodigoEstablecimiento, info_puntovta.cod_PuntoVta, info_puntovta.EsElectronico, true);

                            if (ultimo_talonario != null)
                            {
                                Entity.Serie1          = info.Serie1 = ultimo_talonario.Establecimiento;
                                Entity.Serie2          = info.Serie2 = ultimo_talonario.PuntoEmision;
                                Entity.NumNota_Impresa = info.NumNota_Impresa = ultimo_talonario.NumDocumento;
                            }
                        }
                        else
                        {
                            info_talonario.IdEmpresa        = info.IdEmpresa;
                            info_talonario.CodDocumentoTipo = info.CodDocumentoTipo;
                            info_talonario.Establecimiento  = info.Serie1;
                            info_talonario.PuntoEmision     = info.Serie2;
                            info_talonario.NumDocumento     = info.NumNota_Impresa;
                            info_talonario.IdSucursal       = info.IdSucursal;
                            info_talonario.Usado            = true;

                            data_talonario.modificar_estado_usadoDB(info_talonario);
                        }
                    }
                    else
                    {
                        Entity.Serie1          = null;
                        Entity.Serie2          = null;
                        Entity.NumNota_Impresa = null;
                    }
                    #endregion

                    db_f.fa_notaCreDeb.Add(Entity);
                    db_f.SaveChanges();

                    #endregion

                    #region Parametros
                    var parametros = db_f.fa_parametro.Where(q => q.IdEmpresa == info.IdEmpresa).FirstOrDefault();
                    var cliente    = db_f.fa_cliente.Where(q => q.IdEmpresa == info.IdEmpresa && q.IdCliente == info.IdCliente).FirstOrDefault();
                    #endregion

                    #region Contabilidad
                    if (parametros != null)
                    {
                        ct_cbtecble_Info diario = armar_diario(info, info.CreDeb.Trim() == "C" ? (int)parametros.IdTipoCbteCble_NC : (int)parametros.IdTipoCbteCble_ND, cliente.IdCtaCble_cxc_Credito, info.IdCtaCble_TipoNota);
                        if (diario != null)
                        {
                            if (odata_ct.guardarDB(diario))
                            {
                                db_f.fa_notaCreDeb_x_ct_cbtecble.Add(new fa_notaCreDeb_x_ct_cbtecble
                                {
                                    no_IdEmpresa  = info.IdEmpresa,
                                    no_IdSucursal = info.IdSucursal,
                                    no_IdBodega   = info.IdBodega,
                                    no_IdNota     = info.IdNota,

                                    ct_IdEmpresa  = diario.IdEmpresa,
                                    ct_IdTipoCbte = diario.IdTipoCbte,
                                    ct_IdCbteCble = diario.IdCbteCble,

                                    observacion = info.CodDocumentoTipo + (info.NaturalezaNota == "SRI" ? ("-" + info.Serie1 + "-" + info.Serie2 + "-" + info.NumNota_Impresa) : info.IdNota.ToString("000000000"))
                                });
                                db_f.SaveChanges();
                            }
                        }
                    }
                    #endregion

                    #region Cobranza
                    if (info.CreDeb.Trim() == "C" && info.lst_cruce.Count != 0)
                    {
                        cxc_cobro_Info cobro = armar_cobro(info);
                        if (cobro != null)
                        {
                            if (odata_cobr.guardarDB(cobro))
                            {
                                db_f.fa_notaCreDeb_x_cxc_cobro.Add(new fa_notaCreDeb_x_cxc_cobro
                                {
                                    IdEmpresa_nt   = info.IdEmpresa,
                                    IdSucursal_nt  = info.IdSucursal,
                                    IdBodega_nt    = info.IdBodega,
                                    IdNota_nt      = info.IdNota,
                                    IdEmpresa_cbr  = cobro.IdEmpresa,
                                    IdSucursal_cbr = cobro.IdSucursal,
                                    IdCobro_cbr    = cobro.IdCobro,
                                    Valor_cobro    = Math.Round(info.lst_cruce.Sum(q => q.Valor_Aplicado), 2, MidpointRounding.AwayFromZero)
                                });
                                db_f.SaveChanges();
                            }
                        }
                    }

                    #endregion
                }

                return(true);
            }
            catch (Exception ex)
            {
                tb_LogError_Data LogData = new tb_LogError_Data();
                LogData.GuardarDB(new tb_LogError_Info {
                    Descripcion = ex.Message, InnerException = ex.InnerException == null ? null : ex.InnerException.Message, Clase = "fa_notaCreDeb_Data", Metodo = "guardarDB", IdUsuario = info.IdUsuario
                });
                return(false);
            }
        }