This commit is contained in:
Nicolas Bally 2019-06-02 18:48:14 +02:00
parent 9f07f46df8
commit 429325823c
31 changed files with 1103 additions and 11 deletions

View File

@ -244,6 +244,3 @@ DEPENDENCIES
uglifier (>= 1.3.0)
unicorn (= 4.6.3)
wicked_pdf
BUNDLED WITH
1.16.1

View File

@ -4,7 +4,7 @@
#= require jquery.bxslider
#= require jquery.easing.1.3
#= require nested_fields
@scrollToAnchor = (aid) ->

View File

@ -0,0 +1,11 @@
@remove_fields = (link) ->
$(link).prev("input[type=hidden]").val "1"
$(link).closest(".field").hide()
false
@add_fields = (link, association, content) ->
new_id = new Date().getTime()
regexp = new RegExp("new_" + association, "g")
$(link).closest("p").next("." + association + "_form").prepend content.replace(regexp, new_id).replace(association + "_class", "new_field")
$(".new_field").removeClass "new_field"
false

View File

@ -62,6 +62,9 @@
}
#personnal_menu{
position:absolute;
top:15px;
right:35px;
a{
margin:0;
@ -83,9 +86,7 @@
opacity:1;
color:rgba(116,180,55,1);
}
position:absolute;
top:15px;
right:35px;
}
}

View File

@ -110,7 +110,7 @@ class Admin::SheetsController < ApplicationController
@sheet = Sheet.find(params[:id])
else
render :action => "edit"
end
end

View File

