membership.js 16.00 KiB
var AnnualContributionAmount = null;
var ToPayAmount = null;
var otherAmountField;
var GrilleSalarialeField;
var PaymentMethodField;
var membershipFieldWrapper;
var GrilleSalarialeFieldWrapper;
var PaymentMethodFieldWrapper;
var Syndicate;
var SyndicateId;
var membershipType;
var Frequency;
var Frequencies;
var FrequencySelector;
var MembershipStartDate;
var membershipEndDate;
var SalarySelect;
var SalaryGreaterOption;
const sortObject = function (obj) {
    return Object.keys(obj).sort().reduce(function (result, key) {
        result[key] = obj[key];
        return result;
    }, {});
const cartable_pick_custom_salary = function(){
    var custom_salary = prompt(cartable.Membership.i18n.custom_salary);
    if (custom_salary && !isNaN(custom_salary)){
        AnnualContributionAmount = custom_salary * Syndicate.membershipRatio / 100;
        SalaryGreaterOption.attr('value', AnnualContributionAmount).text(custom_salary+cartable.Membership.currency.symbol);
        SalarySelect.val(AnnualContributionAmount).select2().trigger('change');
    else{
        alert(cartable.Membership.i18n.custom_salary_nan);
        SalarySelect.val("").select2().trigger('change');
const cartable_pick_membership_amount = function(){
    var raw_contribution_amount = SalarySelect.val();
    if (raw_contribution_amount === '_FREE_'){
        SalarySelect.after(
            CRM.$('<a>')
                .on('click', cartable_pick_custom_salary)
                .attr('class', 'cartable-salary-greater-link')
                .text(cartable.Membership.i18n.another_salary)
        cartable_pick_custom_salary();
        return;
    AnnualContributionAmount = parseFloat(raw_contribution_amount);
    if(!initial_auto_select && GrilleSalarialeField){
        GrilleSalarialeField.val(SyndicateId+'|'+AnnualContributionAmount);
    // 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();
    if(!initial_auto_select && PaymentMethodField){
        PaymentMethodField.val(frequency_name);
    var AnnualTaxFreeAmount = cartable_fiscal_deducted(AnnualContributionAmount);
    var MonthlyTaxFreeAmount = cartable_fiscal_deducted(MonthlyContributionAmount);
    CRM.$('.cartable-membership-frequency-selector .year-amount').text( isNaN(AnnualContributionAmount) ? '' : AnnualContributionAmount+cartable.Membership.currency.symbol );
    CRM.$('.cartable-membership-frequency-selector .month-amount').text( isNaN(AnnualContributionAmount) ? '' : MonthlyContributionAmount+cartable.Membership.currency.symbol );
    CRM.$('.cartable-membership-frequency-selector .year-free-amount').text( isNaN(AnnualContributionAmount) ? '' : AnnualTaxFreeAmount+cartable.Membership.currency.symbol );
    CRM.$('.cartable-membership-frequency-selector .month-free-amount').text( isNaN(AnnualContributionAmount) ? '' : MonthlyTaxFreeAmount+cartable.Membership.currency.symbol );
7172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
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'){ CRM.$('#cartable-tab-step-2 .front-tabs-link.next').hide(); return; } if(!AnnualContributionAmount || isNaN(AnnualContributionAmount)){ CRM.$('#cartable-tab-step-2 .front-tabs-link.next').hide(); otherAmountField.val('').trigger('blur'); 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'); }, 300); 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 .trigger('click') ; if(otherAmountField){ otherAmountField.val(ToPayAmount).trigger('blur'); CRM.$('#cartable-tab-step-2 .front-tabs-link.next').show(); } } function cartable_fiscal_deducted(amount){ return Math.round(amount*(100-cartable.Membership.membershipTaxDeduction))/100; } function cartable_membership_text_replace(string){ 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');
141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
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-title cartable-membership-title') .text(cartable.Membership.i18n.my_contribution) ); MembershipSelector.append( CRM.$('<span>') .addClass('cartable-membership-chosen-syndicate-name') .text(chosenSyndicateButton.attr('data-name')) ); SalarySelect = CRM.$('<select>') .attr('id', 'cartable-membership-salary-select') .addClass('cartable-membership-salary-select') .on('change', cartable_pick_membership_amount) .append( CRM.$('<option>') .attr('value', '') .text(cartable.Membership.i18n.pick_your_salary) ) ; 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', Salary) .text(membershipRates[Salary]) ); } FrequencySelector = CRM.$('<div>') .attr('id', 'cartable-membership-frequency-selector') ; MembershipSelector.append( CRM.$('<div>') .addClass('membership-wrapper') .append( CRM.$('<div>') .addClass('salary-wrapper') .append( CRM.$('<h3>') .addClass('cartable-title cartable-membership-salary-title') .text(cartable.Membership.i18n.your_salary_tax_free) , SalarySelect, ), CRM.$('<div>') .addClass('frequency-wrapper') .append( CRM.$('<h3>') .addClass('cartable-title cartable-membership-frequency-title') .text(cartable.Membership.i18n.your_contribution_mode) ,