public IHttpActionResult SaveRendicion(Models.DTO.Curso curso) { try { int usuarioId = int.Parse(DbContextAIVH.GetUserName(User)); List <Models.CursoGastoDetalle> cursoGastoDetalle = new List <Models.CursoGastoDetalle>(); int consecutivoId = 1; curso.gastos.ForEach(n => { cursoGastoDetalle.Add(new Models.CursoGastoDetalle { CursoId = curso.cursoId, ConsecutivoId = consecutivoId, UsuarioId = n.instructorId, ComprobanteTipoId = n.comprobanteTipoId, Fecha = DateTime.ParseExact((n.fecha.Replace("-", "/")), "dd/MM/yyyy", CultureInfo.InvariantCulture), SubConceptoId = n.subConceptoId, Descripcion = n.descripcion, Proveedor = n.proveedor, SubTotal = n.subTotal, Iva = n.iva, Total = n.total }); consecutivoId += 1; }); DateTime?nulo = null; var cursoDb = db.Curso.Where(a => a.CursoId == curso.cursoId).FirstOrDefault(); db.CursoGastoDetalle.RemoveRange(cursoDb.CursoGastoDetalle); cursoDb.Efectivo = curso.efectivo; cursoDb.ChequeTans = curso.chequeTans; cursoDb.FechasChequeTans = curso.fechachequeTans != "" ? DateTime.ParseExact((curso.fechachequeTans.Replace("-", "/")), "dd/MM/yyyy", CultureInfo.InvariantCulture) : nulo; cursoDb.NumeroChequeTans = curso.numeroChequeTans; cursoDb.Fecha = DateTime.Now; cursoDb.Hora = DateTime.Now.TimeOfDay; cursoDb.UsuarioIdActualizo = usuarioId; if (cursoGastoDetalle.Count > 0) { db.CursoGastoDetalle.AddRange(cursoGastoDetalle); } db.SaveChanges(); int cursoId = db.Curso.Local.FirstOrDefault().CursoId; return(Ok(new { message = "El curso se guardó correctamente.", cursoId })); } catch (Exception Ex) { return(BadRequest("Error al guardar curso")); } }
public IHttpActionResult SaveCurso(Models.DTO.Curso curso) { try { int usuarioId = int.Parse(DbContextAIVH.GetUserName(User)); //insertar participantes List <CursoParticipante> cursoParticipante = new List <CursoParticipante>(); int consecutivoId = 1; curso.participantes.ForEach(n => { if (curso.cursoId == 0) { cursoParticipante.Add(new CursoParticipante { ParticipanteId = consecutivoId, Nombre = n.nombre, Apellido = n.apellido, Efectivo = n.efectivo, DepositooTransferencia = n.deposito, Cheque = n.cheque, TarjetaCredito = n.tarjeta, Email = n.email, Celular = n.celular }); } else { cursoParticipante.Add(new CursoParticipante { CursoId = curso.cursoId, ParticipanteId = consecutivoId, Nombre = n.nombre, Apellido = n.apellido, Efectivo = n.efectivo, DepositooTransferencia = n.deposito, Cheque = n.cheque, TarjetaCredito = n.tarjeta, Email = n.email, Celular = n.celular }); } consecutivoId += 1; }); //insertar gastos de comision de instructores var pagoParticipantes = curso.participantes.Sum(a => a.efectivo + a.cheque + a.deposito + a.tarjeta); List <Models.CursoGastoDetalle> cursoGastoDetalle = new List <Models.CursoGastoDetalle>(); if (curso.cursoId == 0) { cursoGastoDetalle.Add(new Models.CursoGastoDetalle { ConsecutivoId = 1, UsuarioId = curso.instructorId1, ComprobanteTipoId = 3, Fecha = DateTime.Now, SubConceptoId = 3, Descripcion = "Comisión por impartición de curso " + curso.comision1 + " %.", Proveedor = db.Usuario.Where(a => a.UsuarioId == curso.instructorId1).Select(b => b.Nombre + " " + b.Paterno + " " + b.Materno).FirstOrDefault(), SubTotal = (curso.comision1 * pagoParticipantes) / 100, Iva = 0, Total = (curso.comision1 * pagoParticipantes) / 100 }); if (curso.instructorId2 != 0) { cursoGastoDetalle.Add(new Models.CursoGastoDetalle { ConsecutivoId = 2, UsuarioId = curso.instructorId2, ComprobanteTipoId = 3, Fecha = DateTime.Now, SubConceptoId = 3, Descripcion = "Comisión por impartición de curso " + curso.comision2 + " %.", Proveedor = db.Usuario.Where(a => a.UsuarioId == curso.instructorId2).Select(b => b.Nombre + " " + b.Paterno + " " + b.Materno).FirstOrDefault(), SubTotal = (curso.comision2 * pagoParticipantes) / 100, Iva = 0, Total = (curso.comision2 * pagoParticipantes) / 100 }); } } else { int consecutivoGastos = 1; cursoGastoDetalle.Add(new Models.CursoGastoDetalle { CursoId = curso.cursoId, ConsecutivoId = consecutivoGastos, UsuarioId = curso.instructorId1, ComprobanteTipoId = 3, Fecha = DateTime.Now, SubConceptoId = 3, Descripcion = "Comisión por impartición de curso " + curso.comision1 + "%.", Proveedor = db.Usuario.Where(a => a.UsuarioId == curso.instructorId1).Select(b => b.Nombre + " " + b.Paterno + " " + b.Materno).FirstOrDefault(), SubTotal = (curso.comision1 * pagoParticipantes) / 100, Iva = 0, Total = (curso.comision1 * pagoParticipantes) / 100 }); if (curso.instructorId2 != 0) { consecutivoGastos += 1; cursoGastoDetalle.Add(new Models.CursoGastoDetalle { CursoId = curso.cursoId, ConsecutivoId = consecutivoGastos, UsuarioId = curso.instructorId2, ComprobanteTipoId = 3, Fecha = DateTime.Now, SubConceptoId = 3, Descripcion = "Comisión por impartición de curso " + curso.comision2 + " %.", Proveedor = db.Usuario.Where(a => a.UsuarioId == curso.instructorId2).Select(b => b.Nombre + " " + b.Paterno + " " + b.Materno).FirstOrDefault(), SubTotal = (curso.comision2 * pagoParticipantes) / 100, Iva = 0, Total = (curso.comision2 * pagoParticipantes) / 100 }); } var gastos = db.CursoGastoDetalle.Where(a => a.CursoId == curso.cursoId && a.SubConceptoId != 3).ToList(); gastos.ForEach(n => { consecutivoGastos += 1; cursoGastoDetalle.Add(new Models.CursoGastoDetalle { CursoId = n.CursoId, ConsecutivoId = consecutivoGastos, UsuarioId = n.UsuarioId, ComprobanteTipoId = n.ComprobanteTipoId, Fecha = n.Fecha, SubConceptoId = n.SubConceptoId, Descripcion = n.Descripcion, Proveedor = n.Proveedor, SubTotal = n.SubTotal, Iva = n.Iva, Total = n.Total }); }); } // insertar curso if (curso.cursoId == 0) { db.Curso.Add(new Models.Curso { CentroCostoId = curso.centroCostosId, SedeId = curso.sedeId, LugarCurso = curso.lugarCurso, CursoTipoId = curso.cursoTipoId, UsuarioId1 = curso.instructorId1, Comision1 = curso.comision1, UsuarioId2 = curso.instructorId2, Comision2 = curso.instructorId2 > 0 ? curso.comision2 : 0, FechaCurso = DateTime.ParseExact((curso.fechaCurso.Replace('-', '/')), "dd/MM/yyyy", CultureInfo.InvariantCulture), Efectivo = 0, ChequeTans = 0, NumeroChequeTans = "", Fecha = DateTime.Now, Hora = DateTime.Now.TimeOfDay, UsuarioIdActualizo = usuarioId, EstatusId = 1, CursoParticipante = cursoParticipante, CursoGastoDetalle = cursoGastoDetalle }); } else { var cursoDb = db.Curso.Where(a => a.CursoId == curso.cursoId).FirstOrDefault(); db.CursoParticipante.RemoveRange(cursoDb.CursoParticipante); db.CursoGastoDetalle.RemoveRange(cursoDb.CursoGastoDetalle); cursoDb.CentroCostoId = curso.centroCostosId; cursoDb.SedeId = curso.sedeId; cursoDb.LugarCurso = curso.lugarCurso; cursoDb.CursoTipoId = curso.cursoTipoId; cursoDb.UsuarioId1 = curso.instructorId1; cursoDb.Comision1 = curso.comision1; cursoDb.UsuarioId2 = curso.instructorId2; cursoDb.Comision2 = curso.instructorId2 > 0 ? curso.comision2 : 0; cursoDb.FechaCurso = DateTime.ParseExact((curso.fechaCurso.Replace('-', '/')), "dd/MM/yyyy", CultureInfo.InvariantCulture); cursoDb.Fecha = DateTime.Now; cursoDb.Hora = DateTime.Now.TimeOfDay; cursoDb.UsuarioIdActualizo = usuarioId; cursoDb.EstatusId = 1; db.CursoParticipante.AddRange(cursoParticipante); db.CursoGastoDetalle.AddRange(cursoGastoDetalle); } db.SaveChanges(); int cursoId = db.Curso.Local.FirstOrDefault().CursoId; return(Ok(new { message = "El curso se guardó correctamente.", cursoId })); } catch (Exception Ex) { return(BadRequest("Error al guardar curso")); } }