@ -0,0 +1,308 @@
# -*- encoding : utf-8 -*-
class Public::JoinsController < ApplicationController
layout "public"
skip_before_filter :verify_authenticity_token, :only => [:ipn]
def select_sheet
if !session[:sheet_id] or !(@sheet = Sheet.where(:id => session[:sheet_id]).first)
@sheet = Sheet.new(:sheet_type => 1, :web => true)
@sheet.people.build(:web => true)
@sheet.sheet_years.build(:year => Renew::YEAR, :payment_type => 3)
else
end
end
def save_sheet
if !session[:sheet_id] or !(@sheet = Sheet.where(:id => session[:sheet_id]).first)
@sheet = Sheet.new(params.require(:sheet).permit!)
if @sheet.save
session[:sheet_id] = @sheet.id
if @sheet.sheet_years.first.payment_type == 3
redirect_to paid_by_paypal_public_joins_path
else
redirect_to paid_public_joins_path
end
else
render action: "select_sheet"
end
else
if @sheet.update_attributes(params.require(:sheet).permit!)
session[:sheet_id] = @sheet.id
if @sheet.sheet_years.first.payment_type == 3
redirect_to paid_by_paypal_public_joins_path
else
redirect_to paid_public_joins_path
end
else
render action: "select_sheet"
end
end
end
def paid
@sheet = Sheet.where(:id => session[:sheet_id]).first
if !@sheet or @sheet.ok
redirect_to select_sheet_public_joins_path
else
respond_to do |format|
format.html { }
end
end
end
def paid_by_paypal
@sheet = Sheet.where(:id => session[:sheet_id]).first
if @sheet and !@sheet.ok
require 'paypal-sdk-merchant'
@api = PayPal::SDK::Merchant::API.new
@set_express_checkout = @api.build_set_express_checkout({
:SetExpressCheckoutRequestDetails => {
:custom => @sheet.id,
:ReturnURL => do_paypal_payment_public_joins_url,
:CancelURL => select_sheet_public_joins_url(),
:NoShipping => 1,
:PaymentDetails => [{
:OrderTotal => {
:currencyID => "EUR",
:value =>@sheet.sheet_years.first.amount },
:NotifyURL => "http://lepicvert.org"+ipn_public_joins_path,
:PaymentDetailsItem => [{:Name => "Nouvelle adhésion",:Quantity => 1,:Amount => {:currencyID => "EUR",:value => @sheet.sheet_years.first.amount } }],
:PaymentAction => "Sale" }] } })
# Make API call & get response
@set_express_checkout_response = @api.set_express_checkout(@set_express_checkout)
# Access Response
if @set_express_checkout_response.success?
@get_express_checkout_details = @api.build_get_express_checkout_details({
:Token => @sheet.id })
@get_express_checkout_details_response = @api.get_express_checkout_details(@get_express_checkout_details)
@payment_detail = @get_express_checkout_details_response.GetExpressCheckoutDetailsResponseDetails.PaymentDetails[0]
redirect_to @api.express_checkout_url(@set_express_checkout_response.Token)
else
@set_express_checkout_response.Errors
end
else
redirect_to select_sheet_public_joins_path()
end
end
def do_paypal_payment
require 'paypal-sdk-merchant'
@api = PayPal::SDK::Merchant::API.new
@get_express_checkout_details = @api.build_get_express_checkout_details({:Token => params[:token] })
@get_express_checkout_details_response = @api.get_express_checkout_details(@get_express_checkout_details)
# Access Response
if @get_express_checkout_details_response.success?
@sheet = Sheet.find(@get_express_checkout_details_response.GetExpressCheckoutDetailsResponseDetails.Custom.to_s)
puts "AAA"
puts @get_express_checkout_details_response.GetExpressCheckoutDetailsResponseDetails.Custom.to_s
else
@get_express_checkout_details_response.Errors
end
# Build request object
@do_express_checkout_payment = @api.build_do_express_checkout_payment({
:DoExpressCheckoutPaymentRequestDetails => {
:PaymentAction => "Sale",
:Token => params[:token],
:PayerID => params[:PayerID],
:PaymentDetails => [{
:OrderTotal => {
:currencyID => "EUR",
:value => @sheet.sheet_years.first.amount },
:NotifyURL => "http://lepicvert.org"+ipn_public_joins_path }] } })
# Make API call & get response
@do_express_checkout_payment_response = @api.do_express_checkout_payment(@do_express_checkout_payment)
# Access Response
if @do_express_checkout_payment_response.success?
@payment_info = @do_express_checkout_payment_response.DoExpressCheckoutPaymentResponseDetails.PaymentInfo[0]
@do_express_checkout_payment_response.DoExpressCheckoutPaymentResponseDetails
@do_express_checkout_payment_response.FMFDetails
if @payment_info.PaymentStatus.to_s == "Completed"
@sheet.ok = true
@sheet.save
@sheet.done_return
session[:sheet_id] = nil
redirect_to thanks_public_joins_url
else
render :file => 'public/500.html', :status => 500, :layout => false
end
else
render :file => 'public/500.html', :status => 500, :layout => false
end
end
def ipn
@api = PayPal::SDK::Merchant.new
if @api.ipn_valid?(request.raw_post) # return true or false
@sheet = Order.find_by_token(params[:custom].to_s)
if params[:payment_status] == "Completed"
@sheet.paypal_test_ipn= params[:test_ipn]
@sheet.paypal_txn_type = params[:txn_type]
@sheet.paypal_txn_id = params[:txn_id]
@sheet.paypal_payment_date = params[:payment_date]
@sheet.paypal_payment_status = params[:payment_status]
@sheet.paypal_reason_code = params[:reason_code]
@sheet.paypal_payment_type = params[:payment_type]
@sheet.paypal_mc_currency = params[:mc_currency]
@sheet.paypal_mc_fee = params[:mc_fee]
@sheet.paypal_mc_gross = params[:mc_gross]
@sheet.paypal_residence_country = params[:residence_country]
@sheet.paypal_last_name = params[:last_name]
@sheet.paypal_first_name = params[:first_name]
@sheet.paypal_payer_email = params[:payer_email]
@sheet.paypal_payer_id = params[:payer_id]
@sheet.paypal_payer_status = params[:payer_status]
@sheet.paypal_receiver_id = params[:receiver_id]
@sheet.paypal_receiver_email = params[:receiver_email]
@sheet.paypal_protection_eligibility = params[:protection_eligibility]
@sheet.paypal_ipn_track_id = params[:ipn_track_id]
@sheet.save
puts "le paiement de la commande #{@sheet.id} par paypal est validé"
else
@sheet.paypal_test_ipn= params[:test_ipn]
@sheet.paypal_txn_type = params[:txn_type]
@sheet.paypal_txn_id = params[:txn_id]
@sheet.paypal_payment_date = params[:payment_date]
@sheet.paypal_payment_status = params[:payment_status]
@sheet.paypal_reason_code = params[:reason_code]
@sheet.paypal_payment_type = params[:payment_type]
@sheet.paypal_mc_currency = params[:mc_currency]
@sheet.paypal_mc_fee = params[:mc_fee]
@sheet.paypal_mc_gross = params[:mc_gross]
@sheet.paypal_residence_country = params[:residence_country]
@sheet.paypal_last_name = params[:last_name]
@sheet.paypal_first_name = params[:first_name]
@sheet.paypal_payer_email = params[:payer_email]
@sheet.paypal_payer_id = params[:payer_id]
@sheet.paypal_payer_status = params[:payer_status]
@sheet.paypal_receiver_id = params[:receiver_id]
@sheet.paypal_receiver_email = params[:receiver_email]
@sheet.paypal_protection_eligibility = params[:protection_eligibility]
@sheet.paypal_ipn_track_id = params[:ipn_track_id]
@sheet.ok = false
@sheet.save
@sheet.done_return
end
else
end
render :inline => "test"
end
end

View File

@ -0,0 +1,273 @@
# -*- encoding : utf-8 -*-
class Public::RenewsController < ApplicationController
layout "public"
skip_before_filter :verify_authenticity_token, :only => [:ipn]
def select_sheet
@renew = Renew.new(:sheet_number => params[:s])
end
def save_sheet
@renew = Renew.new(params.require(:renew).permit!)
if @renew.save
session[:renew_id] = @renew.id
redirect_to paid_by_paypal_public_renews_index_path
else
render action: "select_sheet"
end
end
def paid
@renew = Order.find_by_token(params[:id])
if @renew.paid
redirect_to public_order_path(@renew.token)
else
respond_to do |format|
format.html { redirect_to paid_by_paypal_public_order_path(@renew.token)}
end
end
end
def paid_by_paypal
@renew = Renew.where(:id => session[:renew_id]).first
if @renew and !@renew.ok
require 'paypal-sdk-merchant'
@api = PayPal::SDK::Merchant::API.new
@set_express_checkout = @api.build_set_express_checkout({
:SetExpressCheckoutRequestDetails => {
:custom => @renew.id,
:ReturnURL => do_paypal_payment_public_renews_index_url,
:CancelURL => select_sheet_public_renews_index_url(),
:NoShipping => 1,
:PaymentDetails => [{
:OrderTotal => {
:currencyID => "EUR",
:value =>@renew.price },
:NotifyURL => "http://lepicvert.org"+ipn_public_renews_index_path,
:PaymentDetailsItem => [{:Name => "Renouvellement adhésion",:Quantity => 1,:Amount => {:currencyID => "EUR",:value => @renew.price } }],
:PaymentAction => "Sale" }] } })
# Make API call & get response
@set_express_checkout_response = @api.set_express_checkout(@set_express_checkout)
# Access Response
if @set_express_checkout_response.success?
@get_express_checkout_details = @api.build_get_express_checkout_details({
:Token => @renew.id })
@get_express_checkout_details_response = @api.get_express_checkout_details(@get_express_checkout_details)
@payment_detail = @get_express_checkout_details_response.GetExpressCheckoutDetailsResponseDetails.PaymentDetails[0]
redirect_to @api.express_checkout_url(@set_express_checkout_response.Token)
else
@set_express_checkout_response.Errors
end
else
redirect_to select_sheet_public_renews_path()
end
end
def do_paypal_payment
require 'paypal-sdk-merchant'
@api = PayPal::SDK::Merchant::API.new
@get_express_checkout_details = @api.build_get_express_checkout_details({:Token => params[:token] })
@get_express_checkout_details_response = @api.get_express_checkout_details(@get_express_checkout_details)
# Access Response
if @get_express_checkout_details_response.success?
@renew = Renew.find(@get_express_checkout_details_response.GetExpressCheckoutDetailsResponseDetails.Custom.to_s)
puts "AAA"
puts @get_express_checkout_details_response.GetExpressCheckoutDetailsResponseDetails.Custom.to_s
else
@get_express_checkout_details_response.Errors
end
# Build request object
@do_express_checkout_payment = @api.build_do_express_checkout_payment({
:DoExpressCheckoutPaymentRequestDetails => {
:PaymentAction => "Sale",
:Token => params[:token],
:PayerID => params[:PayerID],
:PaymentDetails => [{
:OrderTotal => {
:currencyID => "EUR",
:value => @renew.price },
:NotifyURL => "http://lepicvert.org"+ipn_public_renews_index_path }] } })
# Make API call & get response
@do_express_checkout_payment_response = @api.do_express_checkout_payment(@do_express_checkout_payment)
# Access Response
if @do_express_checkout_payment_response.success?
@payment_info = @do_express_checkout_payment_response.DoExpressCheckoutPaymentResponseDetails.PaymentInfo[0]
@do_express_checkout_payment_response.DoExpressCheckoutPaymentResponseDetails
@do_express_checkout_payment_response.FMFDetails
if @payment_info.PaymentStatus.to_s == "Completed"
@renew.payment_type_id = 3
@renew.ok = true
@renew.save
@renew.done_return
redirect_to thanks_public_renews_index_url
else
render :file => 'public/500.html', :status => 500, :layout => false
end
else
render :file => 'public/500.html', :status => 500, :layout => false
end
end
def ipn
@api = PayPal::SDK::Merchant.new
if @api.ipn_valid?(request.raw_post) # return true or false
@renew = Order.find_by_token(params[:custom].to_s)
if params[:payment_status] == "Completed"
@renew.payment_type_id = 3
@renew.ok = true
@renew.paypal_test_ipn= params[:test_ipn]
@renew.paypal_txn_type = params[:txn_type]
@renew.paypal_txn_id = params[:txn_id]
@renew.paypal_payment_date = params[:payment_date]
@renew.paypal_payment_status = params[:payment_status]
@renew.paypal_reason_code = params[:reason_code]
@renew.paypal_payment_type = params[:payment_type]
@renew.paypal_mc_currency = params[:mc_currency]
@renew.paypal_mc_fee = params[:mc_fee]
@renew.paypal_mc_gross = params[:mc_gross]
@renew.paypal_residence_country = params[:residence_country]
@renew.paypal_last_name = params[:last_name]
@renew.paypal_first_name = params[:first_name]
@renew.paypal_payer_email = params[:payer_email]
@renew.paypal_payer_id = params[:payer_id]
@renew.paypal_payer_status = params[:payer_status]
@renew.paypal_receiver_id = params[:receiver_id]
@renew.paypal_receiver_email = params[:receiver_email]
@renew.paypal_protection_eligibility = params[:protection_eligibility]
@renew.paypal_ipn_track_id = params[:ipn_track_id]
@renew.save
puts "le paiement de la commande #{@renew.id} par paypal est validé"
else
@renew.paypal_test_ipn= params[:test_ipn]
@renew.paypal_txn_type = params[:txn_type]
@renew.paypal_txn_id = params[:txn_id]
@renew.paypal_payment_date = params[:payment_date]
@renew.paypal_payment_status = params[:payment_status]
@renew.paypal_reason_code = params[:reason_code]
@renew.paypal_payment_type = params[:payment_type]
@renew.paypal_mc_currency = params[:mc_currency]
@renew.paypal_mc_fee = params[:mc_fee]
@renew.paypal_mc_gross = params[:mc_gross]
@renew.paypal_residence_country = params[:residence_country]
@renew.paypal_last_name = params[:last_name]
@renew.paypal_first_name = params[:first_name]
@renew.paypal_payer_email = params[:payer_email]
@renew.paypal_payer_id = params[:payer_id]
@renew.paypal_payer_status = params[:payer_status]
@renew.paypal_receiver_id = params[:receiver_id]
@renew.paypal_receiver_email = params[:receiver_email]
@renew.paypal_protection_eligibility = params[:protection_eligibility]
@renew.paypal_ipn_track_id = params[:ipn_track_id]
@renew.ok = false
@renew.save
@renew.done_return
end
else
end
render :inline => "test"
end
end

