コード例 #1
0
 /// <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;
 }
コード例 #2
0
 /// <summary>
 /// Deprecated Method for adding a new object to the Pagos EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
 /// </summary>
 public void AddToPagos(Pago pago)
 {
     base.AddObject("Pagos", pago);
 }
コード例 #3
0
        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);
        }
コード例 #4
0
        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;
        }
コード例 #5
0
        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();
        }
コード例 #6
0
 private void EnviarTicketEmail(Pago Pago)
 {
     EmailHelper.Enviar(getMensajeConfirmacion(Pago), "El Pago de Servicio se ha sido registrado. ", new PayCentersRepository().GetPayCenterEmail(PayCenterName));
 }
コード例 #7
0
 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);
 }