/// <summary> /// Create a new Pago object. /// </summary> /// <param name="pagoId">Initial value of the PagoId property.</param> /// <param name="servicioId">Initial value of the ServicioId property.</param> /// <param name="payCenterId">Initial value of the PayCenterId property.</param> /// <param name="cuentaId">Initial value of the CuentaId property.</param> /// <param name="movimientoId">Initial value of the MovimientoId property.</param> /// <param name="clienteNombre">Initial value of the ClienteNombre property.</param> /// <param name="importe">Initial value of the Importe property.</param> /// <param name="servicio">Initial value of the Servicio property.</param> /// <param name="status">Initial value of the Status property.</param> /// <param name="fechaVencimiento">Initial value of the FechaVencimiento property.</param> /// <param name="fechaCreacion">Initial value of the FechaCreacion property.</param> /// <param name="usoEvento">Initial value of the UsoEvento property.</param> public static Pago CreatePago(global::System.Int32 pagoId, global::System.Int32 servicioId, global::System.Int32 payCenterId, global::System.Int32 cuentaId, global::System.Int32 movimientoId, global::System.String clienteNombre, global::System.Decimal importe, global::System.String servicio, global::System.Int16 status, global::System.DateTime fechaVencimiento, global::System.DateTime fechaCreacion, global::System.Boolean usoEvento) { Pago pago = new Pago(); pago.PagoId = pagoId; pago.ServicioId = servicioId; pago.PayCenterId = payCenterId; pago.CuentaId = cuentaId; pago.MovimientoId = movimientoId; pago.ClienteNombre = clienteNombre; pago.Importe = importe; pago.Servicio = servicio; pago.Status = status; pago.FechaVencimiento = fechaVencimiento; pago.FechaCreacion = fechaCreacion; pago.UsoEvento = usoEvento; return pago; }
/// <summary> /// Deprecated Method for adding a new object to the Pagos EntitySet. Consider using the .Add method of the associated ObjectSet<T> property instead. /// </summary> public void AddToPagos(Pago pago) { base.AddObject("Pagos", pago); }
public ActionResult Create(PagoVM model) { if (PayCenterId == 0) { model.PayCenterName = string.Empty; AddValidationMessage(enumMessageType.DataValidation, "Por favor, seleccione primero un PayCenter."); return View(model); } EstadoCuentaBR br = new EstadoCuentaBR(repository.context); var saldo = br.GetSaldosPagoServicio(PayCenterId); ViewData["SaldoActual"] = saldo.SaldoActual.ToString("C"); ViewData["SaldoDisponible"] = saldo.SaldoDisponible.ToString("C"); ViewData["Eventos"] = saldo.EventosDisponibles; if (model.Importe <= 0) { AddValidationMessage(enumMessageType.DataValidation, "El importe no puede ser menor a $0.00."); return View(model); } if (ModelState.IsValid) { #region Crear Movimiento Inicial Pago pago = new Pago(); PaycenterBR payCenterBR = new PaycenterBR(); var cuentaId = payCenterBR.GetOrCreateCuentaPayCenter(PayCenterId, enumTipoCuenta.Pago_de_Servicios, PROVEEDOR_EVOLUCIONAMOVIL); //Devuelve si usa evento en el pago bool usaEvento = false; List<Movimiento> movimientos = br.CrearMovimientosPagoServicios(PayCenterId, (Decimal)model.Importe, PayCenterName, out usaEvento); Succeed = br.Succeed; ValidationMessages = br.ValidationMessages; if (!Succeed) { return View(model); } #endregion #region Registro de Pago string Referencia = ""; Mapper.CreateMap<PagoVM, Pago>().ForMember(dest => dest.DetallePagos, opt => opt.Ignore()); Mapper.Map(model, pago); pago.Servicio = model.Servicios.Where(x => x.Value == model.ServicioId).FirstOrDefault().Text; pago.PayCenterId = PayCenterId; pago.Movimiento = movimientos.Where(x => x.Motivo == (short)enumMotivo.Pago).First(); pago.UsoEvento = usaEvento; var iDetalles = serviciosRepository.LoadDetallesServicioByServicioID(pago.ServicioId); foreach (DetalleServicio d in iDetalles) { var valor = Request.Form[d.DetalleServicioId.ToString()]; if (d.EsReferencia) Referencia = valor; pago.DetallePagos.Add(new DetallePago { Campo = d.Campo, Valor = valor }); } repository.Add(pago); repository.Save(); //Actualizo el Id de referencia del Pago en los movimientos correspondientes br.ActualizaReferenciaIdMovimiento(pago.MovimientoId, pago.PagoId); repository.Save(); model.PagoId = pago.PagoId; #endregion #region Registro Ticket try { //Verifica si tiene configurada la comisión que mostrará al cliente, se toma el valor para mostrar en el ticket ParametrosRepository parametrosRepository = new ParametrosRepository(); var parametrosPayCenter = parametrosRepository.GetParametrosPayCenter(PayCenterId); var parametrosGlobales = parametrosRepository.GetParametrosGlobales(); Ticket ticket = new Ticket(); ticket.ClienteEmail = ""; ticket.ClienteNombre = pago.ClienteNombre; ticket.ClienteTelefono = ""; ticket.Comision = (parametrosPayCenter != null && parametrosPayCenter.ComisionCliente != null ? (Decimal)parametrosPayCenter.ComisionCliente : 0); //Comision configurada del paycenter ticket.FechaCreacion = DateTime.UtcNow.GetCurrentTime(); ticket.Folio = createFolio(pago.PagoId); ticket.Importe = pago.Importe; ticket.Leyenda = parametrosGlobales != null ? parametrosGlobales.LeyendaTicket : null; ticket.PagoId = pago.PagoId; ticket.PayCenterId = pago.PayCenterId; ticket.TipoServicio = pago.Servicio; ticket.Referencia = Referencia; ticket.PayCenterName = PayCenterName; ticket.FechaVencimiento = pago.FechaVencimiento; tRepository.Add(ticket); Succeed = tRepository.Save(); if (!Succeed) { AddValidationMessage(enumMessageType.UnhandledException, "Su pago ha sido Registrado con éxito. Sin embargo, no se pudo generar el ticket, favor de comunicarse con un ejecutivo. "); } //Ejecuta el envío de correo de forma asíncrona EnviarTicketDelegate enviarDelegate = new EnviarTicketDelegate(EnviarTicketEmail); var result = enviarDelegate.BeginInvoke(pago,null, null); return RedirectToAction("Ticket/" + ticket.PagoId.ToString()); } catch (Exception ex) { AddValidationMessage(enumMessageType.UnhandledException, "Su pago ha sido Registrado con éxito. Sin embargo, no se pudo generar el ticket, favor de comunicarse con un ejecutivo. "); return View(model); } #endregion } else { AddValidationMessage(enumMessageType.BRException, "Los datos no son válidos"); } return View(model); }
private string getMensajeConfirmacion(Pago p) { // emailTemplate= emailTemplate.Replace("@logoUrl", RelativeURLHelper.ToFullUrl(p.PayCenter.Logotipo)); string Logo = "<img src=\"" + string.Format("{0}://{1}", Request.Url.Scheme, Request.Url.Authority) + p.PayCenter.Logotipo + "\" />"; string emailTemplate = System.IO.File.ReadAllText(Server.MapPath("~/Content/Templates/TicketTemplate.htm")); emailTemplate = emailTemplate.Replace("@logoUrl", Logo); emailTemplate = emailTemplate.Replace("@Fecha", p.FechaCreacion.ToString()); emailTemplate = emailTemplate.Replace("@Folio", p.Ticket.Folio); emailTemplate = emailTemplate.Replace("@Vendedor", p.Ticket.PayCenterName); emailTemplate = emailTemplate.Replace("@Servicio", p.Servicio); emailTemplate = emailTemplate.Replace("@Cliente", p.ClienteNombre); emailTemplate = emailTemplate.Replace("@Leyenda", p.Ticket.Leyenda); emailTemplate = emailTemplate.Replace("@Footer", "ESTE COMPROBANTE NO ES VÁLIDO PARA EFECTOS FISCALES EN TERMINOS DE OFICIO DE NO 325-SAT-VII-B-2650 DE FECHA 1 DE DICIEMBRE DE 1997"); emailTemplate = emailTemplate.Replace("@Importe", p.Importe.ToString()); StringBuilder detallePago = new StringBuilder(); foreach (DetallePago d in p.DetallePagos) { detallePago.AppendLine("<tr><td style=\"font-size: .7em;width: 38%;vertical-align: text-top;margin: 0;position: relative;color: #aaa;text-align: left;\">" + d.Campo + "</td><td style=\"margin:0;width:38%;font-size: .8em!important;text-align: left;\">" + d.Valor + "</td></tr></tr>"); } emailTemplate = emailTemplate.Replace("@DynamicFields", detallePago.ToString()); return emailTemplate; }
private string getMensajeCambioEstatus(string status, Pago p) { StringBuilder cadena = new StringBuilder(); cadena.AppendLine("<h2>Detalle de pago</h2><img src='" + RelativeURLHelper.ToFullUrl(p.PayCenter.Logotipo) + "' />"); cadena.AppendLine("<table>"); cadena.AppendLine("<tr><td><h3>PayCenter</h3></td><td><strong>" + p.PayCenter.Nombre + "<strong></td></tr></tr>"); cadena.AppendLine("<tr><td>Servicio</td><div class='display-field fwb fsl'><h3>" + p.Servicio + "</h3></td></tr></tr>"); foreach (DetallePago d in p.DetallePagos) { cadena.AppendLine("<tr><td>" + d.Campo + "</td><td>" + d.Valor + "</td></tr></tr>"); } cadena.AppendLine("<tr><td>Fecha Vencimiento</td><td>" + p.FechaVencimiento.GetCurrentTime().ToShortDateString() + "</td></tr></tr>"); cadena.AppendLine("<tr><td>Nombre Cliente</td><td><h3>" + p.ClienteNombre + "</h3></td></tr>"); cadena.AppendLine("<tr><td>Importe</td><div class='display-field fwb fsxl'><h3>" + p.Importe.ToString("C", ci) + "</h3></td></tr>"); cadena.AppendLine("<tr><td>Estatus</td><div class='display-field fwb fsxl '><span class='Procesando'><h2>" + ((enumEstatusMovimiento)p.Status).ToString() + "</h2></span></td></tr>"); cadena.AppendLine("<table>"); cadena.AppendLine("<br />"); var lastEstatus = p.Movimiento.Movimientos_Estatus.Last(); if (lastEstatus != null && !string.IsNullOrEmpty(lastEstatus.Comentarios)) { cadena.AppendLine("Comentarios: <h4>" + lastEstatus.Comentarios + "</h4>"); } cadena.AppendLine("<a alt='DetallePago' href='" + RelativeURLHelper.ToFullUrl("PagoServicios/Details/" + p.PagoId.ToString()) + "'>Ver detalle de este pago</a>"); return cadena.ToString(); }
private void EnviarTicketEmail(Pago Pago) { EmailHelper.Enviar(getMensajeConfirmacion(Pago), "El Pago de Servicio se ha sido registrado. ", new PayCentersRepository().GetPayCenterEmail(PayCenterName)); }
private void EnviarCambioEstatusEmail(enumEstatusMovimiento EstatusMovimiento, Pago Pago, PayCenter PayCenter) { EmailHelper.Enviar(getMensajeCambioEstatus(EstatusMovimiento.ToString(), Pago), "El Pago de Servicio " + Pago.Ticket.Folio + " ha sido " + EstatusMovimiento.ToString(), PayCenter.Email); }