Loading module/Oscar/src/Oscar/Controller/AdministrationController.php +7 −1 Original line number Diff line number Diff line Loading @@ -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); Loading Loading @@ -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' => [ Loading module/Oscar/src/Oscar/Controller/ProjectGrantController.php +1 −0 Original line number Diff line number Diff line Loading @@ -2254,6 +2254,7 @@ class ProjectGrantController extends AbstractOscarController implements UseNotif 'pcruEnabled' => $this->getOscarConfigurationService()->getPcruEnabled(), 'entity' => $activity, 'fraisDeGestionInclus' => $this->getOscarConfigurationService()->getFraisDeGestionInclus(), 'currencies' => $currencies, Loading module/Oscar/src/Oscar/Entity/Activity.php +120 −108 Original line number Diff line number Diff line Loading @@ -684,9 +684,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); } /** Loading Loading @@ -770,8 +770,7 @@ class Activity implements ResourceInterface \DateTime $cache_at = new \DateTime(), bool $cache_lock = false, string $cache_lock_reason = self::CACHE_REASON_DEFAULT ): self { ): self { $this->cache = $cache_content; $this->dateCached = $cache_at; if ($cache_lock === true) { Loading Loading @@ -815,9 +814,9 @@ class Activity implements ResourceInterface protected function getFraisDisplay( ?string $value, bool $diplayCurrency = true, bool $displayPercentInfo = true ): string { bool $displayPercentInfo = true, bool $fraisDeGestionInclusDansMontant = false, ): string { $percent = ''; $currency = ''; $data = ''; Loading @@ -831,7 +830,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); } Loading @@ -844,23 +858,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 ) { return $this->getFraisDisplay($this->getFraisDeGestionPartGestionnaire()); bool $displayPercentInfo = true, bool $fraisDeGestionInclusDansMontant = false ) { return $this->getFraisDisplay($this->getFraisDeGestionPartGestionnaire(), true, true, $fraisDeGestionInclusDansMontant); } /** Loading Loading @@ -1170,8 +1184,7 @@ class Activity implements ResourceInterface public function getActivityTypeChain( ActivityTypeService $activityTypeService ) { ) { return $activityTypeService->getActivityTypeChain($this->getActivityType()); } Loading Loading @@ -1347,7 +1360,8 @@ class Activity implements ResourceInterface { if ($this->getDateNegociation()) { return $this->getDateNegociation()->format($format); } else { } else { return ""; } } Loading Loading @@ -1830,8 +1844,7 @@ class Activity implements ResourceInterface $role, $start = null, $to = null ) { ) { if (!$this->hasOrganization($organization, $role)) { $partner = new ActivityOrganization(); $partner->setOrganization($organization) Loading Loading @@ -2078,8 +2091,7 @@ class Activity implements ResourceInterface ?\DateTime $dateStart = null, ?\DateTime $dateEnd = null, bool $deep = true ) { ) { $found = false; /** @var ActivityPerson $activityPerson */ foreach ($this->persons as $activityPerson) { Loading Loading @@ -2401,7 +2413,8 @@ class Activity implements ResourceInterface /** @var ActivityPayment $payment */ foreach ($this->getPayments() as $payment) { if ( $payment->getDatePayment() == $datePayment && $payment->getAmount() == $amount && $payment->getDatePredicted() == $datePredicted $payment->getDatePayment() == $datePayment && $payment->getAmount( ) == $amount && $payment->getDatePredicted() == $datePredicted ) { return true; } Loading @@ -2420,8 +2433,7 @@ class Activity implements ResourceInterface Organization $organization, $role = null, $deep = true ) { ) { $found = false; /** @var ActivityOrganization $relation */ foreach ($this->organizations as $relation) { Loading Loading @@ -2729,7 +2741,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(), Loading Loading @@ -2765,10 +2777,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(), Loading module/Oscar/src/Oscar/Service/OscarConfigurationService.php +12 −1 Original line number Diff line number Diff line Loading @@ -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'; Loading Loading @@ -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); Loading module/Oscar/src/Oscar/Service/ProjectGrantApiService.php +4 −4 Original line number Diff line number Diff line Loading @@ -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 Loading
module/Oscar/src/Oscar/Controller/AdministrationController.php +7 −1 Original line number Diff line number Diff line Loading @@ -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); Loading Loading @@ -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' => [ Loading
module/Oscar/src/Oscar/Controller/ProjectGrantController.php +1 −0 Original line number Diff line number Diff line Loading @@ -2254,6 +2254,7 @@ class ProjectGrantController extends AbstractOscarController implements UseNotif 'pcruEnabled' => $this->getOscarConfigurationService()->getPcruEnabled(), 'entity' => $activity, 'fraisDeGestionInclus' => $this->getOscarConfigurationService()->getFraisDeGestionInclus(), 'currencies' => $currencies, Loading
module/Oscar/src/Oscar/Entity/Activity.php +120 −108 Original line number Diff line number Diff line Loading @@ -684,9 +684,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); } /** Loading Loading @@ -770,8 +770,7 @@ class Activity implements ResourceInterface \DateTime $cache_at = new \DateTime(), bool $cache_lock = false, string $cache_lock_reason = self::CACHE_REASON_DEFAULT ): self { ): self { $this->cache = $cache_content; $this->dateCached = $cache_at; if ($cache_lock === true) { Loading Loading @@ -815,9 +814,9 @@ class Activity implements ResourceInterface protected function getFraisDisplay( ?string $value, bool $diplayCurrency = true, bool $displayPercentInfo = true ): string { bool $displayPercentInfo = true, bool $fraisDeGestionInclusDansMontant = false, ): string { $percent = ''; $currency = ''; $data = ''; Loading @@ -831,7 +830,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); } Loading @@ -844,23 +858,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 ) { return $this->getFraisDisplay($this->getFraisDeGestionPartGestionnaire()); bool $displayPercentInfo = true, bool $fraisDeGestionInclusDansMontant = false ) { return $this->getFraisDisplay($this->getFraisDeGestionPartGestionnaire(), true, true, $fraisDeGestionInclusDansMontant); } /** Loading Loading @@ -1170,8 +1184,7 @@ class Activity implements ResourceInterface public function getActivityTypeChain( ActivityTypeService $activityTypeService ) { ) { return $activityTypeService->getActivityTypeChain($this->getActivityType()); } Loading Loading @@ -1347,7 +1360,8 @@ class Activity implements ResourceInterface { if ($this->getDateNegociation()) { return $this->getDateNegociation()->format($format); } else { } else { return ""; } } Loading Loading @@ -1830,8 +1844,7 @@ class Activity implements ResourceInterface $role, $start = null, $to = null ) { ) { if (!$this->hasOrganization($organization, $role)) { $partner = new ActivityOrganization(); $partner->setOrganization($organization) Loading Loading @@ -2078,8 +2091,7 @@ class Activity implements ResourceInterface ?\DateTime $dateStart = null, ?\DateTime $dateEnd = null, bool $deep = true ) { ) { $found = false; /** @var ActivityPerson $activityPerson */ foreach ($this->persons as $activityPerson) { Loading Loading @@ -2401,7 +2413,8 @@ class Activity implements ResourceInterface /** @var ActivityPayment $payment */ foreach ($this->getPayments() as $payment) { if ( $payment->getDatePayment() == $datePayment && $payment->getAmount() == $amount && $payment->getDatePredicted() == $datePredicted $payment->getDatePayment() == $datePayment && $payment->getAmount( ) == $amount && $payment->getDatePredicted() == $datePredicted ) { return true; } Loading @@ -2420,8 +2433,7 @@ class Activity implements ResourceInterface Organization $organization, $role = null, $deep = true ) { ) { $found = false; /** @var ActivityOrganization $relation */ foreach ($this->organizations as $relation) { Loading Loading @@ -2729,7 +2741,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(), Loading Loading @@ -2765,10 +2777,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(), Loading
module/Oscar/src/Oscar/Service/OscarConfigurationService.php +12 −1 Original line number Diff line number Diff line Loading @@ -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'; Loading Loading @@ -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); Loading
module/Oscar/src/Oscar/Service/ProjectGrantApiService.php +4 −4 Original line number Diff line number Diff line Loading @@ -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