Example #1
0
        public void Init(CProcess process, Type typeObjet, CActionImportFromTableRow.CMappageColonne mappage)
        {
            m_mappage = mappage;
            CColonneTableParametrable col = new CColonneTableParametrable(CContexteDonneeSysteme.GetInstance());

            col.ReadIfExists(mappage.IdColonne);
            m_lblColonne.Text = col.Libelle;
            Type tp = col.TypeDonneeChamp.TypeDotNetAssocie;
            List <CDefinitionProprieteDynamique> lst = new List <CDefinitionProprieteDynamique>();

            foreach (CDefinitionProprieteDynamique def in new CFournisseurPropDynStd(false).GetDefinitionsChamps(typeObjet))
            {
                Type defType = def.TypeDonnee.TypeDotNetNatif;
                if (defType.IsGenericType && defType.GetGenericTypeDefinition() == typeof(Nullable <>))
                {
                    defType = defType.GetGenericArguments()[0];
                }
                if (defType == tp && !def.TypeDonnee.IsArrayOfTypeNatif)
                {
                    lst.Add(def);
                }
            }

            m_cmbChamp.ListDonnees       = lst;
            m_cmbChamp.ProprieteAffichee = "Nom";

            m_cmbChamp.SelectedValue = mappage.ProprieteCible;
            m_txtFormuleCondition.Init(process, typeof(CProcess));
            m_txtFormuleCondition.Formule = mappage.FormuleCondition;
        }
Example #2
0
        /// ////////////////////////////////////////////////////////
        protected override CResultAErreur MyExecute(CContexteExecutionAction contexte)
        {
            CResultAErreur result = CResultAErreur.True;

            CContexteEvaluationExpression ctxEval = new CContexteEvaluationExpression(Process);

            object elementCible = null;

            if (FormuleElementCible != null)
            {
                result = FormuleElementCible.Eval(ctxEval);
                if (result)
                {
                    elementCible = result.Data;
                }
            }
            if (elementCible == null)
            {
                result.EmpileErreur(I.T("Error in target element formula|20236"));
                return(result);
            }
            else if (elementCible is CObjetDonnee)
            {
                elementCible = ((CObjetDonnee)elementCible).GetObjetInContexte(contexte.ContexteDonnee);
            }

            CLigneTableParametrable ligne = null;

            if (FormuleRow != null)
            {
                result = FormuleRow.Eval(ctxEval);
                if (result)
                {
                    ligne = result.Data as CLigneTableParametrable;
                }
            }
            if (ligne == null)
            {
                result.EmpileErreur(I.T("Error in table row formula|20238"));
                return(result);
            }

            //Identifie les colonnes à importer
            Dictionary <string, CDefinitionProprieteDynamique> dicMap = new Dictionary <string, CDefinitionProprieteDynamique>();

            foreach (CMappageColonne mappage in Mappages)
            {
                if (mappage.ProprieteCible != null)
                {
                    bool bPrendre = true;
                    CColonneTableParametrable col = new CColonneTableParametrable(contexte.ContexteDonnee);
                    if (col.ReadIfExists(mappage.IdColonne))
                    {
                        if (mappage.FormuleCondition != null)
                        {
                            result = mappage.FormuleCondition.Eval(ctxEval);
                            if (!result || result.Data == null)
                            {
                                bPrendre = false;
                            }
                            else
                            {
                                bool?bTmp = CUtilBool.BoolFromString(result.Data.ToString());
                                if (bTmp != null)
                                {
                                    bPrendre = bTmp.Value;
                                }
                                else
                                {
                                    bPrendre = false;
                                }
                            }
                        }
                        if (bPrendre)
                        {
                            object val = ligne.GetValue(col.Libelle);
                            if (val != null || !m_bIgnorerLesValeursVides)
                            {
                                try
                                {
                                    CInterpreteurProprieteDynamique.SetValue(elementCible, mappage.ProprieteCible, ligne.GetValue(col.Libelle));
                                }
                                catch
                                {
                                }
                            }
                        }
                    }
                }
            }
            return(result);
        }