Untitled
unknown
plain_text
a year ago
34 kB
7
Indexable
PROCÉDURE Calculer_Totaux_Action(nIDAction = 0, bTypeRetour est un booléen = gbRetourAffichage)
nDuree est un entier sur 4 octets
// Valeur est un réel //Remplacé par BudgetTotal
Val_e est un réel
Val_c est un réel
Tmp1 est un réel
Tmp2 est un réel
nNumMois est un entier
nAnnee est un entier // Année de travail (Entier)
sAnnee est une chaîne // Année de travail (Chaine)
// Calcul du Budget Mensuel et Annuel
BudgetTotal est un réel
Unite est un réel
FDMois est un tableau de 12 chaînes // Tableau du nombre de jour max par mois
// Budget Mensuel
BudgetMois2 est un tableau de 13 réels //#CestQuoi --> Budget ?? // 12 mois + le Total en position 13
BudgetMois1 est un tableau de 13 réels //#CestQuoi --> Heure Produite Personnel ?? // 12 mois + le Total en position 13
BudgetMois3 est un tableau de 13 réels //#CestQuoi --> Charge Personnel ?? // 12 mois + le Total en position 13
// Budget Mensuel Cumulé
_BudgetMois2_Cum est un tableau de 13 réels //#CestQuoi --> Budget ?? // 12 mois + le Total en position 13
_BudgetMois1_Cum est un tableau de 13 réels //#CestQuoi --> Heure Produite Personnel ?? // 12 mois + le Total en position 13
_BudgetMois3_Cum est un tableau de 13 réels //#CestQuoi --> Charge Personnel ?? // 12 mois + le Total en position 13
bCalculDuree est un booléen = Faux
R1 est une Source de Données
// Pour les calculs
_Total_UO_Centre est un réel
_Total_UO_Entreprise est un réel
//'montant total centre
_Montant_Centre est un réel
_Montant_Entreprise est un réel
// Total heures prévues
_Total_UO_Centre_Prevision est un réel
_Total_UO_Entreprise_Prevision est un réel
// Montant total centre + entreprise
_Total est un réel
_Total_Prevision est un réel
// Montant total sur l'exercice
_Total_Exercice est un réel
// Montant total des autres charges
_Total_IntervennantExterieur est un réel
_Total_AutreCharge est un réel
// Ratios de gestion
_Ratio_MasseSalariale_CA est un réel
_Ratio_Total_Salaire est un réel
_Ratio_Charge est un réel
_Ratio_Rentabilité est un réel
// Cumul du Budget Annuel
_Total_Exercice_Cum est un réel
// Cumul Montant total Centre + Entreprise
_Total_Cum est un réel
_Total_Prevision_Cum est un réel
// Cumul Montant total des Autres Charges
_Total_IntervennantExterieur_Cum est un réel
_Total_AutreCharge_Cum est un réel
<BLOC Déclaration Formateur>
// Données Formateur
_NbConseil est un réel //Fichier
_Hrs_Intervenant est un réel //Fichier
_Nb_Hrs_Stagiaires est un réel //Fichier
_Total_CBL est un réel
_Nb_CMI est un réel //Fichier
_Nb_CMI_Necessaire est un réel
_Nb_Stag_Gpe est un réel //Fichier
_Nb_FAF est un réel
_Nb_Hrs_Accueil est un réel
_Nb_Formateurs est un réel
// Montant Total Formateur
_Total_Formateur est un réel
_Cout_Total_Formateur est un réel
_Cout_Total_Formateur_Actualise est un réel
// Cumul des Montants Total Formateur
_Total_Formateur_Cum est un réel
_Cout_Total_Formateur_Cum est un réel
_Cout_Total_Formateur_Actualise_Cum est un réel
<FIN>
// Affecte l'année de travail qui a été sélectionné
nAnnee = Val(gSTPerimetreEnCours.sNomAnnee)
sAnnee = gSTPerimetreEnCours.sNomAnnee
// recherche le nombre de jour max de chaque mois
POUR nNumMois = 1 _À_ 12
FDMois[nNumMois] = Droite(DernierJourDuMois(nAnnee, nNumMois), 2)
FIN
//#AFaire Le contrôle des dates pour empécher le calcul
//SI HAlias(REQ_LitDonneeCalculAction, R1) = Vrai ALORS
//TraceT("Combo_Annee Fin Init : " + COMBO_Annee + "-" + gSTPerimetreEnCours.sNomAnnee + "-" + COMBO_Annee..ValeurMémorisée )
REQ_LitDonneeCalculAction.ParamIdAction = nIDAction
SI REQ_LitDonneeCalculAction.ExécuteRequête() = Vrai ALORS
REQ_LitDonneeCalculAction.LitPremier(action_idaction)
TANTQUE REQ_LitDonneeCalculAction.EnDehors() = Faux // Balaye toutes les sous-actions d'une action
//#AFaire prévoir le cas ou les constantes ne sont pas trouvé dans la REQ_LitDonneeCalculAction
<BLOC Vérification Dates>
SI gbControleDateValide = Faux ALORS
bVerifDate est un booléen = Vrai
SELON Verifie_Date(REQ_LitDonneeCalculAction.action_date_debut, REQ_LitDonneeCalculAction.action_date_fin)
CAS Faux: //Les dates sont inversés
//Info("Erreur de date, la durée de l'action ne peux être négative.") //#Message Popup Erreur
bVerifDate = Faux
CAS -1: //Une des eux dates est vide
//Info("Une des deux dates est vide.") //#Message Popup Erreur
bVerifDate = Faux
AUTRE CAS
//'total heures prévues
SI REQ_LitDonneeCalculAction.action_date_fin <= ChaîneVersDate("01/01/" + sAnnee) ALORS // If .txt_date_fin <= CDate("01/01/" & Trim(str(.txt_exercice))) Then
//Info("Action terminée.") //#Message Popup Erreur
bVerifDate = Faux
FIN
FIN
gbControleDateValide = Vrai
// Vérifie si le contrôle a déjà été fait
SI bVerifDate = Faux ALORS
// Affichage des cellule Totalisation Générale et Ratio Général à zéro
SI bTypeRetour = gbRetourAffichage ALORS
// Affichage des données dans la cellule Totalisation Générale et Ratio Général
SAI_Action_Total = 0
SAI_Action_Total_Exercice = 0
SAI_Action_Total_Prevision = 0
SAI_Action_Total_IntervennantExterieur = 0
SAI_Action_Total_AutreCharge = 0
SAI_Action_Ratio_MasseSalariale_CA = 0
SAI_Action_Ratio_Total_Salaire = 0
SAI_Action_Ratio_Charge = 0
SAI_Action_Ratio_Rentabilité = 0
FIN
//SI bTypeRetour = gbRetourParametre ALORS
RENVOYER ( 0, ... //_Total_Cum, ...
0, ... //_Total_Exercice_Cum, ...
0, ... //_Total_Prevision_Cum, ...
0, ... //_Total_IntervennantExterieur_Cum, ...
0, ... //_Total_AutreCharge_Cum, ...
0, ... //_Ratio_MasseSalariale_CA, ...
0, ... //_Ratio_Total_Salaire, ...
0, ... //_Ratio_Charge, ...
0, ... //_Ratio_Rentabilité,...
0, ... //_BudgetMois2_Cum, ... // --> Budget ??
0, ... //_BudgetMois1_Cum, ... // --> Heure Produite Personnel ??
0 //_BudgetMois3_Cum // --> Charge Personnel ??
)
//FIN
//RETOUR //RETOUR et RENVOYER ne peuvent pas être dans la même procédure
FIN
FIN
<FIN>
SI bCalculDuree = Faux ALORS
// Calcule de la durée de l'action
SI (REQ_LitDonneeCalculAction.action_date_debut < ChaîneVersDate("01/08/" + sAnnee) ET REQ_LitDonneeCalculAction.action_date_fin > ChaîneVersDate("27/08/" + sAnnee)) ET REQ_LitDonneeCalculAction.action_saisonnalite = Faux ALORS
nDuree = DateDifférence(REQ_LitDonneeCalculAction.action_date_debut, REQ_LitDonneeCalculAction.action_date_fin) - 26
SINON
nDuree = DateDifférence(REQ_LitDonneeCalculAction.action_date_debut, REQ_LitDonneeCalculAction.action_date_fin) + 1
FIN
bCalculDuree = Vrai
//Tracet(nIDAction + " / nDuree : " + nDuree)
FIN
// Montant total d'Unité d'Oeuvre (UO)
_Total_UO_Centre = REQ_LitDonneeCalculAction.actiondetail_uo_stag_centre * REQ_LitDonneeCalculAction.action_nb_stagiaires
_Total_UO_Entreprise = REQ_LitDonneeCalculAction.actiondetail_uo_stag_entreprise * REQ_LitDonneeCalculAction.action_nb_stagiaires
// Montant total Centre et Entreprise
_Montant_Centre = REQ_LitDonneeCalculAction.actiondetail_tarif_centre * _Total_UO_Centre
_Montant_Entreprise = REQ_LitDonneeCalculAction.actiondetail_tarif_entreprise * _Total_UO_Entreprise
// Total des heures prévues
_Total_UO_Centre_Prevision = 0
_Total_UO_Entreprise_Prevision = 0
SI REQ_LitDonneeCalculAction.action_date_debut < ChaîneVersDate("01/01/" + sAnnee) ALORS
// Heures sur l'année dernière
// Si la Date de début est sur l'année précédente
// N'est pas pris dans le calcul
SINON
SI REQ_LitDonneeCalculAction.action_date_fin < ChaîneVersDate("01/01/" + NumériqueVersChaîne(nAnnee + 1)) ALORS
// Si la Date de fin est sur l'année en cours
_Total_UO_Centre_Prevision = _Total_UO_Centre * REQ_LitDonneeCalculAction.action_situationproduit
_Total_UO_Entreprise_Prevision = _Total_UO_Entreprise * REQ_LitDonneeCalculAction.action_situationproduit
SINON
SI nDuree <> 0 ALORS
// Si la Date de fin est sur l'année prochaine => Calcul au prorata de jour sur l'année en cours
_Total_UO_Centre_Prevision = (_Total_UO_Centre * REQ_LitDonneeCalculAction.action_situationproduit) * (DateDifférence(REQ_LitDonneeCalculAction.action_date_debut, ChaîneVersDate("01/01/" + NumériqueVersChaîne(nAnnee + 1))) / nDuree)
_Total_UO_Entreprise_Prevision = (_Total_UO_Entreprise * REQ_LitDonneeCalculAction.action_situationproduit) * (DateDifférence(REQ_LitDonneeCalculAction.action_date_debut, ChaîneVersDate("01/01/" + NumériqueVersChaîne(nAnnee + 1))) / nDuree)
FIN
FIN
FIN
//********************* TOTAUX ******************************************************
// Montant total Centre + Entreprise
_Total = _Montant_Centre + _Montant_Entreprise //#Affichage Totalisation Générale "Montant Total" => SAI_Action_Total
_Total_Prevision = _Total * REQ_LitDonneeCalculAction.action_situationproduit //#Affichage Totalisation Générale "Montant Total Prévision" => SAI_Action_Total_Prevision
// Montant total des Autres Charges
_Total_IntervennantExterieur = REQ_LitDonneeCalculAction.total_charge_prestation
_Total_AutreCharge = REQ_LitDonneeCalculAction.total_charge_autres
// Calcul du Budget Mensuel et Annuel
BudgetTotal = 0
_Total_Exercice = 0
// Prévision de produit par jour
Unite = (nDuree <> 0 ? (_Total_Prevision / nDuree) SINON 0 )
POUR nNumMois = 1 À 12
BudgetMois2[nNumMois] = 0
SI REQ_LitDonneeCalculAction.action_date_debut > ChaîneVersDate(FDMois[nNumMois] + "/" + NumériqueVersChaîne(nNumMois, "02d") + "/" + sAnnee) OU ...
REQ_LitDonneeCalculAction.action_date_fin < ChaîneVersDate("01/" + NumériqueVersChaîne(nNumMois, "02d") + "/" + sAnnee) ALORS
// Si Date de Début est supérieur au dernier jour du mois OU si Date de Fin est inférieur au 1er du mois
BudgetTotal = BudgetTotal + 0
BudgetMois2[nNumMois] = 0
SINON
SI REQ_LitDonneeCalculAction.action_date_debut < ChaîneVersDate("01/" + NumériqueVersChaîne(nNumMois, "02d") + "/" + sAnnee) THEN
//SI Date Début est inférieur au 1er du mois
SI REQ_LitDonneeCalculAction.action_date_fin > ChaîneVersDate(FDMois[nNumMois] + "/" + NumériqueVersChaîne(nNumMois, "02d") + "/" + sAnnee) ALORS
// Si Date de fin est supérieur à la fin du mois (donc un mois complet)
SI nNumMois = 8 ALORS // Cas de la période estivale sur Août
// Si le mois d'août
SI REQ_LitDonneeCalculAction.action_saisonnalite = Faux ALORS
// S'il y a de la saisonnalité on ne retient que 4 jours de prévision
BudgetTotal = BudgetTotal + (4 * Unite)
BudgetMois2[nNumMois] = (4 * Unite)
SINON
// S'il n'y à pas de saisonnalité (Mois complet)
BudgetTotal = BudgetTotal + (Val(FDMois[nNumMois]) * Unite)
BudgetMois2[nNumMois] = (Val(FDMois[nNumMois]) * Unite)
FIN
SINON
// Pour les autres mois (Mois complet)
BudgetTotal = BudgetTotal + (Val(FDMois[nNumMois]) * Unite)
BudgetMois2[nNumMois] = (Val(FDMois[nNumMois]) * Unite)
FIN
SINON
// Si la date de fin est comprise dans le mois (Mois complet)
BudgetTotal = BudgetTotal + ((DateDifférence(ChaîneVersDate("01/" + NumériqueVersChaîne(nNumMois, "02d") + "/" + sAnnee), REQ_LitDonneeCalculAction.action_date_fin) + 1) * Unite)
BudgetMois2[nNumMois] = ((DateDifférence(ChaîneVersDate("01/" + NumériqueVersChaîne(nNumMois, "02d") + "/" + sAnnee), REQ_LitDonneeCalculAction.action_date_fin) + 1) * Unite)
FIN
SINON
//SI Date Début est supérieur ou égale au 1er du mois
SI REQ_LitDonneeCalculAction.action_date_fin > ChaîneVersDate(FDMois[nNumMois] + "/" + NumériqueVersChaîne(nNumMois, "02d") + "/" + sAnnee) ALORS //#Question //#AVerifier le ">=" car il devrait-être juste ">"
// Si Date de Fin est supérieur ou égale à la fin du mois
//#AVerifier les calculs de Dates
BudgetTotal = BudgetTotal + ((DateDifférence(REQ_LitDonneeCalculAction.action_date_debut, ChaîneVersDate(FDMois[nNumMois] + "/" + NumériqueVersChaîne(nNumMois, "02d") + "/" + sAnnee)) + 1) * Unite)
BudgetMois2[nNumMois] = ((DateDifférence(REQ_LitDonneeCalculAction.action_date_debut, ChaîneVersDate(FDMois[nNumMois] + "/" + NumériqueVersChaîne(nNumMois, "02d") + "/" + sAnnee)) + 1) * Unite)
SINON
// Si Date de Fin est inférieur à la fin de mois
BudgetTotal = BudgetTotal + _Total_Prevision //#Verifier les résultats si ont applique à la place (Valeur = Valeur + ((.txt_date_fin) - (.txt_date_fin) + 1) * unite) // Valeur = Valeur + .txt_total_prev
BudgetMois2[nNumMois] = _Total_Prevision //#Verifier les résultats si ont applique à la place (mois2(I - 1) = ((.txt_date_fin) - (.txt_date_fin) + 1) * unite) // mois2(I - 1) = .txt_total_prev
FIN
FIN
FIN
SI BudgetMois2[nNumMois] ALORS TraceT(nIDAction + " / BudgetMois2[" + nNumMois + "] : " + BudgetMois2[nNumMois])
_BudgetMois2_Cum[nNumMois] = _BudgetMois2_Cum[nNumMois] + BudgetMois2[nNumMois]
SI _BudgetMois2_Cum[nNumMois] ALORS TraceT(nIDAction + " / _BudgetMois2_Cum[" + nNumMois + "] : " + _BudgetMois2_Cum[nNumMois])
FIN
BudgetMois2[nNumMois] = BudgetTotal
SI BudgetMois2[nNumMois] ALORS TraceT(nIDAction + " / BudgetMois2[" + nNumMois + "] : " + BudgetMois2[nNumMois])
_BudgetMois2_Cum[nNumMois] = _BudgetMois2_Cum[nNumMois] + BudgetTotal
SI _BudgetMois2_Cum[nNumMois] ALORS TraceT(nIDAction + " / _BudgetMois2_Cum[" + nNumMois + "] : " + _BudgetMois2_Cum[nNumMois])
_Total_Exercice = BudgetTotal //#Affichage "Total sur l'Exercice" => SAI_Action_Total_Exercie
//Fin Fonction Calcul_Budget_Total_Exercice avec une valeur de retour BudgetTotal
// Cumul du Budget Annuel
_Total_Exercice_Cum = _Total_Exercice_Cum + _Total_Exercice //#Affichage cellule Totalisation générale "Total Sur Exercice" => SAI_Action_Total_Exercice
// Cumul Montant total Centre + Entreprise
_Total_Cum = _Total_Cum + _Total //#Affichage cellule Totalisation générale "Montant Total" => SAI_Action_Total
_Total_Prevision_Cum = _Total_Prevision_Cum + _Total_Prevision //#Affichage cellule Totalisation générale "Montant Total Prévu" => SAI_Action_Total_Prevision
// Cumul Montant total des Autres Charges
_Total_IntervennantExterieur_Cum = _Total_IntervennantExterieur_Cum + _Total_IntervennantExterieur //#Affichage cellule Totalisation générale "Intervenant Extérieur" => SAI_Action_Total_IntervenantExterieur
_Total_AutreCharge_Cum = _Total_AutreCharge_Cum + _Total_AutreCharge //#Affichage cellule Totalisation générale "Autres Charges" => SAI_Action_Total_AutreCharge
///////////////////////
// Calculs Formateur //
///////////////////////
<BLOC Formateur>
_NbConseil = REQ_LitDonneeCalculAction.actiondetail_nb_conseil
_Hrs_Intervenant = REQ_LitDonneeCalculAction.actiondetail_hrs_intervenant
_Nb_Hrs_Stagiaires = REQ_LitDonneeCalculAction.actiondetail_nb_hrs_stagiaires
_Total_CBL = 0
_Nb_CMI = REQ_LitDonneeCalculAction.actiondetail_nb_cmi
_Nb_CMI_Necessaire = 0
_Nb_Stag_Gpe = REQ_LitDonneeCalculAction.actiondetail_nb_stag_gpe
_Nb_FAF = 0
_Nb_Hrs_Accueil = 0
_Nb_Formateurs = 0
SELON REQ_LitDonneeCalculAction.listeactivite_code
CAS "4": //Suivi Démarche Qualité Fourre Tous
SI REQ_LitDonneeCalculAction.action_situationcharge = 0 ALORS
_NbConseil = 0
SINON
SI REQ_LitDonneeCalculAction.listefinancement_code = "1" ALORS
// Si Financement Principal
SI REQ_LitDonneeCalculAction.constante_cout_moyen <> 0 ALORS
_NbConseil = (_Total_Exercice * REQ_LitDonneeCalculAction.constante_ratio) / REQ_LitDonneeCalculAction.constante_cout_moyen
FIN
SINON
// Cofinancement
_NbConseil = 0
FIN
FIN
_Hrs_Intervenant = 0
_Nb_Hrs_Stagiaires = 0
_Total_CBL = 0
_Nb_CMI = 0
_Nb_CMI_Necessaire = 0
_Nb_Stag_Gpe = 0
_Nb_FAF = 0
_Nb_Hrs_Accueil = 0
_Nb_Formateurs = 0
CASE "5": // Bilan de compétence
SI REQ_LitDonneeCalculAction.action_situationcharge = 0 ALORS
_Total_CBL = 0
ELSE
SI REQ_LitDonneeCalculAction.listefinancement_code = "1" ALORS
// Si Financement Principal
SI _Hrs_Intervenant = 0 ALORS
_Total_CBL = 0
ELSE
SI _Nb_Hrs_Stagiaires <> 0 ET REQ_LitDonneeCalculAction.constante_nb_heures_tp <> 0 ALORS
_Total_CBL = (_Total_UO_Centre_Prevision / _Nb_Hrs_Stagiaires) * (_Hrs_Intervenant / REQ_LitDonneeCalculAction.constante_nb_heures_tp)
SINON
_Total_CBL = 0
FIN
FIN
SINON
_Total_CBL = 0
FIN
FIN
_NbConseil = 0
_Nb_CMI = 0
_Nb_CMI_Necessaire = 0
_Nb_Stag_Gpe = 0
_Nb_FAF = 0
_Nb_Hrs_Accueil = 0
_Nb_Formateurs = 0
CAS "6": //Charge de Mission et d'Insertion
SI REQ_LitDonneeCalculAction.action_situationcharge = 0 ALORS
_Nb_CMI_Necessaire = 0
ELSE
SI REQ_LitDonneeCalculAction.listefinancement_code = "1" ALORS
// Si Financement Principal
SI _Nb_CMI = 0 ALORS
SI REQ_LitDonneeCalculAction.constante_cout_moyen <> 0 ALORS
_Nb_CMI_Necessaire = (_Total_Exercice * REQ_LitDonneeCalculAction.constante_ratio) / REQ_LitDonneeCalculAction.constante_cout_moyen
SINON
_Nb_CMI_Necessaire = 0
FIN
SINON
SI _Nb_CMI <> 0 ALORS
_Nb_CMI_Necessaire = _Total_UO_Centre_Prevision / _Nb_CMI
SINON
_Nb_CMI_Necessaire = 0
FIN
FIN
SINON
//Si CoFinancement
_Nb_CMI_Necessaire = 0
FIN
FIN
_NbConseil = 0
_Hrs_Intervenant = 0
_Nb_Hrs_Stagiaires = 0
_Total_CBL = 0
_Nb_Stag_Gpe = 0
_Nb_FAF = 0
_Nb_Hrs_Accueil = 0
_Nb_Formateurs = 0
AUTRE CAS: // Formations
_Nb_FAF = REQ_LitDonneeCalculAction.constante_nb_heures_tp * REQ_LitDonneeCalculAction.constante_coef
SI REQ_LitDonneeCalculAction.action_situationcharge = 1 //#Attention donnée en dure dans le code
_Nb_Hrs_Accueil = 0.75 //#Attention donnée en dure dans le code
SINON
SI REQ_LitDonneeCalculAction.action_date_debut = ChaîneVersDate("01/01/" + sAnnee) OU REQ_LitDonneeCalculAction.action_date_fin >= ChaîneVersDate("01/01/" + NumériqueVersChaîne(nAnnee + 1)) ALORS
_Nb_Hrs_Accueil = 0.75 //#Attention donnée en dure dans le code
SINON
_Nb_Hrs_Accueil = 1.5 //#Attention donnée en dure dans le code
FIN
FIN
SI REQ_LitDonneeCalculAction.action_situationcharge = 0 ALORS
_Nb_Formateurs = 0
SINON
SI REQ_LitDonneeCalculAction.listefinancement_code = "1" ALORS
// Si Financement Principal
Tmp1 = 0
SI (_Nb_Stag_Gpe * _Nb_FAF) <> 0 ALORS
Tmp1 = ((_Total_UO_Centre_Prevision * (3.25 / 3.5)) + (_Nb_Stag_Gpe * REQ_LitDonneeCalculAction.action_nb_stagiaires * _Nb_Hrs_Accueil)) / (REQ_LitDonneeCalculAction.actiondetail_nb_stag_gpe * _Nb_FAF) //#Attention donnée en dure dans le code
FIN
Tmp2 = 0
SI REQ_LitDonneeCalculAction.constante_nb_heures_stage <> 0 ET _Nb_FAF <> 0 ALORS
Tmp2 = (_Total_UO_Entreprise_Prevision * (REQ_LitDonneeCalculAction.constante_nb_heures_suivi * REQ_LitDonneeCalculAction.constante_coef) / REQ_LitDonneeCalculAction.constante_nb_heures_stage) / _Nb_FAF
FIN
_Nb_Formateurs = Tmp1 + Tmp2
SINON
// Si Cofinancement
_Nb_FAF = 0
_Nb_Hrs_Accueil = 0
_Nb_Formateurs = 0
FIN
FIN
_NbConseil = 0
_Hrs_Intervenant = 0
_Nb_Hrs_Stagiaires = 0
_Total_CBL = 0
_Nb_CMI = 0
_Nb_CMI_Necessaire = 0
FIN
// Totalisation Formateur
_Total_Formateur = _NbConseil + _Total_CBL + _Nb_CMI_Necessaire + _Nb_Formateurs
_Cout_Total_Formateur = _Total_Formateur * REQ_LitDonneeCalculAction.constante_cout_moyen
_Cout_Total_Formateur_Actualise = _Total_Formateur * REQ_LitDonneeCalculAction.constante_cout_moyen_actualise
// Cumul de la totalisation Formateur
_Total_Formateur_Cum = _Total_Formateur_Cum + _Total_Formateur
_Cout_Total_Formateur_Cum = _Cout_Total_Formateur_Cum + _Cout_Total_Formateur
_Cout_Total_Formateur_Actualise_Cum = _Cout_Total_Formateur_Actualise_Cum + _Cout_Total_Formateur_Actualise
//SI SAI_Total_Exercice <> 0 ALORS
// SAI_Ratio_Formateur = (SAI_Cout_Total_Formateur / SAI_Total_Exercice) * 100
// SAI_Ratio_FormateurActualise = (SAI_Cout_Total_Formateur_Actualise / SAI_Total_Exercice) * 100
//
//SINON
// SAI_Ratio_Formateur = 0 // .txt_ratio.Text = 0
// SAI_Ratio_FormateurActualise = 0 // .txt_ratio_actualise.Text = 0
//FIN
<FIN>
/////////////////////////////////
// Calcul des Heures Produites //
/////////////////////////////////
<BLOC Heures Produites>
// Valeur h //#CestQuoi Valeur h --> Heures Produites
SI REQ_LitDonneeCalculAction.constante_nb_heures_stage <> 0 ET nDuree <> 0 ALORS
Val_e = ((_Total_UO_Entreprise_Prevision * (REQ_LitDonneeCalculAction.constante_nb_heures_suivi * REQ_LitDonneeCalculAction.constante_coef)) / REQ_LitDonneeCalculAction.constante_nb_heures_stage) / nDuree
SINON
Val_e = 0
FIN
SI nDuree <> 0 ALORS
Val_c = _Total_UO_Centre / nDuree
SINON
Val_c = 0
FIN
Unite = Val_e + Val_c
BudgetTotal = 0
//#AFaire fonction --> Calcul_Budget_HeureProduite_Exercice(SAI_DateDebut, SAI_DateFin, Unite)
POUR nNumMois = 1 À 12
SI REQ_LitDonneeCalculAction.action_date_debut > ChaîneVersDate(FDMois[nNumMois] + "/" + NumériqueVersChaîne(nNumMois, "02d") + "/" + sAnnee) OU ...
REQ_LitDonneeCalculAction.action_date_fin < ChaîneVersDate("01/" + NumériqueVersChaîne(nNumMois, "02d") + "/" + sAnnee) ALORS
// Si Date de Début est supérieur au dernier jour du mois OU si Date de Fin est inférieur au 1er du mois
BudgetTotal = BudgetTotal + 0
BudgetMois1[nNumMois] = 0
SINON
SI REQ_LitDonneeCalculAction.action_date_debut < ChaîneVersDate("01/" + NumériqueVersChaîne(nNumMois, "02d") + "/" + sAnnee) THEN
//SI Date Début est inférieur au 1er du mois
SI REQ_LitDonneeCalculAction.action_date_fin > ChaîneVersDate(FDMois[nNumMois] + "/" + NumériqueVersChaîne(nNumMois, "02d") + "/" + sAnnee) ALORS
// Si Date de fin est supérieur à la fin du mois
SI nNumMois = 8 ALORS
// Si le mois d'août
SI REQ_LitDonneeCalculAction.action_saisonnalite = Faux ALORS
// S'il y a de la saisonnalité
BudgetTotal = BudgetTotal + (4 * Unite)
BudgetMois1[nNumMois] = (4 * Unite)
SINON
// S'il n'y à pas de saisonnalité (Mois complet)
BudgetTotal = BudgetTotal + (Val(FDMois[nNumMois]) * Unite)
BudgetMois1[nNumMois] = (Val(FDMois[nNumMois]) * Unite)
FIN
SINON
// Pour les autres mois (Mois complet)
BudgetTotal = BudgetTotal + (Val(FDMois[nNumMois]) * Unite)
BudgetMois1[nNumMois] = (Val(FDMois[nNumMois]) * Unite)
FIN
SINON
//Si la date de fin est comprise dans le mois (Mois complet)
BudgetTotal = BudgetTotal + (Val(FDMois[nNumMois]) * Unite)
BudgetMois1[nNumMois] = (Val(FDMois[nNumMois]) * Unite)
FIN
SINON
//SI Date Début est supérieur ou égale au 1er du mois
SI REQ_LitDonneeCalculAction.action_date_fin > ChaîneVersDate(FDMois[nNumMois] + "/" + NumériqueVersChaîne(nNumMois, "02d") + "/" + sAnnee) ALORS //#AVerifier le ">=" car il devrait-être juste ">" // IF .txt_date_fin >= CDate(Trim(str(les_mois(I - 1))) & "/" & Trim(str(I)) & "/" & Trim(str(.txt_exercice))) THEN
// Si Date de Fin est supérieur ou égale à la fin du mois
//#AVerifier le calcul des Dates
BudgetTotal = BudgetTotal + ((DateDifférence(REQ_LitDonneeCalculAction.action_date_debut, ChaîneVersDate(FDMois[nNumMois] + "/" + NumériqueVersChaîne(nNumMois, "02d") + "/" + sAnnee)) + 1) * Unite)
BudgetMois1[nNumMois] = ((DateDifférence(REQ_LitDonneeCalculAction.action_date_debut, ChaîneVersDate(FDMois[nNumMois] + "/" + NumériqueVersChaîne(nNumMois, "02d") + "/" + sAnnee)) + 1) * Unite)
SINON
// Si Date de Fin est inférieur à la fin de mois
//#AVerifier le calcul des Dates
BudgetTotal = BudgetTotal + (DateDifférence(REQ_LitDonneeCalculAction.action_date_fin, REQ_LitDonneeCalculAction.action_date_fin) + 1) * Unite //#Verifier les résultats si ont applique à la place (Valeur = Valeur + ((.txt_date_fin) - (.txt_date_fin) + 1) * unite) // // Valeur = Valeur + ((.txt_date_fin) - (.txt_date_fin) + 1) * Unite
BudgetMois1[nNumMois] = (DateDifférence(REQ_LitDonneeCalculAction.action_date_fin, REQ_LitDonneeCalculAction.action_date_fin) + 1) * Unite //#Verifier les résultats si ont applique à la place (mois2(I - 1) = ((.txt_date_fin) - (.txt_date_fin) + 1) * unite) // mois1(I - 1) = ((.txt_date_fin) - (.txt_date_fin) + 1) * Unite
FIN
FIN
FIN
SI BudgetMois1[nNumMois] ALORS TraceT(nIDAction + " / BudgetMois1[" + nNumMois + "] : " + BudgetMois1[nNumMois])
_BudgetMois1_Cum[nNumMois] = _BudgetMois1_Cum[nNumMois] + BudgetMois1[nNumMois]
SI _BudgetMois1_Cum[nNumMois] ALORS TraceT(nIDAction + " / _BudgetMois1_Cum[" + nNumMois + "] : " + _BudgetMois1_Cum[nNumMois])
FIN
BudgetMois1[nNumMois] = BudgetTotal // mois1(12) = Valeur
SI BudgetMois1[nNumMois] ALORS TraceT(nIDAction + " / BudgetMois1[" + nNumMois + "] : " + BudgetMois1[nNumMois])
_BudgetMois1_Cum[nNumMois] = _BudgetMois1_Cum[nNumMois] + BudgetTotal
SI _BudgetMois1_Cum[nNumMois] ALORS TraceT(nIDAction + " / _BudgetMois1_Cum[" + nNumMois + "] : " + _BudgetMois1_Cum[nNumMois])
//Fin Fonction Calcul_Budget_HeureProduite_Exercice avec une valeur de retour BudgetTotal
<FIN>
/////////////////////////////////////
// Calcul des Charges du Personnel //
/////////////////////////////////////
<BLOC Charges Personnels>
// Valeur cp //#CestQuoi CP ?? --> Charges du Personnel
Unite = _Total_Formateur
BudgetTotal = 0
//#AFaire fonction --> Calcul_Budget_ChargePersonnel_Exercice(SAI_DateDebut, SAI_DateFin, Unite)
//Début Fonction Calcul_Budget_ChargePersonnel_Exercice
POUR nNumMois = 1 À 12
SI _Total_Exercice <> 0 ALORS
SI BudgetMois1[13] <> 0 ALORS
BudgetTotal = BudgetTotal + (_Total_Formateur * BudgetMois1[nNumMois]) / BudgetMois1[13]
BudgetMois3[nNumMois] = (_Total_Formateur * BudgetMois1[nNumMois]) / BudgetMois1[13]
SINON
BudgetTotal = BudgetTotal + 0
BudgetMois3[nNumMois] = 0
FIN
SINON
BudgetTotal = BudgetTotal + 0
BudgetMois3[nNumMois] = 0
FIN
SI BudgetMois3[nNumMois] ALORS TraceT(nIDAction + " / BudgetMois3[" + nNumMois + "] : " + BudgetMois3[nNumMois])
_BudgetMois3_Cum[nNumMois] = _BudgetMois3_Cum[nNumMois] + BudgetMois3[nNumMois]
SI _BudgetMois3_Cum[nNumMois] ALORS TraceT(nIDAction + " / _BudgetMois3_Cum[" + nNumMois + "] : " + _BudgetMois3_Cum[nNumMois])
FIN
BudgetMois3[nNumMois] = BudgetTotal
_BudgetMois3_Cum[nNumMois] = _BudgetMois3_Cum[nNumMois] + BudgetTotal
//Fin Fonction Calcul_Budget_ChargePersonnel_Exercice avec une valeur de retour BudgetTotal
<FIN>
// Lit l'enregistrement suivant
REQ_LitDonneeCalculAction.LitSuivant(action_idaction)
FIN
////////////////////////////////////////////////////////
// Affichage des Totaux cellule Totalisation Générale //
////////////////////////////////////////////////////////
<BLOC Totaux>
SI bTypeRetour = gbRetourAffichage ALORS
// Affichage des données dans la cellule Totalisation Générale
SAI_Action_Total = _Total_Cum //#Affichage cellule Totalisation générale "Montant Total" => SAI_Action_Total
SAI_Action_Total_Exercice = _Total_Exercice_Cum //#Affichage cellule Totalisation générale "Total Sur Exercice" => SAI_Action_Total_Exercice
SAI_Action_Total_Prevision = _Total_Prevision_Cum //#Affichage cellule Totalisation générale "Montant Total Prévu" => SAI_Action_Total_Prevision
SAI_Action_Total_IntervennantExterieur = _Total_IntervennantExterieur_Cum //#Affichage cellule Totalisation générale "Intervenant Extérieur" => SAI_Action_Total_IntervenantExterieur
SAI_Action_Total_AutreCharge = _Total_AutreCharge_Cum //#Affichage cellule Totalisation générale "Autres Charges" => SAI_Action_Total_AutreCharge
FIN
<FIN>
//////////////////////////////////////////////////////////
// Calcul et Affichage des Ratios cellule Ratio Général //
//////////////////////////////////////////////////////////
<BLOC Ratios>
SI _Total_Exercice_Cum <> 0 ALORS
// -- Charges / CA
_Ratio_MasseSalariale_CA = (_Cout_Total_Formateur_Cum / _Total_Exercice_Cum) * 100 //Ancien SAI_Ratio_Charges_CA //#Affichage Ratio Général "Masse Sal. / CA" => SAI_Action_Ratio_MasseSalariale_CA
// -- Total salaires : Cout formateur + Intervenants Extérieurs / chiffre d'affaire
_Ratio_Total_Salaire = ((_Cout_Total_Formateur_Cum + _Total_IntervennantExterieur_Cum) / _Total_Exercice_Cum) * 100 //#Affichage Ratio Général "Total Salaire" => SAI_Action_Ratio_Total_Salaire
// -- Global : (Coût formateur + intervenant extérieur + charge) / chiffre d'affaire
_Ratio_Charge = ((_Cout_Total_Formateur_Cum + _Total_IntervennantExterieur_Cum + _Total_AutreCharge_Cum) / _Total_Exercice_Cum) * 100 //Ancien SAI_Ratio_Global //#Affichage Ratio Général "Charges" => SAI_Action_Ratio_Charge
// -- Rentabilité : Total Produit – Total Charge / Total Produit
_Ratio_Rentabilité = ((_Total_Exercice_Cum - (_Cout_Total_Formateur_Cum + _Total_IntervennantExterieur_Cum + _Total_AutreCharge_Cum)) / _Total_Exercice_Cum) * 100 //#Affichage Ratio Général "Rentabilité" => SAI_Action_Ratio_Rentabilité
ELSE
_Ratio_MasseSalariale_CA = 0
_Ratio_Total_Salaire = 0
_Ratio_Charge = 0
_Ratio_Rentabilité = 0
END
SI bTypeRetour = gbRetourAffichage ALORS
// -- Charges / CA
SAI_Action_Ratio_MasseSalariale_CA = _Ratio_MasseSalariale_CA //Ancien SAI_Ratio_Charges_CA //#Affichage Ratio Général "Masse Sal. / CA" => SAI_Action_Ratio_MasseSalariale_CA
// -- Total salaires : Cout formateur + Intervenants Extérieurs / chiffre d'affaire
SAI_Action_Ratio_Total_Salaire = _Ratio_Total_Salaire //#Affichage Ratio Général "Total Salaire" => SAI_Action_Ratio_Total_Salaire
// -- Global : (Coût formateur + intervenant extérieur + charge) / chiffre d'affaire
SAI_Action_Ratio_Charge = _Ratio_Charge //Ancien SAI_Ratio_Global //#Affichage Ratio Général "Charges" => SAI_Action_Ratio_Charge
// -- Rentabilité : Total Produit – Total Charge / Total Produit
SAI_Action_Ratio_Rentabilité = _Ratio_Rentabilité //#Affichage Ratio Général "Rentabilité" => SAI_Action_Ratio_Rentabilité
FIN
<FIN>
FIN
//Fin
// Retour de la fonction
SI nIDAction > 0 ALORS
SI bTypeRetour = gbRetourParametre ALORS
RENVOYER ( _Total_Cum, ...
_Total_Exercice_Cum, ...
_Total_Prevision_Cum, ...
_Total_IntervennantExterieur_Cum, ...
_Total_AutreCharge_Cum, ...
_Ratio_MasseSalariale_CA, ...
_Ratio_Total_Salaire, ...
_Ratio_Charge, ...
_Ratio_Rentabilité,...
_BudgetMois2_Cum, ... // --> Budget ??
_BudgetMois1_Cum, ... // --> Heure Produite Personnel ??
_BudgetMois3_Cum // --> Charge Personnel ??
)
FIN
FIN
Editor is loading...
Leave a Comment