View File

@ -13,5 +13,14 @@ module DocumentLineHelper
end
link_to_function(name, "add_fields(this, \"#{association}\", \"#{escape_javascript(fields)}\");")
end
def public_link_to_add_fields(name, f, association)
new_object = f.object.class.reflect_on_association(association).klass.new()
fields = f.fields_for(association, new_object, :child_index => "new_#{association}") do |builder|
render("public/"+association.to_s + "/form", :form => builder)
end
link_to_function(name, "add_fields(this, \"#{association}\", \"#{escape_javascript(fields)}\");")
end
end

View File

@ -9,7 +9,15 @@ class Person < ActiveRecord::Base
validates :surname, :presence => true
validates :firstname, :presence => true
validates :email, :presence => true, :if => :web?
# validates :email, :format => { :with => /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i }
attr_accessor :web
def web?
true if self.web
end
def name
self.firstname.to_s+" "+self.surname.to_s
end

55
app/models/renew.rb Normal file
View File

@ -0,0 +1,55 @@
class Renew < ActiveRecord::Base
belongs_to :sheet
validates :sheet_number, :presence => true
validates :email, :presence => true
validates :payment_type_id, :presence => true
validates :join_type, :presence => true
before_validation do
self.payment_type_id = 3
if self.join_type == 1
self.price = 10.0
elsif self.join_type == 2
self.price = 15.0
else
self.price = nil
end
if self.sheet_number
self.sheet = Sheet.where(:sheet_number => self.sheet_number).first
if !self.sheet
errors.add(:sheet_number, "Numéro d'adhérent invalide")
end
end
end
YEAR = 2019
def done_return
if self.ok and !self.return_done
sheet_year = self.sheet.sheet_years.new(:year => Renew::YEAR, :join_type => self.join_type, :paid_at => Time.now, :amount => self.price, :payment_type => self.payment_type_id, )
if sheet_year.save
self.return_done = true
self.save
else
false
end
end
end
end

View File

@ -13,6 +13,10 @@ class Sheet < ActiveRecord::Base
validates :sheet_type, :presence => true
validates :address, :presence => true, :if => :web?
validates :pc, :presence => true, :if => :web?
validates :city, :presence => true, :if => :web?
validates :country, :presence => true, :if => :web?
#attr_accessible :donates_attributes, :sheet_type, :people_attributes, :sheet_years_attributes, :corporate, :address, :address2, :address3, :pc, :city, :country, :skills, :other_mail, :other_phone
@ -23,6 +27,40 @@ class Sheet < ActiveRecord::Base
SHEET_TYPE = {1 => "adherent",2 => "sympathisant"}
attr_accessor :error_join
before_validation do
if self.sheet_years[0]
if self.sheet_years[0].join_type == 1
self.sheet_years[0].amount = 10
elsif self.sheet_years[0].join_type == 2
self.sheet_years[0].amount = 15
end
end
if self.web
if self.people.size > 1
if self.sheet_years[0]
if self.sheet_years[0].join_type == 1
#dsffsd = dssfd
self.errors.add(:error_join, "Vous devez sélectionner l'adhésion familiale si vous voulez spécifier plusieurs personnes")
end
end
end
end
end
def done_return
self.sheet_years.first.payment_type = 3
self.sheet_years.first.paid_at = Date.today
self.sheet_years.first.save
self.return_done = true
self.save
end
after_create do
self.generate_sheet_number
self.generate_token
@ -65,6 +103,7 @@ class Sheet < ActiveRecord::Base
requette += "(sheet_type IN(?))" if input[:sheet_type]
requette += " AND " if (input[:sheet_year] or input[:sheet_type]) and input[:sheet_city]
requette += "(city IN(?))" if input[:sheet_city]
requette += " AND web = 1" if input[:web]
conditions = []
conditions << requette
conditions << input[:sheet_year] if input[:sheet_year]

View File

@ -7,7 +7,7 @@ class SheetYear < ActiveRecord::Base
#attr_accessible :year, :join_type, :benefactor, :gift_year, :paid_at, :amount, :payment_type, :bank, :check_number, :sheet_id, :plume
JOIN_TYPE = {1 => "Individuel", 2 => "Familial", 3 =>"Association"}
PAYMENT_TYPE = {1 => "Chèque", 2 => "Liquide"}
PAYMENT_TYPE = {1 => "Chèque", 2 => "Liquide", 3 => "Paypal (ou carte bancaire)"}
after_save do

View File

@ -43,7 +43,11 @@
%br
%br
%br
%h4 Provenance :
=check_box_tag "sheet_filter[web][]", 1, (true if params[:sheet_filter] and params[:sheet_filter][:web] and params[:sheet_filter][:web].include?("1"))
Web
%br
%br
%br

