Esempio n. 1
0
        //-----------------------------------------
        public CResultAErreur Maj_Champs()
        {
            CResultAErreur result = CResultAErreur.True;

            if (Acteur == null)
            {
                return(result);
            }

            if (!m_listeDerniersActeurs.Contains(Acteur.Id))
            {
                m_listeDerniersActeurs.Add(Acteur.Id);
            }

            Hashtable tableNiveauToParent = new Hashtable();

            foreach (CControleSaisieUneActiviteActeur control in m_listeControlsUtiles)
            {
                result = control.Maj_Champs();
                if (!result)
                {
                    return(result);
                }
                CActiviteActeur donnee = control.Activite;
            }
            return(result);
        }
Esempio n. 2
0
        //-------------------------------------------------------------------
        public override CResultAErreur TraitementAvantSauvegarde(CContexteDonnee contexte)
        {
            CResultAErreur result = base.TraitementAvantSauvegarde(contexte);

            if (!result)
            {
                return(result);
            }
            DataTable table = contexte.Tables[GetNomTable()];

            if (table == null)
            {
                return(result);
            }
            foreach (DataRow row in new ArrayList(table.Rows))
            {
                if (row.RowState == DataRowState.Deleted)
                {
                    CIntervention_ActiviteActeur rel = new CIntervention_ActiviteActeur(row);
                    rel.VersionToReturn = DataRowVersion.Original;
                    CActiviteActeur act = rel.ActiviteActeur;
                    if (act.Row.RowState != null && rel.DureeImputee != 0)
                    {
                        act.Duree -= rel.DureeImputee;
                    }
                    if (act.Duree == 0)
                    {
                        act.Delete(true);
                    }
                }
            }
            return(result);
        }
        //-----------------------------------------
        public CResultAErreur Maj_Champs( )
        {
            CResultAErreur result = CResultAErreur.True;

            if (m_typeActivite == null &&
                (m_txtCommentaire.Text != ""))
            {
                ControleDonnees();
                result.EmpileErreur(I.T("Invalid Activiy @1|30190", m_nIndex.ToString()));
                return(result);
            }
            if (m_typeActivite == null)
            {
                return(result);
            }

            if (m_activite != null && m_activite.ReadOnly)
            {
                return(result);
            }

            if (m_activite == null)
            {
                m_activite = new CActiviteActeur(ControleActivites.Acteur.ContexteDonnee);
                m_activite.CreateNewInCurrentContexte();
            }

            m_activite.Acteur             = ControleActivites.Acteur;
            m_activite.TypeActiviteActeur = m_typeActivite;
            if (m_typeActivite.SiteObligatoire)
            {
                if (m_txtSelectSite.ElementSelectionne is CSite)
                {
                    m_activite.Site = (CSite)m_txtSelectSite.ElementSelectionne;
                }
                else
                {
                    result.EmpileErreur(I.T("Enter a site|30191"));
                }
            }
            else
            {
                m_activite.Site = null;
            }
            if (m_typeActivite != null && m_typeActivite.SaisieDuree)
            {
                m_activite.Duree = m_txtDuree.ValeurHeure;
            }
            else
            {
                m_activite.Duree = null;
            }
            m_activite.Commentaires = m_txtCommentaire.Text;
            if (m_typeActivite != null && m_typeActivite.Formulaire != null)
            {
                m_panelFormulaire.AffecteValeursToElement(m_activite);
            }
            m_activite.Date = m_wndDate.Value;
            return(result);
        }
        //---------------------------------------------------
        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;
            }
        }
Esempio n. 5
0
        //-----------------------------------------
        private void AddActivite(CActiviteActeur activite, ref int nIndex, bool bRecalcSize)
        {
            bool bEntete = m_panelControles.Controls.Count == 0;
            CControleSaisieUneActiviteActeur ctrl = GetNewControle(nIndex);

            ctrl.Visible = true;
            ctrl.InitControle(activite, nIndex, bEntete);
            nIndex++;
            if (bRecalcSize)
            {
                RecalcSize();
            }
        }
Esempio n. 6
0
        //-------------------------------------------------------------------
        public override CResultAErreur VerifieDonnees(CObjetDonnee objet)
        {
            CResultAErreur result = CResultAErreur.True;

            try
            {
                CActiviteActeur activiteActeur = (CActiviteActeur)objet;
            }
            catch (Exception e)
            {
                result.EmpileErreur(new CErreurException(e));
            }

            return(result);
        }
 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 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. 9
0
        ///------------------------------------------------------------------------
        public override CResultAErreur TraitementAvantSauvegarde(CContexteDonnee contexte)
        {
            CResultAErreur result = base.TraitementAvantSauvegarde(contexte);

            if (!result)
            {
                return(result);
            }
            DataTable table = contexte.Tables[GetNomTable()];

            if (table == null)
            {
                return(result);
            }
            ArrayList lstRows = new ArrayList(table.Rows);
            Dictionary <CActiviteActeurResume, bool> listeARecalculer = new Dictionary <CActiviteActeurResume, bool>();

            foreach (DataRow row in lstRows)
            {
                if (row.RowState != DataRowState.Unchanged)
                {
                    CActiviteActeur       activite = new CActiviteActeur(row);
                    CActiviteActeurResume resume   = null;
                    if (row.RowState == DataRowState.Deleted)
                    {
                        DataRowVersion saveVersion = activite.VersionToReturn;
                        activite.VersionToReturn = DataRowVersion.Original;
                        resume = activite.ResumeActivite;
                        if (resume != null && resume.IsValide())
                        {
                            listeARecalculer[resume] = true;
                        }
                        activite.VersionToReturn = saveVersion;
                    }
                    else
                    {
                        resume = activite.ResumeActivite;
                        if (resume != null)
                        {
                            listeARecalculer[resume] = true;
                            if (resume.Date.Date != activite.Date.Date)
                            {
                                resume = null;
                            }
                        }
                        if (resume == null)
                        {
                            //Cherche une activite pour cet acteur et ce jour
                            resume = new CActiviteActeurResume(contexte);
                            if (!resume.ReadIfExists(new CFiltreData(
                                                         CActiviteActeurResume.c_champDate + ">=@1 and " +
                                                         CActiviteActeurResume.c_champDate + "<@2 and " +
                                                         CActeur.c_champId + "=@3",
                                                         activite.Date.Date,
                                                         activite.Date.Date.AddDays(1),
                                                         activite.Acteur.Id)))
                            {
                                resume = new CActiviteActeurResume(contexte);
                                resume.CreateNewInCurrentContexte();
                                resume.Acteur = activite.Acteur;
                                resume.Date   = activite.Date.Date;
                            }
                            activite.SetResumeAssocie(resume);
                            listeARecalculer[resume] = true;
                        }
                    }
                }
            }
            // Recalcul le cumul des heures des Activités résumés
            foreach (CActiviteActeurResume resume in listeARecalculer.Keys)
            {
                resume.Recalc();
            }
            return(result);
        }