示例#1
0
        //---------------------------------------------------------------------------------------------------------
        private CResultAErreur GetElementEditeSecondaire(CEtapeWorkflow etapeEnCours)
        {
            CResultAErreur result = CResultAErreur.True;

            if (etapeEnCours != null)
            {
                CBlocWorkflowFormulaire blocFormulaire = etapeEnCours.TypeEtape != null ? etapeEnCours.TypeEtape.Bloc as CBlocWorkflowFormulaire : null;
                if (blocFormulaire == null)
                {
                    result.EmpileErreur("Ce To do ne peut pas être traité dans l'application web Timos");
                    return(result);
                }
                if (blocFormulaire.FormuleElementEditeSecondaire != null)
                {
                    C2iExpression expElementEditePrincipal = blocFormulaire.FormuleElementEditeSecondaire;
                    CContexteEvaluationExpression ctxEval  = new CContexteEvaluationExpression(etapeEnCours);
                    result = expElementEditePrincipal.Eval(ctxEval);
                    if (!result)
                    {
                        result.EmpileErreur("Erreur dans l'évaluation de l'élément édité principal du to do " + etapeEnCours.Id);
                    }
                }
            }

            return(result);
        }
示例#2
0
        //---------------------------------------------------------------------------------------------------------
        private string GetInstructionsForTodo(CEtapeWorkflow etapeEnCours)
        {
            string strResult = "Pas d'instructions";

            if (etapeEnCours != null)
            {
                CBlocWorkflowFormulaire blocFormulaire = etapeEnCours.TypeEtape != null ? etapeEnCours.TypeEtape.Bloc as CBlocWorkflowFormulaire : null;
                if (blocFormulaire == null)
                {
                    strResult = "Ce To do ne peut pas être traité dans l'application web Timos";
                    return(strResult);
                }
                if (blocFormulaire.FormuleInstructions != null)
                {
                    C2iExpression expInstructions         = blocFormulaire.FormuleInstructions;
                    CContexteEvaluationExpression ctxEval = new CContexteEvaluationExpression(etapeEnCours);
                    CResultAErreur resEval = expInstructions.Eval(ctxEval);
                    if (resEval && resEval.Data != null)
                    {
                        strResult = resEval.Data.ToString();
                    }
                    else
                    {
                        strResult = etapeEnCours.Libelle + Environment.NewLine + resEval.Erreur.ToString();
                    }
                }
            }

            return(strResult);
        }
 private void m_btnPaste_Click(object sender, EventArgs e)
 {
     byte[] data = Clipboard.GetData(typeof(CBlocWorkflowFormulaire).ToString()) as byte[];
     if (data != null)
     {
         try
         {
             MemoryStream           stream = new MemoryStream(data);
             BinaryReader           reader = new BinaryReader(stream);
             CSerializerReadBinaire ser    = new CSerializerReadBinaire(reader);
             ser.IsForClone = true;
             CBlocWorkflowFormulaire bloc = new CBlocWorkflowFormulaire();
             if (ser.TraiteObject <CBlocWorkflowFormulaire>(ref bloc))
             {
                 CBlocWorkflowFormulaire old = m_blocFormulaire;
                 m_blocFormulaire = bloc;
                 InitChamps();
                 m_blocFormulaire = old;
             }
             reader.Close();
             stream.Close();
             stream.Dispose();
         }
         catch { }
     }
 }
        //-------------------------------------------------------
        public static bool EditeBloc(CBlocWorkflowFormulaire bloc)
        {
            if (bloc == null)
            {
                return(false);
            }
            CFormEditionBlocWorkflowFormulaire form = new CFormEditionBlocWorkflowFormulaire();

            form.m_blocFormulaire = bloc;
            bool bResult = form.ShowDialog() == DialogResult.OK;

            form.Dispose();
            return(bResult);
        }
        private void AppliqueEtape(CEtapeWorkflow etape, CFormEditionStandard formStandard)
        {
            formStandard.BoutonAjouterVisible   = false;
            formStandard.BoutonSupprimerVisible = false;
            CBlocWorkflowFormulaire bloc = etape.TypeEtape.Bloc as CBlocWorkflowFormulaire;

            if (bloc != null)
            {
                formStandard.AddRestrictionComplementaire("WORKFLOW_FORMULAIRE", bloc.Restrictions, false);
            }
            m_dicFormToEtape[formStandard] = etape;
            formStandard.AfterGetContexte += m_eventAfterGetContexte;
            formStandard.Disposed         += new EventHandler(formStandard_Disposed);
            CFormMain.GetInstance().SetEtapeActive(etape, formStandard);
        }
 //----------------------------------------------------
 void m_formulaire_AfterValideModification(object sender, sc2i.data.CObjetDonneeEventArgs args)
 {
     if (m_etapeEnCours != null)
     {
         CBlocWorkflowFormulaire bloc = m_etapeEnCours.TypeEtape.Bloc as CBlocWorkflowFormulaire;
         if (bloc != null && bloc.PromptForEndWhenAllConditionsAreOk)
         {
             CResultAErreur result = m_etapeEnCours.GetErreursManualEndEtape();
             if (result)
             {
                 if (CFormAlerte.Afficher(I.T("All prerequisite conditions to close Step \"@1\" are valid. Would you like to close this Step|20573", m_etapeEnCours.Libelle),
                                          EFormAlerteBoutons.OuiNon,
                                          EFormAlerteType.Question) == DialogResult.Yes)
                 {
                     EndEtape();
                 }
             }
         }
     }
 }
        //----------------------------------------------------
        private void Init()
        {
            Visible = m_etapeEnCours != null;
            CBlocWorkflowFormulaire blocFormulaire = m_etapeEnCours != null &&
                                                     m_etapeEnCours.TypeEtape != null ?
                                                     m_etapeEnCours.TypeEtape.Bloc as CBlocWorkflowFormulaire : null;

            SetSecondaireEdite(null);
            if (blocFormulaire == null)
            {
                return;
            }
            if (blocFormulaire.HideAfterValidation && m_etapeEnCours.EtatCode == (int)EEtatEtapeWorkflow.Terminée)
            {
                SetEtapeEnCours(null, null);
                return;
            }
            ResetClignote();
            this.SuspendDrawing();
            m_lblNomEtape.Text = m_etapeEnCours.Libelle;
            if (blocFormulaire.FormuleInstructions != null)
            {
                C2iExpression expInstructions         = blocFormulaire.FormuleInstructions;
                CContexteEvaluationExpression ctxEval = new CContexteEvaluationExpression(m_etapeEnCours);
                CResultAErreur result = expInstructions.Eval(ctxEval);
                if (result && result.Data != null)
                {
                    m_lblInstructions.Text = result.Data.ToString();
                }
                else
                {
                    m_lblInstructions.Text = m_etapeEnCours.Libelle + Environment.NewLine +
                                             result.Erreur.ToString();
                }
            }
            //m_btnTerminer.Visible = m_etapeEnCours.EtatCode == (int)EEtatEtapeWorkflow.Démarrée;
            if (m_formulaire != null)
            {
                bool bConsultationOnly = m_etapeEnCours.EtatCode != (int)EEtatEtapeWorkflow.Démarrée;
                if (m_etapeEnCours.EtatCode == (int)EEtatEtapeWorkflow.Terminée &&
                    !blocFormulaire.LockerElementEditeEnFinDEtape)
                {
                    bConsultationOnly = false;
                }
                m_formulaire.ConsultationOnly = bConsultationOnly;
            }
            m_bIsCollapse = false;
            UpdateImagePanelBas();
            m_btnTerminer.Visible = m_etapeEnCours.DateFin == null && m_etapeEnCours.DateDebut != null;
            m_btnTerminer.Enabled = !m_etapeEnCours.EstGelee;
            m_btnAnnuler.Visible  = !blocFormulaire.MasquerSurChangementDeFormulaire || m_etapeEnCours.DateFin != null;
            m_btnActions.Visible  = CRecuperateurDeclencheursActions.GetActionsManuelles(m_etapeEnCours, true).Count() > 0;

            Image imgTask = m_etapeEnCours.EtatCode == (int)EEtatEtapeWorkflow.Terminée ?
                            Resources._1346738948_taskok : Resources._1346738948_task;

            if (m_etapeEnCours.EstGelee)
            {
                imgTask = Resources._1346738948_task_pending;
            }
            SetImageTask(imgTask);

            int nHeight = m_panelTop.Height + m_panelInstructions.Height + m_panelBas.Height +
                          ClientSize.Height - Size.Height;
            bool bShowFormulaireSecondaire = false;

            if (blocFormulaire.DbKeyFormulaireSecondaire != null &&
                blocFormulaire.FormuleElementEditeSecondaire != null)
            {
                CContexteEvaluationExpression ctxEval = new CContexteEvaluationExpression(m_etapeEnCours);
                CResultAErreur result = blocFormulaire.FormuleElementEditeSecondaire.Eval(ctxEval);
                CObjetDonnee   objet  = result.Data as CObjetDonnee;
                if (result && objet != null)
                {
                    CFormulaire formulaire = new CFormulaire(m_etapeEnCours.ContexteDonnee);
                    if (formulaire.ReadIfExists(blocFormulaire.DbKeyFormulaireSecondaire))
                    {
                        C2iWnd wnd = formulaire.Formulaire;
                        if (wnd != null)
                        {
                            Size = new Size(Size.Width,
                                            nHeight +
                                            wnd.Size.Height + 2);
                            if (blocFormulaire.SecondaireEnEdition)
                            {
                                objet.BeginEdit();
                            }
                            m_panelFormulalire.InitPanel(wnd, objet);
                            SetSecondaireEdite(blocFormulaire.SecondaireEnEdition ? objet : null);
                            if (!blocFormulaire.SecondaireEnEdition)
                            {
                                m_panelFormulalire.LockEdition = true;
                            }
                            else
                            {
                                m_panelFormulalire.LockEdition = m_etapeEnCours.DateFin != null;
                            }

                            bShowFormulaireSecondaire = true;
                        }
                    }
                }
            }
            if (!bShowFormulaireSecondaire)
            {
                Size = new Size(Size.Width, nHeight);
            }
            m_nSizeUncollapse = Size.Height;
            this.ResumeDrawing();
        }
        //-----------------------------------------------------------------------------
        private CResultAErreur AfficheEtapeFormulaire(CEtapeWorkflow etape, bool bDansNouvelOnglet)
        {
            CResultAErreur          result         = CResultAErreur.True;
            CBlocWorkflowFormulaire blocFormulaire = etape.TypeEtape != null ? etape.TypeEtape.Bloc as CBlocWorkflowFormulaire : null;

            if (blocFormulaire == null)
            {
                result.EmpileErreur(I.T("Error while initializing workflow step|20557"));
                return(result);
            }

            //trouve l'élément à éditer
            CContexteEvaluationExpression ctxEval = new CContexteEvaluationExpression(etape);

            if (blocFormulaire.FormuleElementEditePrincipal == null)
            {
                result.EmpileErreur(I.T("Step @1 doesn't define element to edit|20558",
                                        etape.TypeEtape.Libelle));
                return(result);
            }
            result = blocFormulaire.FormuleElementEditePrincipal.Eval(ctxEval);
            if (!result)
            {
                return(result);
            }
            CObjetDonneeAIdNumeriqueAuto objet = result.Data as CObjetDonneeAIdNumeriqueAuto;

            if (objet == null)
            {
                result.EmpileErreur(I.T("Element to edit for step @1 is invalid|20559"),
                                    etape.TypeEtape.Libelle);
                return(result);
            }

            CFormEditionStandard formStandard;

            if (blocFormulaire.IsStandardForm)
            {
                CReferenceTypeForm refType = CFormFinder.GetRefFormToEdit(objet.GetType());
                formStandard = null;
                try
                {
                    if (refType != null)
                    {
                        formStandard = refType.GetForm(objet) as CFormEditionStandard;
                    }
                }
                catch (Exception e)
                { }
                if (formStandard == null)
                {
                    result.EmpileErreur(I.T("System can not edit @1|20560",
                                            DynamicClassAttribute.GetNomConvivial(objet.GetType())));
                    return(result);
                }
            }
            else
            {
                //CFormulaire formulaire = new CFormulaire(etape.ContexteDonnee);
                //if (!formulaire.ReadIfExists(
                //    blocFormulaire.IdFormulairePrincipal == null ? -1 : blocFormulaire.IdFormulairePrincipal.Value))
                //{
                //    result.EmpileErreur(I.T("Form for step @1 is invalid|20561",
                //        etape.TypeEtape.Libelle));
                //    return result;
                //}
                CFormEditionStdPourFormulaire frm = new CFormEditionStdPourFormulaire(objet);
                //frm.IdFormulaireAffiche = formulaire.Id;
                frm.IdsFormulairesAffiches = blocFormulaire.ListeDbKeysFormulaires;
                formStandard = frm;
            }
            CFormMain.GetInstance().SetEtapeActive(null, null);

            if (formStandard != null && blocFormulaire.RestrictionExceptionContext.Length > 0)
            {
                formStandard.ContexteModification = blocFormulaire.RestrictionExceptionContext;
            }


            if (bDansNouvelOnglet)
            {
                CFormMain.GetInstance().AffichePageDansNouvelOnglet(formStandard);
            }
            else
            {
                CFormMain.GetInstance().AffichePage(formStandard);
            }

            AppliqueEtape(etape, formStandard);
            return(result);
        }