View File

@ -0,0 +1,40 @@
%h1 Adhérer
%p
=semantic_form_for @sheet, :url => save_sheet_public_joins_path(), :html => {:method => :get} do |form|
=form.inputs do
%h3
Votre adhésion
=Renew::YEAR
=":"
%p
Merci de nous envoyer votre chèque de réglement par courrier ou de passer régler votre adhésion en espèce au local de l'association : 24 place de la Mairie, 38140 Réaumont
.sheet_years_form
=form.semantic_fields_for :sheet_years do |f|
.field
=f.hidden_field :year
%br
=form.input :error_join, :label => false, :input_html => {:style => "display:none;"}
%p
Montant de l'adhésion :
=number_to_currency f.object.amount
=# f.input :join_type, :collection => {"Individuel (10€)" => 1, "Familial (15€)" => 2}, :as => :select, :label => "Type d'adhésion :", :include_blank => false
= f.input :payment_type, :collection => SheetYear::PAYMENT_TYPE.map {|u| [u[1], u[0]] }, :as => :select, :label => "Type de paiement : ", :include_blank => false
= form.submit 'Changer mon mode de paiement', :class => "btn btn-success"

View File

@ -0,0 +1,5 @@
%br
%br
%br
=debug @set_express_checkout_response.Errors

View File

@ -0,0 +1 @@
=debug @sheet.sheet_years

View File

@ -0,0 +1,66 @@
%h1 Adhérer
%p
=semantic_form_for @sheet, :url => save_sheet_public_joins_path(), :html => {:method => :get} do |form|
=form.inputs do
=form.hidden_field :sheet_type
=form.hidden_field :web
%h3 Foyer
%p= public_link_to_add_fields "Ajouter une personne (attention, si vous indiquez plusieurs personnes vous devez prendre une adhésion familiale)", form, :people
.people_form
=form.semantic_fields_for :people do |form|
=render :partial => "public/people/form", :locals => {:form => form}
%h3 Généralités
=form.hidden_field :corporate
=form.input :address, :label => "Adresse"
=form.input :address2, :label => "Adresse (suite)"
=form.input :address3, :label => "Adresse (suite)"
=form.input :pc, :label => "Code postal"
=form.input :city, :label => "Ville"
=form.input :country, :label => "Pays", :as => :string
=#form.input :skills, :label => "Compétences"
=#form.input :other_mail, :label => "Autre mail :"
=#form.input :other_phone, :label => "Autre téléphone : "
%h3
Votre adhésion
=Renew::YEAR
=":"
.sheet_years_form
=form.semantic_fields_for :sheet_years do |f|
.field
=f.hidden_field :year
%br
=form.input :error_join, :label => false, :input_html => {:style => "display:none;"}
= f.input :join_type, :collection => {"Individuel (10€)" => 1, "Familial (15€)" => 2}, :as => :select, :label => "Type d'adhésion :", :include_blank => false
-if false
= f.label :benefactor, "Bienfaiteur : "
= f.check_box :benefactor
%br
= f.label :gift_year, "Année d'adhésion offerte : "
= f.check_box :gift_year, :onchange => "payment_form($(this));"
%br
= f.input :payment_type, :collection => SheetYear::PAYMENT_TYPE.map {|u| [u[1], u[0]] }, :as => :select, :label => "Type de paiement : ", :include_blank => false
= form.submit 'Adhérer', :class => "btn btn-success"

View File

@ -0,0 +1 @@
%p Merci ! Votre adhésion a bien été enregistrée.

View File

@ -0,0 +1,19 @@
.field
.person_form
.person
=form.hidden_field :newsletter
=form.hidden_field :web
%table
%tr
%td=form.input :surname, :label => "Nom"
%td=form.input :firstname, :label => "Prénom"
%td=form.input :email, :label => "Email"
%td{:style => "vertical-align:top;"}=form.input :phone, :label => "Tél"
%td
&nbsp;&nbsp;&nbsp;
= link_to_remove_fields i(:"trash-o"), form

View File

