public HttpResponseMessage Put([FromBody] Dimensiones dimension) { try { G.AbrirConexionAPP(out db); var Dimension = db.Dimensiones.Where(a => a.id == dimension.id).FirstOrDefault(); if (Dimension != null) { db.Entry(Dimension).State = EntityState.Modified; Dimension.codigoSAP = dimension.codigoSAP; Dimension.Nombre = dimension.Nombre; db.SaveChanges(); } else { throw new Exception("Dimension no existe"); } G.CerrarConexionAPP(db); return(Request.CreateResponse(HttpStatusCode.OK, Dimension)); } catch (Exception ex) { BitacoraErrores be = new BitacoraErrores(); be.Descripcion = ex.Message; be.StackTrace = ex.StackTrace; be.Metodo = "Actualizar Dimension"; be.Fecha = DateTime.Now; db.BitacoraErrores.Add(be); db.SaveChanges(); G.CerrarConexionAPP(db); return(Request.CreateResponse(HttpStatusCode.InternalServerError, ex)); } }
private void btnLayerBitacora_Click(object sender, EventArgs e) { BitacoraErrores be = new BitacoraErrores(); be.StartPosition = FormStartPosition.CenterParent; be.ShowDialog(); }
public async Task <HttpResponseMessage> Get([FromUri] Filtros filtro) { try { G.AbrirConexionAPP(out db); var Login = db.Login.ToList(); if (!string.IsNullOrEmpty(filtro.Texto)) { Login = Login.Where(a => a.Nombre.ToUpper().Contains(filtro.Texto.ToUpper()) || a.Email.ToUpper().Contains(filtro.Texto.ToUpper())).ToList(); } G.CerrarConexionAPP(db); return(Request.CreateResponse(HttpStatusCode.OK, Login)); } catch (Exception ex) { BitacoraErrores be = new BitacoraErrores(); be.Descripcion = ex.Message; be.StackTrace = ex.StackTrace; be.Metodo = "GET de Usuario"; be.Fecha = DateTime.Now; db.BitacoraErrores.Add(be); db.SaveChanges(); G.CerrarConexionAPP(db); return(Request.CreateResponse(HttpStatusCode.InternalServerError, ex)); } }
public async Task <HttpResponseMessage> GetOne([FromUri] int id) { try { G.AbrirConexionAPP(out db); var Login = db.Login.Where(a => a.id == id).FirstOrDefault(); if (Login == null) { throw new Exception("Usuario no existe"); } G.CerrarConexionAPP(db); return(Request.CreateResponse(HttpStatusCode.OK, Login)); } catch (Exception ex) { BitacoraErrores be = new BitacoraErrores(); be.Descripcion = ex.Message; be.StackTrace = ex.StackTrace; be.Metodo = "GET ONE de Usuario"; be.Fecha = DateTime.Now; db.BitacoraErrores.Add(be); db.SaveChanges(); G.CerrarConexionAPP(db); return(Request.CreateResponse(HttpStatusCode.InternalServerError, ex)); } }
public HttpResponseMessage Put([FromBody] CuentasContables cuenta) { try { G.AbrirConexionAPP(out db); var Cuenta = db.CuentasContables.Where(a => a.idCuentaContable == cuenta.idCuentaContable).FirstOrDefault(); if (Cuenta != null) { db.Entry(Cuenta).State = EntityState.Modified; Cuenta.CodSAP = cuenta.CodSAP; Cuenta.Nombre = cuenta.Nombre; db.SaveChanges(); } else { throw new Exception("Cuenta no existe"); } G.CerrarConexionAPP(db); return(Request.CreateResponse(HttpStatusCode.OK, Cuenta)); } catch (Exception ex) { BitacoraErrores be = new BitacoraErrores(); be.Descripcion = ex.Message; be.StackTrace = ex.StackTrace; be.Metodo = "Actualizar Cuenta Contable"; be.Fecha = DateTime.Now; db.BitacoraErrores.Add(be); db.SaveChanges(); G.CerrarConexionAPP(db); return(Request.CreateResponse(HttpStatusCode.InternalServerError, ex)); } }
public HttpResponseMessage Delete([FromUri] int id) { try { G.AbrirConexionAPP(out db); var Cuenta = db.CuentasContables.Where(a => a.idCuentaContable == id).FirstOrDefault(); if (Cuenta != null) { db.CuentasContables.Remove(Cuenta); db.SaveChanges(); } else { throw new Exception("Cuenta no existe"); } G.CerrarConexionAPP(db); return(Request.CreateResponse(HttpStatusCode.OK)); } catch (Exception ex) { BitacoraErrores be = new BitacoraErrores(); be.Descripcion = ex.Message; be.StackTrace = ex.StackTrace; be.Metodo = "Eliminar Cuenta Contable"; be.Fecha = DateTime.Now; db.BitacoraErrores.Add(be); db.SaveChanges(); G.CerrarConexionAPP(db); return(Request.CreateResponse(HttpStatusCode.InternalServerError, ex)); } }
public HttpResponseMessage Delete([FromUri] int id, string CedulaJuridica) { try { G.AbrirConexionAPP(out db); var User = db.Login.Where(a => a.id == id).FirstOrDefault(); var Usuario = dbLogin.LicUsuarios.Where(a => a.Email.ToUpper().Contains(User.Email.ToUpper()) && a.CedulaJuridica == CedulaJuridica).FirstOrDefault(); if (Usuario != null && User != null) { db.Entry(User).State = EntityState.Modified; dbLogin.Entry(Usuario).State = EntityState.Modified; if (Usuario.Activo) { Usuario.Activo = false; User.Activo = Usuario.Activo; } else { Usuario.Activo = true; User.Activo = Usuario.Activo; } dbLogin.SaveChanges(); db.SaveChanges(); } else { throw new Exception("Usuario no existe"); } G.CerrarConexionAPP(db); return(Request.CreateResponse(HttpStatusCode.OK)); } catch (Exception ex) { BitacoraErrores be = new BitacoraErrores(); be.Descripcion = ex.Message; be.StackTrace = ex.StackTrace; be.Metodo = "Desactivar usuario"; be.Fecha = DateTime.Now; db.BitacoraErrores.Add(be); db.SaveChanges(); G.CerrarConexionAPP(db); return(Request.CreateResponse(HttpStatusCode.InternalServerError, ex)); } }
public HttpResponseMessage Post([FromBody] NormasReparto norma) { try { G.AbrirConexionAPP(out db); var Norma = db.NormasReparto.Where(a => a.id == norma.id).FirstOrDefault(); if (Norma == null) { Norma = new NormasReparto(); Norma.idLogin = norma.idLogin; Norma.CodSAP = norma.CodSAP; Norma.Nombre = norma.Nombre; Norma.idDimension = norma.idDimension; db.NormasReparto.Add(Norma); db.SaveChanges(); } else { throw new Exception("Esta norma de reparto YA existe"); } G.CerrarConexionAPP(db); return(Request.CreateResponse(HttpStatusCode.OK, Norma)); } catch (Exception ex) { BitacoraErrores be = new BitacoraErrores(); be.Descripcion = ex.Message; be.StackTrace = ex.StackTrace; be.Metodo = "Insercion de Norma de Reparto"; be.Fecha = DateTime.Now; db.BitacoraErrores.Add(be); db.SaveChanges(); G.CerrarConexionAPP(db); return(Request.CreateResponse(HttpStatusCode.InternalServerError, ex)); } }
public HttpResponseMessage Post([FromBody] Gastos gasto) { try { G.AbrirConexionAPP(out db); var Gasto = db.Gastos.Where(a => a.idTipoGasto == gasto.idTipoGasto).FirstOrDefault(); if (Gasto == null) { Gasto = new Gastos(); Gasto.idCuentaContable = gasto.idCuentaContable; Gasto.Nombre = gasto.Nombre; Gasto.PalabrasClave = gasto.PalabrasClave; db.Gastos.Add(Gasto); db.SaveChanges(); } else { throw new Exception("Este gasto YA existe"); } G.CerrarConexionAPP(db); return(Request.CreateResponse(HttpStatusCode.OK, Gasto)); } catch (Exception ex) { BitacoraErrores be = new BitacoraErrores(); be.Descripcion = ex.Message; be.StackTrace = ex.StackTrace; be.Metodo = "Insercion de Gastos"; be.Fecha = DateTime.Now; db.BitacoraErrores.Add(be); db.SaveChanges(); G.CerrarConexionAPP(db); return(Request.CreateResponse(HttpStatusCode.InternalServerError, ex)); } }
public async Task <HttpResponseMessage> Get([FromUri] Filtros filtro) { try { G.AbrirConexionAPP(out db); var time = new DateTime(); var Liquidaciones = db.EncCierre.Where(a => a.Estado != "R" && (filtro.FechaInicio != time ? a.FechaCierre >= filtro.FechaInicio : true)).ToList(); if (filtro.FechaInicio.Date != new DateTime().Date) { filtro.FechaFinal = filtro.FechaFinal.AddDays(1); Liquidaciones = Liquidaciones.Where(a => a.FechaCierre >= filtro.FechaInicio && a.FechaCierre <= filtro.FechaFinal).ToList(); } if (filtro.Codigo1 > 0) { Liquidaciones = Liquidaciones.Where(a => a.idLogin == filtro.Codigo1).ToList(); } if (!string.IsNullOrEmpty(filtro.CodMoneda)) { Liquidaciones = Liquidaciones.Where(a => a.CodMoneda == filtro.CodMoneda).ToList(); } var MontoAcumulado = Liquidaciones.Sum(a => a.Total); List <EncCompras> comp = new List <EncCompras>(); List <EncCompras> compa = new List <EncCompras>(); foreach (var item in Liquidaciones) { var detalle = db.DetCierre.Where(a => a.idCierre == item.idCierre).ToList(); var EncCompras = db.EncCompras.Where(a => a.idCierre == item.idCierre).ToList(); foreach (var ite in detalle) { var fac = EncCompras.Where(a => a.id == ite.idFactura).FirstOrDefault(); comp.Add(fac); } } var Normas = db.NormasReparto.ToList(); var Login = db.Login.ToList(); foreach (var item in comp) { var login = Login.Where(a => a.id == item.idLoginAsignado).FirstOrDefault(); var NormaRepartoActual = Normas.Where(a => a.idLogin == login.id).FirstOrDefault(); if (NormaRepartoActual.id != item.idNormaReparto) { compa.Add(item); } } decimal Total = 0; foreach (var item in compa) { Total += ((item.TotalVenta - item.TotalDescuentos) + (item.TotalImpuesto + item.TotalOtrosCargos)).Value; } MontoAcumulado = MontoAcumulado - Total; HeaderReportViewModel he = new HeaderReportViewModel(); he.MontoAcumulado = MontoAcumulado.Value; G.CerrarConexionAPP(db); return(Request.CreateResponse(HttpStatusCode.OK, he)); } catch (Exception ex) { BitacoraErrores be = new BitacoraErrores(); be.Descripcion = ex.Message; be.StackTrace = ex.StackTrace; be.Metodo = "Error totalizado"; be.Fecha = DateTime.Now; db.BitacoraErrores.Add(be); db.SaveChanges(); G.CerrarConexionAPP(db); return(Request.CreateResponse(HttpStatusCode.InternalServerError, ex)); } }
public async Task <HttpResponseMessage> GetGraficos([FromUri] Filtros filtro) { try { G.AbrirConexionAPP(out db); var Liquidaciones = db.EncCierre.Where(a => a.Estado != "R").Select(a => new { a.idCierre, a.FechaCierre, a.idLogin, a.CodMoneda }).ToList(); if (filtro != null) { if (filtro.FechaInicio.Date != new DateTime().Date) { filtro.FechaFinal = filtro.FechaFinal.AddDays(1); Liquidaciones = Liquidaciones.Where(a => a.FechaCierre >= filtro.FechaInicio && a.FechaCierre <= filtro.FechaFinal).ToList(); } if (filtro.Codigo1 > 0) { Liquidaciones = Liquidaciones.Where(a => a.idLogin == filtro.Codigo1).ToList(); } if (!string.IsNullOrEmpty(filtro.CodMoneda)) { Liquidaciones = Liquidaciones.Where(a => a.CodMoneda == filtro.CodMoneda).ToList(); } } List <EncCompras> comp = new List <EncCompras>(); List <EncCompras> compa = new List <EncCompras>(); var time1 = filtro.FechaInicio.AddMonths(-1); var time2 = filtro.FechaFinal.AddMonths(1); var EncCompras = db.EncCompras.Where(a => a.FecFactura >= time1 && a.FecFactura <= time2).ToList(); foreach (var item in Liquidaciones) { var detalle = db.DetCierre.Where(a => a.idCierre == item.idCierre).ToList(); var Compras = EncCompras.Where(a => a.idCierre == item.idCierre).ToList(); foreach (var ite in detalle) { var fac = Compras.Where(a => a.id == ite.idFactura).FirstOrDefault(); comp.Add(fac); } } var Normas = db.NormasReparto.ToList(); var Gastos = db.Gastos.ToList(); var Login = db.Login.ToList(); foreach (var item2 in comp) { if (item2.idLoginAsignado == 0 || item2.idLoginAsignado == null) { G.GuardarTxt("Login.txt", "factura => " + item2.id + " idCierre => " + item2.idCierre); } var login = Login.Where(a => a.id == item2.idLoginAsignado).FirstOrDefault(); var NormaRepartoActual = Normas.Where(a => a.idLogin == login.id).FirstOrDefault(); if (NormaRepartoActual.id == item2.idNormaReparto) { compa.Add(item2); } } var envio = compa.Select(a => new { a.id, a.CodEmpresa , a.CodProveedor, a.NomProveedor , a.TipoDocumento , a.NumFactura , a.FecFactura , a.TipoIdentificacionCliente , a.CodCliente , a.NomCliente , a.EmailCliente , a.DiasCredito , a.CondicionVenta , a.ClaveHacienda , a.ConsecutivoHacienda , a.MedioPago , a.Situacion , a.CodMoneda , a.TotalServGravados , a.TotalServExentos , a.TotalMercanciasGravadas , a.TotalMercanciasExentas , a.TotalExento , a.TotalVenta , a.TotalDescuentos , a.TotalVentaNeta , a.TotalImpuesto , a.TotalComprobante , a.FechaGravado , a.TotalServExonerado , a.TotalMercExonerada , a.TotalExonerado , a.TotalIVADevuelto , a.TotalOtrosCargos , a.CodigoActividadEconomica , a.idLoginAsignado , a.FecAsignado , a.idNormaReparto , a.idTipoGasto , TipoGasto = (Gastos.Where(d => d.idTipoGasto == a.idTipoGasto).FirstOrDefault() == null ? "Sin Asignar": Gastos.Where(d => d.idTipoGasto == a.idTipoGasto).FirstOrDefault().Nombre), a.idCierre }).ToList(); G.CerrarConexionAPP(db); return(Request.CreateResponse(HttpStatusCode.OK, envio)); } catch (Exception ex) { BitacoraErrores be = new BitacoraErrores(); be.Descripcion = ex.Message; be.StackTrace = ex.StackTrace; be.Metodo = "Error de Graficos"; be.Fecha = DateTime.Now; db.BitacoraErrores.Add(be); db.SaveChanges(); G.CerrarConexionAPP(db); return(Request.CreateResponse(HttpStatusCode.InternalServerError, ex)); } }
public HttpResponseMessage Post([FromBody] CierreViewModel gastos) { G.AbrirConexionAPP(out db); var t = db.Database.BeginTransaction(); try { var Candado = db.EncCierre.Where(a => a.Periodo.ToUpper().Contains(gastos.EncCierre.Periodo.ToUpper()) && a.Estado != "A" && a.CodMoneda == gastos.EncCierre.CodMoneda && a.FechaInicial <= gastos.EncCierre.FechaCierre && a.FechaFinal >= gastos.EncCierre.FechaCierre && a.idLogin == gastos.EncCierre.idLogin).FirstOrDefault(); if (Candado != null) { throw new Exception("Ya existe una liquidacion con la moneda " + gastos.EncCierre.CodMoneda + " en este periodo " + gastos.EncCierre.Periodo + " idlogin: "******"No se puede insertar una liquidacion con ninguna factura"); } var Cierre = new EncCierre(); Cierre.Periodo = gastos.EncCierre.Periodo; Cierre.FechaInicial = gastos.EncCierre.FechaInicial; Cierre.FechaFinal = gastos.EncCierre.FechaFinal; Cierre.idLogin = gastos.EncCierre.idLogin; Cierre.SubTotal = gastos.EncCierre.SubTotal; Cierre.Total = gastos.EncCierre.Total; Cierre.CantidadRegistros = 0; Cierre.Descuento = gastos.EncCierre.Descuento; Cierre.FechaCierre = DateTime.Now; Cierre.Impuestos = gastos.EncCierre.Impuestos; Cierre.Impuesto1 = gastos.EncCierre.Impuesto1; Cierre.Impuesto2 = gastos.EncCierre.Impuesto2; Cierre.Impuesto4 = gastos.EncCierre.Impuesto4; Cierre.Impuesto8 = gastos.EncCierre.Impuesto8; Cierre.Impuesto13 = gastos.EncCierre.Impuesto13; var login = db.Login.Where(a => a.id == Cierre.idLogin).FirstOrDefault(); Cierre.idLoginAceptacion = login.idLoginAceptacion; Cierre.Estado = gastos.EncCierre.Estado; Cierre.Observacion = ""; Cierre.CodMoneda = gastos.EncCierre.CodMoneda; Cierre.TotalOtrosCargos = gastos.EncCierre.TotalOtrosCargos; Cierre.ProcesadaSAP = false; Cierre.Observacion = gastos.EncCierre.Observacion; db.EncCierre.Add(Cierre); db.SaveChanges(); var FecIni = Cierre.FechaInicial.AddDays(-1); var FecFin = Cierre.FechaFinal.AddDays(1); var Facturas = db.EncCompras.Where(a => a.FecFactura >= FecIni && a.FecFactura <= FecFin).ToList(); var Logins = db.Login.ToList(); var Normas = db.NormasReparto.ToList(); int i = 1; foreach (var item in gastos.DetCierre) { DetCierre det = new DetCierre(); det.idCierre = Cierre.idCierre; det.NumLinea = i; det.idFactura = item.idFactura; det.Comentario = item.Comentario; i++; db.DetCierre.Add(det); var Factura = Facturas.Where(a => a.id == item.idFactura).FirstOrDefault(); if (Normas.Where(a => a.idLogin == Cierre.idLogin).FirstOrDefault() == null) { throw new Exception("Este usuario " + login.Nombre + " no contiene una norma de reparto asignada"); } db.Entry(Factura).State = EntityState.Modified; Factura.idLoginAsignado = Cierre.idLogin; Factura.FecAsignado = DateTime.Now; Factura.idNormaReparto = Normas.Where(a => a.idLogin == Cierre.idLogin).FirstOrDefault().id; Factura.idCierre = det.idCierre; Factura.idTipoGasto = item.idTipoGasto; Factura.Comentario = item.Comentario; db.SaveChanges(); } db.SaveChanges(); db.Entry(Cierre).State = EntityState.Modified; Cierre.CantidadRegistros = i - 1; db.SaveChanges(); if (gastos.EncCierre.Estado == "E") { SendGridEmail.EmailSender emailsender = new SendGridEmail.EmailSender(); //var Roles = db.Roles.Where(a => a.NombreRol.ToUpper().Contains("APROBADOR")).FirstOrDefault(); var Login = db.Login.Where(a => a.id == login.idLoginAceptacion).FirstOrDefault(); var AsignadoCierre = db.Login.Where(a => a.id == Cierre.idLogin).FirstOrDefault(); var parametros = db.Parametros.FirstOrDefault(); var html = "<h3 style='text-align: center; '><strong>Liquidación pendiente de revisión</strong></h3>"; html += "<p style='text-align: justify; '>Se ha recibido una nueva liquidación de gastos, a continuación los detalles:</p>"; html += "<ul>"; html += "<li style = 'text-align: justify;' ><strong> ID Cierre </strong>: " + Cierre.idCierre + "</li>"; html += "<li style = 'text-align: justify;' ><strong> Nombre </strong>: " + AsignadoCierre.Nombre + "</li>"; html += "<li style='text-align: justify; '><strong>Periodo</strong>: " + Cierre.Periodo + "</li>"; html += "<li style='text-align: justify; '><strong>Cantidad de Facturas: </strong>" + Cierre.CantidadRegistros + "</li>"; html += "<li style='text-align: justify; '><strong>Total</strong>: " + decimal.Round(Cierre.Total.Value, 2) + "</li>"; html += "</ul><p></p> "; html += "<p>Favor revisar en la plataforma <a href='" + parametros.UrlSitioPublicado + "'>" + parametros.UrlSitioPublicado + "</a> para aceptar o denegar dicha liquidación.</p>"; emailsender.SendV2(Login.Email, parametros.RecepcionEmail, "", parametros.RecepcionEmail, "Liquidación", "Liquidación pendiente de revisión", html, parametros.RecepcionHostName, parametros.EnvioPort, parametros.RecepcionUseSSL.Value, parametros.RecepcionEmail, parametros.RecepcionPassword); } t.Commit(); G.CerrarConexionAPP(db); return(Request.CreateResponse(HttpStatusCode.OK)); } catch (Exception ex) { t.Rollback(); G.GuardarTxt("ErrorCierre" + DateTime.Now.Day + "" + DateTime.Now.Month + "" + DateTime.Now.Year + ".txt", ex.ToString()); BitacoraErrores be = new BitacoraErrores(); be.Descripcion = ex.Message; be.StackTrace = ex.StackTrace; be.Metodo = "Insercion de Cierre"; be.Fecha = DateTime.Now; db.BitacoraErrores.Add(be); db.SaveChanges(); G.CerrarConexionAPP(db); return(Request.CreateResponse(HttpStatusCode.InternalServerError, ex)); } }
public HttpResponseMessage GetEstado([FromUri] int id, string Estado, string comentario = "", int idLoginAceptacion = 0) { try { G.AbrirConexionAPP(out db); var EncCierre = db.EncCierre.Where(a => a.idCierre == id).FirstOrDefault(); db.Entry(EncCierre).State = EntityState.Modified; EncCierre.Estado = Estado; if (!string.IsNullOrEmpty(comentario)) { EncCierre.Observacion = comentario; } if (Estado == "E") { SendGridEmail.EmailSender emailsender = new SendGridEmail.EmailSender(); var Roles = db.Roles.Where(a => a.NombreRol.ToUpper().Contains("APROBADOR")).FirstOrDefault(); var Login = db.Login.Where(a => a.idRol == Roles.idRol).ToList(); var AsignadoCierre = db.Login.Where(a => a.id == EncCierre.idLogin).FirstOrDefault(); var parametros = db.Parametros.FirstOrDefault(); var html = "<h3 style='text-align: center; '><strong>Liquidación pendiente de revisión</strong></h3>"; html += "<p style='text-align: justify; '>Se ha recibido una nueva liquidación de gastos, a continuación los detalles:</p>"; html += "<ul>"; html += "<li style = 'text-align: justify;' ><strong> ID Cierre </strong>: " + EncCierre.idCierre + "</li>"; html += "<li style = 'text-align: justify;' ><strong> Nombre </strong>: " + AsignadoCierre.Nombre + "</li>"; html += "<li style='text-align: justify; '><strong>Periodo</strong>: " + EncCierre.Periodo + "</li>"; html += "<li style='text-align: justify; '><strong>Cantidad de Facturas: </strong>" + EncCierre.CantidadRegistros + "</li>"; html += "<li style='text-align: justify; '><strong>Total</strong>: " + decimal.Round(EncCierre.Total.Value, 2) + "</li>"; html += "</ul><p></p> "; html += "<p>Favor revisar en la plataforma <a href='" + parametros.UrlSitioPublicado + "'>" + parametros.UrlSitioPublicado + "</a> para aceptar o denegar dicha liquidación.</p>"; foreach (var item in Login) { emailsender.SendV2(item.Email, parametros.RecepcionEmail, "", parametros.RecepcionEmail, "Liquidación", "Liquidación pendiente de revisión", html, parametros.RecepcionHostName, parametros.EnvioPort, parametros.RecepcionUseSSL.Value, parametros.RecepcionEmail, parametros.RecepcionPassword); } } if (Estado == "A" || Estado == "R") { SendGridEmail.EmailSender emailsender = new SendGridEmail.EmailSender(); //var Roles = db.Roles.Where(a => a.NombreRol.ToUpper().Contains("APROBADOR")).FirstOrDefault(); var login = db.Login.Where(a => a.id == EncCierre.idLogin).FirstOrDefault(); var AR = Estado; var Login = db.Login.Where(a => a.id == login.id).FirstOrDefault(); var AsignadoCierre = db.Login.Where(a => a.id == EncCierre.idLogin).FirstOrDefault(); var parametros = db.Parametros.FirstOrDefault(); //ó -> Tilde var html = ""; if (AR == "A") { var LoginAceptacion = db.Login.Where(a => a.id == EncCierre.idLoginAceptacion).FirstOrDefault(); html = "<h3 style='text-align: center; '><strong>Liquidación Aprobada</strong></h3>"; html += "<p style='text-align: justify; '>Se ha aprobado tú liquidación de gastos, a continuación los detalles:</p>"; html += "<ul>"; html += "<li style = 'text-align: justify;' ><strong> ID Cierre </strong>: " + EncCierre.idCierre + "</li>"; html += "<li style = 'text-align: justify;' ><strong> Nombre </strong>: " + AsignadoCierre.Nombre + "</li>"; html += "<li style='text-align: justify; '><strong>Periodo</strong>: " + EncCierre.Periodo + "</li>"; html += "<li style='text-align: justify; '><strong>Cantidad de Facturas: </strong>" + EncCierre.CantidadRegistros + "</li>"; html += "<li style='text-align: justify; '><strong>Total</strong>: " + decimal.Round(EncCierre.Total.Value, 2) + "</li>"; html += "<li style='text-align: justify; '><strong>Usuario Aprobador</strong>: " + (LoginAceptacion == null ? "" : LoginAceptacion.Nombre) + "</li>"; html += "<li style='text-align: justify; '><strong>Comentarios de la Liquidación</strong>: " + EncCierre.Observacion + "</li>"; html += "</ul><p></p> "; html += "<p>Favor revisar en la plataforma <a href='" + parametros.UrlSitioPublicado + "'>" + parametros.UrlSitioPublicado + "</a> para ver más detalles de dicha liquidación.</p>"; } else { var LoginAceptacion = db.Login.Where(a => a.id == EncCierre.idLoginAceptacion).FirstOrDefault(); html = "<h3 style='text-align: center; '><strong>Liquidación Rechazada</strong></h3>"; html += "<p style='text-align: justify; '>Se ha rechazado tú liquidación de gastos, a continuación los detalles:</p>"; html += "<ul>"; html += "<li style = 'text-align: justify;' ><strong> ID Cierre </strong>: " + EncCierre.idCierre + "</li>"; html += "<li style = 'text-align: justify;' ><strong> Nombre </strong>: " + AsignadoCierre.Nombre + "</li>"; html += "<li style='text-align: justify; '><strong>Periodo</strong>: " + EncCierre.Periodo + "</li>"; html += "<li style='text-align: justify; '><strong>Cantidad de Facturas: </strong>" + EncCierre.CantidadRegistros + "</li>"; html += "<li style='text-align: justify; '><strong>Total</strong>: " + decimal.Round(EncCierre.Total.Value, 2) + "</li>"; html += "<li style='text-align: justify; '><strong>Usuario Aprobador</strong>: " + (LoginAceptacion == null ? "" : LoginAceptacion.Nombre) + "</li>"; html += "<li style='text-align: justify; '><strong>Comentarios de la Liquidación</strong>: " + EncCierre.Observacion + "</li>"; html += "</ul><p></p> "; html += "<p>Favor revisar en la plataforma <a href='" + parametros.UrlSitioPublicado + "'>" + parametros.UrlSitioPublicado + "</a> para ver más detalles de dicha liquidación.</p>"; } emailsender.SendV2(Login.Email, parametros.RecepcionEmail, "", parametros.RecepcionEmail, "Liquidación", "Respuesta de la liquidación", html, parametros.RecepcionHostName, parametros.EnvioPort, parametros.RecepcionUseSSL.Value, parametros.RecepcionEmail, parametros.RecepcionPassword); } //EncCierre.idLoginAceptacion = idLoginAceptacion; db.SaveChanges(); G.CerrarConexionAPP(db); return(Request.CreateResponse(HttpStatusCode.OK)); } catch (Exception ex) { BitacoraErrores be = new BitacoraErrores(); be.Descripcion = ex.Message; be.StackTrace = ex.StackTrace; be.Metodo = "Cambio de estado"; be.Fecha = DateTime.Now; db.BitacoraErrores.Add(be); db.SaveChanges(); G.CerrarConexionAPP(db); return(Request.CreateResponse(HttpStatusCode.InternalServerError, ex)); } }
public HttpResponseMessage GetEnviarCorreo([FromBody] InfoLiquid item) { try { G.AbrirConexionAPP(out db); List <Attachment> adjuntos = new List <Attachment>(); // List<EncCompras> compras = new List<EncCompras>(); SendGridEmail.EmailSender emailsender = new SendGridEmail.EmailSender(); var parametros = db.Parametros.FirstOrDefault(); var Cierre = db.DetCierre.Where(a => a.idCierre == item.idCierre).ToList(); foreach (var det in Cierre) { var Compra = db.EncCompras.Where(a => a.id == det.idFactura).FirstOrDefault(); if (Compra.PdfFac != null) { Attachment att = new Attachment(new MemoryStream(Compra.PdfFac), Compra.PdfFactura); adjuntos.Add(att); } } var bodyH = item.body; HtmlToPdf converter = new HtmlToPdf(); // set converter options converter.Options.PdfPageSize = PdfPageSize.A4; converter.Options.PdfPageOrientation = PdfPageOrientation.Portrait; converter.Options.MarginLeft = 5; converter.Options.MarginRight = 5; // create a new pdf document converting an html string SelectPdf.PdfDocument doc = converter.ConvertHtmlString(bodyH); var bytes = doc.Save(); doc.Close(); Attachment att3 = new Attachment(new MemoryStream(bytes), "Liquidacion.pdf"); adjuntos.Add(att3); var resp = emailsender.SendV2(item.emailDest, item.emailCC, "", parametros.RecepcionEmail, "Liquidación", "Liquidación por revisar", item.body, parametros.RecepcionHostName, parametros.EnvioPort, parametros.RecepcionUseSSL.Value, parametros.RecepcionEmail, parametros.RecepcionPassword, adjuntos); if (!resp) { throw new Exception("No se ha podido enviar el correo con la liquidación"); } G.CerrarConexionAPP(db); return(Request.CreateResponse(HttpStatusCode.OK)); } catch (Exception ex) { BitacoraErrores be = new BitacoraErrores(); be.Descripcion = ex.Message; be.StackTrace = ex.StackTrace; be.Metodo = "Error de Correo"; be.Fecha = DateTime.Now; db.BitacoraErrores.Add(be); db.SaveChanges(); G.GuardarTxt("ErrorCorreo.txt", ex.Message + " -> " + ex.StackTrace); G.CerrarConexionAPP(db); return(Request.CreateResponse(HttpStatusCode.InternalServerError, ex)); } }
public HttpResponseMessage Put([FromBody] LoginViewModel usuario) { try { G.AbrirConexionAPP(out db); var User = db.Login.Where(a => a.id == usuario.id).FirstOrDefault(); //a.Email.ToUpper().Contains(usuario.Email.ToUpper()) var Usuario = dbLogin.LicUsuarios.Where(a => a.Email.ToUpper().Contains(User.Email.ToUpper()) && a.CedulaJuridica == usuario.CedulaJuridica).FirstOrDefault(); if (Usuario != null && User != null) { dbLogin.Entry(Usuario).State = EntityState.Modified; db.Entry(User).State = EntityState.Modified; if (!string.IsNullOrEmpty(usuario.Clave)) { Usuario.Clave = BCrypt.Net.BCrypt.HashPassword(usuario.Clave); User.Clave = Usuario.Clave; User.CambiarClave = false; } if (!string.IsNullOrEmpty(usuario.Nombre)) { Usuario.Nombre = usuario.Nombre; User.Nombre = Usuario.Nombre; } if (!string.IsNullOrEmpty(usuario.Email)) { Usuario.Email = usuario.Email; User.Email = Usuario.Email; } if (usuario.idRol > 0) { User.idRol = usuario.idRol; } if (usuario.idLoginAceptacion > 0) { User.idLoginAceptacion = usuario.idLoginAceptacion; } if (!string.IsNullOrEmpty(usuario.CardCode)) { User.CardCode = usuario.CardCode; } User.CambioFecha = User.CambioFecha; dbLogin.SaveChanges(); db.SaveChanges(); } else { throw new Exception("Usuario no existe"); } G.CerrarConexionAPP(db); return(Request.CreateResponse(HttpStatusCode.OK)); } catch (Exception ex) { BitacoraErrores be = new BitacoraErrores(); be.Descripcion = ex.Message + " -> " + usuario.CedulaJuridica; be.StackTrace = ex.StackTrace; be.Metodo = "Actualizacion de Usuario"; be.Fecha = DateTime.Now; db.BitacoraErrores.Add(be); db.SaveChanges(); G.CerrarConexionAPP(db); G.GuardarTxt("ErrorEditarUsuario.txt", ex.Message + " => " + ex.StackTrace); return(Request.CreateResponse(HttpStatusCode.InternalServerError, ex)); } }
public HttpResponseMessage Post([FromBody] LoginViewModel usuario) { try { var Empresa = dbLogin.LicEmpresas.Where(a => a.CedulaJuridica == usuario.CedulaJuridica).FirstOrDefault(); if (Empresa == null) { throw new Exception("Empresa no existe"); } db = new ModelCliente(Empresa.CadenaConexionBD); } catch (Exception ex) { return(Request.CreateResponse(HttpStatusCode.InternalServerError, ex)); } var t = db.Database.BeginTransaction(); var d = dbLogin.Database.BeginTransaction(); try { var User = dbLogin.LicUsuarios.Where(a => a.Email.ToUpper().Contains(usuario.Email.ToUpper()) && a.Activo == true).FirstOrDefault(); var usuario1 = db.Login.Where(a => a.Email.ToUpper().Contains(usuario.Email.ToUpper()) && a.Activo == true).FirstOrDefault(); if (usuario1 == null) { User = new LicUsuarios(); User.Nombre = usuario.Nombre; User.Clave = BCrypt.Net.BCrypt.HashPassword(usuario.Clave); User.Email = usuario.Email; User.Activo = true; User.CedulaJuridica = usuario.CedulaJuridica; Login login = new Login(); login.Nombre = User.Nombre; login.Clave = User.Clave; login.Activo = true; login.idRol = usuario.idRol; login.Email = User.Email; login.CardCode = usuario.CardCode; login.idLoginAceptacion = usuario.idLoginAceptacion; login.CambiarClave = true; login.CambioFecha = false; db.Login.Add(login); dbLogin.LicUsuarios.Add(User); dbLogin.SaveChanges(); db.SaveChanges(); if (login.idLoginAceptacion == 0) { db.Entry(login).State = EntityState.Modified; login.idLoginAceptacion = login.id; db.SaveChanges(); } d.Commit(); t.Commit(); } else { throw new Exception("Este usuario YA existe"); } G.CerrarConexionAPP(db); return(Request.CreateResponse(HttpStatusCode.OK)); } catch (Exception ex) { BitacoraErrores be = new BitacoraErrores(); be.Descripcion = ex.Message; be.StackTrace = ex.StackTrace; be.Metodo = "Insercion de Usuario"; be.Fecha = DateTime.Now; db.BitacoraErrores.Add(be); db.SaveChanges(); t.Rollback(); d.Rollback(); G.CerrarConexionAPP(db); return(Request.CreateResponse(HttpStatusCode.InternalServerError, ex)); } }
public HttpResponseMessage Put([FromBody] CierreViewModel gastos) { G.AbrirConexionAPP(out db); var t = db.Database.BeginTransaction(); try { // G.GuardarTxt("BitLlegada.txt", gastos.ToString()); if (db.EncCierre.Where(a => a.idCierre == gastos.EncCierre.idCierre).FirstOrDefault() != null) { var Cierre = db.EncCierre.Where(a => a.idCierre == gastos.EncCierre.idCierre).FirstOrDefault(); db.Entry(Cierre).State = EntityState.Modified; Cierre.Periodo = Cierre.Periodo;//gastos.EncCierre.Periodo; Cierre.FechaInicial = gastos.EncCierre.FechaInicial; Cierre.FechaFinal = gastos.EncCierre.FechaFinal; Cierre.idLogin = gastos.EncCierre.idLogin; Cierre.SubTotal = gastos.EncCierre.SubTotal; Cierre.Total = gastos.EncCierre.Total; Cierre.CantidadRegistros = 0; Cierre.Descuento = gastos.EncCierre.Descuento; Cierre.FechaCierre = Cierre.FechaCierre;//DateTime.Now; Cierre.Impuestos = gastos.EncCierre.Impuestos; Cierre.Impuesto1 = gastos.EncCierre.Impuesto1; Cierre.Impuesto2 = gastos.EncCierre.Impuesto2; Cierre.Impuesto4 = gastos.EncCierre.Impuesto4; Cierre.Impuesto8 = gastos.EncCierre.Impuesto8; Cierre.Impuesto13 = gastos.EncCierre.Impuesto13; var login = db.Login.Where(a => a.id == Cierre.idLogin).FirstOrDefault(); Cierre.idLoginAceptacion = login.idLoginAceptacion; Cierre.Estado = gastos.EncCierre.Estado; Cierre.Observacion = Cierre.Observacion; Cierre.CodMoneda = gastos.EncCierre.CodMoneda; Cierre.TotalOtrosCargos = gastos.EncCierre.TotalOtrosCargos; Cierre.Observacion = gastos.EncCierre.Observacion; db.SaveChanges(); var FecInicial = Cierre.FechaInicial.AddMonths(-1); var FechaFinal = Cierre.FechaFinal.AddMonths(1); var Facturas = db.EncCompras.Where(a => a.FecFactura >= FecInicial && a.FecFactura <= FechaFinal).ToList(); var Logins = db.Login.ToList(); var Normas = db.NormasReparto.ToList(); var Detalle = db.DetCierre.Where(a => a.idCierre == Cierre.idCierre).ToList(); foreach (var item in Detalle) { var Factura = Facturas.Where(a => a.id == item.idFactura).FirstOrDefault(); db.Entry(Factura).State = EntityState.Modified; Factura.idLoginAsignado = 0; Factura.FecAsignado = null; Factura.Comentario = ""; Factura.idNormaReparto = 0; Factura.idCierre = 0; db.DetCierre.Remove(item); db.SaveChanges(); } int i = 1; foreach (var item in gastos.DetCierre) { DetCierre det = new DetCierre(); det.idCierre = Cierre.idCierre; det.NumLinea = i; det.idFactura = item.idFactura; det.Comentario = item.Comentario; i++; db.DetCierre.Add(det); var Factura = Facturas.Where(a => a.id == item.idFactura).FirstOrDefault(); db.Entry(Factura).State = EntityState.Modified; Factura.idLoginAsignado = Cierre.idLogin; Factura.FecAsignado = DateTime.Now; if (Normas.Where(a => a.idLogin == Cierre.idLogin).FirstOrDefault() == null) { throw new Exception("Este usuario no contiene una norma de reparto asignada"); } Factura.idNormaReparto = Normas.Where(a => a.idLogin == Cierre.idLogin).FirstOrDefault().id; Factura.idCierre = det.idCierre; Factura.idTipoGasto = item.idTipoGasto; Factura.Comentario = item.Comentario; db.SaveChanges(); } db.SaveChanges(); db.Entry(Cierre).State = EntityState.Modified; Cierre.CantidadRegistros = i - 1; db.SaveChanges(); if (gastos.EncCierre.Estado == "E") { SendGridEmail.EmailSender emailsender = new SendGridEmail.EmailSender(); //var Roles = db.Roles.Where(a => a.NombreRol.ToUpper().Contains("APROBADOR")).FirstOrDefault(); var Login = db.Login.Where(a => a.id == login.idLoginAceptacion).FirstOrDefault(); var AsignadoCierre = db.Login.Where(a => a.id == Cierre.idLogin).FirstOrDefault(); var parametros = db.Parametros.FirstOrDefault(); var html = "<h3 style='text-align: center; '><strong>Liquidación pendiente de revisión</strong></h3>"; html += "<p style='text-align: justify; '>Se ha recibido una nueva liquidación de gastos, a continuación los detalles:</p>"; html += "<ul>"; html += "<li style = 'text-align: justify;' ><strong> ID Cierre </strong>: " + Cierre.idCierre + "</li>"; html += "<li style = 'text-align: justify;' ><strong> Nombre </strong>: " + AsignadoCierre.Nombre + "</li>"; html += "<li style='text-align: justify; '><strong>Periodo</strong>: " + Cierre.Periodo + "</li>"; html += "<li style='text-align: justify; '><strong>Cantidad de Facturas: </strong>" + Cierre.CantidadRegistros + "</li>"; html += "<li style='text-align: justify; '><strong>Total</strong>: " + decimal.Round(Cierre.Total.Value, 2) + "</li>"; html += "</ul><p></p> "; html += "<p>Favor revisar en la plataforma <a href='" + parametros.UrlSitioPublicado + "'>" + parametros.UrlSitioPublicado + "</a> para aceptar o denegar dicha liquidación.</p>"; emailsender.SendV2(Login.Email, parametros.RecepcionEmail, "", parametros.RecepcionEmail, "Liquidación", "Liquidación pendiente de revisión", html, parametros.RecepcionHostName, parametros.EnvioPort, parametros.RecepcionUseSSL.Value, parametros.RecepcionEmail, parametros.RecepcionPassword); } if (gastos.EncCierre.Estado == "A" || gastos.EncCierre.Estado == "R") { SendGridEmail.EmailSender emailsender = new SendGridEmail.EmailSender(); //var Roles = db.Roles.Where(a => a.NombreRol.ToUpper().Contains("APROBADOR")).FirstOrDefault(); var AR = gastos.EncCierre.Estado; var Login = db.Login.Where(a => a.id == login.id).FirstOrDefault(); var AsignadoCierre = db.Login.Where(a => a.id == Cierre.idLogin).FirstOrDefault(); var parametros = db.Parametros.FirstOrDefault(); //ó -> Tilde var html = ""; if (AR == "A") { var LoginAceptacion = db.Login.Where(a => a.id == Cierre.idLoginAceptacion).FirstOrDefault(); html = "<h3 style='text-align: center; '><strong>Liquidación Aprobada</strong></h3>"; html += "<p style='text-align: justify; '>Se ha aprobado tú liquidación de gastos, a continuación los detalles:</p>"; html += "<ul>"; html += "<li style = 'text-align: justify;' ><strong> ID Cierre </strong>: " + Cierre.idCierre + "</li>"; html += "<li style = 'text-align: justify;' ><strong> Nombre </strong>: " + AsignadoCierre.Nombre + "</li>"; html += "<li style='text-align: justify; '><strong>Periodo</strong>: " + Cierre.Periodo + "</li>"; html += "<li style='text-align: justify; '><strong>Cantidad de Facturas: </strong>" + Cierre.CantidadRegistros + "</li>"; html += "<li style='text-align: justify; '><strong>Total</strong>: " + decimal.Round(Cierre.Total.Value, 2) + "</li>"; html += "<li style='text-align: justify; '><strong>Usuario Aprobador</strong>: " + LoginAceptacion == null ? "" : LoginAceptacion.Nombre + "</li>"; html += "<li style='text-align: justify; '><strong>Comentarios de la Liquidación</strong>: " + Cierre.Observacion + "</li>"; html += "</ul><p></p> "; html += "<p>Favor revisar en la plataforma <a href='" + parametros.UrlSitioPublicado + "'>" + parametros.UrlSitioPublicado + "</a> para ver más detalles de dicha liquidación.</p>"; } else { var LoginAceptacion = db.Login.Where(a => a.id == Cierre.idLoginAceptacion).FirstOrDefault(); html = "<h3 style='text-align: center; '><strong>Liquidación Rechazada</strong></h3>"; html += "<p style='text-align: justify; '>Se ha rechazado tú liquidación de gastos, a continuación los detalles:</p>"; html += "<ul>"; html += "<li style = 'text-align: justify;' ><strong> ID Cierre </strong>: " + Cierre.idCierre + "</li>"; html += "<li style = 'text-align: justify;' ><strong> Nombre </strong>: " + AsignadoCierre.Nombre + "</li>"; html += "<li style='text-align: justify; '><strong>Periodo</strong>: " + Cierre.Periodo + "</li>"; html += "<li style='text-align: justify; '><strong>Cantidad de Facturas: </strong>" + Cierre.CantidadRegistros + "</li>"; html += "<li style='text-align: justify; '><strong>Total</strong>: " + decimal.Round(Cierre.Total.Value, 2) + "</li>"; html += "<li style='text-align: justify; '><strong>Usuario Aprobador</strong>: " + LoginAceptacion == null ? "" : LoginAceptacion.Nombre + "</li>"; html += "<li style='text-align: justify; '><strong>Comentarios de la Liquidación</strong>: " + Cierre.Observacion + "</li>"; html += "</ul><p></p> "; html += "<p>Favor revisar en la plataforma <a href='" + parametros.UrlSitioPublicado + "'>" + parametros.UrlSitioPublicado + "</a> para ver más detalles de dicha liquidación.</p>"; } emailsender.SendV2(Login.Email, parametros.RecepcionEmail, "", parametros.RecepcionEmail, "Liquidación", "Respuesta de la liquidación", html, parametros.RecepcionHostName, parametros.EnvioPort, parametros.RecepcionUseSSL.Value, parametros.RecepcionEmail, parametros.RecepcionPassword); } t.Commit(); G.CerrarConexionAPP(db); return(Request.CreateResponse(HttpStatusCode.OK)); } else { throw new Exception("Este cierre no existe"); } } catch (Exception ex) { t.Rollback(); G.GuardarTxt("ErrorCierre" + DateTime.Now.Day + "" + DateTime.Now.Month + "" + DateTime.Now.Year + ".txt", ex.ToString()); BitacoraErrores be = new BitacoraErrores(); be.Descripcion = ex.Message; be.StackTrace = (string.IsNullOrEmpty(ex.InnerException.Message) ? ex.StackTrace : ex.InnerException.Message); be.Metodo = "Actualizacion de Cierre"; be.Fecha = DateTime.Now; db.BitacoraErrores.Add(be); db.SaveChanges(); G.CerrarConexionAPP(db); return(Request.CreateResponse(HttpStatusCode.InternalServerError, ex)); } }
public HttpResponseMessage GetAsientos([FromUri] int idCierre = 0) { object resp; decimal imp1 = 0; decimal imp2 = 0; decimal imp4 = 0; decimal imp8 = 0; decimal imp13 = 0; try { G.AbrirConexionAPP(out db); var Cierre = db.EncCierre.Where(a => a.idCierre == idCierre).FirstOrDefault(); G.GuardarTxt("ErrorSAP.txt", "Entro"); var Compañia = G.ObtenerCedulaJuridia(); var Licencia = dbLogin.LicEmpresas.Where(a => a.CedulaJuridica == Compañia).FirstOrDefault(); var Pais = Licencia.CadenaConexionSAP; if (Cierre.ProcesadaSAP == true) { throw new Exception("Esta liquidación ya fue procesada"); } var Detalle = db.DetCierre.Where(a => a.idCierre == Cierre.idCierre).ToList(); List <EncCompras> enc = new List <EncCompras>(); var Encabezados = db.EncCompras.Where(a => a.idCierre == Cierre.idCierre).ToList(); foreach (var item in Detalle) { var compra = Encabezados.Where(a => a.id == item.idFactura).FirstOrDefault(); enc.Add(compra); } var login = db.Login.Where(a => a.id == Cierre.idLogin).FirstOrDefault(); var param = db.Parametros.FirstOrDefault(); var oInvoice = (Documents)Conexion.Company.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oDrafts); oInvoice.DocObjectCode = BoObjectTypes.oPurchaseInvoices; oInvoice.CardCode = login.CardCode; //CardCode que viene de login if (login.CambioFecha) { //int DiferenciaDias = (new DateTime(DateTime.Now.Year, DateTime.Now.Month, 15) - DateTime.Now).Days; //oInvoice.DocDate = DateTime.Now.AddDays(DiferenciaDias); //Fecha que se realiza el asiento //oInvoice.DocDueDate = DateTime.Now.AddDays(DiferenciaDias); //Fecha que se realiza el asiento oInvoice.DocDate = DateTime.Now; //Fecha que se realiza el asiento oInvoice.DocDueDate = DateTime.Now; //Fecha que se realiza el asiento } else { oInvoice.DocDate = Cierre.FechaFinal; //Final del periodo de cierre oInvoice.DocDueDate = Cierre.FechaFinal; //Final del periodo de cierre } oInvoice.DocCurrency = (Cierre.CodMoneda == "CRC" ? "COL" : Cierre.CodMoneda); //Moneda de la liquidacion if (Pais == "P") { if (Cierre.CodMoneda == "USD") { oInvoice.DocCurrency = "$"; } } oInvoice.DocType = BoDocumentTypes.dDocument_Service; oInvoice.NumAtCard = "Liquidación: " + idCierre.ToString(); var i = 0; foreach (var item in enc) { Gastos TipoGasto = new Gastos(); //Esto no va para panama if (Pais == "C") { if (item.RegimenSimplificado) { TipoGasto = db.Gastos.Where(a => a.Nombre.ToUpper().Contains("Regimen Simplificado".ToUpper())).FirstOrDefault(); } else { TipoGasto = db.Gastos.Where(a => a.idTipoGasto == item.idTipoGasto).FirstOrDefault(); } } else //Panama { TipoGasto = db.Gastos.Where(a => a.idTipoGasto == item.idTipoGasto).FirstOrDefault(); } var Cuenta = db.CuentasContables.Where(a => a.idCuentaContable == TipoGasto.idCuentaContable).FirstOrDefault(); var Norma = db.NormasReparto.Where(a => a.id == item.idNormaReparto).FirstOrDefault(); var Dimension = db.Dimensiones.Where(a => a.id == Norma.idDimension).FirstOrDefault(); oInvoice.Lines.SetCurrentLine(i); if (Pais == "C") { oInvoice.Lines.ItemDescription = item.CodProveedor + "-" + item.NomProveedor;//"3102751358 - D y D Consultores"; // Factura -> Cedula } else { oInvoice.Lines.ItemDescription = item.CodProveedor.Split('[')[0] + " - " + item.CodProveedor.Split('[')[1] + "-" + item.NomProveedor; //"3102751358 - D y D Consultores"; // Factura -> Cedula } oInvoice.Lines.AccountCode = Cuenta.CodSAP; //"6-01-02-05-000"; //Cuenta contable del gasto if (Pais == "C") { oInvoice.Lines.TaxCode = param.IMPEX; //Exento para Panama -> Verificar el codigo C0 } else { oInvoice.Lines.VatGroup = param.IMPEX; } //Redifinir para Panama if (Pais == "C") { imp1 += item.Impuesto1; imp2 += item.Impuesto2; imp4 += item.Impuesto4; imp8 += item.Impuesto8; imp13 += item.Impuesto13; } else //Panama { imp1 += item.Impuesto1; imp2 += item.Impuesto2; } //Normas de reparto switch (Dimension.codigoSAP) { case "1": { oInvoice.Lines.CostingCode = Norma.CodSAP; oInvoice.Lines.CostingCode2 = ""; oInvoice.Lines.CostingCode3 = ""; oInvoice.Lines.CostingCode4 = ""; oInvoice.Lines.CostingCode5 = ""; break; } case "2": { oInvoice.Lines.CostingCode = ""; oInvoice.Lines.CostingCode2 = Norma.CodSAP; oInvoice.Lines.CostingCode3 = ""; oInvoice.Lines.CostingCode4 = ""; oInvoice.Lines.CostingCode5 = ""; break; } case "3": { oInvoice.Lines.CostingCode = ""; oInvoice.Lines.CostingCode2 = ""; oInvoice.Lines.CostingCode3 = Norma.CodSAP; oInvoice.Lines.CostingCode4 = ""; oInvoice.Lines.CostingCode5 = ""; break; } case "4": { oInvoice.Lines.CostingCode = ""; oInvoice.Lines.CostingCode2 = ""; oInvoice.Lines.CostingCode3 = ""; oInvoice.Lines.CostingCode4 = Norma.CodSAP; oInvoice.Lines.CostingCode5 = ""; break; } case "5": { oInvoice.Lines.CostingCode = ""; oInvoice.Lines.CostingCode2 = ""; oInvoice.Lines.CostingCode3 = ""; oInvoice.Lines.CostingCode4 = ""; oInvoice.Lines.CostingCode5 = Norma.CodSAP; break; } default: { oInvoice.Lines.CostingCode = Norma.CodSAP; oInvoice.Lines.CostingCode2 = ""; oInvoice.Lines.CostingCode3 = ""; oInvoice.Lines.CostingCode4 = ""; oInvoice.Lines.CostingCode5 = ""; break; } } oInvoice.Lines.LineTotal = Convert.ToDouble(item.TotalComprobante.Value - item.TotalImpuesto); if (Pais == "C") { G.GuardarTxt("ErrorSAP.txt", "Entro en: " + Pais); if (TipoGasto.Nombre.ToUpper().Contains("Combustible".ToUpper())) { var DetalleFac = db.DetCompras.Where(a => a.NumFactura == item.NumFactura && a.ClaveHacienda == item.ClaveHacienda && a.ConsecutivoHacienda == item.ConsecutivoHacienda).FirstOrDefault(); oInvoice.Lines.UserFields.Fields.Item("U_CantLitrosKw").Value = int.Parse(Math.Round(DetalleFac.Cantidad.Value).ToString()); oInvoice.Lines.UserFields.Fields.Item("U_Tipo").Value = (DetalleFac.NomPro.ToUpper().Contains("Diesel".ToUpper()) ? "Diesel" : QuitarTilde(DetalleFac.NomPro).ToUpper().Contains("Super".ToUpper()) ? "Gasolina Super" : QuitarTilde(DetalleFac.NomPro).ToUpper().Contains("Regular".ToUpper()) ? "Gasolina Regular" : "Diesel"); } oInvoice.Lines.UserFields.Fields.Item("U_NumFactura").Value = item.NumFactura.ToString(); oInvoice.Lines.UserFields.Fields.Item("U_FechaFactura").Value = item.FecFactura; } else //Panama { G.GuardarTxt("ErrorSAP.txt", "Entro en: " + Pais); if (TipoGasto.Nombre.ToUpper().Contains("Comb".ToUpper())) { var DetalleFac = db.DetCompras.Where(a => a.NumFactura == item.NumFactura && a.ClaveHacienda == item.ClaveHacienda && a.ConsecutivoHacienda == item.ConsecutivoHacienda).FirstOrDefault(); oInvoice.Lines.UserFields.Fields.Item("U_CantLitrosKw").Value = int.Parse(Math.Round(DetalleFac.Cantidad.Value).ToString()); oInvoice.Lines.UserFields.Fields.Item("U_Tipo").Value = (DetalleFac.NomPro.ToUpper().Contains("Diesel".ToUpper()) ? "Diesel" : QuitarTilde(DetalleFac.NomPro).ToUpper().Contains("Gasolina 95".ToUpper()) ? "Gasolina 95" : QuitarTilde(DetalleFac.NomPro).ToUpper().Contains("Gasolina 90".ToUpper()) ? "Gasolina 90" : "Gas LP"); } oInvoice.Lines.UserFields.Fields.Item("U_REFFAC").Value = item.NumFactura.ToString(); oInvoice.Lines.UserFields.Fields.Item("U_FechaFac").Value = item.FecFactura; switch (item.CodProveedor.Replace("-", "").Replace("-", "").Length) { case 8: { oInvoice.Lines.UserFields.Fields.Item("U_Tipoid").Value = "1"; break; } case 9: { oInvoice.Lines.UserFields.Fields.Item("U_Tipoid").Value = "1"; break; } case 10: { oInvoice.Lines.UserFields.Fields.Item("U_Tipoid").Value = "3"; break; } case 14: { oInvoice.Lines.UserFields.Fields.Item("U_Tipoid").Value = "2"; break; } case 15: { oInvoice.Lines.UserFields.Fields.Item("U_Tipoid").Value = "2"; break; } default: { oInvoice.Lines.UserFields.Fields.Item("U_Tipoid").Value = "1"; break; } } oInvoice.Lines.UserFields.Fields.Item("U_RUC").Value = item.CodProveedor.Split('[')[0]; oInvoice.Lines.UserFields.Fields.Item("U_DV").Value = item.CodProveedor.Split('[')[1]; oInvoice.Lines.UserFields.Fields.Item("U_Proveedor").Value = item.NomProveedor; } oInvoice.Lines.Add(); i++; } //Preguntar por el pais if (Pais == "C") { if (imp1 > 0) { oInvoice.Lines.SetCurrentLine(i); oInvoice.Lines.ItemDescription = "Impuesto 1"; oInvoice.Lines.LineTotal = Convert.ToDouble(imp1); oInvoice.Lines.TaxCode = param.IMPEX; oInvoice.Lines.AccountCode = param.CI1; oInvoice.Lines.Add(); i++; } if (imp2 > 0) { oInvoice.Lines.SetCurrentLine(i); oInvoice.Lines.ItemDescription = "Impuesto 2"; oInvoice.Lines.LineTotal = Convert.ToDouble(imp2); oInvoice.Lines.TaxCode = param.IMPEX; oInvoice.Lines.AccountCode = param.CI2; oInvoice.Lines.Add(); i++; } if (imp4 > 0) { oInvoice.Lines.SetCurrentLine(i); oInvoice.Lines.ItemDescription = "Impuesto 4"; oInvoice.Lines.LineTotal = Convert.ToDouble(imp4); oInvoice.Lines.TaxCode = param.IMPEX; oInvoice.Lines.AccountCode = param.CI4; oInvoice.Lines.Add(); i++; } if (imp8 > 0) { oInvoice.Lines.SetCurrentLine(i); oInvoice.Lines.ItemDescription = "Impuesto 8"; oInvoice.Lines.LineTotal = Convert.ToDouble(imp8); oInvoice.Lines.TaxCode = param.IMPEX; oInvoice.Lines.AccountCode = param.CI8; oInvoice.Lines.Add(); i++; } if (imp13 > 0) { oInvoice.Lines.SetCurrentLine(i); oInvoice.Lines.ItemDescription = "Impuesto 13"; oInvoice.Lines.LineTotal = Convert.ToDouble(imp13); oInvoice.Lines.TaxCode = param.IMPEX; oInvoice.Lines.AccountCode = param.CI13; oInvoice.Lines.Add(); i++; } } else //Panama { if (imp1 > 0) { oInvoice.Lines.SetCurrentLine(i); oInvoice.Lines.ItemDescription = "ITBMS(7%)"; oInvoice.Lines.LineTotal = Convert.ToDouble(imp1); oInvoice.Lines.VatGroup = param.IMPEX; //oInvoice.Lines.TaxCode = param.IMPEX; oInvoice.Lines.AccountCode = param.CI1; oInvoice.Lines.Add(); i++; } if (imp2 > 0) { oInvoice.Lines.SetCurrentLine(i); oInvoice.Lines.ItemDescription = "ITBMS(10%)"; oInvoice.Lines.LineTotal = Convert.ToDouble(imp2); oInvoice.Lines.VatGroup = param.IMPEX; // oInvoice.Lines.TaxCode = param.IMPEX; oInvoice.Lines.AccountCode = param.CI2; oInvoice.Lines.Add(); i++; } } var respuesta = oInvoice.Add(); G.GuardarTxt("ErrorSAP.txt", "Respuesta: " + respuesta.ToString()); if (respuesta == 0) { var docEntry = Conexion.Company.GetNewObjectKey(); db.Entry(Cierre).State = EntityState.Modified; Cierre.ProcesadaSAP = true; db.SaveChanges(); resp = new { DocEntry = docEntry, // Series = pedido.Series.ToString(), Type = "oPurchaiseInvoice", Status = 1, Message = "Factura creada exitosamente", User = Conexion.Company.UserName }; G.CerrarConexionAPP(db); Conexion.Desconectar(); return(Request.CreateResponse(HttpStatusCode.OK, resp)); } BitacoraErrores be = new BitacoraErrores(); be.Descripcion = Conexion.Company.GetLastErrorDescription(); be.StackTrace = Conexion.Company.UserName; be.Metodo = "Insercion de Asiento"; be.Fecha = DateTime.Now; db.BitacoraErrores.Add(be); db.SaveChanges(); resp = new { // Series = pedido.Series.ToString(), DocEntry = 0, Type = "oPurchaiseInvoice", Status = 0, Message = Conexion.Company.GetLastErrorDescription(), User = Conexion.Company.UserName }; Conexion.Desconectar(); G.CerrarConexionAPP(db); return(Request.CreateResponse(HttpStatusCode.OK, resp)); } catch (Exception ex) { resp = new { DocEntry = 0, Type = "oPurchaiseInvoice", Status = 0, Message = "[Stack] -> " + ex.StackTrace + " -- [Message] --> " + ex.Message, User = Conexion.Company.UserName }; BitacoraErrores be = new BitacoraErrores(); be.Descripcion = ex.Message; be.StackTrace = ex.StackTrace; be.Metodo = "Insercion de Asiento"; be.Fecha = DateTime.Now; db.BitacoraErrores.Add(be); db.SaveChanges(); Conexion.Desconectar(); G.CerrarConexionAPP(db); return(Request.CreateResponse(HttpStatusCode.InternalServerError, resp)); } }