-
Bastien Ho authored
#12
aa331a06
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);