Commit dc3d3e88 authored by Jean-Baptiste Oellers's avatar Jean-Baptiste Oellers
Browse files

Permettre d'inclure les frais de gestion dans le montant saisi

parent af20f211
Loading
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -445,6 +445,11 @@ class AdministrationController extends AbstractOscarController implements
                    $this->getOscarConfigurationService()->setNumerotationEditable($value);
                    return $this->redirect()->toRoute('administration/parameters');

                case OscarConfigurationService::frais_de_gestion_inclus:
                    $value = $this->params()->fromPost('parameter_value') == "on";
                    $this->getOscarConfigurationService()->setFraisDeGestionInclus($value);
                    return $this->redirect()->toRoute('administration/parameters');

                case OscarConfigurationService::theme:
                    $value = $this->params()->fromPost('parameter_value', '');
                    $this->getOscarConfigurationService()->setTheme($value);
@@ -535,6 +540,7 @@ class AdministrationController extends AbstractOscarController implements
            'timesheet_preview' => $this->getOscarConfigurationService()->getTimesheetPreview(),
            'timesheet_excel' => $this->getOscarConfigurationService()->getTimesheetExcel(),
            'allow_numerotation_custom' => $this->getOscarConfigurationService()->getNumerotationEditable(),
            'frais_de_gestion_inclus' => $this->getOscarConfigurationService()->getFraisDeGestionInclus(),
            'themes' => $this->getOscarConfigurationService()->getConfiguration('themes'),
            'theme' => $this->getOscarConfigurationService()->getTheme(),
            'export' => [
+1 −0
Original line number Diff line number Diff line
@@ -2254,6 +2254,7 @@ class ProjectGrantController extends AbstractOscarController implements UseNotif
            'pcruEnabled' => $this->getOscarConfigurationService()->getPcruEnabled(),

            'entity' => $activity,
            'fraisDeGestionInclus' => $this->getOscarConfigurationService()->getFraisDeGestionInclus(),

            'currencies' => $currencies,

+32 −15
Original line number Diff line number Diff line
@@ -683,9 +683,9 @@ class Activity implements ResourceInterface
        return $this->fraisDeGestion;
    }

    public function getFraisDeGestionDisplay(bool $diplayCurrency = true, bool $displayPercentInfo = true)
    public function getFraisDeGestionDisplay(bool $diplayCurrency = true, bool $displayPercentInfo = true, bool $fraisDeGestionInclusDansMontant = false)
    {
        return $this->getFraisDisplay($this->getFraisDeGestion(), $diplayCurrency, $displayPercentInfo);
        return $this->getFraisDisplay($this->getFraisDeGestion(), $diplayCurrency, $displayPercentInfo, $fraisDeGestionInclusDansMontant);
    }

    /**
@@ -813,7 +813,8 @@ class Activity implements ResourceInterface
    protected function getFraisDisplay(
        ?string $value,
        bool $diplayCurrency = true,
        bool $displayPercentInfo = true
        bool $displayPercentInfo = true,
        bool $fraisDeGestionInclusDansMontant = false,
    ): string {
        $percent = '';
        $currency = '';
@@ -828,7 +829,22 @@ class Activity implements ResourceInterface
                if ($displayPercentInfo) {
                    $percent = sprintf(' (%s)', $value);
                }
                $data = $this->getAmount() / 100 * floatval($value);
                $montantDeBaseSansLesFraisDeGestionPourLeCalculDesPourcentages = $this->getAmount();

                if ($fraisDeGestionInclusDansMontant) {
                    $fraisDeGestion = $this->getFraisDeGestion();
                    if (is_string($fraisDeGestion)) {
                        if (strpos($fraisDeGestion, '%')) {
                            $fraisDeGestion = $this->getAmount() / (floatval(100) + floatval($fraisDeGestion)) * floatval($fraisDeGestion);
                        } else {
                            $fraisDeGestion = floatval($fraisDeGestion);
                        }
                    } else {
                        $fraisDeGestion = floatval(0);
                    }
                    $montantDeBaseSansLesFraisDeGestionPourLeCalculDesPourcentages -= $fraisDeGestion;
                }
                $data = $montantDeBaseSansLesFraisDeGestionPourLeCalculDesPourcentages / floatval(100) * floatval($value);
            } else {
                $data = floatval($value);
            }
@@ -841,22 +857,23 @@ class Activity implements ResourceInterface
        return $out . $currency . $percent;
    }

    public function getFraisDeGestionPartUniteDisplay(bool $diplayCurrency = true, bool $displayPercentInfo = true)
    public function getFraisDeGestionPartUniteDisplay(bool $diplayCurrency = true, bool $displayPercentInfo = true, bool $fraisDeGestionInclusDansMontant = false)
    {
        return $this->getFraisDisplay($this->getFraisDeGestionPartUnite());
        return $this->getFraisDisplay($this->getFraisDeGestionPartUnite(), true, true, $fraisDeGestionInclusDansMontant);
    }


    public function getFraisDeGestionPartHebergeurDisplay(bool $diplayCurrency = true, bool $displayPercentInfo = true)
    public function getFraisDeGestionPartHebergeurDisplay(bool $diplayCurrency = true, bool $displayPercentInfo = true, bool $fraisDeGestionInclusDansMontant = false)
    {
        return $this->getFraisDisplay($this->getFraisDeGestionPartHebergeur());
        return $this->getFraisDisplay($this->getFraisDeGestionPartHebergeur(), true, true, $fraisDeGestionInclusDansMontant);
    }

    public function getFraisDeGestionPartGestionnaireDisplay(
        bool $diplayCurrency = true,
        bool $displayPercentInfo = true
        bool $displayPercentInfo = true,
        bool $fraisDeGestionInclusDansMontant = false
    ) {
        return $this->getFraisDisplay($this->getFraisDeGestionPartGestionnaire());
        return $this->getFraisDisplay($this->getFraisDeGestionPartGestionnaire(), true, true, $fraisDeGestionInclusDansMontant);
    }

    /**
@@ -2723,7 +2740,7 @@ class Activity implements ResourceInterface
        return $datas;
    }

    public function csv($dateFormat = 'Y-m-d', $activityTypeChainFormatted)
    public function csv($dateFormat = 'Y-m-d', $activityTypeChainFormatted, bool $fraisDeGestionInclusDansMontant = false)
    {
        return array(
            'ID'                                   => $this->getId(),
@@ -2759,10 +2776,10 @@ class Activity implements ResourceInterface
            'versement prévu'                      => number_format($this->getTotalPaymentProvided(), 2, ',', ''),
            'écart de paiement'                    => number_format($this->getEcartPaiement(), 2, ',', ''),
            'justificatif écart de paiement'       => $this->getJustificatifEcartPaiement(),
            'Frais de gestion'                     => $this->getFraisDeGestionDisplay(),
            'Frais de gestion (part hébergeur)'    => $this->getFraisDeGestionPartHebergeurDisplay(true, false),
            'Frais de gestion (part unité)'        => $this->getFraisDeGestionPartUniteDisplay(true, false),
            'Frais de gestion (part gestionnaire)' => $this->getFraisDeGestionPartGestionnaireDisplay(true, false),
            'Frais de gestion'                     => $this->getFraisDeGestionDisplay(true, true, $fraisDeGestionInclusDansMontant),
            'Frais de gestion (part hébergeur)'    => $this->getFraisDeGestionPartHebergeurDisplay(true, false, $fraisDeGestionInclusDansMontant),
            'Frais de gestion (part unité)'        => $this->getFraisDeGestionPartUniteDisplay(true, false, $fraisDeGestionInclusDansMontant),
            'Frais de gestion (part gestionnaire)' => $this->getFraisDeGestionPartGestionnaireDisplay(true, false, $fraisDeGestionInclusDansMontant),
            'incidence financière'                 => $this->getIncidenceFinanciere(),
            'Assiette subventionnable'             => $this->getAssietteSubventionnable(),
            'Note'                                 => $this->getNoteFinanciere(),
+12 −1
Original line number Diff line number Diff line
@@ -45,6 +45,7 @@ class OscarConfigurationService implements ServiceLocatorAwareInterface
    const financial_description = 'financial_description';
    const spent_effective_clause = 'spent_effective_clause';
    const spent_predicted_clause = 'spent_predicted_clause';
    const frais_de_gestion_inclus = 'frais_de_gestion_inclus';

    const ORGANIZATION_REQUIRED = 'organization_required';

@@ -357,6 +358,16 @@ class OscarConfigurationService implements ServiceLocatorAwareInterface
        $this->saveEditableConfKey(self::allow_numerotation_custom, $boolean);
    }

    public function getFraisDeGestionInclus()
    {
        return $this->getEditableConfKey(self::frais_de_gestion_inclus, false);
    }

    public function setFraisDeGestionInclus($boolean)
    {
        $this->saveEditableConfKey(self::frais_de_gestion_inclus, $boolean);
    }

    public function getValidationPFI()
    {
        $reg = $this->getEditableConfKey(self::pfi_strict_format);
+4 −4
Original line number Diff line number Diff line
@@ -600,10 +600,10 @@ class ProjectGrantApiService implements
            'amount' => $activity->getAmount(),
            'montant' => $activity->getAmount(),
            'currency' => $activity->getCurrency() ? $activity->getCurrency()->toJson() : null,
            'fraisDeGestion' => $activity->getFraisDeGestionDisplay(),
            'fraisDeGestionPartHebergeur' => $activity->getFraisDeGestionPartHebergeurDisplay(),
            'fraisDeGestionPartUnite' => $activity->getFraisDeGestionPartUniteDisplay(),
            'fraisDeGestionPartGestionnaire' => $activity->getFraisDeGestionPartGestionnaireDisplay(),
            'fraisDeGestion' => $activity->getFraisDeGestionDisplay(true, true, $this->getOscarConfigurationService()->getFraisDeGestionInclus()),
            'fraisDeGestionPartHebergeur' => $activity->getFraisDeGestionPartHebergeurDisplay(true, true, $this->getOscarConfigurationService()->getFraisDeGestionInclus()),
            'fraisDeGestionPartUnite' => $activity->getFraisDeGestionPartUniteDisplay(true, true, $this->getOscarConfigurationService()->getFraisDeGestionInclus()),
            'fraisDeGestionPartGestionnaire' => $activity->getFraisDeGestionPartGestionnaireDisplay(true, true, $this->getOscarConfigurationService()->getFraisDeGestionInclus()),
            'tva' => (string)$activity->getTva(),
            'assietteSubventionnable' => $activity->getAssietteSubventionnable(),
        ];
Loading