// dynamic fields
 $contribution['dyn'] = $dyn_fields->extractPosted($_POST, $_FILES, array(), $id_adh);
 $dyn_fields_errors = $dyn_fields->getErrors();
 if (count($dyn_fields_errors) > 0) {
     $error_detected = array_merge($error_detected, $dyn_fields_errors);
 }
 // regular fields
 $valid = $contrib->check($_POST, $required, $disabled);
 if ($valid !== true) {
     $error_detected = array_merge($error_detected, $valid);
 }
 if (count($error_detected) == 0) {
     //all goes well, we can proceed
     if ($contrib->isCotis()) {
         // Check that membership fees does not overlap
         $overlap = $contrib->checkOverlap();
         if ($overlap !== true) {
             if ($overlap === false) {
                 $error_detected[] = _T("An error occured checking overlaping fees :(");
             } else {
                 //method directly return erro message
                 $error_detected[] = $overlap;
             }
         } else {
         }
     }
     $new = false;
     if ($contrib->id == '') {
         $new = true;
     }
     if (count($error_detected) == 0) {