//---------------------------------------------------
        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);
        }
Esempio n. 8
0
 //-------------------------------------------------------------------------
 public CFormEditionTypeActiviteActeur(CTypeActiviteActeur TypeActiviteActeur, CListeObjetsDonnees liste)
     : base(TypeActiviteActeur, liste)
 {
     // Cet appel est requis par le Concepteur Windows Form.
     InitializeComponent();
 }
Esempio n. 9
0
 //-------------------------------------------------------------------------
 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();
        }