//--------------------------------------------------- public void InitControle(CActiviteActeur activite, int nIndex, bool bAvecEntete) { CWin32Traducteur.Translate(this); m_panelEntete.Visible = bAvecEntete; m_bAvecEntete = bAvecEntete; m_typeActivite = null; m_nIndex = nIndex; m_txtTypeActivite.TextBox.Text = ""; m_txtTypeActivite.Text = ""; m_txtCommentaire.Text = ""; m_panelDuree.Visible = false; m_txtSelectSite.Init <CSite>( "Libelle", false); FillWithActivite(activite); UpdateAspect(); m_txtTypeActivite.Arbre = Arbre; if (m_controleParent != null) { LockEdition = m_controleParent.LockEdition; } }
//--------------------------------------------------- private void m_txtTypeDonnee_OnLeaveTextBox(object sender, System.EventArgs e) { if (!m_gestionnaireModeEdition.ModeEdition) { return; } CTypeActiviteActeur typeDonnee = FindType( ); ChangeTypeActivite(typeDonnee); UpdateAspect(); }
//------------------------------------------------------------------- public override CResultAErreur VerifieDonnees(CObjetDonnee objet) { CResultAErreur result = CResultAErreur.True; try { CTypeActiviteActeur typeActiviteActeur = (CTypeActiviteActeur)objet; } catch (Exception e) { result.EmpileErreur(new CErreurException(e)); } return(result); }
public static bool EditeParametre(ref CParametreRemplissageActiviteParIntervention parametre, CTypeActiviteActeur typeActivite) { CFormEditeParametrageRemplissageTypeActivite form = new CFormEditeParametrageRemplissageTypeActivite(); form.m_typeActivite = typeActivite; form.m_parametre = parametre; bool bResult = form.ShowDialog() == DialogResult.OK; if (bResult) { parametre = form.m_parametre; } form.Dispose(); return(bResult); }
private void FillWithActivite(CActiviteActeur activite) { m_activite = activite; m_typeActivite = null; if (m_activite != null) { ChangeTypeActivite(activite.TypeActiviteActeur); m_txtDuree.ValeurHeure = m_activite.Duree; m_txtSelectSite.ElementSelectionne = m_activite.Site; m_wndDate.Value = m_activite.Date; m_txtCommentaire.Text = m_activite.Commentaires; } else { ChangeTypeActivite(null); } }
//--------------------------------------------------- private CTypeActiviteActeur FindType( ) { if (m_txtTypeActivite.Text == "") { return(null); } CListeObjetsDonnees liste; liste = new CListeObjetsDonnees(CSc2iWin32DataClient.ContexteCourant, typeof(CTypeActiviteActeur)); liste.Filtre = new CFiltreData( CTypeActiviteActeur.c_champLibelle + "=@1 or " + CTypeActiviteActeur.c_champCode + "=@1", m_txtTypeActivite.Text); CTypeActiviteActeur typeDonnee = null; if (liste.Count > 0) { typeDonnee = (CTypeActiviteActeur)liste[0]; } return(typeDonnee); }
private CResultAErreur ImputeDureeSurActivite(CFractionIntervention fraction) { CResultAErreur result = CResultAErreur.True; if (fraction.DateDebut == null || fraction.DateFin == null) { return(result); } if (fraction.TempsDeTravail == null) { return(result); } Hashtable tableToDelete = new Hashtable(); //Stocke la liste des relations qui étaient présentes avant le travail //et les note comme étant à supprimer foreach (CIntervention_ActiviteActeur rel in fraction.RelationsActivite) { tableToDelete[rel] = true; } CTypeActiviteActeur typeActivite = fraction.Intervention.TypeIntervention.TypeActiviteActeur; bool bAvecSite = typeActivite.SiteObligatoire; if (typeActivite != null) { //Evalue les valeurs des champs custom pour l'activite CParametreRemplissageActiviteParIntervention parametreRemplissage = fraction.Intervention.TypeIntervention.ParametreRemplissageActivite; Dictionary <CChampCustom, object> valeursChamps = new Dictionary <CChampCustom, object>(); CContexteEvaluationExpression ctxEval = new CContexteEvaluationExpression(fraction); if (parametreRemplissage != null) { foreach (CRemplisssageChampActiviteActeur remplissage in parametreRemplissage.ListeRemplissage) { CChampCustom champ = new CChampCustom(fraction.ContexteDonnee); if (champ.ReadIfExists(remplissage.IdChampCustom)) { C2iExpression formule = remplissage.Formule; if (formule != null) { result = formule.Eval(ctxEval); if (result) { valeursChamps[champ] = result.Data; } } } } } foreach (CIntervention_Intervenant relIntervenant in fraction.Intervention.RelationsIntervenants) { DateTime dt = ((DateTime)fraction.DateDebut).Date; //Attention, si on est sur une fraction sur plusieurs jours, le //pb est que la durée saisie (retenue pour l'intervention) peut //ne pas être égale aux différents jours d'imputation, //on réparti donc la durée de manière homogène sur les différents //Jour en faisant un prorata de chaque jour double fDureeAImputer = (double)fraction.TempsDeTravail; double fDureeReelle = (double)fraction.DureeReelle; while (dt < (DateTime)fraction.DateFin && fDureeAImputer > 0) { //Cherche pour l'intervention ses activités du bon type CFiltreData filtre = new CFiltreDataAvance(CActiviteActeur.c_nomTable, CTypeActiviteActeur.c_champId + "=@1 and " + CActiviteActeur.c_champDate + ">=@2 and " + CActiviteActeur.c_champDate + "<@3 and " + "Has(" + CIntervention_ActiviteActeur.c_nomTable + "." + CIntervention_ActiviteActeur.c_champId + ") and " + CActeur.c_champId + "=@4", typeActivite.Id, dt, dt.AddDays(1), relIntervenant.Intervenant.Id); if (bAvecSite) { filtre = CFiltreData.GetAndFiltre(filtre, new CFiltreData(CSite.c_champId + "=@1", fraction.Intervention.Site.Id)); } CListeObjetsDonnees listeActivites = new CListeObjetsDonnees(fraction.ContexteDonnee, typeof(CActiviteActeur)); listeActivites.Filtre = filtre; listeActivites.ReadDependances("RelationsInterventions"); CActiviteActeur activiteRetenue = null; CIntervention_ActiviteActeur relRetenue = null; foreach (CActiviteActeur activite in listeActivites) { bool bPrendre = true; foreach (KeyValuePair <CChampCustom, object> chpValeur in valeursChamps) { object valDeAct = activite.GetValeurChamp(chpValeur.Key.Id); if (valDeAct == null && chpValeur.Value != null) { bPrendre = false; break; } else if (chpValeur.Value == null && valDeAct != null) { bPrendre = false; break; } else if (chpValeur.Value != null && !chpValeur.Value.Equals(valDeAct)) { bPrendre = false; break; } } if (bPrendre) { activiteRetenue = activite; relRetenue = null; foreach (CIntervention_ActiviteActeur relInter in activiteRetenue.RelationsInterventions) { //Si l'activité est directement liée à cette fraction, prend celle ci de préférence if (relInter.FractionIntervention.Id == fraction.Id) { relRetenue = relInter; break; } } } } if (activiteRetenue == null) { //Création de l'activite activiteRetenue = new CActiviteActeur(fraction.ContexteDonnee); activiteRetenue.CreateNewInCurrentContexte(); activiteRetenue.TypeActiviteActeur = typeActivite; activiteRetenue.Acteur = relIntervenant.Intervenant; activiteRetenue.Date = dt; activiteRetenue.Duree = 0; if (bAvecSite) { activiteRetenue.Site = fraction.Intervention.Site; } foreach (KeyValuePair <CChampCustom, object> valChamp in valeursChamps) { activiteRetenue.SetValeurChamp(valChamp.Key.Id, valChamp.Value); } } if (relRetenue == null) { //Création de la relation à l'interventation relRetenue = new CIntervention_ActiviteActeur(fraction.ContexteDonnee); relRetenue.ActiviteActeur = activiteRetenue; relRetenue.DureeImputee = 0; relRetenue.FractionIntervention = fraction; } //Note que cette relation ne doit pas être supprimée tableToDelete[relRetenue] = false; double fDureeForThis = 0; if (dt == fraction.DateFin.Value.Date) { fDureeForThis = fDureeAImputer; //On affecte le reste } else { if (dt == fraction.DateDebut.Value.Date) { //On est sur le premier jour, //Utilise comme référence le temps qui sépare la date //de début de minuit TimeSpan sp = dt.AddDays(1) - fraction.DateDebut.Value; double fRatio = sp.TotalHours / fDureeReelle; fDureeForThis = fRatio * fraction.TempsDeTravail.Value; } else { fDureeForThis = 24.0 / fDureeReelle * fraction.TempsDeTravail.Value; } //Arrondi la durée calculé à la minute fDureeForThis = (int)fDureeForThis + (int)((fDureeForThis - (int)fDureeForThis) * 60.0 + .5) / 60.0; } fDureeAImputer -= fDureeForThis; if (relRetenue.DureeImputee != fDureeForThis) { //Impute la durée de la fraction sur l'activité relRetenue.ActiviteActeur.Duree -= relRetenue.DureeImputee; relRetenue.DureeImputee = (double)fDureeForThis; relRetenue.ActiviteActeur.Duree += fDureeForThis; } dt = dt.AddDays(1); } } } foreach (DictionaryEntry entry in tableToDelete) { if ((bool)entry.Value) { //Supprime la relation CIntervention_ActiviteActeur relToDelete = (CIntervention_ActiviteActeur)entry.Key; if (relToDelete.Row.RowState != DataRowState.Deleted) { CActiviteActeur activiteAncienne = relToDelete.ActiviteActeur; //SC 10/3/2014 : La désimputation du temps de l'activité se fait dans CIntervention_activiteActeurServeur.TraitementAvantSauvegardee //activiteAncienne.Duree -= relToDelete.DureeImputee; result = relToDelete.Delete(true); /*if ( result && activiteAncienne.Duree == 0 ) * result = activiteAncienne.Delete(); * if ( !result ) * return result;*/ } } } return(result); }
//------------------------------------------------------------------------- public CFormEditionTypeActiviteActeur(CTypeActiviteActeur TypeActiviteActeur, CListeObjetsDonnees liste) : base(TypeActiviteActeur, liste) { // Cet appel est requis par le Concepteur Windows Form. InitializeComponent(); }
//------------------------------------------------------------------------- public CFormEditionTypeActiviteActeur(CTypeActiviteActeur TypeActiviteActeur) : base(TypeActiviteActeur) { // Cet appel est requis par le Concepteur Windows Form. InitializeComponent(); }
private void ChangeTypeActivite(CTypeActiviteActeur typeActivite) { bool bChangement = false; if (typeActivite == null && m_typeActivite != null || m_typeActivite == null && typeActivite != null) { bChangement = true; } if (m_typeActivite != null && !m_typeActivite.Equals(typeActivite)) { bChangement = true; } m_typeActivite = typeActivite; if (m_typeActivite == null) { m_txtTypeActivite.Text = ""; m_panelDuree.Visible = true; m_panelFormulaire.Visible = false; m_txtSelectSite.Visible = true; m_panelFormulaire.InitPanel(null, null); } else { m_txtSelectSite.Visible = typeActivite.SiteObligatoire; //m_wndDate.Value = Activite.Date; m_txtTypeActivite.Text = m_typeActivite.Libelle; m_panelDuree.Visible = m_typeActivite.SaisieDuree; if (bChangement) { CFormulaire formulaire = m_typeActivite.Formulaire; if (formulaire != null) { object eltTmp = null; if (m_activite != null) { eltTmp = m_activite; } else { eltTmp = m_elementAVariables; } m_panelFormulaire.Size = formulaire.Formulaire.Size; if (m_panelFormulaire.Visible) { m_panelFormulaire.AffecteValeursToElement(); } m_panelFormulaire.InitPanel(formulaire.Formulaire, eltTmp); m_panelFormulaire.Visible = true; } else { m_panelFormulaire.Visible = false; } } } RecalcSize(); }