membership.js 25.82 KiB
var AnnualContributionAmount = 0;
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;
var isProRata = false;
var isApportionment = false;
var MonthsToDispatchTo;
var TheoricalMonthAmount;
var MonthsToDispatchTo_Apportionment;
var ApportionmentMonthAmount;
var MonthsToDispatchTo_ProRata;
var ProrataMonthAmount;
const roundedAmountByMonths = function(value) {
    return Math.round(AnnualContributionAmount / (value / 100)) / 100;
const amountForHumans = function(value){
    return isNaN(value) ? '' : value + cartable.Membership.currency.symbol;
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_remaining_months = function (start_day, start_month, end_day, end_month, current_day, current_month){
    _MonthsToDispatchTo = 12;
    _MonthsToDispatchTo_Apportionment = 12;
    _MonthsToDispatchTo_ProRata = 12;
    var current_date = parseInt(current_month + '' + current_day);
    var startDate = parseInt(start_month + '' + start_day);
    var endDate = parseInt(end_month + '' + end_day); 
    if (startDate >= endDate) {
        var _MonthsToDispatchTo_Apportionment = 1 + 12 - (start_month - end_month);
        if (current_date >= startDate) {
            _MonthsToDispatchTo_ProRata = 12 - (current_month - end_month);
7172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
else if (current_date <= endDate) { _MonthsToDispatchTo_ProRata = end_month - current_month; } else { _MonthsToDispatchTo_ProRata = _MonthsToDispatchTo_Apportionment; } if (_MonthsToDispatchTo_ProRata === 0) { _MonthsToDispatchTo_ProRata = _MonthsToDispatchTo_Apportionment; } } else { var _MonthsToDispatchTo_Apportionment = end_month - start_month; if (current_date >= startDate) { _MonthsToDispatchTo_ProRata = end_month - current_month; } else { _MonthsToDispatchTo_ProRata = _MonthsToDispatchTo_Apportionment; } if (_MonthsToDispatchTo_ProRata <= 0 || _MonthsToDispatchTo > _MonthsToDispatchTo_Apportionment) { _MonthsToDispatchTo_ProRata = _MonthsToDispatchTo_Apportionment; } } return { MonthsToDispatchTo: _MonthsToDispatchTo, MonthsToDispatchTo_ProRata: _MonthsToDispatchTo_ProRata, MonthsToDispatchTo_Apportionment: _MonthsToDispatchTo_Apportionment }; }; const cartable_show_hide_payment_processors = function(){ var PaymentProcessors_shown = {}; CRM.$('.payment_processor-section input').each(function () { var payment_processor_id = parseInt(CRM.$(this).val()); var payment_processor_is_sepa = (CRM.$(this).attr('class').indexOf('sepa') > -1); if (Syndicate.PaymentProcessors.indexOf(payment_processor_id) != -1 && (typeof Frequency == 'undefined' || (Frequency.unit != 'month' || (Frequency.is_prorata && payment_processor_is_sepa) || (!Frequency.is_prorata && !payment_processor_is_sepa)))) { CRM.$(this).show().removeProp('disabled').next('label').show(); PaymentProcessors_shown[Syndicate.PaymentProcessors.indexOf(payment_processor_id)] = CRM.$(this); } else { CRM.$(this).hide().prop('disabled', 'disabled').removeProp('checked').trigger('change').next('label').hide(); } }); var PaymentProcessors_wrapper = CRM.$('.payment_processor-section .content'); for (var ppIndex in sortObject(PaymentProcessors_shown)) { PaymentProcessors_wrapper.append(PaymentProcessors_shown[ppIndex].parents('.cartable-payment-processor-row')); } } 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 (isNaN(AnnualContributionAmount)){ CRM.$('.frequency-wrapper').hide(200); } else{ CRM.$('.frequency-wrapper').show(200); }
141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
if(!initial_auto_select && GrilleSalarialeField){ GrilleSalarialeField.val(SyndicateId+'|'+AnnualContributionAmount); } // Calculate effective months to be paid MonthsToDispatchTo_ProRata = MonthsToDispatchTo_Apportionment = MonthsToDispatchTo = 12; isProRata = Syndicate.ProRata; if (Syndicate.ContributionEndDay && Syndicate.ContributionEndMonth && Syndicate.ContributionStartDay && Syndicate.ContributionStartMonth){ isApportionment = true; var currentMonth = CRM.utils.formatDate(new Date(), 'm'); var currentDay = CRM.utils.formatDate(new Date(), 'd'); var ComputedDispatchedMonths = cartable_remaining_months(Syndicate.ContributionStartDay, Syndicate.ContributionStartMonth, Syndicate.ContributionEndDay, Syndicate.ContributionEndMonth, currentDay, currentMonth); MonthsToDispatchTo_Apportionment = ComputedDispatchedMonths.MonthsToDispatchTo_Apportionment; if (isProRata === true){ MonthsToDispatchTo_ProRata = ComputedDispatchedMonths.MonthsToDispatchTo_ProRata; } } TheoricalMonthAmount = roundedAmountByMonths(MonthsToDispatchTo); ApportionmentMonthAmount = roundedAmountByMonths(MonthsToDispatchTo_Apportionment); ProrataMonthAmount = roundedAmountByMonths(MonthsToDispatchTo_ProRata); var ApportionmentMonthAmountProrata = isProRata ? ProrataMonthAmount : ApportionmentMonthAmount; var MonthsToDispatchTo_ApportionmentProrata = isProRata ? MonthsToDispatchTo_ProRata : MonthsToDispatchTo_Apportionment; 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 year = new Date().getFullYear(); // Amounts CRM.$('.cartable-membership-frequency-selector .year-amount').text(amountForHumans(AnnualContributionAmount)); CRM.$('.cartable-membership-frequency-selector .month-amount').text(amountForHumans(TheoricalMonthAmount)); CRM.$('.cartable-membership-frequency-selector .month-apportionment-amount').text(amountForHumans(ApportionmentMonthAmountProrata)); CRM.$('.cartable-membership-frequency-selector .theorical-month-amount').text(amountForHumans(TheoricalMonthAmount)); CRM.$('.cartable-membership-frequency-selector .theorical-apportionment-month-amount').text(amountForHumans(ApportionmentMonthAmount)); CRM.$('.cartable-membership-frequency-selector .year-free-amount').text( amountForHumans(AnnualTaxFreeAmount)); // Number of months CRM.$('.cartable-membership-frequency-selector .membership-nb-months').text( MonthsToDispatchTo ); CRM.$('.cartable-membership-frequency-selector .membership-nb-apportionment-months').text(MonthsToDispatchTo_ApportionmentProrata); CRM.$('.cartable-membership-frequency-selector .membership-nb-theorical-apportionment-months').text(MonthsToDispatchTo_Apportionment); // Dates CRM.$('.cartable-membership-frequency-selector .end-date').text( membershipEndDate ); CRM.$('.cartable-membership-frequency-selector .start-date').text( MembershipStartDate ); CRM.$('.cartable-membership-frequency-selector .apportionment-start-date').text(!isApportionment ? '' : CRM.utils.formatDate(year + '-' + Syndicate.ContributionStartMonth + '-' + Syndicate.ContributionStartDay, cartable.Membership.i18n.dateformat) ); CRM.$('.cartable-membership-frequency-selector .apportionment-end-date').text(!isApportionment ? '' : CRM.utils.formatDate(year + '-' + Syndicate.ContributionEndMonth + '-' + Syndicate.ContributionEndDay, cartable.Membership.i18n.dateformat)); if (isProRata && MonthsToDispatchTo_Apportionment != MonthsToDispatchTo){ CRM.$('.frequency-theorical-amount-help').show(); } else { CRM.$('.frequency-theorical-amount-help').hide(); } 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);