public ResultadoId Contable_Asiento_Editar(DTO.Contable.Asiento.Insertar ficha) { ResultadoId result = new ResultadoId(); try { using (var ctx = new dBEntities(_cn.ConnectionString)) { using (var ts = ctx.Database.BeginTransaction()) { try { var FechaSistema = ctx.Database.SqlQuery <DateTime>("select NOW()").FirstOrDefault(); var entA = ctx.contabilidad_asiento.Find(ficha.IdAsientoEditado); var entADoc = ctx.contabilidad_asiento_documento.Where(d => d.idAsiento == ficha.IdAsientoEditado).ToList(); var entADet = ctx.contabilidad_asiento_detalle.Where(d => d.idAsiento == ficha.IdAsientoEditado).ToList(); var entARes = ctx.contabilidad_asiento_resumen.Where(d => d.idAsiento == ficha.IdAsientoEditado).ToList(); int cnt = entA.numeroComprobante; foreach (var rs in entARes) { ctx.contabilidad_asiento_resumen.Remove(rs); ctx.SaveChanges(); } foreach (var dt in entADet) { var debe = dt.montoDebe; var haber = dt.montoHaber; var entDt = dt.contabilidad_plancta; var nivel = entDt.nivel; entDt.debe -= debe; entDt.haber -= haber; ctx.SaveChanges(); if (nivel >= 1) { var entNiv = entDt; for (var nv = nivel; nv > 1; nv--) { entNiv = entNiv.contabilidad_plancta2; entNiv.debe -= debe; entNiv.haber -= haber; ctx.SaveChanges(); } } ctx.contabilidad_asiento_detalle.Remove(dt); } foreach (var doc in entADoc) { ctx.contabilidad_asiento_documento.Remove(doc); } ctx.contabilidad_asiento.Remove(entA); // var ent = new contabilidad_asiento() { fechaEmision = FechaSistema.Date, mesRelacion = ficha.PeriodoMes, anoRelacion = ficha.PeriodoAno, descripcion = ficha.DescripcionDocumentoRef, tipoAsiento = (int)ficha.TipoAsiento, autoGenerado = "N", estaAnulado = "N", estaProcesado = "S", numeroComprobante = cnt, renglones = 1, tipoDocumento = ficha.DescTipoDocumento, idTipoDocumento = ficha.IdTipoDocumento, reglaIntegracionCod = "", reglaIntegracionDesc = "", importe = ficha.Importe }; ctx.contabilidad_asiento.Add(ent); ctx.SaveChanges(); var entDoc = new contabilidad_asiento_documento() { idAsiento = ent.id, documento = ficha.DocumentoRef, fecha = ficha.FechaDocumentoRef, descripcion = ficha.DescripcionDocumentoRef, signo = 1, incluir = "S", }; ctx.contabilidad_asiento_documento.Add(entDoc); ctx.SaveChanges(); var reng = 0; foreach (var it in ficha.Ctas) { reng += 1; var entDet = new contabilidad_asiento_detalle() { idAsiento = ent.id, idAsientoDocumento = entDoc.id, idPlanCta = it.Id, numRenglon = reng, codigoCta = it.codigo, descripcionCta = it.Descripcion, montoDebe = it.MontoDebe, montoHaber = it.MontoHaber, naturalezaCta = (it.Naturaleza == DTO.Contable.PlanCta.Enumerados.Naturaleza.Deudora ? "D" : "A"), }; ctx.contabilidad_asiento_detalle.Add(entDet); ctx.SaveChanges(); var entAsientoResumen = new contabilidad_asiento_resumen() { idAsiento = ent.id, idPlanCta = it.Id, codigoCta = it.codigo, descripcionCta = it.Descripcion, montoDebe = it.MontoDebe, montoHaber = it.MontoHaber }; ctx.contabilidad_asiento_resumen.Add(entAsientoResumen); ctx.SaveChanges(); var entPlanCta = ctx.contabilidad_plancta.Find(it.Id); entPlanCta.debe += it.MontoDebe; entPlanCta.haber += it.MontoHaber; ctx.SaveChanges(); var nivel = entPlanCta.nivel; if (nivel >= 1) { var entNiv = entPlanCta; for (var nv = nivel; nv > 1; nv--) { entNiv = entNiv.contabilidad_plancta2; entNiv.debe += it.MontoDebe; entNiv.haber += it.MontoHaber; ctx.SaveChanges(); } } } ts.Commit(); result.Id = ent.id; } catch (Exception ex) { throw new Exception(ex.Message); } finally { ctx.Configuration.AutoDetectChangesEnabled = true; } } } } catch (Exception e) { result.Mensaje = e.Message; result.Result = DTO.EnumResult.isError; result.Id = -1; } return(result); }
public ResultadoId Contable_Asiento_Preview(DTO.Contable.Asiento.Insertar ficha) { ResultadoId result = new ResultadoId(); try { using (var ctx = new dBEntities(_cn.ConnectionString)) { using (var ts = new TransactionScope()) { var FechaSistema = ctx.Database.SqlQuery <DateTime>("select NOW()").FirstOrDefault(); int cnt = 0; if (ficha.IdAsientoPreview != -1) { var entA = ctx.contabilidad_asiento.Find(ficha.IdAsientoPreview); var entADoc = ctx.contabilidad_asiento_documento.Where(d => d.idAsiento == ficha.IdAsientoPreview).ToList(); var entADet = ctx.contabilidad_asiento_detalle.Where(d => d.idAsiento == ficha.IdAsientoPreview).ToList(); cnt = entA.numeroComprobante; foreach (var dt in entADet) { ctx.contabilidad_asiento_detalle.Remove(dt); ctx.SaveChanges(); } foreach (var doc in entADoc) { ctx.contabilidad_asiento_documento.Remove(doc); ctx.SaveChanges(); } ctx.contabilidad_asiento.Remove(entA); ctx.SaveChanges(); } else { var cont = ctx.contabilidad_contadores.Find(1); cont.cnt_aisento_preview += 1; cnt = cont.cnt_aisento_preview; ctx.SaveChanges(); } var ent = new contabilidad_asiento() { fechaEmision = FechaSistema.Date, mesRelacion = ficha.PeriodoMes, anoRelacion = ficha.PeriodoAno, descripcion = ficha.DescripcionDocumentoRef, tipoAsiento = (int)ficha.TipoAsiento, autoGenerado = "N", estaAnulado = "N", estaProcesado = "N", numeroComprobante = cnt, renglones = 1, tipoDocumento = ficha.DescTipoDocumento, idTipoDocumento = ficha.IdTipoDocumento, reglaIntegracionCod = "", reglaIntegracionDesc = "", importe = ficha.Importe }; ctx.contabilidad_asiento.Add(ent); ctx.SaveChanges(); var entDoc = new contabilidad_asiento_documento() { idAsiento = ent.id, documento = ficha.DocumentoRef, fecha = ficha.FechaDocumentoRef, descripcion = ficha.DescripcionDocumentoRef, signo = 1, incluir = "S", }; ctx.contabilidad_asiento_documento.Add(entDoc); ctx.SaveChanges(); var reng = 0; foreach (var it in ficha.Ctas) { reng += 1; var entDet = new contabilidad_asiento_detalle() { idAsiento = ent.id, idAsientoDocumento = entDoc.id, idPlanCta = it.Id, numRenglon = reng, codigoCta = it.codigo, descripcionCta = it.Descripcion, montoDebe = it.MontoDebe, montoHaber = it.MontoHaber, naturalezaCta = (it.Naturaleza == DTO.Contable.PlanCta.Enumerados.Naturaleza.Deudora ? "D" : "A"), }; ctx.contabilidad_asiento_detalle.Add(entDet); ctx.SaveChanges(); } ts.Complete(); result.Id = ent.id; } } } catch (Exception e) { result.Mensaje = e.Message; result.Result = DTO.EnumResult.isError; result.Id = -1; } return(result); }