示例#9
0
        //------------------------------------------------------------------------------------------------
        public CResultAErreur FillDataSet(DataSet ds)
        {
            CResultAErreur result = CResultAErreur.True;

            if (m_etape == null)
            {
                result.EmpileErreur("m_etape is null");
                return(result);
            }
            if (ObjetEditePrincipal == null)
            {
                result.EmpileErreur("ObjetEditePrincipal is null");
                return(result);
            }
            CBlocWorkflowFormulaire blocFormulaire = m_etape.TypeEtape != null ? m_etape.TypeEtape.Bloc as CBlocWorkflowFormulaire : null;

            if (blocFormulaire == null)
            {
                result.EmpileErreur("m_etape.Id = " + m_etape.Id + ". Cette Etape n'a pas de formulaire associé dans Timos");
                return(result);
            }

            CListeRestrictionsUtilisateurSurType lstRestrictions = blocFormulaire.Restrictions;
            CRestrictionUtilisateurSurType       restriction     = lstRestrictions.GetRestriction(ObjetEditePrincipal.GetType());

            // Traite la liste des formulaires associés pour trouver les champs customs
            foreach (CDbKey keyForm in blocFormulaire.ListeDbKeysFormulaires)
            {
                CFormulaire formulaire = new CFormulaire(m_etape.ContexteDonnee);
                if (formulaire.ReadIfExists(keyForm))
                {
                    bool bGroupeEditable = true;
                    if (restriction != null)
                    {
                        ERestriction rest = restriction.GetRestriction(formulaire.CleRestriction);
                        if ((rest & ERestriction.ReadOnly) == ERestriction.ReadOnly)
                        {
                            bGroupeEditable = false;
                        }
                    }
                    CGroupeChamps groupe = new CGroupeChamps(ds, formulaire, this, false, bGroupeEditable);
                    result = groupe.FillDataSet(ds, formulaire.Formulaire, ObjetEditePrincipal, lstRestrictions);
                }
            }
            // Formulaire d'informations secondaires
            if (ObjetEditeSecondaire != null)
            {
                CDbKey keyFormSecondaire = blocFormulaire.DbKeyFormulaireSecondaire;
                if (keyFormSecondaire != null)
                {
                    CFormulaire formulaireSecondaire = new CFormulaire(m_etape.ContexteDonnee);
                    if (formulaireSecondaire.ReadIfExists(keyFormSecondaire))
                    {
                        CGroupeChamps groupe = new CGroupeChamps(ds, formulaireSecondaire, this, true, false);
                        result = groupe.FillDataSet(ds, formulaireSecondaire.Formulaire, ObjetEditeSecondaire, lstRestrictions);
                    }
                }
            }

            // Gestion des documents attendus
            CCaracteristiqueEntite[] liste = GetDocumentsAttendus();
            foreach (CCaracteristiqueEntite caracDoc in liste)
            {
                CDocumentAttendu doc = new CDocumentAttendu(ds, caracDoc);
                result += doc.FillDataSet(ds);
            }

            // Gestion des Actions disponibles
            string strStepId = m_etape.TypeEtape.UniversalId;

            CProcessInDb[] actionsDisponibles = GetActionsDisponibles();
            foreach (CProcessInDb action in actionsDisponibles)
            {
                List <string> lstNommages = new List <string>(action.GetSrongNames());
                lstNommages = lstNommages.Where(nom => nom.Contains(strStepId)).ToList();
                if (lstNommages.Count > 0)
                {
                    CActionWeb actionWeb = new CActionWeb(ds, action, false);
                    result += actionWeb.FillDataSet(ds);
                }
            }

            return(result);
        }