@ -0,0 +1,32 @@
#sheet_person.line_sheet_block{:id => person.id}
%table{:style => "width:100%;"}
%tr
%td{:style => "width:16%;"}= "Oui" if person.newsletter
%td{:style => "width:16%;"}= person.surname
%td{:style => "width:16%;"}= person.firstname
%td{:style => "width:16%;"}= person.email
%td{:style => "width:16%;"}= person.phone
%td{:style => "width:16%;"}= person.job
%tr
%td{:colspan => 5}
-person.newsgroups.each do |ng|
="| "+ng.name+" |"
%td{:style => "width:16%;text-align:right;"}
-if has_permission?('adherent.edit')
-if person == person.sheet.person
-img = image_tag("/images/style/quartz-admin/principal_active.png")
-else
-img = image_tag("/images/style/quartz-admin/principal.png")
= link_to img, :url => principal_admin_person_path(person), :method => :get, :remote => true
-else
=image_tag("/images/style/quartz-admin/principal_active.png") if person == person.sheet.person

View File

@ -0,0 +1,5 @@
%br
%br
%br
=debug @set_express_checkout_response.Errors

View File

@ -0,0 +1,19 @@
%h1 Renouveller mon adhésion
%p Pour renouveller votre adhésion vous pouvez indiquer votre numéro d'adhérent ci-dessous :
=semantic_form_for @renew, :url => save_sheet_public_renews_index_path(), :html => {:method => :get} do |f|
-f.inputs do
=f.input :sheet_number, :label => "Numéro d'adhérent :"
=f.input :email, :label => "Email :"
=f.input :join_type, :collection => {"Individuel (10€)" => 1, "Familial (15€)" => 2}, :include_blank => false, :label => "Type d'adhésion", :as => :radio
=f.submit "Renouveller mon adhésion par CB"

View File

@ -0,0 +1 @@
%p Merci ! Votre renouvellement a bien été enregistré.

View File

@ -2,6 +2,9 @@
=link_to image_tag("/logo_pic_vert_w.png", :id => "logo"), "/"
#personnal_menu
=link_to "Rennouveler mon adhésion »", select_sheet_public_renews_index_path
=link_to "Adhérer »", select_sheet_public_joins_path
=link_to "Accès au forum »", "/forum"
#menu

View File

@ -36,6 +36,32 @@ Survey::Application.routes.draw do
namespace :public do
resources :renews do
collection do
get :select_sheet
get :save_sheet
get :paid_by_paypal
get :do_paypal_payment
post :ipn
get :thanks
end
end
resources :joins do
collection do
get :select_sheet
get :save_sheet
get :paid_by_paypal
get :paid
get :do_paypal_payment
post :ipn
get :thanks
end
end
resources :faqs
resources :plumes do

View File

@ -0,0 +1,7 @@
class AddWebToSheets < ActiveRecord::Migration
def change
add_column :sheets, :web, :boolean, :default => false
add_column :sheets, :return_done,:boolean, :default => false
add_column :sheets, :ok, :boolean, :default => false
end
end

View File

@ -0,0 +1,45 @@
class CreateRenews < ActiveRecord::Migration
def change
create_table :renews do |t|
t.integer :year
t.references :sheet, index: true
t.string :sheet_number
t.integer :join_type
t.boolean :ok, :default => false
t.integer :payment_type_id
t.string :paypal_test_ipn
t.string :paypal_txn_type
t.string :paypal_txn_id
t.datetime :paypal_payment_date
t.string :paypal_payment_status
t.string :paypal_reason_code
t.string :paypal_payment_type
t.string :paypal_mc_currency
t.string :paypal_mc_fee
t.string :paypal_mc_gross
t.string :paypal_residence_country
t.string :paypal_last_name
t.string :paypal_first_name
t.string :paypal_payer_email
t.string :paypal_payer_id
t.string :paypal_payer_status
t.string :paypal_receiver_id
t.string :paypal_receiver_email
t.string :paypal_protection_eligibility
t.string :paypal_ipn_track_id
t.string :email
t.decimal :price, :precision => 10, :scale => 2
t.boolean :return_done, :default => false
t.timestamps
end
end
end

View File

