public bool modificarDB(fa_guia_remision_Info info)
        {
            try
            {
                fa_TerminoPago_Info termino_pago = new fa_TerminoPago_Info();
                fa_PuntoVta_Info    punto_venta  = new fa_PuntoVta_Info();
                termino_pago = data_tpago.get_info(info.vt_tipo_venta);
                punto_venta  = data_puntovta.get_info(info.IdEmpresa, info.IdSucursal, info.IdPuntoVta_Fact);
                int secuencia = 1;

                using (Entities_facturacion Context = new Entities_facturacion())
                {
                    fa_guia_remision Entity = Context.fa_guia_remision.FirstOrDefault(q => q.IdGuiaRemision == info.IdGuiaRemision);
                    if (Entity == null)
                    {
                        return(false);
                    }
                    Entity.CodGuiaRemision        = info.CodGuiaRemision;
                    Entity.CodDocumentoTipo       = info.CodDocumentoTipo;
                    Entity.NUAutorizacion         = info.NUAutorizacion;
                    Entity.Fecha_Autorizacion     = info.Fecha_Autorizacion;
                    Entity.IdCliente              = info.IdCliente;
                    Entity.IdTransportista        = info.IdTransportista;
                    Entity.gi_fecha               = info.gi_fecha.Date;
                    Entity.gi_plazo               = info.gi_plazo;
                    Entity.gi_fech_venc           = info.gi_fech_venc;
                    Entity.gi_FechaInicioTraslado = info.gi_FechaInicioTraslado.Date;
                    Entity.gi_FechaFinTraslado    = info.gi_FechaFinTraslado.Date;
                    Entity.placa                 = info.placa;
                    Entity.Direccion_Destino     = info.Direccion_Destino;
                    Entity.Direccion_Origen      = info.Direccion_Origen;
                    Entity.IdMotivoTraslado      = info.IdMotivoTraslado;
                    Entity.FechaModificacion     = info.FechaModificacion = DateTime.Now;
                    Entity.IdUsuarioModificacion = info.IdUsuarioModificacion;
                    Entity.gi_Observacion        = info.gi_Observacion;
                    Entity.IdCbteVta             = info.IdCbteVta;
                    Entity.IdContacto            = (info.IdContacto == 0 ? null : info.IdContacto);

                    foreach (var item in info.lst_detalle)
                    {
                        Context.fa_guia_remision_det.Add(new fa_guia_remision_det
                        {
                            IdEmpresa        = info.IdEmpresa,
                            IdSucursal       = info.IdSucursal,
                            IdBodega         = info.IdBodega,
                            IdGuiaRemision   = info.IdGuiaRemision,
                            Secuencia        = secuencia,
                            IdProducto       = item.IdProducto,
                            gi_cantidad      = item.gi_cantidad,
                            gi_detallexItems = item.gi_detallexItems,
                            gi_precio        = item.gi_precio,
                            gi_por_desc      = item.gi_por_desc,
                            gi_descuentoUni  = item.gi_descuentoUni,
                            gi_PrecioFinal   = item.gi_PrecioFinal,
                            gi_Subtotal      = item.gi_Subtotal,
                            IdCod_Impuesto   = item.IdCod_Impuesto,
                            gi_por_iva       = item.gi_por_iva,
                            gi_Iva           = item.gi_Iva,
                            gi_Total         = item.gi_Total,
                            IdCentroCosto    = item.IdCentroCosto,
                            IdEmpresa_pf     = item.IdEmpresa_pf,
                            IdSucursal_pf    = item.IdSucursal_pf,
                            IdProforma       = item.IdProforma,
                            Secuencia_pf     = item.Secuencia_pf
                        });

                        if (item.IdCbteVta != null && item.IdCbteVta != 0)
                        {
                            Context.fa_guia_remision_det_x_factura.Add(new fa_guia_remision_det_x_factura
                            {
                                IdEmpresa_fact      = info.IdEmpresa,
                                IdSucursal_fact     = info.IdSucursal,
                                IdBodega_fact       = info.IdBodega,
                                IdCbteVta_fact      = Convert.ToDecimal(item.IdCbteVta),
                                IdGuiaRemision_guia = info.IdGuiaRemision,
                                Secuencia_fact      = Convert.ToInt32(item.Secuencia_fact),
                                Secuencia_guia      = secuencia,
                                IdBodega_guia       = info.IdBodega,
                                IdSucursal_guia     = info.IdSucursal,
                                IdEmpresa_guia      = info.IdEmpresa
                            });
                        }
                        secuencia++;
                    }
                    foreach (var item in info.lst_detalle_x_factura)
                    {
                        if (item.IdCbteVta != 0)
                        {
                            Context.fa_factura_x_fa_guia_remision.Add(new fa_factura_x_fa_guia_remision
                            {
                                fa_IdEmpresa      = info.IdEmpresa,
                                fa_IdSucursal     = info.IdSucursal,
                                fa_IdBodega       = info.IdBodega,
                                fa_IdCbteVta      = item.IdCbteVta,
                                gi_IdEmpresa      = info.IdEmpresa,
                                gi_IdSucursal     = info.IdSucursal,
                                gi_IdBodega       = info.IdBodega,
                                gi_IdGuiaRemision = info.IdGuiaRemision
                            });
                        }
                    }

                    #region Factura
                    if (info.GenerarFactura == true && (info.IdCbteVta == null || info.IdCbteVta == 0))
                    {
                        fa_factura_Info info_fact = new fa_factura_Info();
                        info_fact.lst_det   = new List <fa_factura_det_Info>();
                        info_fact.lst_cuota = new List <fa_cuotas_x_doc_Info>();
                        int secuencia_fact = 1;

                        if (termino_pago != null && termino_pago.IdTerminoPago != "")
                        {
                            info.vt_fech_venc = info.gi_fecha.AddDays(termino_pago.Dias_Vct);
                        }

                        if (punto_venta != null && punto_venta.IdPuntoVta != 0)
                        {
                            info.IdCaja = punto_venta.IdCaja;
                        }

                        info_fact.IdEmpresa            = info_fact.IdEmpresa = info.IdEmpresa;
                        info_fact.IdSucursal           = info_fact.IdSucursal = info.IdSucursal;
                        info_fact.IdBodega             = info_fact.IdBodega = info.IdBodega;
                        info_fact.vt_tipoDoc           = cl_enumeradores.eTipoDocumento.FACT.ToString();
                        info_fact.vt_serie1            = info.vt_serie1;
                        info_fact.vt_serie2            = info.vt_serie2;
                        info_fact.vt_NumFactura        = info.vt_NumFactura;
                        info_fact.Fecha_Autorizacion   = DateTime.Now;
                        info_fact.vt_autorizacion      = null;
                        info_fact.vt_fecha             = info.gi_fecha.Date;
                        info_fact.vt_fech_venc         = info.vt_fech_venc; /*depende de la termino de pago*/
                        info_fact.IdCliente            = info.IdCliente;
                        info_fact.IdVendedor           = info.IdVendedor;
                        info_fact.vt_plazo             = termino_pago.Dias_Vct; /**depende de la termino de pago*/
                        info_fact.vt_Observacion       = string.IsNullOrEmpty(info.ObservacionFactura) ? "" : info.ObservacionFactura;
                        info_fact.IdCatalogo_FormaPago = info.IdCatalogo_FormaPago;
                        info_fact.vt_tipo_venta        = info.vt_tipo_venta;
                        info_fact.IdCaja              = info.IdCaja; /*depende del punto de venta*/
                        info_fact.IdPuntoVta          = info.IdPuntoVta_Fact;
                        info_fact.fecha_primera_cuota = null;
                        info_fact.Fecha_Transaccion   = DateTime.Now;
                        info_fact.Estado              = info.Estado == true ? "A" : "I";
                        info_fact.esta_impresa        = null;
                        info_fact.valor_abono         = null;
                        info_fact.IdUsuario           = info.IdUsuarioCreacion;
                        info_fact.IdNivel             = 1;
                        info_fact.CodCbteVta          = info.CodGuiaRemision;

                        foreach (var item in info.lst_detalle)
                        {
                            fa_factura_det_Info info_fact_detalle = new fa_factura_det_Info
                            {
                                IdEmpresa  = info_fact.IdEmpresa,
                                IdSucursal = info_fact.IdSucursal,
                                IdBodega   = info_fact.IdBodega,
                                Secuencia  = secuencia_fact++,

                                IdProducto         = item.IdProducto,
                                vt_cantidad        = item.gi_cantidad,
                                vt_Precio          = item.gi_precio,
                                vt_PorDescUnitario = item.gi_por_desc,
                                vt_DescUnitario    = item.gi_descuentoUni,
                                vt_PrecioFinal     = item.gi_PrecioFinal,
                                vt_Subtotal        = item.gi_Subtotal,
                                vt_por_iva         = item.gi_por_iva,
                                IdCod_Impuesto_Iva = item.IdCod_Impuesto,
                                vt_iva             = item.gi_Iva,
                                vt_total           = item.gi_Total,
                                vt_detallexItems   = item.gi_detallexItems,

                                IdEmpresa_pf  = item.IdEmpresa_pf,
                                IdSucursal_pf = item.IdSucursal_pf,
                                IdProforma    = item.IdProforma,
                                Secuencia_pf  = item.Secuencia_pf,

                                IdCentroCosto       = item.IdCentroCosto,
                                IdPunto_Cargo       = item.IdPunto_cargo,
                                IdPunto_cargo_grupo = item.IdPunto_cargo_grupo,
                            };
                            info_fact.lst_det.Add(info_fact_detalle);
                        }

                        var SubtotalConDscto       = (decimal)Math.Round(info.lst_detalle.Sum(q => q.gi_Subtotal), 2, MidpointRounding.AwayFromZero);
                        var SubtotalIVASinDscto    = (decimal)Math.Round(info_fact.lst_det.Where(q => q.vt_por_iva != 0).Sum(q => q.vt_cantidad * q.vt_Precio), 2, MidpointRounding.AwayFromZero);
                        var SubtotalSinIVASinDscto = (decimal)Math.Round(info_fact.lst_det.Where(q => q.vt_por_iva == 0).Sum(q => q.vt_cantidad * q.vt_Precio), 2, MidpointRounding.AwayFromZero);
                        var Descuento              = (decimal)Math.Round(info_fact.lst_det.Sum(q => q.vt_DescUnitario * q.vt_cantidad), 2, MidpointRounding.AwayFromZero);
                        var SubtotalIVAConDscto    = (decimal)Math.Round(info_fact.lst_det.Where(q => q.vt_por_iva != 0).Sum(q => q.vt_Subtotal), 2, MidpointRounding.AwayFromZero);
                        var SubtotalSinIVAConDscto = (decimal)Math.Round(info_fact.lst_det.Where(q => q.vt_por_iva == 0).Sum(q => q.vt_Subtotal), 2, MidpointRounding.AwayFromZero);
                        var ValorIVA         = (decimal)Math.Round(info_fact.lst_det.Sum(q => q.vt_iva), 2, MidpointRounding.AwayFromZero);
                        var SubtotalSinDscto = SubtotalIVASinDscto + SubtotalSinIVASinDscto;
                        var Total            = SubtotalConDscto + ValorIVA;

                        info_fact.info_resumen = new fa_factura_resumen_Info
                        {
                            IdEmpresa  = info_fact.IdEmpresa,
                            IdSucursal = info_fact.IdSucursal,
                            IdBodega   = info_fact.IdBodega,
                            // IdCbteVta = info_fact.IdCbteVta,

                            SubtotalConDscto       = SubtotalConDscto,
                            SubtotalIVAConDscto    = SubtotalIVAConDscto,
                            SubtotalIVASinDscto    = SubtotalIVASinDscto,
                            SubtotalSinDscto       = SubtotalSinDscto,
                            SubtotalSinIVAConDscto = SubtotalSinIVAConDscto,
                            SubtotalSinIVASinDscto = SubtotalSinIVASinDscto,

                            Total         = Total,
                            Descuento     = Descuento,
                            ValorEfectivo = 0,
                            ValorIVA      = ValorIVA,
                            Cambio        = Total,
                        };
                        data_fact.guardarDB(info_fact);
                        Entity.IdCbteVta = info_fact.IdCbteVta;

                        #region Relacion Guia
                        Context.fa_factura_x_fa_guia_remision.Add(new fa_factura_x_fa_guia_remision
                        {
                            fa_IdEmpresa      = info.IdEmpresa,
                            fa_IdSucursal     = info.IdSucursal,
                            fa_IdBodega       = info.IdBodega,
                            fa_IdCbteVta      = info_fact.IdCbteVta,
                            gi_IdEmpresa      = info.IdEmpresa,
                            gi_IdSucursal     = info.IdSucursal,
                            gi_IdBodega       = info.IdBodega,
                            gi_IdGuiaRemision = info.IdGuiaRemision
                        });
                        secuencia = 1;
                        foreach (var item in info.lst_detalle)
                        {
                            Context.fa_guia_remision_det_x_factura.Add(new fa_guia_remision_det_x_factura
                            {
                                IdEmpresa_fact  = info.IdEmpresa,
                                IdSucursal_fact = info.IdSucursal,
                                IdBodega_fact   = info.IdBodega,
                                IdCbteVta_fact  = info_fact.IdCbteVta,
                                Secuencia_fact  = secuencia,

                                IdEmpresa_guia      = info.IdEmpresa,
                                IdSucursal_guia     = info.IdSucursal,
                                IdBodega_guia       = info.IdBodega,
                                IdGuiaRemision_guia = info.IdGuiaRemision,
                                Secuencia_guia      = secuencia++,
                            });
                        }
                        #endregion
                    }
                    #endregion

                    Context.SaveChanges();
                }
                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_guia_remision_Data", Metodo = "modificarDB", IdUsuario = info.IdUsuarioCreacion
                });
                return(false);
            }
        }
        public bool modificarDB(fa_guia_remision_Info info)
        {
            try
            {
                int secuencia = 1;
                using (Entities_facturacion Context = new Entities_facturacion())
                {
                    fa_guia_remision Entity = Context.fa_guia_remision.FirstOrDefault(q => q.IdGuiaRemision == info.IdGuiaRemision);
                    if (Entity == null)
                    {
                        return(false);
                    }
                    Entity.CodGuiaRemision        = info.CodGuiaRemision;
                    Entity.CodDocumentoTipo       = info.CodDocumentoTipo;
                    Entity.NUAutorizacion         = info.NUAutorizacion;
                    Entity.Fecha_Autorizacion     = info.Fecha_Autorizacion;
                    Entity.IdCliente              = info.IdCliente;
                    Entity.IdTransportista        = info.IdTransportista;
                    Entity.gi_fecha               = info.gi_fecha.Date;
                    Entity.gi_plazo               = info.gi_plazo;
                    Entity.gi_fech_venc           = info.gi_fech_venc;
                    Entity.gi_FechaInicioTraslado = info.gi_FechaInicioTraslado.Date;
                    Entity.gi_FechaFinTraslado    = info.gi_FechaFinTraslado.Date;
                    Entity.placa                 = info.placa;
                    Entity.Direccion_Destino     = info.Direccion_Destino;
                    Entity.Direccion_Origen      = info.Direccion_Origen;
                    Entity.IdMotivoTraslado      = info.IdMotivoTraslado;
                    Entity.FechaModificacion     = info.FechaModificacion = DateTime.Now;
                    Entity.IdUsuarioModificacion = info.IdUsuarioModificacion;
                    Entity.gi_Observacion        = info.gi_Observacion;

                    foreach (var item in info.lst_detalle)
                    {
                        Context.fa_guia_remision_det.Add(new fa_guia_remision_det
                        {
                            IdEmpresa        = info.IdEmpresa,
                            IdSucursal       = info.IdSucursal,
                            IdBodega         = info.IdBodega,
                            IdGuiaRemision   = info.IdGuiaRemision,
                            Secuencia        = secuencia,
                            IdProducto       = item.IdProducto,
                            gi_cantidad      = item.gi_cantidad,
                            gi_detallexItems = item.gi_detallexItems,
                            gi_precio        = item.gi_precio,
                            gi_por_desc      = item.gi_por_desc,
                            gi_descuentoUni  = item.gi_descuentoUni,
                            gi_PrecioFinal   = item.gi_PrecioFinal,
                            gi_Subtotal      = item.gi_Subtotal,
                            IdCod_Impuesto   = item.IdCod_Impuesto,
                            gi_por_iva       = item.gi_por_iva,
                            gi_Iva           = item.gi_Iva,
                            gi_Total         = item.gi_Total
                        });

                        if (item.IdCbteVta != null && item.IdCbteVta != 0)
                        {
                            Context.fa_guia_remision_det_x_factura.Add(new fa_guia_remision_det_x_factura
                            {
                                IdEmpresa_fact      = info.IdEmpresa,
                                IdSucursal_fact     = info.IdSucursal,
                                IdBodega_fact       = info.IdBodega,
                                IdCbteVta_fact      = Convert.ToDecimal(item.IdCbteVta),
                                IdGuiaRemision_guia = info.IdGuiaRemision,
                                Secuencia_fact      = Convert.ToInt32(item.Secuencia_fact),
                                Secuencia_guia      = secuencia,
                                IdBodega_guia       = info.IdBodega,
                                IdSucursal_guia     = info.IdSucursal,
                                IdEmpresa_guia      = info.IdEmpresa
                            });
                        }
                        secuencia++;
                    }
                    foreach (var item in info.lst_detalle_x_factura)
                    {
                        if (item.IdCbteVta != 0)
                        {
                            Context.fa_factura_x_fa_guia_remision.Add(new fa_factura_x_fa_guia_remision
                            {
                                fa_IdEmpresa      = info.IdEmpresa,
                                fa_IdSucursal     = info.IdSucursal,
                                fa_IdBodega       = info.IdBodega,
                                fa_IdCbteVta      = item.IdCbteVta,
                                gi_IdEmpresa      = info.IdEmpresa,
                                gi_IdSucursal     = info.IdSucursal,
                                gi_IdBodega       = info.IdBodega,
                                gi_IdGuiaRemision = info.IdGuiaRemision
                            });
                        }
                    }

                    Context.SaveChanges();
                }
                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_guia_remision_Data", Metodo = "modificarDB", IdUsuario = info.IdUsuarioCreacion
                });
                return(false);
            }
        }
