public Boolean GuardarDB(in_Guia_x_traspaso_bodega_Info info, ref decimal IdGuia, ref string mensaje)
        {
            try
            {
                try
                {
                    using (EntitiesInventario Context = new EntitiesInventario())
                    {
                        in_Guia_x_traspaso_bodega_x_in_transferencia_det_Data Data_transferencia = new in_Guia_x_traspaso_bodega_x_in_transferencia_det_Data();
                        var Address = new in_Guia_x_traspaso_bodega();

                        Address.IdEmpresa = info.IdEmpresa;
                        Address.IdGuia    = info.IdGuia = GetIdGuia(info.IdEmpresa);
                        IdGuia            = info.IdGuia;

                        if (info.NumGuia == "")
                        {
                            info.NumGuia = info.IdGuia.ToString();
                        }

                        Address.NumGuia = info.NumGuia;

                        if (info.IdSucursal_Partida == 0)
                        {
                            info.IdSucursal_Partida = null;
                        }

                        Address.IdSucursal_Partida = info.IdSucursal_Partida;

                        if (info.IdSucursal_Llegada == 0)
                        {
                            info.IdSucursal_Llegada = null;
                        }

                        Address.IdSucursal_Llegada = info.IdSucursal_Llegada;

                        if (info.Direc_sucu_Partida == "")
                        {
                            info.Direc_sucu_Partida = null;
                        }

                        Address.Direc_sucu_Partida = info.Direc_sucu_Partida;

                        if (info.Direc_sucu_Llegada == "")
                        {
                            info.Direc_sucu_Llegada = null;
                        }

                        Address.Direc_sucu_Llegada = info.Direc_sucu_Llegada;

                        if (info.IdTransportista == 0)
                        {
                            info.IdTransportista = null;
                        }

                        if (info.IdMotivo_Traslado == "")
                        {
                            info.IdMotivo_Traslado = null;
                        }

                        Address.IdMotivo_Traslado = info.IdMotivo_Traslado;
                        Address.IdTransportista   = info.IdTransportista;

                        Address.Fecha          = Convert.ToDateTime(info.Fecha.ToShortDateString());
                        Address.Fecha_Traslado = Convert.ToDateTime(info.Fecha_Traslado.ToShortDateString());
                        Address.Fecha_llegada  = Convert.ToDateTime(info.Fecha_llegada.ToShortDateString());
                        Address.Estado         = "A";

                        Address.IdUsuario     = info.IdUsuario;
                        Address.Fecha_Transac = info.Fecha_Transac;
                        Address.nom_pc        = info.nom_pc;
                        Address.ip            = info.ip;
                        Address.Hora_Llegada  = info.Hora_Llegada;
                        Address.Hora_Traslado = info.Hora_Traslado;

                        Address.CodDocumentoTipo  = info.CodDocumentoTipo;
                        Address.IdEstablecimiento = info.IdEstablecimiento;
                        Address.IdPuntoEmision    = info.IdPuntoEmision;
                        Address.NumDocumento_Guia = info.NumDocumento_Guia;


                        Context.in_Guia_x_traspaso_bodega.Add(Address);
                        Context.SaveChanges();


                        //Grabar Detalles

                        //Graba tabla in_Guia_x_traspaso_bodega_det
                        if (info.list_detalle_Guia != null)
                        {
                            if (info.list_detalle_Guia.Count() != 0)
                            {
                                foreach (var item in info.list_detalle_Guia)
                                {
                                    item.IdEmpresa = info.IdEmpresa;
                                    item.IdGuia    = IdGuia;
                                }

                                in_Guia_x_traspaso_bodega_det_Data odata = new in_Guia_x_traspaso_bodega_det_Data();
                                odata.GuardarDB(info.list_detalle_Guia);
                            }
                        }
                        //Graba tabla in_Guia_x_traspaso_bodega_det_sin_oc
                        if (info.list_detalle_Guia_Sin_OC != null)
                        {
                            if (info.list_detalle_Guia_Sin_OC.Count() != 0)
                            {
                                foreach (var item in info.list_detalle_Guia_Sin_OC)
                                {
                                    item.IdEmpresa = info.IdEmpresa;
                                    item.IdGuia    = IdGuia;
                                }

                                in_Guia_x_traspaso_bodega_det_sin_oc_Data odata = new in_Guia_x_traspaso_bodega_det_sin_oc_Data();
                                odata.GuardarDB(info.list_detalle_Guia_Sin_OC);
                            }
                        }


                        if (info.Lista_Detalle_Transferencia != null)
                        {
                            foreach (var item in info.Lista_Detalle_Transferencia)
                            {
                                item.IdGuia = Convert.ToInt32(IdGuia);
                            }

                            Data_transferencia.Guardar(info.Lista_Detalle_Transferencia);
                        }
                        mensaje = "Grabación ok..";
                    }
                    return(true);
                }
                catch (DbEntityValidationException 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);
                    oDataLog.Guardar_Log_Error(Log_Error_sis, ref mensaje);
                    mensaje = ex.ToString() + " " + ex.Message;
                    mensaje = "Error al Grabar" + ex.Message;
                    throw new Exception(ex.ToString());
                }
            }
            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);
                oDataLog.Guardar_Log_Error(Log_Error_sis, ref mensaje);
                mensaje = ex.ToString() + " " + ex.Message;
                throw new Exception(ex.ToString());
            }
        }
        public Boolean ModificarDB(in_Guia_x_traspaso_bodega_Info info, ref string mensaje)
        {
            try
            {
                try
                {
                    using (EntitiesInventario context = new EntitiesInventario())
                    {
                        var contact = context.in_Guia_x_traspaso_bodega.FirstOrDefault(var => var.IdEmpresa == info.IdEmpresa && var.IdGuia == info.IdGuia);
                        if (contact != null)
                        {
                            contact.NumGuia            = info.NumGuia;
                            contact.IdSucursal_Partida = info.IdSucursal_Partida;
                            contact.IdSucursal_Llegada = info.IdSucursal_Llegada;

                            contact.Direc_sucu_Partida = info.Direc_sucu_Partida;
                            contact.Direc_sucu_Llegada = info.Direc_sucu_Llegada;
                            contact.IdTransportista    = info.IdTransportista;
                            contact.Fecha             = Convert.ToDateTime(info.Fecha.ToShortDateString());
                            contact.Fecha_Traslado    = Convert.ToDateTime(info.Fecha_Traslado.ToShortDateString());
                            contact.Fecha_llegada     = Convert.ToDateTime(info.Fecha_llegada.ToShortDateString());
                            contact.IdMotivo_Traslado = info.IdMotivo_Traslado;

                            contact.Hora_Llegada  = info.Hora_Llegada;
                            contact.Hora_Traslado = info.Hora_Traslado;

                            contact.Fecha_UltMod    = info.Fecha_UltMod;
                            contact.IdUsuarioUltMod = info.IdUsuarioUltMod;


                            contact.CodDocumentoTipo  = info.CodDocumentoTipo;
                            contact.IdEstablecimiento = info.IdEstablecimiento;
                            contact.IdPuntoEmision    = info.IdPuntoEmision;
                            contact.NumDocumento_Guia = info.NumDocumento_Guia;

                            context.SaveChanges();

                            in_Guia_x_traspaso_bodega_det_Data odataDet = new in_Guia_x_traspaso_bodega_det_Data();
                            odataDet.EliminarDB(info.IdEmpresa, info.IdGuia);

                            //Graba tabla in_Guia_x_traspaso_bodega_det
                            foreach (var item in info.list_detalle_Guia)
                            {
                                item.IdEmpresa = info.IdEmpresa;
                                item.IdGuia    = info.IdGuia;
                            }

                            in_Guia_x_traspaso_bodega_det_Data oData_con_OC = new in_Guia_x_traspaso_bodega_det_Data();
                            oData_con_OC.GuardarDB(info.list_detalle_Guia);


                            in_Guia_x_traspaso_bodega_det_sin_oc_Data odataDetsinOC = new in_Guia_x_traspaso_bodega_det_sin_oc_Data();
                            odataDetsinOC.EliminarDB(info.IdEmpresa, info.IdGuia);

                            //Graba tabla in_Guia_x_traspaso_bodega_det_sin_oc
                            foreach (var item in info.list_detalle_Guia_Sin_OC)
                            {
                                item.IdEmpresa = info.IdEmpresa;
                                item.IdGuia    = info.IdGuia;
                            }

                            in_Guia_x_traspaso_bodega_det_sin_oc_Data oData_sin_oc = new in_Guia_x_traspaso_bodega_det_sin_oc_Data();
                            oData_sin_oc.GuardarDB(info.list_detalle_Guia_Sin_OC);


                            if (info.Lista_Detalle_Transferencia.Count != 0)
                            {
                                in_Guia_x_traspaso_bodega_x_in_transferencia_det_Data Data_transf = new in_Guia_x_traspaso_bodega_x_in_transferencia_det_Data();
                                if (Data_transf.Eliminar(info.Lista_Detalle_Transferencia.FirstOrDefault()))
                                {
                                    Data_transf.Guardar(info.Lista_Detalle_Transferencia);
                                }
                            }

                            mensaje = "Actualización ok..";
                        }
                    }
                    return(true);
                }
                catch (DbEntityValidationException 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);
                    oDataLog.Guardar_Log_Error(Log_Error_sis, ref mensaje);
                    mensaje = ex.ToString() + " " + ex.Message;
                    mensaje = "Error al Grabar" + ex.Message;
                    throw new Exception(ex.ToString());
                }
            }
            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);
                oDataLog.Guardar_Log_Error(Log_Error_sis, ref mensaje);
                mensaje = ex.ToString() + " " + ex.Message;
                throw new Exception(ex.ToString());
            }
        }