@ -0,0 +1,35 @@
class AddPaypalToSheets < ActiveRecord::Migration
def change
add_column :sheets, :paypal, :string
add_column :sheets, :paypal_test_ipn, :string
add_column :sheets, :paypal_txn_type, :string
add_column :sheets, :paypal_txn_id, :string
add_column :sheets, :paypal_payment_date, :datetime
add_column :sheets, :paypal_payment_status, :string
add_column :sheets, :paypal_reason_code, :string
add_column :sheets, :paypal_payment_type, :string
add_column :sheets, :paypal_mc_currency, :string
add_column :sheets, :paypal_mc_fee, :string
add_column :sheets, :paypal_mc_gross, :string
add_column :sheets, :paypal_residence_country, :string
add_column :sheets, :paypal_last_name, :string
add_column :sheets, :paypal_first_name, :string
add_column :sheets, :paypal_payer_email, :string
add_column :sheets, :paypal_payer_id, :string
add_column :sheets, :paypal_payer_status, :string
add_column :sheets, :paypal_receiver_id, :string
add_column :sheets, :paypal_receiver_email, :string
add_column :sheets, :paypal_protection_eligibility, :string
add_column :sheets, :paypal_ipn_track_id, :string
end
end

View File

@ -11,7 +11,7 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 20180528150643) do
ActiveRecord::Schema.define(version: 20190315002155) do
create_table "admins", force: true do |t|
t.string "email", default: "", null: false
@ -751,6 +751,42 @@ ActiveRecord::Schema.define(version: 20180528150643) do
add_index "question_sets", ["survey_item_id"], name: "index_question_sets_on_survey_item_id", using: :btree
add_index "question_sets", ["survey_set_id"], name: "index_question_sets_on_survey_set_id", using: :btree
create_table "renews", force: true do |t|
t.integer "year"
t.integer "sheet_id"
t.string "sheet_number"
t.integer "join_type"
t.boolean "ok", default: false
t.integer "payment_type_id"
t.string "paypal_test_ipn"
t.string "paypal_txn_type"
t.string "paypal_txn_id"
t.datetime "paypal_payment_date"
t.string "paypal_payment_status"
t.string "paypal_reason_code"
t.string "paypal_payment_type"
t.string "paypal_mc_currency"
t.string "paypal_mc_fee"
t.string "paypal_mc_gross"
t.string "paypal_residence_country"
t.string "paypal_last_name"
t.string "paypal_first_name"
t.string "paypal_payer_email"
t.string "paypal_payer_id"
t.string "paypal_payer_status"
t.string "paypal_receiver_id"
t.string "paypal_receiver_email"
t.string "paypal_protection_eligibility"
t.string "paypal_ipn_track_id"
t.string "email"
t.decimal "price", precision: 10, scale: 2
t.boolean "return_done", default: false
t.datetime "created_at"
t.datetime "updated_at"
end
add_index "renews", ["sheet_id"], name: "index_renews_on_sheet_id", using: :btree
create_table "sheet_years", force: true do |t|
t.integer "year"
t.integer "join_type"
@ -787,6 +823,30 @@ ActiveRecord::Schema.define(version: 20180528150643) do
t.boolean "plume"
t.string "token"
t.string "sheet_number"
t.boolean "web", default: false
t.boolean "return_done", default: false
t.boolean "ok", default: false
t.string "paypal"
t.string "paypal_test_ipn"
t.string "paypal_txn_type"
t.string "paypal_txn_id"
t.datetime "paypal_payment_date"
t.string "paypal_payment_status"
t.string "paypal_reason_code"
t.string "paypal_payment_type"
t.string "paypal_mc_currency"
t.string "paypal_mc_fee"
t.string "paypal_mc_gross"
t.string "paypal_residence_country"
t.string "paypal_last_name"
t.string "paypal_first_name"
t.string "paypal_payer_email"
t.string "paypal_payer_id"
t.string "paypal_payer_status"
t.string "paypal_receiver_id"
t.string "paypal_receiver_email"
t.string "paypal_protection_eligibility"
t.string "paypal_ipn_track_id"
end
create_table "survey_item_answers", force: true do |t|

15
test/fixtures/renews.yml vendored Normal file
View File

@ -0,0 +1,15 @@
# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
one:
year: 1
sheet_id:
sheet_number: MyString
join_type: 1
ok: false
two:
year: 1
sheet_id:
sheet_number: MyString
join_type: 1
ok: false

View File

@ -0,0 +1,7 @@
require 'test_helper'
class RenewTest < ActiveSupport::TestCase
# test "the truth" do
# assert true
# end
end