Exemple #3
0
        public Boolean GrabarDB(fa_guia_remision_Info info, ref decimal id, ref string msg)
        {
            try
            {
                using (EntitiesFacturacion context = new EntitiesFacturacion())
                {
                    var address = new fa_guia_remision();

                    address.IdEmpresa          = info.IdEmpresa;
                    address.IdSucursal         = info.IdSucursal;
                    address.IdBodega           = info.IdBodega;
                    address.IdGuiaRemision     = info.IdGuiaRemision = id = GetId(info.IdEmpresa, info.IdSucursal, info.IdBodega);
                    address.CodGuiaRemision    = (info.CodGuiaRemision == "") ? "GUIA-" + id : info.CodGuiaRemision;
                    address.CodDocumentoTipo   = info.CodDocumentoTipo;
                    address.Serie1             = info.Serie1;
                    address.Serie2             = info.Serie2;
                    address.NumGuia_Preimpresa = info.NumGuia_Preimpresa;
                    address.NUAutorizacion     = info.NumAutorizacion;
                    address.IdCliente          = info.IdCliente;
                    address.IdVendedor         = info.IdVendedor;
                    address.IdTransportista    = info.IdTransportista;
                    address.gi_fecha           = info.gi_fecha;
                    address.gi_fech_venc       = info.gi_fech_venc;
                    address.gi_Observacion     = info.gi_Observacion;
                    address.gi_TotalKilos      = info.gi_TotalKilos;
                    address.gi_TotalQuintales  = info.gi_TotalQuintales;
                    address.IdUsuario          = info.IdUsuario;
                    address.Fecha_Transac      = info.Fecha_Transac;
                    address.nom_pc             = info.nom_pc;
                    address.ip            = info.ip;
                    address.Impreso       = "N";
                    address.Estado        = "A";
                    address.IdPeriodo     = info.IdPeriodo;
                    address.gi_flete      = info.gi_flete;
                    address.gi_interes    = info.gi_interes;
                    address.gi_seguro     = info.gi_seguro;
                    address.gi_OtroValor1 = info.gi_OtroValor1;
                    address.gi_OtroValor2 = info.gi_OtroValor2;

                    address.gi_FechaIniTraslado = info.gi_FecIniTraslado;
                    address.gi_FechaFinTraslado = info.gi_FecFinTraslado;

                    address.Direccion_Origen  = info.Direccion_Origen;
                    address.placa             = info.placa;
                    address.ruta              = info.ruta == "" ? null : info.ruta;
                    address.Direccion_Destino = info.Direccion_Destino;

                    address.idMotivo_traslado = info.idMotivo_traslado;

                    context.fa_guia_remision.Add(address);
                    context.SaveChanges();
                    info.ListaDetalle.ForEach(var => { var.IdEmpresa = address.IdEmpresa; var.IdGuiaRemision = address.IdGuiaRemision; var.IdBodega = address.IdBodega; var.IdSucursal = address.IdSucursal; });
                    info.CodGuiaRemision = address.CodGuiaRemision;
                }
                return(true);
            }
            catch (Exception ex)
            {
                string arreglo = ToString();
                tb_sis_Log_Error_Vzen_Data oDataLog      = new tb_sis_Log_Error_Vzen_Data();
                tb_sis_Log_Error_Vzen_Info Log_Error_sis = new tb_sis_Log_Error_Vzen_Info(ex.ToString(), "", arreglo, "", "", "", "", "", DateTime.Now);
                msg = ex.ToString();
                oDataLog.Guardar_Log_Error(Log_Error_sis, ref msg);
                throw new Exception(ex.ToString());
            }
        }
        public bool guardarDB(fa_guia_remision_Info info)
        {
            fa_PuntoVta_Info punto_venta = new fa_PuntoVta_Info();

            punto_venta = data_puntovta.get_info(info.IdEmpresa, info.IdSucursal, info.IdPuntoVta);

            try
            {
                int secuencia = 1;
                using (Entities_facturacion Context = new Entities_facturacion())
                {
                    fa_guia_remision Entity = new fa_guia_remision
                    {
                        IdEmpresa              = info.IdEmpresa,
                        IdSucursal             = info.IdSucursal,
                        IdPuntoVta             = info.IdPuntoVta,
                        IdBodega               = info.IdBodega,
                        IdGuiaRemision         = info.IdGuiaRemision = get_id(info.IdEmpresa),
                        CodGuiaRemision        = info.CodGuiaRemision,
                        CodDocumentoTipo       = info.CodDocumentoTipo,
                        Serie1                 = info.Serie1,
                        Serie2                 = info.Serie2,
                        NumGuia_Preimpresa     = info.NumGuia_Preimpresa,
                        NUAutorizacion         = info.NUAutorizacion,
                        Fecha_Autorizacion     = info.Fecha_Autorizacion,
                        IdCliente              = info.IdCliente,
                        IdTransportista        = info.IdTransportista,
                        gi_fecha               = info.gi_fecha.Date,
                        gi_plazo               = info.gi_plazo,
                        gi_fech_venc           = info.gi_fech_venc,
                        gi_Observacion         = info.gi_Observacion,
                        gi_FechaInicioTraslado = info.gi_FechaInicioTraslado.Date,
                        gi_FechaFinTraslado    = info.gi_FechaFinTraslado.Date,
                        placa             = info.placa,
                        Direccion_Destino = info.Direccion_Destino,
                        Direccion_Origen  = info.Direccion_Origen,
                        IdMotivoTraslado  = info.IdMotivoTraslado,
                        Estado            = info.Estado = true,
                        IdUsuarioCreacion = info.IdUsuarioCreacion,
                        FechaCreacion     = info.FechaCreacion = DateTime.Now
                    };

                    foreach (var item in info.lst_detalle)
                    {
                        Context.fa_guia_remision_det.Add(new fa_guia_remision_det
                        {
                            IdEmpresa        = info.IdEmpresa,
                            IdSucursal       = info.IdSucursal,
                            IdBodega         = info.IdBodega,
                            IdGuiaRemision   = info.IdGuiaRemision,
                            Secuencia        = secuencia,
                            IdProducto       = item.IdProducto,
                            gi_cantidad      = item.gi_cantidad,
                            gi_detallexItems = item.gi_detallexItems,
                            gi_precio        = item.gi_precio,
                            gi_por_desc      = item.gi_por_desc,
                            gi_descuentoUni  = item.gi_descuentoUni,
                            gi_PrecioFinal   = item.gi_PrecioFinal,
                            gi_Subtotal      = item.gi_Subtotal,
                            IdCod_Impuesto   = item.IdCod_Impuesto,
                            gi_por_iva       = item.gi_por_iva,
                            gi_Iva           = item.gi_Iva,
                            gi_Total         = item.gi_Total
                        });

                        if (item.IdCbteVta != null && item.IdCbteVta != 0)
                        {
                            Context.fa_guia_remision_det_x_factura.Add(new fa_guia_remision_det_x_factura
                            {
                                IdEmpresa_fact      = info.IdEmpresa,
                                IdSucursal_fact     = info.IdSucursal,
                                IdBodega_fact       = info.IdBodega,
                                IdCbteVta_fact      = Convert.ToDecimal(item.IdCbteVta),
                                IdGuiaRemision_guia = info.IdGuiaRemision,
                                Secuencia_fact      = Convert.ToInt32(item.Secuencia_fact),
                                Secuencia_guia      = secuencia,
                                IdBodega_guia       = info.IdBodega,
                                IdSucursal_guia     = info.IdSucursal,
                                IdEmpresa_guia      = info.IdEmpresa
                            });
                        }

                        secuencia++;
                    }

                    foreach (var item in info.lst_detalle_x_factura)
                    {
                        if (item.IdCbteVta != 0)
                        {
                            Context.fa_factura_x_fa_guia_remision.Add(new fa_factura_x_fa_guia_remision
                            {
                                fa_IdEmpresa      = info.IdEmpresa,
                                fa_IdSucursal     = info.IdSucursal,
                                fa_IdBodega       = info.IdBodega,
                                fa_IdCbteVta      = item.IdCbteVta,
                                gi_IdEmpresa      = info.IdEmpresa,
                                gi_IdSucursal     = info.IdSucursal,
                                gi_IdBodega       = info.IdBodega,
                                gi_IdGuiaRemision = info.IdGuiaRemision
                            });
                        }
                    }

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

                    if (info_puntovta != null)
                    {
                        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.NumGuia_Preimpresa = info.NumGuia_Preimpresa = 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.NumGuia_Preimpresa;
                            info_talonario.IdSucursal       = info.IdSucursal;
                            info_talonario.Usado            = true;
                            data_talonario.modificar_estado_usadoDB(info_talonario);
                        }
                    }

                    #endregion
                    Context.fa_guia_remision.Add(Entity);
                    Context.SaveChanges();
                }
                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_guia_remision_Data", Metodo = "guardarDB", IdUsuario = info.IdUsuarioCreacion
                });
                return(false);
            }
        }