//--------------------------------------------------------- public void AddImputation(IElementACout elt, double fRatio, CRelationBesoin_Satisfaction relationAssociée) { if (elt != null) { AddImputation(new CImputationCout(elt, fRatio, relationAssociée)); } }
//------------------------------------------------------------------------------------------------------------------------------ public static void SetPourcentageFor(CBesoin besoin, ISatisfactionBesoin satisfaction, double fPourcentageSouhaité) { CImputationsCouts imputations = satisfaction.GetImputationsAFaireSurUtilisateursDeCout(); CImputationCout imputation = imputations.GetImputation(besoin); if (fPourcentageSouhaité < 100 && fPourcentageSouhaité >= 0) { if (imputations != null) { double fPoids = imputations.PoidsTotal - imputation.Poids; if (fPoids == 0) { return; } CListeObjetsDonnees lst = satisfaction.RelationsSatisfaits; lst.Filtre = new CFiltreData(CBesoin.c_champId + "=@1", besoin.Id); if (lst.Count != 0) { double fCalc = fPourcentageSouhaité / 100.0 * fPoids / (1 - fPourcentageSouhaité / 100.0); CRelationBesoin_Satisfaction rel = lst[0] as CRelationBesoin_Satisfaction; rel.RatioCoutReel = fCalc; } } } }
////////////////////////////////////////////////////////////////////// public override CResultAErreur VerifieDonnees(CObjetDonnee objet) { CResultAErreur result = CResultAErreur.True; try { CRelationBesoin_Satisfaction rel = (CRelationBesoin_Satisfaction)objet; return(result); } catch (Exception e) { result.EmpileErreur(new CErreurException(e)); } return(result); }
public CImputationCout(IElementACout utilisateurDeCout, double fPoids, CRelationBesoin_Satisfaction relationAssociée) { UtilisateurDeCout = utilisateurDeCout; Poids = fPoids; RelationAssociee = relationAssociée; }
//------------------------------------------------------------------------------------------------------------------------------ /// <summary> /// Se base sur le champ PRT_COST_TO_RECALCULATE pour savoir ce qu'il faut recalculer /// </summary> /// <param name="contexte"></param> /// <returns></returns> public static CResultAErreur RecalculeCoutsARecalculer(CContexteDonnee contexte) { CResultAErreur result = CResultAErreur.True; if (m_listeTypesElementsACouts == null) { m_listeTypesElementsACouts = new List <Type>(); foreach (Assembly ass in CGestionnaireAssemblies.GetAssemblies()) { foreach (Type tp in ass.GetTypes()) { if (typeof(IElementACout).IsAssignableFrom(tp)) { m_listeTypesElementsACouts.Add(tp); } } } } List <IElementACout> lstARecalculerReel = new List <IElementACout>(); List <IElementACout> lstARecalculerPrevisionnel = new List <IElementACout>(); foreach (Type tp in m_listeTypesElementsACouts) { string strNomTable = CContexteDonnee.GetNomTableForType(tp); DataTable table = contexte.Tables[strNomTable]; if (table != null) { DataRow[] rows = table.Select(c_champCoutsParentsARecalculer + "<>0"); foreach (DataRow row in rows) { IElementACout elt = Activator.CreateInstance(tp, new object[] { row }) as IElementACout; if ((elt.TypesCoutsParentsARecalculer & ETypeCout.réel) == ETypeCout.réel) { lstARecalculerReel.Add(elt); } if ((elt.TypesCoutsParentsARecalculer & ETypeCout.Prévisionnel) == ETypeCout.Prévisionnel) { lstARecalculerPrevisionnel.Add(elt); } } //Récupère également les lignes supprimées rows = table.Select("", "", DataViewRowState.Deleted); foreach (DataRow row in rows) { IElementACout elt = Activator.CreateInstance(tp, new object[] { row }) as IElementACout; lstARecalculerPrevisionnel.Add(elt); lstARecalculerReel.Add(elt); } } } DataTable tableRels = contexte.Tables[CRelationBesoin_Satisfaction.c_nomTable]; if (tableRels != null) { DataRow[] rowsRels = tableRels.Select("", "", DataViewRowState.Added | DataViewRowState.Deleted); foreach (DataRow row in rowsRels) { CRelationBesoin_Satisfaction rel = new CRelationBesoin_Satisfaction(row); if (row.RowState == DataRowState.Deleted) { rel.VersionToReturn = DataRowVersion.Original; } IElementACout elt = rel.Satisfaction; lstARecalculerPrevisionnel.Add(elt); lstARecalculerReel.Add(elt); } } HashSet <DataRow> setCalcules = new HashSet <DataRow>(); foreach (IElementACout elt in lstARecalculerPrevisionnel) { RecalcCoutMontant(elt, false, setCalcules); } setCalcules = new HashSet <DataRow>(); foreach (IElementACout elt in lstARecalculerReel) { RecalcCoutMontant(elt, true, setCalcules); } return(result); }
public void AddRelation(CRelationBesoin_Satisfaction relation) { m_strIds = null; m_lstIdsRelations.Add(relation.Id); DateLastAcces = DateTime.Now; }