//guardar carga masiva public string saveFile(CargaMasivaCreateDto model) { var rpta = ""; try { using (var ctx = new PresupuestoContext()) { using (DbContextTransaction transaction = ctx.Database.BeginTransaction()) { try { foreach (var d in model.detalle) { var detalle = new SPDetallePresupuesto { Id = model.Id, presupuestoId = model.presupuestoId, referencia = d.referencia, cantidad = d.cantidad, total_referencia = d.total_referencia, fincaId = d.fincaId, subloteId = d.subloteId, unidad_by_p_cs = d.unidad_by_p_cs, costo_by_p_cs = d.costo_by_p_cs }; ctx.Configuration.AutoDetectChangesEnabled = false; ctx.SPDetallePresupuesto.Add(detalle); ctx.SaveChanges(); var detalleId = detalle.Id; if (model.codigoTipo == "P_MO") { //obtener dimensiones por actividad SPDimension _dimension = new SPDimension(); var dimensiones = _dimension.GetDimensionesbyActividad(detalle.referencia); if (dimensiones.Count > 0) { //eliminamos los existentes para sustituirlos var costosdim = ctx.SPCostoByDimension.Where(x => x.detalle_presupuesdoId == detalleId).ToList(); ctx.SPCostoByDimension.RemoveRange(costosdim); ctx.SaveChanges(); foreach (var ca in dimensiones) { var costo_actividad = new SPCostoByDimension { dimensionId = ca.dimensionId, detalle_presupuesdoId = detalleId, costo = Convert.ToDouble(detalle.total_referencia) * (ca.factor / 100) }; //costo_actividad.costo = Math.Round(Convert.ToDecimal(costo_actividad.costo), 2); ctx.Configuration.AutoDetectChangesEnabled = false; ctx.SPCostoByDimension.Add(costo_actividad); ctx.SaveChanges(); } } } } transaction.Commit(); rpta = "Carga de datos realizada correctamente"; } catch (Exception e) { transaction.Rollback(); throw e; } } } } catch (Exception e) { throw e; } return(rpta); }
//guardar o actualizar lotes public string Save(CreateDetalleManoObraDto model) { var rpta = ""; try { using (var ctx = new PresupuestoContext()) { using (DbContextTransaction transaction = ctx.Database.BeginTransaction()) { try { if (model.referencia == null) { model.referencia = model.referencia_producto; } var d_manoObra = new SPDetallePresupuesto { Id = model.Id, presupuestoId = model.presupuestoId, fincaId = model.fincaId, subloteId = model.loteId, referencia = model.referencia, total_referencia = model.total_referencia, cantidad = model.cantidad, unidad_by_p_cs = model.unidad_by_p_cs, costo_by_p_cs = model.costo_by_p_cs, estado = "I" }; if (d_manoObra.Id > 0) { ctx.Entry(d_manoObra).State = EntityState.Modified; } else { ctx.Entry(d_manoObra).State = EntityState.Added; } ctx.SaveChanges(); ctx.Database.ExecuteSqlCommand("UPDATE SPDetallePresupuesto SET estado = 'I' WHERE presupuestoId IN (@p0) and fincaId IN (@p1)", d_manoObra.presupuestoId, d_manoObra.fincaId); var detalleId = d_manoObra.Id; //obtener dimensiones por actividad SPDimension _dimension = new SPDimension(); var dimensiones = _dimension.GetDimensionesbyActividad(d_manoObra.referencia); if (dimensiones.Count > 0) { //eliminamos los existentes para sustituirlos var costosdim = ctx.SPCostoByDimension.Where(x => x.detalle_presupuesdoId == detalleId).ToList(); ctx.SPCostoByDimension.RemoveRange(costosdim); ctx.SaveChanges(); foreach (var ca in dimensiones) { var costo_actividad = new SPCostoByDimension { dimensionId = ca.dimensionId, detalle_presupuesdoId = detalleId, costo = Convert.ToDouble(d_manoObra.total_referencia) * (ca.factor / 100) }; //costo_actividad.costo = Math.Round(Convert.ToDecimal(costo_actividad.costo), 2); ctx.SPCostoByDimension.Add(costo_actividad); ctx.SaveChanges(); } } transaction.Commit(); rpta = "accion se agrego presupuesto correctamente"; } catch (Exception e) { transaction.Rollback(); throw e; } } } } catch { } return(rpta); }