public static async Task ActualizarSucursalPorEmpresa(SucursalPorEmpresa sucursal, string strToken)
        {
            try
            {
                ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
                StringContent contentJson = serializarEntidad(sucursal);
                if (strToken != "")
                {
                    httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("bearer", strToken);
                }
                HttpResponseMessage httpResponse = await httpClient.PostAsync(strServicioURL + "/actualizarsucursalporempresa", contentJson);

                if (httpResponse.StatusCode == HttpStatusCode.InternalServerError)
                {
                    string strError = serializer.Deserialize <string>(httpResponse.Content.ReadAsStringAsync().Result);
                    throw new Exception(strError);
                }
                if (httpResponse.StatusCode != HttpStatusCode.OK)
                {
                    throw new Exception(httpResponse.ReasonPhrase);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
 public IList <TrasladoDetalle> ObtenerListadoTrasladosPorAplicar(int intIdEmpresa, int intIdSucursalDestino, bool bolAplicado, int numPagina, int cantRec)
 {
     using (IDbContext dbContext = localContainer.Resolve <IDbContext>())
     {
         var listaTraslado = new List <TrasladoDetalle>();
         try
         {
             var listado = dbContext.TrasladoRepository.Where(x => !x.Nulo && x.IdEmpresa == intIdEmpresa && x.IdSucursalDestino == intIdSucursalDestino && x.Aplicado == bolAplicado);
             listado = listado.OrderByDescending(x => x.IdTraslado).Skip((numPagina - 1) * cantRec).Take(cantRec);
             var lineas = listado.ToList();
             foreach (var traslado in lineas)
             {
                 string             strNombreSucursal = "NOMBRE DE SUCURSAL NO DISPONIBLE";
                 SucursalPorEmpresa sucursalDestino   = dbContext.SucursalPorEmpresaRepository.FirstOrDefault(x => x.IdEmpresa == intIdEmpresa && x.IdSucursal == traslado.IdSucursalOrigen);
                 if (sucursalDestino != null)
                 {
                     strNombreSucursal = sucursalDestino.NombreSucursal;
                 }
                 TrasladoDetalle item = new TrasladoDetalle(traslado.IdTraslado, traslado.Fecha.ToString("dd/MM/yyyy"), strNombreSucursal, traslado.Total);
                 listaTraslado.Add(item);
             }
             return(listaTraslado);
         }
         catch (Exception ex)
         {
             log.Error("Error al obtener el listado de registros de traslados por aplicar: ", ex);
             throw new Exception("Se produjo un error consultando el listado de traslados por aplicar. Por favor consulte con su proveedor.");
         }
     }
 }
        public static async Task <SucursalPorEmpresa> ObtenerSucursalPorEmpresa(int intIdEmpresa, int intIdSucursal, string strToken)
        {
            try
            {
                ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
                if (strToken != "")
                {
                    httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("bearer", strToken);
                }
                HttpResponseMessage httpResponse = await httpClient.GetAsync(strServicioURL + "/obtenersucursalporempresa?idempresa=" + intIdEmpresa + "&idsucursal=" + intIdSucursal);

                if (httpResponse.StatusCode == HttpStatusCode.InternalServerError)
                {
                    string strError = serializer.Deserialize <string>(httpResponse.Content.ReadAsStringAsync().Result);
                    throw new Exception(strError);
                }
                if (httpResponse.StatusCode != HttpStatusCode.OK)
                {
                    throw new Exception(httpResponse.ReasonPhrase);
                }
                SucursalPorEmpresa sucursal        = null;
                string             responseContent = await httpResponse.Content.ReadAsStringAsync();

                string strResponse = serializer.Deserialize <string>(responseContent);
                if (strResponse != "")
                {
                    sucursal = serializer.Deserialize <SucursalPorEmpresa>(strResponse);
                }
                return(sucursal);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Exemple #4
0
        private async void CargarSucursalPorEmpresa()
        {
            if (txtIdEmpresa.Text != "" && txtIdSucursal.Text != "")
            {
                sucursal = await Administrador.ObtenerSucursalPorEmpresa(int.Parse(txtIdEmpresa.Text), int.Parse(txtIdSucursal.Text), strToken);

                if (sucursal == null)
                {
                    bolSucursalNueva            = true;
                    bolTerminalNueva            = true;
                    sucursal                    = new SucursalPorEmpresa();
                    sucursal.IdEmpresa          = int.Parse(txtIdEmpresa.Text);
                    sucursal.IdSucursal         = int.Parse(txtIdSucursal.Text);
                    txtNombreSucursal.Text      = txtNombreComercial.Text != "" ? txtNombreComercial.Text : txtNombreEmpresa.Text;
                    txtDireccionSucursal.Text   = txtDireccion.Text;
                    txtTelefonoSucursal.Text    = txtTelefono.Text;
                    txtIdTerminal.Text          = "1";
                    txtDescripcionTerminal.Text = "Terminal 1";
                    txtValorRegistro.Text       = "";
                    terminal                    = new TerminalPorSucursal();
                    terminal.IdEmpresa          = int.Parse(txtIdEmpresa.Text);
                    terminal.IdSucursal         = int.Parse(txtIdSucursal.Text);
                    terminal.IdTerminal         = 1;
                    terminal.ValorRegistro      = "";
                    terminal.ImpresoraFactura   = "";
                    terminal.AnchoLinea         = 0;
                    terminal.UltimoDocFE        = 0;
                    terminal.UltimoDocND        = 0;
                    terminal.UltimoDocNC        = 0;
                    terminal.UltimoDocTE        = 0;
                    terminal.UltimoDocMR        = 0;
                    terminal.IdTipoDispositivo  = chkDispositivoMovil.Checked ? StaticTipoDispisitivo.AppMovil : StaticTipoDispisitivo.AppEscritorio;
                    txtIdTerminal.Enabled       = false;
                    txtValorRegistro.Enabled    = false;
                    btnCargarTerminal.Enabled   = false;
                    MessageBox.Show("La sucursal no están registrada para la empresa actual. Ingrese la información y proceda a guardar los cambios. . .", "Leandro Software", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else
                {
                    bolSucursalNueva            = false;
                    bolTerminalNueva            = false;
                    terminal                    = null;
                    txtIdTerminal.Text          = "";
                    txtDescripcionTerminal.Text = "";
                    chkDispositivoMovil.Checked = false;
                    txtNombreSucursal.Text      = sucursal.NombreSucursal;
                    txtDireccionSucursal.Text   = sucursal.Direccion;
                    txtTelefonoSucursal.Text    = sucursal.Telefono;
                    txtIdTerminal.Enabled       = true;
                    txtValorRegistro.Enabled    = true;
                    btnCargarTerminal.Enabled   = true;
                }
            }
        }
 public void AnularTraslado(int intIdTraslado, int intIdUsuario, string strMotivoAnulacion)
 {
     using (IDbContext dbContext = localContainer.Resolve <IDbContext>())
     {
         try
         {
             Traslado traslado = dbContext.TrasladoRepository.Include("DetalleTraslado").FirstOrDefault(x => x.IdTraslado == intIdTraslado);
             if (traslado == null)
             {
                 throw new Exception("El registro de traslado por anular no existe.");
             }
             if (traslado.Nulo)
             {
                 throw new Exception("El registro de traslado ya ha sido anulado.");
             }
             Empresa empresa = dbContext.EmpresaRepository.Find(traslado.IdEmpresa);
             if (empresa == null)
             {
                 throw new BusinessException("Empresa no registrada en el sistema. Por favor, pongase en contacto con su proveedor del servicio.");
             }
             SucursalPorEmpresa sucursal = dbContext.SucursalPorEmpresaRepository.FirstOrDefault(x => x.IdEmpresa == traslado.IdEmpresa && x.IdSucursal == traslado.IdSucursalOrigen);
             if (sucursal == null)
             {
                 throw new BusinessException("Sucursal no registrada en el sistema. Por favor, pongase en contacto con su proveedor del servicio.");
             }
             if (sucursal.CierreEnEjecucion)
             {
                 throw new BusinessException("Se está ejecutando el cierre en este momento. No es posible registrar la transacción.");
             }
             traslado.Nulo            = true;
             traslado.IdAnuladoPor    = intIdUsuario;
             traslado.MotivoAnulacion = strMotivoAnulacion;
             dbContext.NotificarModificacion(traslado);
             if (traslado.IdAsiento > 0)
             {
                 IContabilidadService servicioContabilidad = new ContabilidadService();
                 servicioContabilidad.ReversarAsientoContable(dbContext, traslado.IdAsiento);
             }
             dbContext.Commit();
         }
         catch (BusinessException ex)
         {
             dbContext.RollBack();
             throw ex;
         }
         catch (Exception ex)
         {
             dbContext.RollBack();
             log.Error("Error al anular el registro de traslado: ", ex);
             throw new Exception("Se produjo un error anulando el traslado. Por favor consulte con su proveedor.");
         }
     }
 }
Exemple #6
0
 public void ActualizarSucursalPorEmpresa(string strDatos)
 {
     try
     {
         JObject            parametrosJO = JObject.Parse(strDatos);
         string             strEntidad   = parametrosJO.Property("Entidad").Value.ToString();
         SucursalPorEmpresa sucursal     = serializer.Deserialize <SucursalPorEmpresa>(strEntidad);
         servicioMantenimiento.ActualizarSucursalPorEmpresa(sucursal);
     }
     catch (Exception ex)
     {
         throw new WebFaultException <string>(ex.Message, HttpStatusCode.InternalServerError);
     }
 }
 public string AgregarTraslado(Traslado traslado)
 {
     using (IDbContext dbContext = localContainer.Resolve <IDbContext>())
     {
         try
         {
             Empresa empresa = dbContext.EmpresaRepository.Find(traslado.IdEmpresa);
             if (empresa == null)
             {
                 throw new BusinessException("Empresa no registrada en el sistema. Por favor, pongase en contacto con su proveedor del servicio.");
             }
             SucursalPorEmpresa sucursal = dbContext.SucursalPorEmpresaRepository.FirstOrDefault(x => x.IdEmpresa == traslado.IdEmpresa && x.IdSucursal == traslado.IdSucursalOrigen);
             if (sucursal == null)
             {
                 throw new BusinessException("Sucursal no registrada en el sistema. Por favor, pongase en contacto con su proveedor del servicio.");
             }
             if (sucursal.CierreEnEjecucion)
             {
                 throw new BusinessException("Se está ejecutando el cierre en este momento. No es posible registrar la transacción.");
             }
             traslado.IdAsiento = 0;
             foreach (var detalle in traslado.DetalleTraslado)
             {
                 var existencias = dbContext.ExistenciaPorSucursalRepository.AsNoTracking().Where(x => x.IdEmpresa == empresa.IdEmpresa && x.IdSucursal == traslado.IdSucursalOrigen && x.IdProducto == detalle.IdProducto).FirstOrDefault();
                 if (existencias == null)
                 {
                     throw new BusinessException("El producto " + detalle.IdProducto + " no posee registro de existencias en la sucursal origen del traslado.");
                 }
                 if (detalle.Cantidad > existencias.Cantidad)
                 {
                     throw new BusinessException("La cantidad indicada para el produco " + detalle.IdProducto + " supera las existencias en la sucursal origen del traslado.");
                 }
             }
             dbContext.TrasladoRepository.Add(traslado);
             dbContext.Commit();
         }
         catch (BusinessException ex)
         {
             dbContext.RollBack();
             throw ex;
         }
         catch (Exception ex)
         {
             dbContext.RollBack();
             log.Error("Error al agregar el registro de devolución: ", ex);
             throw new Exception("Se produjo un error agregando la información de la devolución. Por favor consulte con su proveedor.");
         }
     }
     return(traslado.IdTraslado.ToString());
 }
Exemple #8
0
 public string ObtenerSucursalPorEmpresa(int intIdEmpresa, int intIdSucursal)
 {
     try
     {
         SucursalPorEmpresa sucursal     = servicioMantenimiento.ObtenerSucursalPorEmpresa(intIdEmpresa, intIdSucursal);
         string             strRespuesta = "";
         if (sucursal != null)
         {
             strRespuesta = serializer.Serialize(sucursal);
         }
         return(strRespuesta);
     }
     catch (Exception ex)
     {
         throw new WebFaultException <string>(ex.Message, HttpStatusCode.InternalServerError);
     }
 }
 public Traslado ObtenerTraslado(int intIdTraslado)
 {
     using (IDbContext dbContext = localContainer.Resolve <IDbContext>())
     {
         try
         {
             Traslado           traslado       = dbContext.TrasladoRepository.Include("DetalleTraslado.Producto.ParametroImpuesto").FirstOrDefault(x => x.IdTraslado == intIdTraslado);
             SucursalPorEmpresa sucursalOrigen = dbContext.SucursalPorEmpresaRepository.FirstOrDefault(x => x.IdEmpresa == traslado.IdEmpresa && x.IdSucursal == traslado.IdSucursalOrigen);
             traslado.NombreSucursalOrigen = sucursalOrigen.NombreSucursal;
             SucursalPorEmpresa sucursalDestino = dbContext.SucursalPorEmpresaRepository.FirstOrDefault(x => x.IdEmpresa == traslado.IdEmpresa && x.IdSucursal == traslado.IdSucursalDestino);
             traslado.NombreSucursalDestino = sucursalDestino.NombreSucursal;
             foreach (var detalle in traslado.DetalleTraslado)
             {
                 detalle.Traslado = null;
             }
             return(traslado);
         }
         catch (Exception ex)
         {
             log.Error("Error al obtener el registro de traslado: ", ex);
             throw new Exception("Se produjo un error consultado la información del traslado. Por favor consulte con su proveedor.");
         }
     }
 }
        public void AplicarTraslado(int intIdTraslado, int intIdUsuario)
        {
            decimal           decTotalInventario = 0;
            ParametroContable ivaPorPagarParam   = null;
            ParametroContable efectivoParam      = null;
            ParametroContable trasladosParam     = null;
            ParametroContable lineaParam         = null;
            DataTable         dtbInventarios     = new DataTable();

            dtbInventarios.Columns.Add("IdLinea", typeof(int));
            dtbInventarios.Columns.Add("Total", typeof(decimal));
            dtbInventarios.PrimaryKey = new DataColumn[] { dtbInventarios.Columns[0] };
            Asiento asiento = null;

            using (IDbContext dbContext = localContainer.Resolve <IDbContext>())
            {
                try
                {
                    Traslado traslado = dbContext.TrasladoRepository.Include("DetalleTraslado").Where(x => x.IdTraslado == intIdTraslado).FirstOrDefault();
                    if (traslado == null)
                    {
                        throw new Exception("El registro de traslado por aplicar no existe.");
                    }
                    Empresa empresa = dbContext.EmpresaRepository.Find(traslado.IdEmpresa);
                    if (empresa == null)
                    {
                        throw new BusinessException("Empresa no registrada en el sistema. Por favor, pongase en contacto con su proveedor del servicio.");
                    }
                    SucursalPorEmpresa sucursal = dbContext.SucursalPorEmpresaRepository.FirstOrDefault(x => x.IdEmpresa == traslado.IdEmpresa && x.IdSucursal == traslado.IdSucursalDestino);
                    if (sucursal == null)
                    {
                        throw new BusinessException("Sucursal no registrada en el sistema. Por favor, pongase en contacto con su proveedor del servicio.");
                    }
                    if (sucursal.CierreEnEjecucion)
                    {
                        throw new BusinessException("Se está ejecutando el cierre en este momento. No es posible registrar la transacción.");
                    }
                    if (empresa.Contabiliza)
                    {
                        ivaPorPagarParam = dbContext.ParametroContableRepository.Where(x => x.IdTipo == StaticTipoCuentaContable.IVAPorPagar).FirstOrDefault();
                        efectivoParam    = dbContext.ParametroContableRepository.Where(x => x.IdTipo == StaticTipoCuentaContable.Efectivo).FirstOrDefault();
                        if (ivaPorPagarParam == null || efectivoParam == null)
                        {
                            throw new BusinessException("La parametrización contable está incompleta y no se puede continuar. Por favor verificar.");
                        }
                    }
                    traslado.Aplicado      = true;
                    traslado.IdAplicadoPor = intIdUsuario;
                    dbContext.NotificarModificacion(traslado);
                    foreach (var detalleTraslado in traslado.DetalleTraslado)
                    {
                        Producto producto = dbContext.ProductoRepository.Include("Linea").FirstOrDefault(x => x.IdProducto == detalleTraslado.IdProducto);
                        if (producto == null)
                        {
                            throw new Exception("El producto asignado al detalle del traslado no existe");
                        }
                        if (producto.Tipo != StaticTipoProducto.Producto)
                        {
                            throw new BusinessException("El tipo de producto por trasladar no puede ser un servicio. Por favor verificar.");
                        }
                        ExistenciaPorSucursal existencias = dbContext.ExistenciaPorSucursalRepository.Where(x => x.IdEmpresa == producto.IdEmpresa && x.IdProducto == producto.IdProducto && x.IdSucursal == traslado.IdSucursalOrigen).FirstOrDefault();
                        if (existencias != null)
                        {
                            existencias.Cantidad -= detalleTraslado.Cantidad;
                            dbContext.NotificarModificacion(existencias);
                        }
                        else
                        {
                            ExistenciaPorSucursal nuevoRegistro = new ExistenciaPorSucursal
                            {
                                IdEmpresa  = traslado.IdEmpresa,
                                IdSucursal = traslado.IdSucursalOrigen,
                                IdProducto = detalleTraslado.IdProducto,
                                Cantidad   = detalleTraslado.Cantidad * -1
                            };
                            dbContext.ExistenciaPorSucursalRepository.Add(nuevoRegistro);
                        }
                        MovimientoProducto movimiento = new MovimientoProducto
                        {
                            IdProducto  = producto.IdProducto,
                            IdSucursal  = traslado.IdSucursalOrigen,
                            Fecha       = DateTime.Now,
                            PrecioCosto = detalleTraslado.PrecioCosto,
                            Origen      = "Salida de mercancía por traslado entre sucursales",
                            Tipo        = StaticTipoMovimientoProducto.Salida,
                            Cantidad    = detalleTraslado.Cantidad
                        };
                        producto.MovimientoProducto.Add(movimiento);
                        existencias = dbContext.ExistenciaPorSucursalRepository.Where(x => x.IdEmpresa == producto.IdEmpresa && x.IdProducto == producto.IdProducto && x.IdSucursal == traslado.IdSucursalDestino).FirstOrDefault();
                        if (existencias != null)
                        {
                            existencias.Cantidad += detalleTraslado.Cantidad;
                            dbContext.NotificarModificacion(existencias);
                        }
                        else
                        {
                            ExistenciaPorSucursal nuevoRegistro = new ExistenciaPorSucursal
                            {
                                IdEmpresa  = traslado.IdEmpresa,
                                IdSucursal = traslado.IdSucursalDestino,
                                IdProducto = detalleTraslado.IdProducto,
                                Cantidad   = detalleTraslado.Cantidad
                            };
                            dbContext.ExistenciaPorSucursalRepository.Add(nuevoRegistro);
                        }
                        movimiento = new MovimientoProducto
                        {
                            IdProducto  = producto.IdProducto,
                            IdSucursal  = traslado.IdSucursalDestino,
                            Fecha       = DateTime.Now,
                            PrecioCosto = detalleTraslado.PrecioCosto,
                            Origen      = "Ingreso de mercancía por traslado entre sucursales",
                            Tipo        = StaticTipoMovimientoProducto.Entrada,
                            Cantidad    = detalleTraslado.Cantidad
                        };
                        producto.MovimientoProducto.Add(movimiento);
                        if (empresa.Contabiliza)
                        {
                            decimal decTotalPorLinea = Math.Round(detalleTraslado.PrecioCosto * detalleTraslado.Cantidad, 2, MidpointRounding.AwayFromZero);
                            decTotalInventario += decTotalPorLinea;
                            int intExiste = dtbInventarios.Rows.IndexOf(dtbInventarios.Rows.Find(producto.Linea.IdLinea));
                            if (intExiste >= 0)
                            {
                                dtbInventarios.Rows[intExiste]["Total"] = (decimal)dtbInventarios.Rows[intExiste]["Total"] + decTotalPorLinea;
                            }
                            else
                            {
                                DataRow data = dtbInventarios.NewRow();
                                data["IdLinea"] = producto.Linea.IdLinea;
                                data["Total"]   = decTotalPorLinea;
                                dtbInventarios.Rows.Add(data);
                            }
                        }
                    }
                    if (empresa.Contabiliza)
                    {
                        decimal decTotalDiff = decTotalInventario - traslado.Total;
                        if (decTotalDiff != 0)
                        {
                            if (decTotalDiff >= 1 || decTotalDiff <= -1)
                            {
                                throw new Exception("La diferencia de ajuste sobrepasa el valor permitido.");
                            }
                            dtbInventarios.Rows[0]["Total"] = (decimal)dtbInventarios.Rows[0]["Total"] - decTotalDiff;
                            decTotalInventario -= decTotalDiff;
                        }
                        asiento = new Asiento
                        {
                            IdEmpresa    = traslado.IdEmpresa,
                            Fecha        = traslado.Fecha,
                            TotalCredito = 0,
                            TotalDebito  = 0
                        };
                        asiento.Detalle = "Registro de traslado de mercancías entre sucursales.";
                        //Detalle asiento sucursal origne
                        DetalleAsiento detalleAsiento         = new DetalleAsiento();
                        int            intLineaDetalleAsiento = 1;
                        detalleAsiento.Linea = intLineaDetalleAsiento;
                        trasladosParam       = dbContext.ParametroContableRepository.Where(x => x.IdTipo == StaticTipoCuentaContable.Traslados && x.IdProducto == traslado.IdSucursalOrigen).FirstOrDefault();
                        if (trasladosParam == null)
                        {
                            throw new BusinessException("No existe parametrización contable para la sucursal origen " + traslado.IdSucursalOrigen + " y no se puede continuar. Por favor verificar.");
                        }
                        detalleAsiento.IdCuenta      = trasladosParam.IdCuenta;
                        detalleAsiento.Debito        = traslado.Total;
                        detalleAsiento.SaldoAnterior = dbContext.CatalogoContableRepository.Find(detalleAsiento.IdCuenta).SaldoActual;
                        asiento.DetalleAsiento.Add(detalleAsiento);
                        asiento.TotalDebito += detalleAsiento.Debito;
                        foreach (DataRow data in dtbInventarios.Rows)
                        {
                            detalleAsiento          = new DetalleAsiento();
                            intLineaDetalleAsiento += 1;
                            detalleAsiento.Linea    = intLineaDetalleAsiento;
                            int intIdLinea = (int)data["IdLinea"];
                            lineaParam = dbContext.ParametroContableRepository.Where(x => x.IdTipo == StaticTipoCuentaContable.LineaDeProductos && x.IdProducto == intIdLinea).FirstOrDefault();
                            if (lineaParam == null)
                            {
                                throw new BusinessException("No existe parametrización contable para la línea de producto " + intIdLinea + " y no se puede continuar. Por favor verificar.");
                            }
                            detalleAsiento.IdCuenta      = lineaParam.IdCuenta;
                            detalleAsiento.Credito       = (decimal)data["Total"];
                            detalleAsiento.SaldoAnterior = dbContext.CatalogoContableRepository.Find(detalleAsiento.IdCuenta).SaldoActual;
                            asiento.DetalleAsiento.Add(detalleAsiento);
                            asiento.TotalCredito += detalleAsiento.Credito;
                        }
                        //Detalle asiento sucursal destino
                        detalleAsiento         = new DetalleAsiento();
                        intLineaDetalleAsiento = 2;
                        detalleAsiento.Linea   = intLineaDetalleAsiento;
                        trasladosParam         = dbContext.ParametroContableRepository.Where(x => x.IdTipo == StaticTipoCuentaContable.Traslados && x.IdProducto == traslado.IdSucursalDestino).FirstOrDefault();
                        if (trasladosParam == null)
                        {
                            throw new BusinessException("No existe parametrización contable para la sucursal destino " + traslado.IdSucursalOrigen + " y no se puede continuar. Por favor verificar.");
                        }
                        detalleAsiento.IdCuenta      = trasladosParam.IdCuenta;
                        detalleAsiento.Credito       = traslado.Total;
                        detalleAsiento.SaldoAnterior = dbContext.CatalogoContableRepository.Find(detalleAsiento.IdCuenta).SaldoActual;
                        asiento.DetalleAsiento.Add(detalleAsiento);
                        asiento.TotalCredito += detalleAsiento.Credito;
                        foreach (DataRow data in dtbInventarios.Rows)
                        {
                            detalleAsiento          = new DetalleAsiento();
                            intLineaDetalleAsiento += 1;
                            detalleAsiento.Linea    = intLineaDetalleAsiento;
                            int intIdLinea = (int)data["IdLinea"];
                            lineaParam = dbContext.ParametroContableRepository.Where(x => x.IdTipo == StaticTipoCuentaContable.LineaDeProductos && x.IdProducto == intIdLinea).FirstOrDefault();
                            if (lineaParam == null)
                            {
                                throw new BusinessException("No existe parametrización contable para la línea de producto " + intIdLinea + " y no se puede continuar. Por favor verificar.");
                            }
                            detalleAsiento.IdCuenta      = lineaParam.IdCuenta;
                            detalleAsiento.Debito        = (decimal)data["Total"];
                            detalleAsiento.SaldoAnterior = dbContext.CatalogoContableRepository.Find(detalleAsiento.IdCuenta).SaldoActual;
                            asiento.DetalleAsiento.Add(detalleAsiento);
                            asiento.TotalDebito += detalleAsiento.Debito;
                        }
                        IContabilidadService servicioContabilidad = new ContabilidadService();
                        servicioContabilidad.AgregarAsiento(dbContext, asiento);
                    }
                    dbContext.Commit();
                    if (asiento != null)
                    {
                        traslado.IdAsiento = asiento.IdAsiento;
                        dbContext.NotificarModificacion(traslado);
                        asiento.Detalle += traslado.IdTraslado;
                        dbContext.NotificarModificacion(asiento);
                    }
                    dbContext.Commit();
                }
                catch (BusinessException ex)
                {
                    dbContext.RollBack();
                    throw ex;
                }
                catch (Exception ex)
                {
                    dbContext.RollBack();
                    log.Error("Error al aplicar el registro de traslado: ", ex);
                    throw new Exception("Se produjo un error aplicando la información del traslado. Por favor consulte con su proveedor.");
                }
            }
        }