//--------------------------------------------------------------------------------------------------------- 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); }
//--------------------------------------------------------------------------------------------------------- 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); }
//------------------------------------------------------------------------------------------------ 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); }