public void Grabar()
        {
            using (var context = new ApplicationDbContext())
            {
                using (var dbContextTransaction = context.Database.BeginTransaction())
                {
                    AjusteInventario model = this.ToModel();

                    if (IsNew)
                    {
                        context.AjusteInventarios.Add(model);
                    }
                    else
                    {
                        if (IsOld)
                        {
                            context.Entry(model).State = EntityState.Modified;
                        }
                    }
                    //Childs
                    foreach (AjusteInventarioDetalleViewModel viewModel in AjusteInventarioDetalleViewModels)
                    {
                        viewModel.Grabar(context);
                    }
                    //Childs deletes
                    foreach (var viewModel in AjusteInventarioDetalleViewModels.GetRemoveItems())
                    {
                        viewModel.Eliminar(context);
                    }
                    try
                    {
                        context.SaveChanges();
                        //Se genera el movimiento
                        var tipoAjusteInventario = context.TipoAjusteInventarios
                                                   .FirstOrDefault(o => o.TipoAjusteInventarioId == _TipoAjusteInventarioId);
                        switch (tipoAjusteInventario.Codigo)
                        {
                        case "AJI":
                            //Recepcion
                            InventarioCommand.GenerarRecepcion(this, context);
                            break;

                        case "AJS":
                            //Despacho
                            InventarioCommand.GenerarDespacho(this, context);
                            break;
                        }
                        _IsNew = false;
                        _IsOld = false;
                        _AjusteInventarioId = model.AjusteInventarioId;
                    }
                    catch (Exception ex)
                    {
                        dbContextTransaction.Rollback();
                        throw ex;
                    }
                }
            }
        }
예제 #2
0
        public void Grabar()
        {
            using (ApplicationDbContext context = new ApplicationDbContext())
            {
                using (var dbContextTransaction = context.Database.BeginTransaction())
                {
                    Venta model = this.ToModel();

                    if (IsNew)
                    {
                        context.Ventas.Add(model);
                    }
                    else
                    {
                        if (IsOld)
                        {
                            context.Entry(model).State = EntityState.Modified;
                        }
                    }
                    //Childs
                    foreach (VentaDetalleViewModel viewModel in VentaDetalleViewModels)
                    {
                        viewModel.Grabar(context);
                    }
                    //Childs deletes
                    foreach (var viewModel in VentaDetalleViewModels.GetRemoveItems())
                    {
                        viewModel.Eliminar(context);
                    }

                    try
                    {
                        context.SaveChanges();
                        var aplicacionConfiguracion = context.AplicacionConfiguracions.FirstOrDefault();
                        if (aplicacionConfiguracion == null)
                        {
                            throw new Exception("No existe registro de configuración¡¡");
                        }
                        if (aplicacionConfiguracion.VentaGeneraDespacho)
                        {
                            //Se genera el despacho
                            InventarioCommand.GenerarDespacho(this, context);
                        }
                        dbContextTransaction.Commit();

                        _IsNew   = false;
                        _IsOld   = false;
                        _VentaId = model.VentaId;
                    }
                    catch (Exception ex)
                    {
                        dbContextTransaction.Rollback();
                        throw ex;
                    }
                }
            }
        }