Commit 7d64c2ed authored by Bastien Ho's avatar Bastien Ho :alien:
Browse files

Add per Syndicate membership settings #3

Showing with 75 additions and 4 deletions
+75 -4
......@@ -74,6 +74,9 @@ class CRM_Cartable_Upgrader extends CRM_Cartable_Upgrader_Base {
public function upgrade_0010() {
return $this->include_upgrade_version(__FUNCTION__);
}
public function upgrade_0011() {
return $this->include_upgrade_version(__FUNCTION__);
}
public function include_upgrade_version($version) {
if(file_exists(__DIR__."/Upgrader/{$version}.php")){
......
......@@ -38,6 +38,9 @@ delete_entities(
"Corps",
"TypeDePoste",
"Discipline",
"FrequencesPaiement",
"GrilleCotisation",
"RatioSupplementaire",
]
);
......@@ -46,6 +49,7 @@ delete_entities(
[
"DonneesSyndicat",
"DonneesParticulier",
"ParametresAdhesion",
]
);
......
<?php
civicrm_api3( 'CustomGroup', 'create', [
'title' => "Paramètres d’adhésion",
'name' => 'ParametresAdhesion',
'extends' => ['Organization', 'SyndicatSUD'],
'column_name' => 'parametres_adhesion',
'weight' => 1,
'collapse_display' => 0,
'is_active' => 1,
'style' => "Inline",
'api.CustomField.create' => [
[
'label' => 'Fréquences de paiement',
'name' => 'FrequencesPaiement',
'column_name' => 'frequence_paiement',
'html_type' => 'Multi-Select',
'weight' => 1,
'is_required' => 1,
'is_searchable' => 1,
'is_active' => 1,
'is_reserved' => 1,
'option_values' => [
'oneoff' => 'Une fois',
'monthly' => 'Renouvellement Mensuel',
'yearly' => 'Renouvellement Annuel',
],
],
[
'label' => 'Grille de cotisation',
'name' => 'GrilleCotisation',
'column_name' => 'grille_cotisation',
'html_type' => 'TextArea',
'weight' => 2,
'is_required' => 1,
'is_searchable' => 1,
'is_active' => 1,
'is_reserved' => 1,
'help_post' => "Un par ligne. salaire|montant d'adhésion. Laisser vide pour utiliser les valeurs globales."
],
[
'label' => 'Ratio supplémentaire',
'name' => 'RatioSupplementaire',
'column_name' => 'ratio_supplementaire',
'html_type' => 'Text',
'weight' => 3,
'is_required' => 1,
'is_searchable' => 1,
'is_active' => 1,
'is_reserved' => 1,
'help_post' => "Pourcentage pour les salaires supérieurs."
],
]
]);
......@@ -333,13 +333,16 @@ function cartable_get_membership_vars($vars){
function cartable_get_indexed_syndicates_and_provinces($vars){
$ProvinceField = cartable_get_custom_field_id('Departements', 'DonneesSyndicat');
$FrequencesPaiementField = cartable_get_custom_field_id('FrequencesPaiement', 'ParametresAdhesion');
$GrilleCotisationField = cartable_get_custom_field_id('GrilleCotisation', 'ParametresAdhesion');
$RatioSupplementaireField = cartable_get_custom_field_id('RatioSupplementaire', 'ParametresAdhesion');
if(!$ProvinceField){
return false;
}
// First get all needed values
$CountryId = civicrm_api3('Country', 'getvalue', ['return'=>"id", 'name'=>"france"]);
$Provinces = civicrm_api3('StateProvince', 'get', ['country_id'=>$CountryId, 'options'=>['limit'=>0], 'sequential'=>1]);
$Syndicates = civicrm_api3('Contact', 'get', ['return'=>"id,display_name,{$ProvinceField}", 'contact_sub_type'=>"SyndicatSUD", 'options'=>['limit'=>-1], 'sequential'=>1 ]);
$Syndicates = civicrm_api3('Contact', 'get', ['return'=>"id,display_name,{$ProvinceField},{$FrequencesPaiementField},{$GrilleCotisationField},{$RatioSupplementaireField}", 'contact_sub_type'=>"SyndicatSUD", 'options'=>['limit'=>-1], 'sequential'=>1 ]);
$MembershipTypes = civicrm_api3('MembershipType', 'get', ['options'=>['limit'=>0]]);
$membershipFieldID = $vars['membershipFieldID'];
......@@ -373,7 +376,13 @@ function cartable_get_indexed_syndicates_and_provinces($vars){
? 'CIVICRM_QFID_'.$IndexedMembershipFields[$IndexedMembershipTypes[$syndicate['id']]['id']]['id'].'_price_'.$IndexedMembershipFields[$IndexedMembershipTypes[$syndicate['id']]['id']]['price_field_id']
: null;
$syndicate['Departements'] = $syndicate[$ProvinceField];
$syndicate['PaymentFrequency'] = $syndicate[$FrequencesPaiementField];
$syndicate['MembershipRates'] = cartable_parse_rates($syndicate[$GrilleCotisationField]);
$syndicate['membershipRatio'] = $syndicate[$RatioSupplementaireField];
unset($syndicate[$ProvinceField]);
unset($syndicate[$FrequencesPaiementField]);
unset($syndicate[$GrilleCotisationField]);
unset($syndicate[$RatioSupplementaireField]);
unset($syndicate['contact_sub_type']);
unset($syndicate['contact_is_deleted']);
......
var AnnualContributionAmount = null;
var ToPayAmount = null;
var otherAmountField;
var Syndicate;
var SyndicateId;
var membershipType;
......@@ -20,6 +21,7 @@ const cartable_reset_membership_amount = function(){
var chosenSyndicateButton = CRM.$('.cartable-syndicate.active');
SyndicateId = chosenSyndicateButton.attr('data-id');
Syndicate = cartable.Syndicates.Syndicates[SyndicateId];
membershipType = cartable.Syndicates.IndexedMembershipTypes[SyndicateId];
MembershipSelector.append(
......@@ -46,9 +48,9 @@ const cartable_reset_membership_amount = function(){
;
var membershipRates = cartable.Membership.membershipRates;
// TODO:
// Allow MembershipTypes to override rates
// with a custom field
if(Syndicate.MembershipRates !== undefined && Object.keys(Syndicate.MembershipRates).length){
membershipRates = Syndicate.MembershipRates;
}
for(var Salary in membershipRates){
SalarySelect.append(
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment