An error occurred while loading the file. Please try again.
-
Bastien Ho authored79dff45f
var AnnualContributionAmount = null;
var ToPayAmount = null;
var otherAmountField;
var membershipFieldWrapper;
var Syndicate;
var SyndicateId;
var membershipType;
var Frequency;
var Frequencies;
var FrequencySelector;
var MembershipStartDate;
var membershipEndDate;
const cartable_pick_membership_amount = function(){
var SalarySelect = CRM.$('#cartable-membership-salary-select');
AnnualContributionAmount = SalarySelect.val();
// TODO: calculate effective months to be paid
MonthlyContributionAmount = Math.round(AnnualContributionAmount/0.12)/100;
var FrequencyControl = CRM.$('.cartable-membership-frequency-selector input[type=radio]:checked');
var frequency_name = FrequencyControl.val();
var AnnualTaxFreeAmount = cartable_fiscal_deducted(AnnualContributionAmount);
var MonthlyTaxFreeAmount = cartable_fiscal_deducted(MonthlyContributionAmount);
CRM.$('.cartable-membership-frequency-selector .year-amount').text( AnnualContributionAmount+cartable.Membership.currency.symbol );
CRM.$('.cartable-membership-frequency-selector .month-amount').text( MonthlyContributionAmount+cartable.Membership.currency.symbol );
CRM.$('.cartable-membership-frequency-selector .year-free-amount').text( AnnualTaxFreeAmount+cartable.Membership.currency.symbol );
CRM.$('.cartable-membership-frequency-selector .month-free-amount').text( MonthlyTaxFreeAmount+cartable.Membership.currency.symbol );
CRM.$('.cartable-membership-frequency-selector .end-date').text( membershipEndDate );
CRM.$('.cartable-membership-frequency-selector .start-date').text( MembershipStartDate );
if(!frequency_name || typeof cartable.Membership.FrequenciesData[frequency_name]==='undefined'){
return;
}
Frequency = cartable.Membership.FrequenciesData[frequency_name];
if(Frequency.is_recur && Frequency.unit){
CRM.$('#is_recur').prop('checked', 'checked').trigger('change');
setTimeout(function(){
CRM.$('#auto_renew').prop('checked', 'checked').trigger('change');
}, 500);
CRM.$('#frequency_unit').val(Frequency.unit);
}
else{
CRM.$('#is_recur').removeProp('checked').trigger('change');
CRM.$('#auto_renew').removeProp('checked').trigger('change');
CRM.$('#frequency_unit').val('');
}
ToPayAmount = AnnualContributionAmount;
if(Frequency.unit == 'month'){
ToPayAmount = MonthlyContributionAmount;
}
var priceElement = CRM.$('#'+Syndicate.membership_field);
priceElement
.attr('data-amount', ToPayAmount)
.attr('price', '["price_'+cartable.Membership.membershipField.id+'","'+ToPayAmount+'||"]')
.trigger('click')
.next('label').find('.crm-price-amount-amount').text(cartable.Membership.currency.symbol+' '+ToPayAmount)
;
if(otherAmountField){
otherAmountField.val(ToPayAmount);
}
}
function cartable_fiscal_deducted(amount){
return Math.round(amount*(100-cartable.Membership.membershipTaxDeduction))/100;
}
function cartable_membership_text_replace(string){
7172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
return string
.replace('[year_amount]', '<span class="amount year-amount"></span>')
.replace('[month_amount]', '<span class="amount month-amount"></span>')
.replace('[year_free_amount]', '<span class="tax-free-amount year-free-amount"></span>')
.replace('[month_free_amount]', '<span class="tax-free-amount month-free-amount"></span>')
.replace('[start_date]', '<time class="membership-date start-date"></time>')
.replace('[end_date]', '<time class="membership-date end-date"></time>')
;
}
function cartable_format_date(datestring){
return CRM.utils.formatDate(datestring, cartable.Membership.i18n.dateformat);
}
const cartable_reset_membership_amount = function(){
CRM.$('#cartable-membership-selector').remove();
var MembershipSelector = CRM.$('<div>')
.attr('id', 'cartable-membership-selector')
;
var chosenSyndicateRadio = CRM.$('#priceset .membership_amount-content input[type=radio]:checked');
SyndicateId = chosenSyndicateRadio.attr('data-syndicate-id');
Syndicate = cartable.Syndicates.Syndicates[SyndicateId];
membershipType = cartable.Syndicates.IndexedMembershipTypes[SyndicateId];
initial_auto_select = true;
cartable_select_zone();
var chosenSyndicateButton = CRM.$('#cartable-label-'+chosenSyndicateRadio.attr('id')+'');
chosenSyndicateButton.addClass('active');
MembershipStartDate = cartable_format_date(membershipType.start_day);
membershipEndDate = cartable_format_date(membershipType.end_day);
MembershipSelector.append(
CRM.$('<h3>')
.addClass('cartable-membership-title')
.text('My contribution')
);
MembershipSelector.append(
CRM.$('<span>')
.addClass('cartable-membership-chosen-syndicate-name')
.text(chosenSyndicateButton.attr('data-name'))
);
MembershipSelector.append(
CRM.$('<h3>')
.addClass('cartable-membership-salary-title')
.text('Your monthly salary, tax free')
);
var SalarySelect = CRM.$('<select>')
.attr('id', 'cartable-membership-salary-select')
.addClass('cartable-membership-salary-select')
.on('change', cartable_pick_membership_amount)
;
var membershipRates = cartable.Membership.membershipRates;
if(Syndicate.MembershipRates !== undefined && Object.keys(Syndicate.MembershipRates).length){
membershipRates = Syndicate.MembershipRates;
}
for(var Salary in membershipRates){
SalarySelect.append(
CRM.$('<option>')
.attr('value', membershipRates[Salary])
.text(Salary+cartable.Membership.currency.symbol)
);
}
MembershipSelector.append(SalarySelect);
141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
FrequencySelector = CRM.$('<div>')
.attr('id', 'cartable-membership-frequency-selector')
;
MembershipSelector.append(FrequencySelector);
Frequencies = Object.keys(cartable.Membership.FrequenciesData);
if(Syndicate.PaymentFrequency !== undefined && Object.keys(Syndicate.PaymentFrequency).length){
Frequencies = Syndicate.PaymentFrequency;
}
Frequencies.forEach((frequency) => {
FrequencyData = cartable.Membership.FrequenciesData[frequency];
if(CRM.$('#auto_renew_section').css('display') == 'none' && FrequencyData.is_recur){
return;
}
var FrequencyItem = CRM.$('<div>')
.addClass('cartable-membership-frequency-selector frequency-'+frequency)
.append([
CRM.$('<input>')
.attr('name', 'cartable-membership-frequency')
.attr('value', frequency)
.attr('data-frequency-unit', frequency)
.attr('type', 'radio')
.attr('id', 'cartable-membership-frequency-'+frequency)
.on('change click blur', cartable_pick_membership_amount)
,
CRM.$('<label>')
.attr('for', 'cartable-membership-frequency-'+frequency)
.addClass('frequency-label')
.append(
CRM.$('<div>')
.addClass('frequency-title')
.html(cartable_membership_text_replace(FrequencyData.title))
,
CRM.$('<div>')
.addClass('frequency-description')
.html(cartable_membership_text_replace(FrequencyData.description))
,
CRM.$('<span>')
.addClass('frequency-amount')
.html(cartable_membership_text_replace(FrequencyData.amount_label))
,
FrequencyData.amount_help ? CRM.$('<span>')
.addClass('frequency-amount-help')
.html(cartable_membership_text_replace(FrequencyData.amount_help)) : null
,
CRM.$('<div>')
.addClass('frequency-taxfree')
.html(cartable_membership_text_replace(FrequencyData.tax_free_label))
,
)
,
])
;
FrequencySelector.append(FrequencyItem);
});
CRM.$('#cartable-tab-step-2').prepend(MembershipSelector);
cartable_pick_membership_amount();
}
jQuery(document).ready(function(){
if(cartable.Membership.otherAmountField !== null){
otherAmountField = CRM.$('#price_'+cartable.Membership.otherAmountField.id);
}
if(cartable.Membership.membershipField !== null){
membershipFieldWrapper = CRM.$('.crm-price-field-id-'+cartable.Membership.membershipField.id);
CRM.$('#priceset .membership_amount-content input[type=radio]').on('chosen', cartable_reset_membership_amount);
CRM.$('#pricevalue, #pricelabel').show();
211212213214215216217218219220221222223
}
// Initial check, in case the form is pre-filled
CRM.$('#priceset .membership_amount-content input[type=radio]:checked').each(function(){
initial_auto_select = true;
var mt = CRM.$(this).attr('membership-type');
if(typeof cartable.mt_to_zones[mt] != 'undefined'){
cartable.mt_to_zones[mt].trigger('click');
CRM.$(this).trigger('change');
}
});
});