Example #1
0
        public static string CreateReportModel(ClassData classData)
        {
            Dictionary <string, string> openerp_classValues = new Dictionary <string, string>();

            openerp_classValues["classname"] = "report_" + classData.Parent.ClassicName + "_" + classData.Name;
            openerp_classValues["name"]      = "report." + classData.Parent.ClassicName + "." + classData.Name + ".rml";
            openerp_classValues["table"]     = classData.Parent.ClassicName + "." + classData.Name;
            openerp_classValues["tablename"] = Utils.ClassicName(classData.Name);
            openerp_classValues["xslfile"]   = "addons/" + classData.Parent.ClassicName + "/report/report_" + classData.Parent.ClassicName + "_" + classData.Name + ".xsl";

            string fields = "";

            foreach (PropertyData propertyData in classData.ListOfProperties)
            {
                if (!propertyData.Name.Equals(classData.Name + "_id"))
                {
                    fields += "fields += \"<" + propertyData.Name + ">\" + " + openerp_classValues["tablename"] + "." + propertyData.Name + " + \"</" + propertyData.Name + ">\"\r\n\t\t\t";
                }
            }

            openerp_classValues["fields"] = fields;

            string filePy = classData.Parent.DirectoryInfo_Base.FullName + "/report/report_" + classData.Parent.ClassicName + "_" + classData.Name + ".py";

            Utils.MakeFileFromModel("openerp_report.py.model", filePy, openerp_classValues);

            return(filePy);
        }
Example #2
0
        public OperationData(ClassData classData, XmlNode xmlNode)
        {
            Parent = classData;

            Name       = xmlNode.Attributes["name"].Value.ToLower();
            ReturnType = Utils.CorrectType(xmlNode["type"].Attributes["type"].Value.ToLower());

            Alias = (xmlNode["style"].Attributes["value"] != null) ? xmlNode["style"].Attributes["value"].Value : Utils.firstCharUpper(Name).Replace("_", " ");
            Alias = (Alias.Trim().Equals(string.Empty)) ? Name : Alias;

            ListOfParameter = new List <ParameterData>();
            foreach (XmlNode parameterNode in xmlNode["parameters"].ChildNodes)
            {
                string typ = Utils.CorrectType(parameterNode["properties"].Attributes["type"].Value.ToLower());
                string nam = "";

                if (!parameterNode.Attributes["xmi:idref"].Value.Contains("EAID_RETURNID"))
                {
                    List <XmlNode> xmlNames = XmlUtility.GetXmlNode(Parent.Parent.XmlNode.ParentNode.ParentNode, parameterNode.Attributes["xmi:idref"].Value);
                    if (xmlNames.Count > 0)
                    {
                        nam = xmlNames[0].Attributes["name"].Value;
                    }

                    ParameterData parameterData = new ParameterData(nam, typ);

                    ListOfParameter.Add(parameterData);
                }
            }

            CallBy     = Utils.getExtra(xmlNode, "callby", "")[0];
            State      = Utils.getExtra(xmlNode, "state", "")[0];
            PythonCode = "";
        }
        public OperationData(ClassData classData, XmlNode xmlNode)
        {
            Parent = classData;

            Name = xmlNode.Attributes["name"].Value.ToLower();
            ReturnType = Utils.CorrectType(xmlNode["type"].Attributes["type"].Value.ToLower());

            Alias = (xmlNode["style"].Attributes["value"] != null) ? xmlNode["style"].Attributes["value"].Value : Utils.firstCharUpper(Name).Replace("_", " ");
            Alias = (Alias.Trim().Equals(string.Empty)) ? Name : Alias;

            ListOfParameter = new List<ParameterData>();
            foreach (XmlNode parameterNode in xmlNode["parameters"].ChildNodes)
            {
                string typ = Utils.CorrectType(parameterNode["properties"].Attributes["type"].Value.ToLower());
                string nam = "";

                if (!parameterNode.Attributes["xmi:idref"].Value.Contains("EAID_RETURNID"))
                {
                    List<XmlNode> xmlNames = XmlUtility.GetXmlNode(Parent.Parent.XmlNode.ParentNode.ParentNode, parameterNode.Attributes["xmi:idref"].Value);
                    if (xmlNames.Count > 0)
                    {
                        nam = xmlNames[0].Attributes["name"].Value;
                    }

                    ParameterData parameterData = new ParameterData(nam, typ);

                    ListOfParameter.Add(parameterData);
                }
            }

            CallBy = Utils.getExtra(xmlNode, "callby", "")[0];
            State = Utils.getExtra(xmlNode, "state", "")[0];
            PythonCode = "";
        }
        public MenuData(string Id, string Name, string MenuParent, string Action, ClassData classData)
        {
            ID        = Id;
            Parent    = classData;
            this.Name = Name;

            this.MenuParent = MenuParent;
            this.Action     = Action;

            Sequence = "";
            Groups   = "";
            Icon     = "";
        }
        public MenuData(string Id, string Name, string MenuParent, string Action, ClassData classData)
        {
            ID = Id;
            Parent = classData;
            this.Name = Name;

            this.MenuParent = MenuParent;
            this.Action = Action;

            Sequence = "";
            Groups = "";
            Icon = "";
        }
        public ViewData(string Id, ActionData refAction, string Name, ClassData classData, string sequence, string kind)
        {
            Kind = kind;

            ID = Id;
            Parent = classData;

            RefAction = refAction;

            Data = new Dictionary<string, object>();

            Data["name"] = Name;
            Data["sequence"] = sequence;
        }
        public ViewData(string Id, ActionData refAction, string Name, ClassData classData, string sequence, string kind)
        {
            Kind = kind;

            ID     = Id;
            Parent = classData;

            RefAction = refAction;

            Data = new Dictionary <string, object>();

            Data["name"]     = Name;
            Data["sequence"] = sequence;
        }
        public ViewData(ActData refView, ActionData refAction, string Name, ClassData classData, string sequence, string kind)
        {
            Kind = kind;

            ID = refView.ID + "_" + Kind.ToLower();
            Parent = classData;

            RefView = refView;
            RefAction = refAction;

            Data = new Dictionary<string, object>();

            Data["name"] = Name;
            Data["sequence"] = sequence;
        }
        public ViewData(ActData refView, ActionData refAction, string Name, ClassData classData, string sequence, string kind)
        {
            Kind = kind;

            ID     = refView.ID + "_" + Kind.ToLower();
            Parent = classData;

            RefView   = refView;
            RefAction = refAction;

            Data = new Dictionary <string, object>();

            Data["name"]     = Name;
            Data["sequence"] = sequence;
        }
Example #10
0
        public void addTraduction(ClassData classData, string text)
        {
            if ((!ListOfTraduction.ContainsKey(text)) && (!text.Trim().Equals("")))
            {
                string traduction = "";

                traduction += "#. module: " + classData.Parent.ClassicName + "\r\n";
                traduction += "#: view:" + classData.Parent.ClassicName + "." + classData.Name + ":0\r\n";
                traduction += "msgid \"" + Utils.ReplaceSpecialChar(text) + "\"\r\n";
                traduction += "msgstr \"" + text + "\"\r\n";

                traduction += "\r\n";

                ListOfTraduction.Add(text, traduction);
            }
        }
        public ActData(string Id, string Name, ClassData classData, string viewMode)
        {
            Kind = "Act";

            ID = Id;
            Parent = classData;

            Data = new Dictionary<string, object>();

            Data["name"] = classData.Alias;
            Data["res_model"] = classData.Parent.ClassicName + "." + classData.Name;
            Data["src_model"] = "";
            Data["view_mode"] = viewMode;
            Data["context1"] = "{}";
            Data["domain"] = "[]";
            Data["context2"] = "{}";
        }
        public ActData(string Id, string Name, ClassData classData, string viewMode)
        {
            Kind = "Act";

            ID     = Id;
            Parent = classData;

            Data = new Dictionary <string, object>();

            Data["name"]      = classData.Alias;
            Data["res_model"] = classData.Parent.ClassicName + "." + classData.Name;
            Data["src_model"] = "";
            Data["view_mode"] = viewMode;
            Data["context1"]  = "{}";
            Data["domain"]    = "[]";
            Data["context2"]  = "{}";
        }
Example #13
0
        public static string CreateReportWizardModel(ClassData classData)
        {
            Dictionary <string, string> openerp_classValues = new Dictionary <string, string>();

            openerp_classValues["classname"]   = "wizard_" + classData.Parent.ClassicName + "_" + classData.Name;
            openerp_classValues["name"]        = classData.Parent.ClassicName + ".wizard." + classData.Name;
            openerp_classValues["description"] = classData.Documentation;

            string fields      = "";
            string fields_coma = "";
            string defaults    = "";

            PropertyData property = new PropertyData();

            property.Name      = "typerapport";
            property.Alias     = "Type de rapport";
            property.Typage    = "selection";
            property.Selection = "[('listcomplete', \"Liste complète\")]";

            RenderPropertyPy(classData, property, ref fields, ref defaults, ViewKind.ReportFilter);

            fields_coma = "'" + property.Name + "', ";

            foreach (PropertyData propertyData in classData.ListOfPropertiesReport)
            {
                RenderPropertyPy(classData, propertyData, ref fields, ref defaults, ViewKind.ReportFilter);

                fields_coma += "'" + propertyData.Name + "', ";
            }

            fields_coma = fields_coma.Substring(0, fields_coma.Length - 2);

            openerp_classValues["fields"]      = fields;
            openerp_classValues["fields_coma"] = fields_coma;
            openerp_classValues["defaults"]    = defaults;
            openerp_classValues["reportname"]  = classData.Parent.ClassicName + "." + classData.Name + ".rml";

            string filePy = classData.Parent.DirectoryInfo_Base.FullName + "/wizard/wizard_" + classData.Parent.ClassicName + "_" + classData.Name + ".py";

            Utils.MakeFileFromModel("openerp_wizard.py.model", filePy, openerp_classValues);

            return(filePy);
        }
        public ActionData(string Id, string Name, ClassData classData, string defaultViewID, string viewMode)
        {
            ID     = Id;
            Parent = classData;

            Data = new Dictionary <string, object>();

            Data["model"]          = "ir.actions.act_window";
            Data["name"]           = Name;
            Data["view_id"]        = defaultViewID;
            Data["domain"]         = "";
            Data["context"]        = "";
            Data["sequence"]       = "";
            Data["res_model"]      = classData.ModuleName + "." + classData.Name;
            Data["view_type"]      = "";
            Data["target"]         = "";
            Data["view_mode"]      = viewMode;
            Data["search_view_id"] = "view_" + classData.Name + "_search";
            Data["act_window_id"]  = "";
        }
        public ActionData(string Id, string Name, ClassData classData, string defaultViewID, string viewMode)
        {
            ID = Id;
            Parent = classData;

            Data = new Dictionary<string, object>();

            Data["model"] = "ir.actions.act_window";
            Data["name"] = Name;
            Data["view_id"] = defaultViewID;
            Data["domain"] = "";
            Data["context"] = "";
            Data["sequence"] = "";
            Data["res_model"] = classData.ModuleName + "." + classData.Name;
            Data["view_type"] = "";
            Data["target"] = "";
            Data["view_mode"] = viewMode;
            Data["search_view_id"] = "view_" + classData.Name + "_search";
            Data["act_window_id"] = "";
        }
        public ActionData(ActionData refAction, ClassData classData, string viewID, ViewKind viewKind, string sequence)
        {
            ID     = refAction.ID + "_" + viewKind.ToString().ToLower();
            Parent = classData;

            Data = new Dictionary <string, object>();

            Data["model"]          = "ir.actions.act_window.view";
            Data["name"]           = "";
            Data["view_id"]        = viewID;
            Data["domain"]         = "";
            Data["context"]        = "";
            Data["sequence"]       = sequence;
            Data["view_id"]        = "";
            Data["res_model"]      = "";
            Data["view_type"]      = "";
            Data["target"]         = "";
            Data["view_mode"]      = viewKind.ToString().ToLower();
            Data["search_view_id"] = "";
            Data["act_window_id"]  = refAction.ID;
        }
        public ActionData(ActionData refAction, ClassData classData, string viewID, ViewKind viewKind, string sequence)
        {
            ID = refAction.ID + "_" + viewKind.ToString().ToLower();
            Parent = classData;

            Data = new Dictionary<string, object>();

            Data["model"] = "ir.actions.act_window.view";
            Data["name"] = "";
            Data["view_id"] = viewID;
            Data["domain"] = "";
            Data["context"] = "";
            Data["sequence"] = sequence;
            Data["view_id"] = "";
            Data["res_model"] = "";
            Data["view_type"] = "";
            Data["target"] = "";
            Data["view_mode"] = viewKind.ToString().ToLower();
            Data["search_view_id"] = "";
            Data["act_window_id"] = refAction.ID;
        }
        public LinkData(ClassData classData, XmlNode xmlNode)
        {
            XmlNode = xmlNode;
            AssociationClass = null;

            Parent = classData;
            ID = xmlNode.Attributes["xmi:id"].Value;

            MultiplicityStart = null;
            MultiplicityEnd = null;

            switch (xmlNode.Name)
            {
                case "Aggregation":
                {
                    Kind = KindLink.Aggregate;
                    ClassStartID = xmlNode.Attributes["start"].Value;
                    ClassEndID = xmlNode.Attributes["end"].Value;
                    break;
                }

                case "Association":
                {
                    Kind = KindLink.Associate;
                    ClassStartID = xmlNode.Attributes["start"].Value;
                    ClassEndID = xmlNode.Attributes["end"].Value;
                    break;
                }

                case "Generalization":
                {
                    Kind = KindLink.Generalize;
                    ClassStartID = xmlNode.Attributes["start"].Value;
                    ClassEndID = xmlNode.Attributes["end"].Value;
                    break;
                }
            }

            Direction = "";
        }
Example #19
0
        public LinkData(ClassData classData, XmlNode xmlNode)
        {
            XmlNode          = xmlNode;
            AssociationClass = null;

            Parent = classData;
            ID     = xmlNode.Attributes["xmi:id"].Value;

            MultiplicityStart = null;
            MultiplicityEnd   = null;

            switch (xmlNode.Name)
            {
            case "Aggregation":
            {
                Kind         = KindLink.Aggregate;
                ClassStartID = xmlNode.Attributes["start"].Value;
                ClassEndID   = xmlNode.Attributes["end"].Value;
                break;
            }

            case "Association":
            {
                Kind         = KindLink.Associate;
                ClassStartID = xmlNode.Attributes["start"].Value;
                ClassEndID   = xmlNode.Attributes["end"].Value;
                break;
            }

            case "Generalization":
            {
                Kind         = KindLink.Generalize;
                ClassStartID = xmlNode.Attributes["start"].Value;
                ClassEndID   = xmlNode.Attributes["end"].Value;
                break;
            }
            }

            Direction = "";
        }
Example #20
0
        public static string CreateReport(ClassData classData)
        {
            Dictionary<string, string> openerp_class_viewValues = new Dictionary<string, string>();

            openerp_class_viewValues["tablename"] = Utils.ClassicName(classData.Name);
            openerp_class_viewValues["alias"] = classData.Alias;

            string fields = "";
            string fields_titles = "";

            float colwidth = (17f / (float)(classData.ListOfProperties.Count - 1));
            string colwidths = "";

            foreach (PropertyData propertyData in classData.ListOfProperties)
            {
                if (!propertyData.Name.Equals(classData.Name + "_id"))
                {
                    colwidths += ((colwidths.Length > 0)? ",":"") + colwidth.ToString("#.0").Replace(",", ".") + "cm";

                    fields_titles += "<td><para style=\"rowTitle\">" + propertyData.Alias.ToUpper() + "</para></td>\r\n\t\t\t\t";
                    fields += "<td><para style=\"rowContent\"><xsl:value-of select=\"" + propertyData.Name + "\"/></para></td>\r\n\t\t\t\t\t";
                }
            }

            if (fields.Length > 0)
            {
                fields_titles = fields_titles.Substring(0, fields_titles.Length - 6);
                fields = fields.Substring(0, fields.Length - 7);
            }

            openerp_class_viewValues["fields"] = fields;
            openerp_class_viewValues["fields_titles"] = fields_titles;
            openerp_class_viewValues["colwidths"] = colwidths;

            string fileXsl = classData.Parent.DirectoryInfo_Base.FullName + "/report/report_" + classData.Parent.ClassicName + "_" + classData.Name + ".xsl";

            Utils.MakeFileFromModel("openerp_report.xsl.model", fileXsl, openerp_class_viewValues);

            return fileXsl;
        }
Example #21
0
        public void Update()
        {
            string previousTypage = Typage;

            Typage = Utils.CorrectType(Typage);

            if (Typage.Equals("selection"))
            {
                if (Selection.Equals(""))
                {
                    Selection = "[";
                    StatusBar = "";

                    SelectionData = Program.ProjectData.GetSelection(previousTypage);

                    foreach (KeyValuePair <string, string> element in SelectionData.ListOfValues)
                    {
                        Selection += "('" + element.Key + "', \"" + element.Value + "\"),";
                        StatusBar += element.Key + ",";
                    }

                    Selection = Selection.Substring(0, Selection.Length - 1) + "]";
                    StatusBar = StatusBar.Substring(0, StatusBar.Length - 1);
                }
            }

            if (LinkData != null)
            {
                if (LinkData.ClassStart != null)
                {
                    if (!Parent.Parent.ListOfClass.Contains(LinkData.ClassStart))
                    {
                        Parent.Parent.AddDepend(LinkData.ClassStart.Parent.ClassicName);
                    }
                }


                if (LinkData.ClassEnd != null)
                {
                    if (!Parent.Parent.ListOfClass.Contains(LinkData.ClassEnd))
                    {
                        Parent.Parent.AddDepend(LinkData.ClassEnd.Parent.ClassicName);
                    }
                }

                ClassData ClasseOpposee = LinkData.ClassStart;
                if (LinkData.ClassStart.Equals(Parent))
                {
                    ClasseOpposee = LinkData.ClassEnd;
                }

                string       MultipliciteOpposee = LinkData.MultiplicityStart;
                PropertyData ProprieteOpposee    = LinkData.PropertyStart;
                if (LinkData.PropertyStart.Equals(this))
                {
                    ProprieteOpposee    = LinkData.PropertyEnd;
                    MultipliciteOpposee = LinkData.MultiplicityEnd;
                }

                if ((LinkData.Kind.Equals(KindLink.Aggregate)) || (LinkData.Kind.Equals(KindLink.Compose)))
                {
                    if (LinkData.PropertyEnd.Equals(this))
                    {
                        Typage = "many2one";
                    }
                    else if ((LinkData.PropertyStart.Equals(this)) && (LinkData.Kind.Equals(KindLink.Compose)))
                    {
                        Typage = "one2many";
                    }
                }

                switch (LinkData.Kind)
                {
                case KindLink.Associate:
                {
                    string Multiplicity = null;

                    if (LinkData.PropertyStart.Equals(this))
                    {
                        Multiplicity = LinkData.MultiplicityStart;
                    }
                    else
                    {
                        Multiplicity = LinkData.MultiplicityEnd;
                    }

                    if (Multiplicity != null)
                    {
                        string multiplicity = Multiplicity.Replace("..", ".");

                        string[] multi = multiplicity.Split(new char[] { '.' });

                        if (multi.Length == 1)
                        {
                            switch (multi[0])
                            {
                            /*case "0":
                             * {
                             *  break;
                             * }*/

                            case "1":
                            {
                                Typage   = "many2one";
                                Required = "True";
                                Ondelete = "cascade";

                                break;
                            }
                            }
                        }
                        else     // (multi.Length > 1)
                        {
                            switch (Multiplicity)
                            {
                            case "0..1":
                            {
                                Typage = "many2one";
                                //Required = "True";
                                Ondelete = "set null";

                                break;
                            }

                            case "0..*":
                            case "1..*":
                            {
                                if (Utils.GetMax(MultipliciteOpposee).Equals("*"))
                                {
                                    Typage = "many2many";

                                    if (multi[0].Equals("1"))
                                    {
                                        Ondelete = "cascade";
                                    }
                                }
                                else
                                {
                                    Typage = "one2many";
                                }

                                break;
                            }

                            default:
                            {
                                break;
                            }
                            }
                        }
                    }

                    break;
                }

                case KindLink.Aggregate:
                {
                    if (Typage.Equals("many2one"))
                    {
                        Ondelete = "set null";
                    }

                    break;
                }

                case KindLink.Compose:
                {
                    if (Typage.Equals("one2many"))
                    {
                        Ondelete = "cascade";
                    }
                    else if (Typage.Equals("many2one"))
                    {
                        Required = "True";
                    }

                    break;
                }
                }


                switch (Typage)
                {
                case "many2one":
                {
                    //

                    break;
                }

                case "one2many":
                {
                    LinkManyId1 = ProprieteOpposee.Name;

                    break;
                }

                case "many2many":
                {
                    LinkManyId1 = Parent.Name + "_id";
                    LinkManyId2 = ProprieteOpposee.Name;
                    LinkManyRel = LinkData.AssociationClass.Name;

                    break;
                }
                }

                ClassLink = ClasseOpposee;

                if ((new string[] { "one2many", "many2one", "many2many" }).Contains <string>(Typage))
                {
                    if (ClasseOpposee.Inherit != null)
                    {
                        LinkManyClass = ClasseOpposee.Inherit.ModuleName + "." + ClasseOpposee.Inherit.Name;
                    }
                    else
                    {
                        LinkManyClass = ClasseOpposee.ModuleName + "." + ClasseOpposee.Name;
                    }
                }
            }
        }
        public static string CreateReportModel(ClassData classData)
        {
            Dictionary<string, string> openerp_classValues = new Dictionary<string, string>();

            openerp_classValues["classname"] = "report_" + classData.Parent.ClassicName + "_" + classData.Name;
            openerp_classValues["name"] = "report." + classData.Parent.ClassicName + "." + classData.Name + ".rml";
            openerp_classValues["table"] = classData.Parent.ClassicName + "." + classData.Name;
            openerp_classValues["tablename"] = Utils.ClassicName(classData.Name);
            openerp_classValues["xslfile"] = "addons/" + classData.Parent.ClassicName + "/report/report_" + classData.Parent.ClassicName + "_" + classData.Name + ".xsl";

            string fields = "";

            foreach (PropertyData propertyData in classData.ListOfProperties)
            {
                if (!propertyData.Name.Equals(classData.Name + "_id"))
                {
                    fields += "fields += \"<" + propertyData.Name + ">\" + " + openerp_classValues["tablename"] + "." + propertyData.Name + " + \"</" + propertyData.Name + ">\"\r\n\t\t\t";
                }
            }

            openerp_classValues["fields"] = fields;

            string filePy = classData.Parent.DirectoryInfo_Base.FullName + "/report/report_" + classData.Parent.ClassicName + "_" + classData.Name + ".py";

            Utils.MakeFileFromModel("openerp_report.py.model", filePy, openerp_classValues);

            return filePy;
        }
 public FormData(string Id, ActionData refAction, string Name, ClassData classData, string sequence)
     : base(Id, refAction, Name, classData, sequence, "Form")
 {
     //
 }
 public SearchData(string Id, ActionData refAction, string Name, ClassData classData, string sequence)
     : base(Id, refAction, Name, classData, sequence, "Search")
 {
     //
 }
        public static string CreateReportWizardModel(ClassData classData)
        {
            Dictionary<string, string> openerp_classValues = new Dictionary<string, string>();

            openerp_classValues["classname"] = "wizard_" + classData.Parent.ClassicName + "_" + classData.Name;
            openerp_classValues["name"] = classData.Parent.ClassicName + ".wizard." + classData.Name;
            openerp_classValues["description"] = classData.Documentation;

            string fields = "";
            string fields_coma = "";
            string defaults = "";

            PropertyData property = new PropertyData();
            property.Name = "typerapport";
            property.Alias = "Type de rapport";
            property.Typage = "selection";
            property.Selection = "[('listcomplete', \"Liste complète\")]";

            RenderPropertyPy(classData, property, ref fields, ref defaults, ViewKind.ReportFilter);

            fields_coma = "'" + property.Name + "', ";

            foreach (PropertyData propertyData in classData.ListOfPropertiesReport)
            {
                RenderPropertyPy(classData, propertyData, ref fields, ref defaults, ViewKind.ReportFilter);

                fields_coma += "'" + propertyData.Name + "', ";
            }

            fields_coma = fields_coma.Substring(0, fields_coma.Length - 2);
            
            openerp_classValues["fields"] = fields;
            openerp_classValues["fields_coma"] = fields_coma;
            openerp_classValues["defaults"] = defaults;
            openerp_classValues["reportname"] = classData.Parent.ClassicName + "." + classData.Name + ".rml";

            string filePy = classData.Parent.DirectoryInfo_Base.FullName + "/wizard/wizard_" + classData.Parent.ClassicName + "_" + classData.Name + ".py";

            Utils.MakeFileFromModel("openerp_wizard.py.model", filePy, openerp_classValues);

            return filePy;
        }
 public GroupData(string label, ClassData classData) : this(label)
 {
     ClassData = classData;
 }
 public GanttData(ActData refView, ActionData refAction, string Name, ClassData classData, string sequence)
     : base(refView, refAction, Name, classData, sequence, "Gantt")
 {
     //
 }
 public SearchData(ActData refView, ActionData refAction, string Name, ClassData classData, string sequence)
     : base(refView, refAction, Name, classData, sequence, "Search")
 {
     //
 }
Example #29
0
 public KanbanData(ActData refView, ActionData refAction, string Name, ClassData classData, string sequence)
     : base(refView, refAction, Name, classData, sequence, "Kanban")
 {
     //
 }
Example #30
0
 public TreeData(ActData refView, ActionData refAction, string Name, ClassData classData, string sequence)
     : base(refView, refAction, Name, classData, sequence, "Tree")
 {
     //
 }
Example #31
0
 public TreeData(string Id, ActionData refAction, string Name, ClassData classData, string sequence)
     : base(Id, refAction, Name, classData, sequence, "Tree")
 {
     //
 }
 public SearchData(ActData refView, ActionData refAction, string Name, ClassData classData, string sequence)
     : base(refView, refAction, Name, classData, sequence, "Search")
 {
     //
 }
 public KanbanData(ActData refView, ActionData refAction, string Name, ClassData classData, string sequence)
     : base(refView, refAction, Name, classData, sequence, "Kanban")
 {
     //
 }
        public PropertyData(ClassData classData, XmlNode xmlNode)
        {
            Parent = classData;
            OnChange = "";
            LinkData = null;

            Name = xmlNode.Attributes["name"].Value.ToLower();

            TypageInitial = xmlNode["properties"].Attributes["type"].Value.ToLower();
            Typage = Utils.CorrectType(TypageInitial);

            Alias = (xmlNode["style"].Attributes["value"] != null) ? xmlNode["style"].Attributes["value"].Value : Utils.firstCharUpper(Name).Replace("_", " ");
            Alias = (Alias.Trim().Equals(string.Empty)) ? Name : Alias;

            Documentation = (xmlNode["documentation"].Attributes["value"] != null) ? xmlNode["documentation"].Attributes["value"].Value : "";

            Default = (xmlNode["initial"].Attributes["body"] != null) ? xmlNode["initial"].Attributes["body"].Value : null;

            
            Required = ((xmlNode["stereotype"].Attributes["stereotype"] != null) && (xmlNode["stereotype"].Attributes["stereotype"].Value.Equals("Required"))) ? "True" : "";
            Memory = ((xmlNode["stereotype"].Attributes["stereotype"] != null) && (xmlNode["stereotype"].Attributes["stereotype"].Value.Equals("Memory"))) ? "True" : "";

            Selection = "";
            Ondelete = "";
            Translate = Utils.getExtra(xmlNode, "translate", "")[0];
            Readonly = "";

            LinkManyClass = "";
            LinkManyId1 = "";
            LinkManyId2 = "";
            LinkManyRel = "";

            ClassLink = null;

            PropertyWhere = PropertyWhere.None;

            Size = Utils.getExtra(xmlNode, "size", "")[0];
            Size = ((Size.Equals(string.Empty)) && (Typage.Equals("char"))) ? "64" : string.Empty;

            ShowLabel = (Utils.getExtra(xmlNode, "label", "1")[0] == "1") ? true : false;
            Page = Utils.getExtra(xmlNode, "page", "")[0];
            Group = Utils.getExtra(xmlNode, "group", "")[0];
            ColSpan = Utils.getExtra(xmlNode, "colspan", "")[0];

            TreeEditable = (Utils.getExtra(xmlNode, "editable", "1")[0] == "1") ? true : false;

            ShowInTree = (Utils.getExtra(xmlNode, "showintree", "true")[0].ToLower().Equals("true")) ? true : false;
            ShowInView = (Utils.getExtra(xmlNode, "showinview", "true")[0].ToLower().Equals("true")) ? true : false;

            Select = Utils.getExtra(xmlNode, "select", "")[0];
            Criteria = (Utils.getExtra(xmlNode, "criteria", "false")[0].ToLower().Equals("false")) ? false : true;
            if ((Criteria) && (Select.Equals(""))) Select = "1";

            States = Utils.getExtra(xmlNode, "state", "")[0];
            Uniq = (Utils.getExtra(xmlNode, "uniq", "0")[0] == "1") ? true : false;

            OEtitle = int.Parse(Utils.getExtra(xmlNode, "oetitle", "0")[0]);

            Function = Utils.getExtra(xmlNode, "function", "")[0];
            Domain = Utils.getExtra(xmlNode, "domain", "")[0];

            ShareTo = Utils.getExtra(xmlNode, "shareto", "")[0];
            MaxUse = Utils.getExtra(xmlNode, "maxuse", "")[0];
        }
        public ModuleData(ProjectData projectData, XmlNode xmlNode, XmlNode Elements)
        {
            XmlNode = xmlNode;

            Parent = projectData;
            Native = false;

            Name        = xmlNode.Attributes["name"].Value;
            ClassicName = Name.Replace("/", "_").Replace(" ", "_").ToLower();

            if (xmlNode.Attributes["xmi:id"] != null)
            {
                ID = xmlNode.Attributes["xmi:id"].Value;
            }
            else
            {
                ID = xmlNode.Attributes["xmi:idref"].Value;
            }

            NameDirectory = xmlNode.Attributes["name"].Value;
            NameDirectory = NameDirectory.Replace("/", "_");
            NameDirectory = NameDirectory.ToLower();

            Data = new Dictionary <string, object>();

            Depends = new List <string>();
            Depends.Add("base");
            Depends.Add("board");


            Documentation = "";

            ListOfClass = new List <ClassData>();

            ListOfMenu = new Dictionary <string, string>();

            Menus      = "";
            Dashboard  = "";
            menu_count = 1;

            ModuleName = Utils.getExtra(xmlNode, "module", ClassicName)[0];
            ModulePath = Utils.getExtra(xmlNode, "modulepath", ModuleName.Replace('.', '_'))[0];


            foreach (XmlNode element in Elements.ChildNodes)
            {
                if (element.Attributes["name"] != null)
                {
                    if (element.Attributes["xmi:idref"].Value.Equals(ID))
                    {
                        if (element["properties"] != null)
                        {
                            Documentation = (element["properties"].Attributes["documentation"] != null) ? element["properties"].Attributes["documentation"].Value : "Gestion du module : " + Utils.firstCharUpper(Name.Replace("_", " "));
                            Alias         = (element["properties"].Attributes["alias"] != null) ? element["properties"].Attributes["alias"].Value : Utils.firstCharUpper(Name.Replace("_", " "));

                            Menus = "<menuitem name=\"" + Alias + "\" id=\"menu_" + ClassicName + "\" web_icon=\"images/icon.png\" web_icon_hover=\"images/icon-hover.png\"/>";


                            Menus += "\r\n\t\t" + "<menuitem name=\"" + Alias + "\" parent=\"menu_" + ClassicName + "\" id=\"leftmenu_" + ClassicName + "\" sequence=\"" + menu_count.ToString() + "\"/>";

                            //Menus = "<menuitem name=\"" + Alias + "\" parent=\"menu_" + ClassicName + "\" id=\"leftmenu_" + ClassicName + "\" sequence=\"" + menu_count.ToString() + "\"/>";

                            if (!ListOfMenu.ContainsKey("default"))
                            {
                                ListOfMenu["default"] = "leftmenu_" + ClassicName;
                            }

                            ListOfMenu["leftmenu_" + ClassicName] = "leftmenu_" + ClassicName;

                            menu_count++;


                            //------------------------


                            Menus += "\r\n\t\t" + "<menuitem name=\"Rapports\" parent=\"menu_" + ClassicName + "\" id=\"leftmenu_rapport_" + ClassicName + "\" sequence=\"%sequence1%\"/>";

                            ListOfMenu["leftmenu_rapport_" + ClassicName] = "leftmenu_rapport_" + ClassicName;



                            Menus += "\r\n\t\t" + "<menuitem name=\"" + Alias + "\" parent=\"leftmenu_rapport_" + ClassicName + "\" id=\"leftsubmenu_rapport_" + ClassicName + "\" sequence=\"%sequence2%\"/>";

                            ListOfMenu["leftsubmenu_rapport_" + ClassicName] = "leftsubmenu_rapport_" + ClassicName;
                        }

                        if (element["tags"] != null)
                        {
                            foreach (XmlNode tagNode in element["tags"].ChildNodes)
                            {
                                switch (tagNode.Attributes["name"].Value)
                                {
                                case "category":
                                {
                                    Category = tagNode.Attributes["value"].Value;
                                    break;
                                }

                                case "menu":
                                {
                                    /*
                                     * string[] menu = tagNode.Attributes["value"].Value.Split(new char[]{ ':' });
                                     *
                                     * Menus += "\r\n\t\t" + "<menuitem name=\"" + menu[1].Trim() + "\" parent=\"menu_" + ClassicName + "\" id=\"leftmenu_" + menu[0].Trim() + "\" sequence=\"" + menu_count.ToString() + "\"/>";
                                     *
                                     * if (!ListOfMenu.ContainsKey("default"))
                                     * {
                                     *  ListOfMenu["default"] = "leftmenu_" + menu[0].Trim();
                                     * }
                                     *
                                     * ListOfMenu["leftmenu_" + menu[0].Trim()] = "leftmenu_" + menu[0].Trim();
                                     *
                                     * menu_count++;
                                     *
                                     */



                                    break;
                                }
                                }
                            }
                        }
                    }
                    else if (element.Attributes["name"].Value.Equals("Class Model"))
                    {
                        if (element["model"].Attributes["package"].Value.Equals(ID))
                        {
                            string ClassModelID = element.Attributes["xmi:idref"].Value;

                            foreach (XmlNode subElementXmlNode in Elements.ChildNodes)
                            {
                                if (subElementXmlNode.Attributes["xmi:type"] != null)
                                {
                                    if (subElementXmlNode.Attributes["xmi:type"].Value.Equals("uml:Class"))
                                    {
                                        if (subElementXmlNode["model"].Attributes["package"].Value.Equals(ClassModelID))
                                        {
                                            ClassData classData = new ClassData(this, subElementXmlNode);

                                            ListOfClass.Add(classData);
                                        }
                                    }
                                }
                            }
                        }
                    }
                    else if (xmlNode.Attributes["xmi:id"] == null)
                    {
                        if (element.Attributes["xmi:type"] != null)
                        {
                            if (element.Attributes["xmi:type"].Value.Equals("uml:Class"))
                            {
                                if (element["model"].Attributes["package"].Value.Equals(ID))
                                {
                                    ClassData classData = new ClassData(this, element);

                                    ListOfClass.Add(classData);
                                }
                            }
                        }
                    }
                }
            }

            if (!Menus.Equals(""))
            {
                Menus = Menus.Replace("%sequence1%", menu_count.ToString());
                menu_count++;

                Menus = Menus.Replace("%sequence2%", menu_count.ToString());
                menu_count++;
            }
        }
 public KanbanData(string Id, ActionData refAction, string Name, ClassData classData, string sequence)
     : base(Id, refAction, Name, classData, sequence, "Kanban")
 {
     //
 }
 public CalendarData(ActData refView, ActionData refAction, string Name, ClassData classData, string sequence)
     : base(refView, refAction, Name, classData, sequence, "Calendar")
 {
     //
 }
Example #38
0
        public static string CreateClass(ClassData classData)
        {
            Dictionary <string, string> openerp_classValues = new Dictionary <string, string>();

            string fields   = "";
            string defaults = "";

            string constraints           = "";
            string sql_constraints       = "";
            string constraints_functions = "";

            string inherit = "# delete this line";

            string functions        = "";
            string functions_before = "# delete this line";


            foreach (PropertyData propertyData in classData.ListOfProperties)
            {
                if (!propertyData.Typage.Equals("many2many") && !propertyData.Typage.Equals("one2many"))
                {
                    RenderPropertyPy(classData, propertyData, ref fields, ref defaults, ViewKind.Form);

                    if (propertyData.Uniq)
                    {
                        sql_constraints += ((sql_constraints.Equals(""))?"":"\r\n\t\t") + "('" + propertyData.Name + "_" + classData.Name + "_uniq', 'unique(" + propertyData.Name + ")', 'La valeur du champ [" + propertyData.Alias + "] doit être unique !'),";
                    }

                    if (!propertyData.Function.Equals(string.Empty))
                    {
                        functions_before += (functions_before.Equals(string.Empty)) ? "" : "\r\n\r\n\t";

                        string fieldFunctionType = Utils.GetFunctionName(propertyData.Function);

                        FunctionModel pythonCode = Utils.GetFunctionModel("function_" + fieldFunctionType, FunctionUsage.Field);

                        string result = "";
                        if (pythonCode.Default)
                        {
                            if ((new string[] { "int" }).Contains <string>(propertyData.Typage))
                            {
                                result = "0";
                            }

                            if ((new string[] { "float" }).Contains <string>(propertyData.Typage))
                            {
                                result = "0.0";
                            }

                            if ((new string[] { "char", "string", "text" }).Contains <string>(propertyData.Typage))
                            {
                                result = "''";
                            }
                        }

                        List <string> pythonCode_values = new List <string>();
                        pythonCode_values.Add(propertyData.Name + "_" + fieldFunctionType);

                        switch (fieldFunctionType)
                        {
                        case "sum":
                        {
                            string property_zero = "0";
                            if (propertyData.Typage.Equals("float"))
                            {
                                property_zero = "0.0";
                            }

                            pythonCode_values.Add(property_zero);

                            pythonCode_values.Add(propertyData.Name);

                            List <string> arguments = Utils.GetFunctionArguments(propertyData.Function);

                            pythonCode_values.Add(arguments[1]);
                            pythonCode_values.Add(arguments[0]);

                            break;
                        }

                        default:
                        {
                            pythonCode_values.Add(result);

                            break;
                        }
                        }

                        /*Dictionary<string, string> pythonCode_values = new Dictionary<string, string>();
                         * pythonCode_values["function_name"] = propertyData.Name + "_" + fieldFunctionType;
                         * pythonCode_values["property_name"] = propertyData.Name;
                         * pythonCode_values["property_to_sum"] = "";
                         * pythonCode_values["children"] = "";
                         *
                         * pythonCode.Content = Utils.replaceValues(pythonCode.Content, pythonCode_values) + "\r\n\t";*/

                        pythonCode.ReplaceValues(pythonCode_values);

                        functions_before += pythonCode;
                    }
                }
            }

            foreach (PropertyData propertyData in classData.ListOfProperties)
            {
                if (!propertyData.MaxUse.Equals(""))
                {
                    functions_before += (functions_before.Equals(string.Empty)) ? "" : "\r\n\r\n\t";

                    FunctionModel pythonCode = Utils.GetFunctionModel("function_label", FunctionUsage.Classic);

                    Dictionary <string, string> pythonCode_values = new Dictionary <string, string>();

                    pythonCode_values.Add("module", classData.Parent.ClassicName);

                    pythonCode_values.Add("classname", classData.Name);
                    pythonCode_values.Add("property_name", propertyData.Name);

                    string[] maxuse = propertyData.MaxUse.Split(new char[] { '.' });

                    pythonCode_values.Add("classlink", maxuse[0]);
                    pythonCode_values.Add("property_link", maxuse[1]);

                    pythonCode.ReplaceValues(pythonCode_values);

                    functions_before += pythonCode;



                    functions += (functions.Equals(string.Empty)) ? "" : "\r\n\r\n\t";

                    FunctionModel pythonCode2 = Utils.GetFunctionModel("function_onchange_maxuse", FunctionUsage.Classic);

                    Dictionary <string, string> pythonCode2_values = new Dictionary <string, string>();

                    pythonCode2_values.Add("property_name", propertyData.Name);
                    pythonCode2_values.Add("classlink", maxuse[0]);

                    pythonCode2.ReplaceValues(pythonCode2_values);

                    functions += pythonCode2;
                }
            }

            foreach (PropertyData propertyData in classData.ListOfProperties)
            {
                if (propertyData.Typage.Equals("many2many"))
                {
                    RenderPropertyPy(classData, propertyData, ref fields, ref defaults, ViewKind.Form);
                }
            }

            foreach (PropertyData propertyData in classData.ListOfProperties)
            {
                if (propertyData.Typage.Equals("one2many"))
                {
                    RenderPropertyPy(classData, propertyData, ref fields, ref defaults, ViewKind.Form);
                }
            }


            Dictionary <string, OperationData> listOfOperationsData = classData.ListOfOperations;

            if (classData.StateProperty != null)
            {
                int i = 1;

                foreach (KeyValuePair <string, string> KeyValue in classData.StateProperty.SelectionData.ListOfValues)
                {
                    string key = KeyValue.Key;

                    OperationData operationData = new OperationData();
                    operationData.Parent          = classData;
                    operationData.ListOfParameter = new List <ParameterData>();

                    FunctionModel pythonCode = new FunctionModel(FunctionUsage.Classic);

                    if (i == 1)
                    {
                        pythonCode = Utils.GetFunctionModel("function_first_action_wkf", FunctionUsage.Classic);
                    }
                    else
                    {
                        pythonCode = Utils.GetFunctionModel("function_action_wkf", FunctionUsage.Classic);
                    }

                    /*Dictionary<string, string> pythonCode_values = new Dictionary<string, string>();
                     * pythonCode_values["function_name"] = "action_" + key + "_wkf";
                     * pythonCode_values["state"] = key;
                     *
                     * pythonCode.Content = Utils.replaceValues(pythonCode.Content, pythonCode_values) + "\r\n\t";*/

                    pythonCode.ReplaceValues("action_" + key + "_wkf", key);

                    operationData.Name       = "action_" + key + "_wkf";
                    operationData.PythonCode = pythonCode.Content;

                    listOfOperationsData.Add(operationData.Name, operationData);

                    i++;
                }
            }

            Dictionary <string, string> accountArgs = Utils.FunctionArgs(classData.AccountingArgs);

            //string state = Utils.GetArg(accountArgs, "state", "");
            //string button = Utils.GetArg(accountArgs, "button", "");


            foreach (KeyValuePair <string, OperationData> operationDataKV in listOfOperationsData)
            {
                OperationData operationData = operationDataKV.Value;

                functions += (functions.Equals(string.Empty)) ? "" : "\r\n\r\n\t";

                string parameters = "";
                int    i          = 0;
                foreach (ParameterData param in operationData.ListOfParameter)
                {
                    if (!param.Name.Equals(""))
                    {
                        parameters += ", " + param.Name;
                    }
                    else
                    {
                        parameters += ", arg" + i.ToString();

                        i++;
                    }
                }

                if (operationData.PythonCode.Equals(""))
                {
                    functions += "def " + operationData.Name + "(self, cr, uid, ids" + parameters + ", context=None):\r\n";
                    functions += "\t\t# contenu généré, à modifier si besoin\r\n";
                    functions += "\t\treturn " + Utils.CorrectReturn(operationData.ReturnType);
                }
                else
                {
                    functions += operationData.PythonCode;
                }
            }


            //string add_after = "";
            foreach (KeyValuePair <string, string> constraint in classData.ListOfConstraints)
            {
                if (constraints_functions.Equals(""))
                {
                    constraints_functions = "\r\n\t";
                    //add_after += "\r\n";
                }

                string[] contrainte = constraint.Value.Split(new char[] { '\n' });

                string[] contrainte_property   = contrainte[0].Trim().Split(new char[] { ':' });
                string[] contrainte_constraint = contrainte[1].Trim().Split(new char[] { ':' });
                string[] contrainte_message    = contrainte[2].Trim().Split(new char[] { ':' });


                string[] con_properties        = contrainte_property[1].Split(new char[] { ',' });
                string   contrainte_properties = "";
                string   virgule = "";
                foreach (string con_property in con_properties)
                {
                    contrainte_properties += virgule + "'" + con_property.Trim() + "'";
                    virgule = ",";
                }

                string[] operandes = contrainte_constraint[1].Trim().Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);

                string operande1 = operandes[0];
                string oprator   = operandes[1];
                string operande2 = operandes[2];

                FunctionModel function_content = Utils.GetFunctionModel("function_constraint_operator", FunctionUsage.Classic);

                /*Dictionary<string, string> constraint_content_values = new Dictionary<string, string>();
                 * constraint_content_values["constraint_name"] = constraint.Key;
                 * constraint_content_values["operande1"] = operande1;
                 * constraint_content_values["operator"] = Utils.TrueString(oprator);
                 * constraint_content_values["operande2"] = operande2;
                 *
                 * function_content.Content = Utils.replaceValues(function_content.Content, constraint_content_values);*/

                function_content.ReplaceValues(constraint.Key, operande1, Utils.TrueString(oprator), operande2);

                constraints_functions += function_content + "\r\n\t";

                constraints += "(_" + constraint.Key + ", \"" + contrainte_message[1].Trim() + "\", [" + contrainte_properties + "]),\r\n\t\t";
            }

            if (!constraints.Equals(""))
            {
                constraints = constraints.Substring(0, constraints.Length - 4);
            }

            //constraints_functions += add_after;

            openerp_classValues["name"] = classData.ModuleName + "." + classData.Name;
            if (classData.Inherit != null)
            {
                openerp_classValues["name"] = "# delete this line";
                inherit = "_inherit = \"" + classData.Inherit.ModuleName + "." + classData.Inherit.Name + "\"";
            }

            openerp_classValues["classname"]             = classData.Parent.ClassicName + "_" + classData.Name;
            openerp_classValues["description"]           = classData.Documentation;
            openerp_classValues["inherit"]               = inherit;
            openerp_classValues["fields"]                = fields;
            openerp_classValues["defaults"]              = defaults;
            openerp_classValues["constraints_functions"] = constraints_functions;
            openerp_classValues["constraints"]           = constraints;
            openerp_classValues["sql_constraints"]       = sql_constraints;
            openerp_classValues["functions"]             = functions;
            openerp_classValues["functions_before"]      = functions_before;



            string filePy = classData.Parent.DirectoryInfo_Base.FullName + "/" + classData.Parent.ClassicName + "_" + classData.Name + ".py";

            Utils.MakeFileFromModel("openerp_class.py.model", filePy, openerp_classValues);

            return(filePy);
        }
 public CalendarData(ActData refView, ActionData refAction, string Name, ClassData classData, string sequence)
     : base(refView, refAction, Name, classData, sequence, "Calendar")
 {
     //
 }
 public GroupData(string label, ClassData classData) : this(label)
 {
     ClassData = classData;
 }
        public static void RenderPropertyPy(ClassData classData, PropertyData propertyData, ref string fields, ref string defaults, ViewKind viewKind)
        {
            if (!propertyData.Name.Equals(classData.Name + "_id"))
            {
                fields += (fields.Equals(string.Empty)) ? "" : "\r\n\t\t";

                string fieldName = propertyData.Name;
                string fieldTypage = propertyData.Typage;
                string fieldSelection = (!propertyData.Selection.Equals(string.Empty)) ? propertyData.Selection + ", " : "";
                string fieldAlias = "\"" + propertyData.Alias + "\"";

                string fieldSize = (!propertyData.Size.Equals(string.Empty)) ? ", size=" + propertyData.Size : "";
                fieldSize = ((fieldSize.Equals(string.Empty)) && (fieldTypage.Equals("char"))) ? ", size=64" : fieldSize;
                fieldSize = (!(fieldSize.Equals(string.Empty)) && (fieldTypage.Equals("reference"))) ? ", " + propertyData.Size : fieldSize;

                string fieldRequired = "";
                string fieldOndelete = "";
                string fieldTranslate = "";
                string fieldReadonly = "";
                string fieldMemory = "";
                string fieldDomain = "";

                string fieldFunction = "";

                if (!viewKind.Equals(ViewKind.ReportFilter))
                {
                    if (classData.Inherit == null)
                    {
                        fieldRequired = (!propertyData.Required.Equals(string.Empty)) ? ", required=" + propertyData.Required : "";
                    }

                    fieldOndelete = (!propertyData.Ondelete.Equals(string.Empty)) ? ", ondelete='" + propertyData.Ondelete + "'" : "";
                    fieldTranslate = (!propertyData.Translate.Equals(string.Empty)) ? ", translate=" + propertyData.Required : "";
                    fieldReadonly = (!propertyData.Readonly.Equals(string.Empty)) ? ", readonly=" + propertyData.Readonly : "";
                    fieldMemory = (!propertyData.Memory.Equals(string.Empty)) ? ", store=" + ((propertyData.Memory.Equals("True")) ? "False" : "True") : "";

                    if (!propertyData.Domain.Equals(string.Empty))
                    {
                        string[] domains = propertyData.Domain.Split(new char[]{','});

                        string domain = "[";

                        for (int i = 0; i < domains.Length; i++)
                        {
                            string[] parts = Regex.Split(domains[i], "(=|!=)");

                            domain += "(";
                            domain += "'" + parts[0] + "',";
                            domain += "'" + parts[1] + "',";
                            domain += "'" + parts[2] + "'";
                            domain += ")";

                            if (i < domains.Length - 1)
                            {
                                domain += ",";
                            }
                        }

                        domain += "]";

                        fieldDomain = ", domain=" + domain;
                    }

                    if (!propertyData.Function.Equals(string.Empty))
                    {
                        string fieldFunctionType = Utils.GetFunctionName(propertyData.Function);
                        fieldFunction = "fields.function(_" + fieldName + "_" + fieldFunctionType + ", type='" + fieldTypage + "', string=" + Utils.ReplaceSpecialChar(fieldAlias) + ", method=True)";
                    }
                }

                string fieldDocumentation = (!propertyData.Documentation.Equals(string.Empty)) ? ", help=\"" + propertyData.Documentation.Trim().Replace("\n", "").Replace("\r", "") + "\"" : "";

                string fieldLink = "";
                if ((new List<string>(new string[] { "many2one", "one2many", "many2many" })).IndexOf(propertyData.Typage) >= 0)
                {
                    switch (propertyData.Typage)
                    {
                        case "many2one":
                        {
                            fieldLink = "'" + propertyData.LinkManyClass + "', ";
                            break;
                        }

                        case "one2many":
                        {
                            fieldLink = "'" + propertyData.LinkManyClass + "', '" + propertyData.LinkManyId1 + "', ";
                            break;
                        }

                        case "many2many":
                        {
                            fieldLink = "'" + propertyData.LinkManyClass + "', '" + propertyData.LinkManyRel + "', '" + propertyData.LinkManyId1 + "', '" + propertyData.LinkManyId2 + "', ";
                            break;
                        }
                    }
                }

                if (fieldFunction.Equals(string.Empty))
                {
                    fields += "'" + fieldName + "' : fields." + fieldTypage + "(" + fieldLink + fieldSelection + fieldAlias + fieldSize + fieldRequired + fieldTranslate + fieldReadonly + fieldOndelete + fieldDomain + fieldMemory + fieldDocumentation + "),";
                }
                else
                {
                    fields += "'" + fieldName + "' : " + fieldFunction + ",";
                }

                if ((fieldName.Equals("code")) && (classData.CodeProperty != null))
                {
                    defaults += (defaults.Equals(string.Empty)) ? "" : "\r\n\t\t";
                    defaults += "'" + fieldName + "': lambda self, cr, uid, context = {} : self.pool.get('ir.sequence').get(cr, uid, 'code." + classData.Name + "'),";
                }
                else if (propertyData.Default != null) 
                {
                    defaults += (defaults.Equals(string.Empty)) ? "" : "\r\n\t\t";
                    defaults += "'" + fieldName + "': " + CorrectTypeFormat(propertyData.Default, propertyData.Typage) + ",";
                }

                if (!propertyData.MaxUse.Equals(""))
                {
                    fields += "\r\n\t\t" + "'" + fieldName + "_label': fields.function(_" + fieldName + "_label, method=True, type='text', store=False),";

                    defaults += (defaults.Equals(string.Empty)) ? "" : "\r\n\t\t";
                    defaults += "'" + fieldName + "_label': _" + fieldName + "_label_init,";
                }
            }
        }
        public static string addFormGroup(ClassData classData, GroupData groupData, string decalage, bool first, ViewKind viewKind)
        {
            string render = "";

            if (classData != null)
            {
                if ((first) && (classData.StateWorkflow))
                {
                    render = "\t\t\t\t" + decalage + "<h1 colspan=\"" + classData.Columns + "\" col=\"" + classData.Columns + "\">\r\n";

                    foreach (KeyValuePair<string, string> state in classData.StateProperty.SelectionData.ListOfValues)
                    {
                        Program.ProjectData.addTraduction(classData, state.Value);
                        Program.ProjectData.addTraduction(classData, classData.Alias + " : " + state.Value);

                        render += "\t\t\t\t\t" + decalage + "<label string=\"" + Utils.ReplaceSpecialChar(classData.Alias + " : " + state.Value) + "\" attrs=\"{'invisible':[('state', 'not in', ['" + state.Key + "'])]}\"/>\r\n";
                    }

                    render += "\t\t\t\t" + decalage + "</h1>\r\n";
                }
            }

            render += "\t\t\t\t" + decalage + "<group colspan=\"" + groupData.ClassData.Columns + "\" col=\"" + groupData.ClassData.Columns + "\">\r\n";

            if (!groupData.Label.Equals("default"))
            {
                if (!first) render += "\t\t\t\t" + decalage + "<newline/>\r\n";
                render += "\t\t\t\t" + decalage + "<separator string=\"" + groupData.Label + "\" colspan=\"" + groupData.ClassData.Columns + "\"/>\r\n";
            }

            render += addGroupProperties(groupData, decalage + "\t", viewKind);

            int columns = int.Parse(groupData.ClassData.Columns);
            if ((groupData.ListOfProperties.Count < 3) && (columns >= 4))
            {
                int n = columns - groupData.ListOfProperties.Count * 2;
                render += "\t\t\t\t" + decalage + "<label colspan=\"" + n.ToString() + "\" string=\"\"/>\r\n";
            }

            render += "\t\t\t\t" + decalage + "</group>\r\n";

            render += addGroupPages(groupData.ListOfPages, decalage, viewKind);

            /*if ((!groupData.Report) && (groupData.Root))
            {
                render += addWidgetFormGroup(classData, groupData, decalage + "\t");
            }*/

            return render;
        }
        public ModuleData(ProjectData projectData, XmlNode xmlNode, XmlNode Elements)
        {
            XmlNode = xmlNode;

            Parent = projectData;
            Native = false;

            Name = xmlNode.Attributes["name"].Value;
            ClassicName = Name.Replace("/", "_").Replace(" ", "_").ToLower();

            if (xmlNode.Attributes["xmi:id"] != null)
            {
                ID = xmlNode.Attributes["xmi:id"].Value;
            }
            else
            {
                ID = xmlNode.Attributes["xmi:idref"].Value;
            }

            NameDirectory = xmlNode.Attributes["name"].Value;
            NameDirectory = NameDirectory.Replace("/", "_");
            NameDirectory = NameDirectory.ToLower();

            Data = new Dictionary<string, object>();
            
            Depends = new List<string>();
            Depends.Add("base");
            Depends.Add("board");


            Documentation = "";

            ListOfClass = new List<ClassData>();

            ListOfMenu = new Dictionary<string, string>();

            Menus = "";
            Dashboard = "";
            menu_count = 1;

            ModuleName = Utils.getExtra(xmlNode, "module", ClassicName)[0];
            ModulePath = Utils.getExtra(xmlNode, "modulepath", ModuleName.Replace('.', '_'))[0];


            foreach (XmlNode element in Elements.ChildNodes)
            {
                if (element.Attributes["name"] != null)
                {
                    if (element.Attributes["xmi:idref"].Value.Equals(ID))
                    {
                        if (element["properties"] != null)
                        {
                            Documentation = (element["properties"].Attributes["documentation"] != null) ? element["properties"].Attributes["documentation"].Value : "Gestion du module : " + Utils.firstCharUpper(Name.Replace("_", " "));
                            Alias = (element["properties"].Attributes["alias"] != null) ? element["properties"].Attributes["alias"].Value : Utils.firstCharUpper(Name.Replace("_", " "));

                            Menus = "<menuitem name=\"" + Alias + "\" id=\"menu_" + ClassicName + "\" web_icon=\"images/icon.png\" web_icon_hover=\"images/icon-hover.png\"/>";


                            Menus += "\r\n\t\t" + "<menuitem name=\"" + Alias + "\" parent=\"menu_" + ClassicName + "\" id=\"leftmenu_" + ClassicName + "\" sequence=\"" + menu_count.ToString() + "\"/>";

                            //Menus = "<menuitem name=\"" + Alias + "\" parent=\"menu_" + ClassicName + "\" id=\"leftmenu_" + ClassicName + "\" sequence=\"" + menu_count.ToString() + "\"/>";

                            if (!ListOfMenu.ContainsKey("default"))
                            {
                                ListOfMenu["default"] = "leftmenu_" + ClassicName;
                            }

                            ListOfMenu["leftmenu_" + ClassicName] = "leftmenu_" + ClassicName;

                            menu_count++;


                            //------------------------


                            Menus += "\r\n\t\t" + "<menuitem name=\"Rapports\" parent=\"menu_" + ClassicName + "\" id=\"leftmenu_rapport_" + ClassicName + "\" sequence=\"%sequence1%\"/>";

                            ListOfMenu["leftmenu_rapport_" + ClassicName] = "leftmenu_rapport_" + ClassicName;



                            Menus += "\r\n\t\t" + "<menuitem name=\"" + Alias + "\" parent=\"leftmenu_rapport_" + ClassicName + "\" id=\"leftsubmenu_rapport_" + ClassicName + "\" sequence=\"%sequence2%\"/>";

                            ListOfMenu["leftsubmenu_rapport_" + ClassicName] = "leftsubmenu_rapport_" + ClassicName;
                        }
                        
                        if (element["tags"] != null)
                        {
                            foreach (XmlNode tagNode in element["tags"].ChildNodes)
                            {
                                switch (tagNode.Attributes["name"].Value)
                                {
                                    case "category":
                                    {
                                        Category = tagNode.Attributes["value"].Value;
                                        break;
                                    }

                                    case "menu":
                                    {
                                        /*
                                        string[] menu = tagNode.Attributes["value"].Value.Split(new char[]{ ':' });

                                        Menus += "\r\n\t\t" + "<menuitem name=\"" + menu[1].Trim() + "\" parent=\"menu_" + ClassicName + "\" id=\"leftmenu_" + menu[0].Trim() + "\" sequence=\"" + menu_count.ToString() + "\"/>";

                                        if (!ListOfMenu.ContainsKey("default"))
                                        {
                                            ListOfMenu["default"] = "leftmenu_" + menu[0].Trim();
                                        }

                                        ListOfMenu["leftmenu_" + menu[0].Trim()] = "leftmenu_" + menu[0].Trim();

                                        menu_count++;
                                        
                                         */



                                        break;
                                    } 
                                }
                            }
                        }
                    }
                    else if (element.Attributes["name"].Value.Equals("Class Model"))
                    {
                        if (element["model"].Attributes["package"].Value.Equals(ID))
                        {
                            string ClassModelID = element.Attributes["xmi:idref"].Value;

                            foreach (XmlNode subElementXmlNode in Elements.ChildNodes)
                            {
                                if (subElementXmlNode.Attributes["xmi:type"] != null)
                                {
                                    if (subElementXmlNode.Attributes["xmi:type"].Value.Equals("uml:Class"))
                                    {
                                        if (subElementXmlNode["model"].Attributes["package"].Value.Equals(ClassModelID))
                                        {
                                            ClassData classData = new ClassData(this, subElementXmlNode);

                                            ListOfClass.Add(classData);
                                        }
                                    }
                                }
                            }
                        }
                    }
                    else if (xmlNode.Attributes["xmi:id"] == null)
                    {
                        if (element.Attributes["xmi:type"] != null)
                        {
                            if (element.Attributes["xmi:type"].Value.Equals("uml:Class"))
                            {
                                if (element["model"].Attributes["package"].Value.Equals(ID))
                                {
                                    ClassData classData = new ClassData(this, element);

                                    ListOfClass.Add(classData);
                                }
                            }
                        }
                    }
                }
            }

            if (!Menus.Equals(""))
            {
                Menus = Menus.Replace("%sequence1%", menu_count.ToString());
                menu_count++;

                Menus = Menus.Replace("%sequence2%", menu_count.ToString());
                menu_count++;
            }
        }
Example #44
0
        public static void RenderPropertyPy(ClassData classData, PropertyData propertyData, ref string fields, ref string defaults, ViewKind viewKind)
        {
            if (!propertyData.Name.Equals(classData.Name + "_id"))
            {
                fields += (fields.Equals(string.Empty)) ? "" : "\r\n\t\t";

                string fieldName      = propertyData.Name;
                string fieldTypage    = propertyData.Typage;
                string fieldSelection = (!propertyData.Selection.Equals(string.Empty)) ? propertyData.Selection + ", " : "";
                string fieldAlias     = "\"" + propertyData.Alias + "\"";

                string fieldSize = (!propertyData.Size.Equals(string.Empty)) ? ", size=" + propertyData.Size : "";
                fieldSize = ((fieldSize.Equals(string.Empty)) && (fieldTypage.Equals("char"))) ? ", size=64" : fieldSize;
                fieldSize = (!(fieldSize.Equals(string.Empty)) && (fieldTypage.Equals("reference"))) ? ", " + propertyData.Size : fieldSize;

                string fieldRequired  = "";
                string fieldOndelete  = "";
                string fieldTranslate = "";
                string fieldReadonly  = "";
                string fieldMemory    = "";
                string fieldDomain    = "";

                string fieldFunction = "";

                if (!viewKind.Equals(ViewKind.ReportFilter))
                {
                    if (classData.Inherit == null)
                    {
                        fieldRequired = (!propertyData.Required.Equals(string.Empty)) ? ", required=" + propertyData.Required : "";
                    }

                    fieldOndelete  = (!propertyData.Ondelete.Equals(string.Empty)) ? ", ondelete='" + propertyData.Ondelete + "'" : "";
                    fieldTranslate = (!propertyData.Translate.Equals(string.Empty)) ? ", translate=" + propertyData.Required : "";
                    fieldReadonly  = (!propertyData.Readonly.Equals(string.Empty)) ? ", readonly=" + propertyData.Readonly : "";
                    fieldMemory    = (!propertyData.Memory.Equals(string.Empty)) ? ", store=" + ((propertyData.Memory.Equals("True")) ? "False" : "True") : "";

                    if (!propertyData.Domain.Equals(string.Empty))
                    {
                        string[] domains = propertyData.Domain.Split(new char[] { ',' });

                        string domain = "[";

                        for (int i = 0; i < domains.Length; i++)
                        {
                            string[] parts = Regex.Split(domains[i], "(=|!=)");

                            domain += "(";
                            domain += "'" + parts[0] + "',";
                            domain += "'" + parts[1] + "',";
                            domain += "'" + parts[2] + "'";
                            domain += ")";

                            if (i < domains.Length - 1)
                            {
                                domain += ",";
                            }
                        }

                        domain += "]";

                        fieldDomain = ", domain=" + domain;
                    }

                    if (!propertyData.Function.Equals(string.Empty))
                    {
                        string fieldFunctionType = Utils.GetFunctionName(propertyData.Function);
                        fieldFunction = "fields.function(_" + fieldName + "_" + fieldFunctionType + ", type='" + fieldTypage + "', string=" + Utils.ReplaceSpecialChar(fieldAlias) + ", method=True)";
                    }
                }

                string fieldDocumentation = (!propertyData.Documentation.Equals(string.Empty)) ? ", help=\"" + propertyData.Documentation.Trim().Replace("\n", "").Replace("\r", "") + "\"" : "";

                string fieldLink = "";
                if ((new List <string>(new string[] { "many2one", "one2many", "many2many" })).IndexOf(propertyData.Typage) >= 0)
                {
                    switch (propertyData.Typage)
                    {
                    case "many2one":
                    {
                        fieldLink = "'" + propertyData.LinkManyClass + "', ";
                        break;
                    }

                    case "one2many":
                    {
                        fieldLink = "'" + propertyData.LinkManyClass + "', '" + propertyData.LinkManyId1 + "', ";
                        break;
                    }

                    case "many2many":
                    {
                        fieldLink = "'" + propertyData.LinkManyClass + "', '" + propertyData.LinkManyRel + "', '" + propertyData.LinkManyId1 + "', '" + propertyData.LinkManyId2 + "', ";
                        break;
                    }
                    }
                }

                if (fieldFunction.Equals(string.Empty))
                {
                    fields += "'" + fieldName + "' : fields." + fieldTypage + "(" + fieldLink + fieldSelection + fieldAlias + fieldSize + fieldRequired + fieldTranslate + fieldReadonly + fieldOndelete + fieldDomain + fieldMemory + fieldDocumentation + "),";
                }
                else
                {
                    fields += "'" + fieldName + "' : " + fieldFunction + ",";
                }

                if ((fieldName.Equals("code")) && (classData.CodeProperty != null))
                {
                    defaults += (defaults.Equals(string.Empty)) ? "" : "\r\n\t\t";
                    defaults += "'" + fieldName + "': lambda self, cr, uid, context = {} : self.pool.get('ir.sequence').get(cr, uid, 'code." + classData.Name + "'),";
                }
                else if (propertyData.Default != null)
                {
                    defaults += (defaults.Equals(string.Empty)) ? "" : "\r\n\t\t";
                    defaults += "'" + fieldName + "': " + CorrectTypeFormat(propertyData.Default, propertyData.Typage) + ",";
                }

                if (!propertyData.MaxUse.Equals(""))
                {
                    fields += "\r\n\t\t" + "'" + fieldName + "_label': fields.function(_" + fieldName + "_label, method=True, type='text', store=False),";

                    defaults += (defaults.Equals(string.Empty)) ? "" : "\r\n\t\t";
                    defaults += "'" + fieldName + "_label': _" + fieldName + "_label_init,";
                }
            }
        }
Example #45
0
        public PropertyData(ClassData classData, XmlNode xmlNode)
        {
            Parent   = classData;
            OnChange = "";
            LinkData = null;

            Name = xmlNode.Attributes["name"].Value.ToLower();

            TypageInitial = xmlNode["properties"].Attributes["type"].Value.ToLower();
            Typage        = Utils.CorrectType(TypageInitial);

            Alias = (xmlNode["style"].Attributes["value"] != null) ? xmlNode["style"].Attributes["value"].Value : Utils.firstCharUpper(Name).Replace("_", " ");
            Alias = (Alias.Trim().Equals(string.Empty)) ? Name : Alias;

            Documentation = (xmlNode["documentation"].Attributes["value"] != null) ? xmlNode["documentation"].Attributes["value"].Value : "";

            Default = (xmlNode["initial"].Attributes["body"] != null) ? xmlNode["initial"].Attributes["body"].Value : null;


            Required = ((xmlNode["stereotype"].Attributes["stereotype"] != null) && (xmlNode["stereotype"].Attributes["stereotype"].Value.Equals("Required"))) ? "True" : "";
            Memory   = ((xmlNode["stereotype"].Attributes["stereotype"] != null) && (xmlNode["stereotype"].Attributes["stereotype"].Value.Equals("Memory"))) ? "True" : "";

            Selection = "";
            Ondelete  = "";
            Translate = Utils.getExtra(xmlNode, "translate", "")[0];
            Readonly  = "";

            LinkManyClass = "";
            LinkManyId1   = "";
            LinkManyId2   = "";
            LinkManyRel   = "";

            ClassLink = null;

            PropertyWhere = PropertyWhere.None;

            Size = Utils.getExtra(xmlNode, "size", "")[0];
            Size = ((Size.Equals(string.Empty)) && (Typage.Equals("char"))) ? "64" : string.Empty;

            ShowLabel = (Utils.getExtra(xmlNode, "label", "1")[0] == "1") ? true : false;
            Page      = Utils.getExtra(xmlNode, "page", "")[0];
            Group     = Utils.getExtra(xmlNode, "group", "")[0];
            ColSpan   = Utils.getExtra(xmlNode, "colspan", "")[0];

            TreeEditable = (Utils.getExtra(xmlNode, "editable", "1")[0] == "1") ? true : false;

            ShowInTree = (Utils.getExtra(xmlNode, "showintree", "true")[0].ToLower().Equals("true")) ? true : false;
            ShowInView = (Utils.getExtra(xmlNode, "showinview", "true")[0].ToLower().Equals("true")) ? true : false;

            Select   = Utils.getExtra(xmlNode, "select", "")[0];
            Criteria = (Utils.getExtra(xmlNode, "criteria", "false")[0].ToLower().Equals("false")) ? false : true;
            if ((Criteria) && (Select.Equals("")))
            {
                Select = "1";
            }

            States = Utils.getExtra(xmlNode, "state", "")[0];
            Uniq   = (Utils.getExtra(xmlNode, "uniq", "0")[0] == "1") ? true : false;

            OEtitle = int.Parse(Utils.getExtra(xmlNode, "oetitle", "0")[0]);

            Function = Utils.getExtra(xmlNode, "function", "")[0];
            Domain   = Utils.getExtra(xmlNode, "domain", "")[0];

            ShareTo = Utils.getExtra(xmlNode, "shareto", "")[0];
            MaxUse  = Utils.getExtra(xmlNode, "maxuse", "")[0];
        }
        public static string CreateReportView(ClassData classData)
        {
            Dictionary<string, string> openerp_class_viewValues = new Dictionary<string, string>();

            string classview = "";

            classview += "<report string=\"" +  Utils.ReplaceSpecialChar(classData.Alias) + "\"\r\n";

            if (classData.Inherit != null)
            {
                classview += "\t\t\tmodel=\"" + classData.Inherit.ModuleName + "." + classData.Inherit.Name + "\"\r\n";
            }
            else
            {
                classview += "\t\t\tmodel=\"" + classData.Parent.ClassicName + "." + classData.Name + "\"\r\n";
            }

            classview += "\t\t\tname=\"" + classData.Parent.ClassicName + "." + classData.Name + ".rml\"\r\n";
            classview += "\t\t\txsl=\"" + classData.Parent.ClassicName + "/report/report_" + classData.Parent.ClassicName + "_" + classData.Name + ".xsl\"\r\n";
            classview += "\t\t\tauto=\"False\"\r\n";
            classview += "\t\t\tid=\"" + classData.Parent.ClassicName + "_" + classData.Name + "_id\"\r\n";
            classview += "\t\t\tmulti=\"1\"\r\n";
            classview += "\t\t/>\r\n";

            openerp_class_viewValues["classview"] = classview;

            string fileXml = classData.Parent.DirectoryInfo_Base.FullName + "/report/report_" + classData.Parent.ClassicName + "_" + classData.Name + ".xml";

            Utils.MakeFileFromModel("openerp_class_view.xml.model", fileXml, openerp_class_viewValues);

            return fileXml;
        }
        public static string CreateClass(ClassData classData)
        {
            Dictionary<string, string> openerp_classValues = new Dictionary<string, string>();

            string fields = "";
            string defaults = "";

            string constraints = "";
            string sql_constraints = "";
            string constraints_functions = "";

            string inherit = "# delete this line";

            string functions = "";
            string functions_before = "# delete this line";
            

            foreach (PropertyData propertyData in classData.ListOfProperties)
            {
                if (!propertyData.Typage.Equals("many2many") && !propertyData.Typage.Equals("one2many"))
                {
                    RenderPropertyPy(classData, propertyData, ref fields, ref defaults, ViewKind.Form);

                    if (propertyData.Uniq)
                    {
                        sql_constraints += ((sql_constraints.Equals(""))?"":"\r\n\t\t") + "('" + propertyData.Name + "_" + classData.Name + "_uniq', 'unique(" + propertyData.Name + ")', 'La valeur du champ [" + propertyData.Alias + "] doit être unique !'),";
                    }

                    if (!propertyData.Function.Equals(string.Empty))
                    {
                        functions_before += (functions_before.Equals(string.Empty)) ? "" : "\r\n\r\n\t";

                        string fieldFunctionType = Utils.GetFunctionName(propertyData.Function);

                        FunctionModel pythonCode = Utils.GetFunctionModel("function_" + fieldFunctionType, FunctionUsage.Field);

                        string result = "";
                        if (pythonCode.Default)
                        {
                            if ((new string[] { "int" }).Contains<string>(propertyData.Typage))
                            {
                                result = "0";
                            }

                            if ((new string[] { "float" }).Contains<string>(propertyData.Typage))
                            {
                                result = "0.0";
                            }

                            if ((new string[] { "char", "string", "text" }).Contains<string>(propertyData.Typage))
                            {
                                result = "''";
                            }
                        }

                        List<string> pythonCode_values = new List<string>();
                        pythonCode_values.Add(propertyData.Name + "_" + fieldFunctionType);
                        
                        switch (fieldFunctionType)
                        {
                            case "sum":
                            {
                                string property_zero = "0";
                                if (propertyData.Typage.Equals("float"))
                                {
                                    property_zero = "0.0";
                                }

                                pythonCode_values.Add(property_zero);

                                pythonCode_values.Add(propertyData.Name);

                                List<string> arguments = Utils.GetFunctionArguments(propertyData.Function);

                                pythonCode_values.Add(arguments[1]);
                                pythonCode_values.Add(arguments[0]);

                                break;
                            }

                            default:
                            {
                                pythonCode_values.Add(result);

                                break;
                            }
                        }

                        /*Dictionary<string, string> pythonCode_values = new Dictionary<string, string>();
                        pythonCode_values["function_name"] = propertyData.Name + "_" + fieldFunctionType;
                        pythonCode_values["property_name"] = propertyData.Name;
                        pythonCode_values["property_to_sum"] = "";
                        pythonCode_values["children"] = "";

                        pythonCode.Content = Utils.replaceValues(pythonCode.Content, pythonCode_values) + "\r\n\t";*/

                        pythonCode.ReplaceValues(pythonCode_values);
                        
                        functions_before += pythonCode;
                    }
                }
            }

            foreach (PropertyData propertyData in classData.ListOfProperties)
            {
                if (!propertyData.MaxUse.Equals(""))
                {
                    functions_before += (functions_before.Equals(string.Empty)) ? "" : "\r\n\r\n\t";

                    FunctionModel pythonCode = Utils.GetFunctionModel("function_label", FunctionUsage.Classic);

                    Dictionary<string, string> pythonCode_values = new Dictionary<string, string>();

                    pythonCode_values.Add("module", classData.Parent.ClassicName);

                    pythonCode_values.Add("classname", classData.Name);
                    pythonCode_values.Add("property_name", propertyData.Name);

                    string[] maxuse = propertyData.MaxUse.Split(new char[] { '.' });

                    pythonCode_values.Add("classlink", maxuse[0]);
                    pythonCode_values.Add("property_link", maxuse[1]);

                    pythonCode.ReplaceValues(pythonCode_values);

                    functions_before += pythonCode;



                    functions += (functions.Equals(string.Empty)) ? "" : "\r\n\r\n\t";

                    FunctionModel pythonCode2 = Utils.GetFunctionModel("function_onchange_maxuse", FunctionUsage.Classic);

                    Dictionary<string, string> pythonCode2_values = new Dictionary<string, string>();

                    pythonCode2_values.Add("property_name", propertyData.Name);
                    pythonCode2_values.Add("classlink", maxuse[0]);

                    pythonCode2.ReplaceValues(pythonCode2_values);

                    functions += pythonCode2;
                }
            }

            foreach (PropertyData propertyData in classData.ListOfProperties)
            {
                if (propertyData.Typage.Equals("many2many"))
                {
                    RenderPropertyPy(classData, propertyData, ref fields, ref defaults, ViewKind.Form);
                }
            }

            foreach (PropertyData propertyData in classData.ListOfProperties)
            {
                if (propertyData.Typage.Equals("one2many"))
                {
                    RenderPropertyPy(classData, propertyData, ref fields, ref defaults, ViewKind.Form);
                }
            }


            Dictionary<string, OperationData> listOfOperationsData = classData.ListOfOperations;
            
            if (classData.StateProperty != null)
            {
                int i = 1;

                foreach (KeyValuePair<string, string> KeyValue in classData.StateProperty.SelectionData.ListOfValues)
                {
                    string key = KeyValue.Key;

                    OperationData operationData = new OperationData();
                    operationData.Parent = classData;
                    operationData.ListOfParameter = new List<ParameterData>();

                    FunctionModel pythonCode = new FunctionModel(FunctionUsage.Classic);

                    if (i == 1)
                    {
                        pythonCode = Utils.GetFunctionModel("function_first_action_wkf", FunctionUsage.Classic);
                    }
                    else
                    {
                        pythonCode = Utils.GetFunctionModel("function_action_wkf", FunctionUsage.Classic);
                    }

                    /*Dictionary<string, string> pythonCode_values = new Dictionary<string, string>();
                    pythonCode_values["function_name"] = "action_" + key + "_wkf";
                    pythonCode_values["state"] = key;

                    pythonCode.Content = Utils.replaceValues(pythonCode.Content, pythonCode_values) + "\r\n\t";*/

                    pythonCode.ReplaceValues("action_" + key + "_wkf", key);

                    operationData.Name = "action_" + key + "_wkf";
                    operationData.PythonCode = pythonCode.Content;

                    listOfOperationsData.Add(operationData.Name, operationData);

                    i++;
                }
            }

            Dictionary<string, string> accountArgs = Utils.FunctionArgs(classData.AccountingArgs);

            //string state = Utils.GetArg(accountArgs, "state", "");
            //string button = Utils.GetArg(accountArgs, "button", "");


            foreach (KeyValuePair<string, OperationData> operationDataKV in listOfOperationsData)
            {
                OperationData operationData = operationDataKV.Value;

                functions += (functions.Equals(string.Empty)) ? "" : "\r\n\r\n\t";

                string parameters = "";
                int i = 0;
                foreach (ParameterData param in operationData.ListOfParameter)
                {
                    if (!param.Name.Equals(""))
                    {
                        parameters += ", " + param.Name;
                    }
                    else
                    {
                        parameters += ", arg" + i.ToString();

                        i++;
                    }
                }

                if (operationData.PythonCode.Equals(""))
                {
                    functions += "def " + operationData.Name + "(self, cr, uid, ids" + parameters + ", context=None):\r\n";
                    functions += "\t\t# contenu généré, à modifier si besoin\r\n";
                    functions += "\t\treturn " + Utils.CorrectReturn(operationData.ReturnType);
                }
                else
                {
                    functions += operationData.PythonCode;
                }
            }


            //string add_after = "";
            foreach (KeyValuePair<string, string> constraint in classData.ListOfConstraints)
            {
                if (constraints_functions.Equals(""))
                {
                    constraints_functions = "\r\n\t";
                    //add_after += "\r\n";
                }

                string[] contrainte = constraint.Value.Split(new char[] { '\n' });

                string[] contrainte_property = contrainte[0].Trim().Split(new char[] { ':' });
                string[] contrainte_constraint = contrainte[1].Trim().Split(new char[] { ':' });
                string[] contrainte_message = contrainte[2].Trim().Split(new char[] { ':' });


                string[] con_properties = contrainte_property[1].Split(new char[] { ',' });
                string contrainte_properties = "";
                string virgule = "";
                foreach (string con_property in con_properties)
                {
                    contrainte_properties += virgule + "'" + con_property.Trim() + "'";
                    virgule = ",";
                }

                string[] operandes = contrainte_constraint[1].Trim().Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);

                string operande1 = operandes[0];
                string oprator = operandes[1];
                string operande2 = operandes[2];

                FunctionModel function_content = Utils.GetFunctionModel("function_constraint_operator", FunctionUsage.Classic);

                /*Dictionary<string, string> constraint_content_values = new Dictionary<string, string>();
                constraint_content_values["constraint_name"] = constraint.Key;
                constraint_content_values["operande1"] = operande1;
                constraint_content_values["operator"] = Utils.TrueString(oprator);
                constraint_content_values["operande2"] = operande2;

                function_content.Content = Utils.replaceValues(function_content.Content, constraint_content_values);*/

                function_content.ReplaceValues(constraint.Key, operande1, Utils.TrueString(oprator), operande2);

                constraints_functions += function_content + "\r\n\t";

                constraints += "(_" + constraint.Key + ", \"" + contrainte_message[1].Trim() + "\", [" + contrainte_properties + "]),\r\n\t\t";
            }

            if (!constraints.Equals("")) constraints = constraints.Substring(0, constraints.Length - 4);

            //constraints_functions += add_after;

            openerp_classValues["name"] = classData.ModuleName + "." + classData.Name;
            if (classData.Inherit != null)
            {
                openerp_classValues["name"] = "# delete this line";
                inherit = "_inherit = \"" + classData.Inherit.ModuleName + "." + classData.Inherit.Name + "\"";
            }

            openerp_classValues["classname"] = classData.Parent.ClassicName +"_" + classData.Name;
            openerp_classValues["description"] = classData.Documentation;
            openerp_classValues["inherit"] = inherit;
            openerp_classValues["fields"] = fields;
            openerp_classValues["defaults"] = defaults;
            openerp_classValues["constraints_functions"] = constraints_functions;
            openerp_classValues["constraints"] = constraints;
            openerp_classValues["sql_constraints"] = sql_constraints;
            openerp_classValues["functions"] = functions;
            openerp_classValues["functions_before"] = functions_before;



            string filePy = classData.Parent.DirectoryInfo_Base.FullName + "/" + classData.Parent.ClassicName + "_" + classData.Name + ".py";
            
            Utils.MakeFileFromModel("openerp_class.py.model", filePy, openerp_classValues);

            return filePy;
        }
Example #48
0
 public KanbanData(string Id, ActionData refAction, string Name, ClassData classData, string sequence)
     : base(Id, refAction, Name, classData, sequence, "Kanban")
 {
     //
 }
        public static string CreateWorkFlow(ClassData classData)
        {
            Dictionary<string, string> openerp_class_viewValues = new Dictionary<string, string>();

            string classview = "<record id=\"wkf_" + classData.Name + "\" model=\"workflow\">\r\n";
            classview += "\t\t\t<field name=\"name\">" + classData.Parent.ClassicName + "." + classData.Name + ".basic</field>\r\n";
            classview += "\t\t\t<field name=\"osv\">" + classData.Parent.ClassicName + "." + classData.Name + "</field>\r\n";
            classview += "\t\t\t<field name=\"on_create\">True</field>\r\n";
            classview += "\t\t</record>\r\n";

            string activities = "";
            string transitions = "";

            int i = 1;

            KeyValuePair<string, string> preKeyValue = new KeyValuePair<string,string>();
            foreach (KeyValuePair<string, string> KeyValue in classData.StateProperty.SelectionData.ListOfValues)
            {
                string key = KeyValue.Key;

                if (i == 1)
                {
                    activities += "\r\n";
                    activities += "\t\t<record id=\"act_" + key + "\" model=\"workflow.activity\">\r\n";
                    activities += "\t\t\t<field name=\"wkf_id\" ref=\"wkf_" + classData.Name + "\"/>\r\n";
                    activities += "\t\t\t<field name=\"flow_start\">True</field>\r\n";
                    activities += "\t\t\t<field name=\"name\">" + key + "</field>\r\n";
                    activities += "\t\t</record>\r\n";
                }
                else if (i == classData.StateProperty.SelectionData.ListOfValues.Count)
                {
                    activities += "\r\n";
                    activities += "\t\t<record id=\"act_" + key + "\" model=\"workflow.activity\">\r\n";
                    activities += "\t\t\t<field name=\"wkf_id\" ref=\"wkf_" + classData.Name + "\"/>\r\n";
                    activities += "\t\t\t<field name=\"kind\">function</field>\r\n";
                    activities += "\t\t\t<field name=\"name\">" + key + "</field>\r\n";
                    activities += "\t\t\t<field name=\"action\">action_" + key + "_wkf()</field>\r\n";
                    activities += "\t\t\t<field name=\"flow_stop\">True</field>\r\n";
                    activities += "\t\t</record>\r\n";

                    activities += "\r\n";
                    activities += "\t\t<record id=\"act_cancel\" model=\"workflow.activity\">\r\n";
                    activities += "\t\t\t<field name=\"wkf_id\" ref=\"wkf_" + classData.Name + "\"/>\r\n";
                    activities += "\t\t\t<field name=\"kind\">function</field>\r\n";
                    activities += "\t\t\t<field name=\"name\">cancel</field>\r\n";
                    activities += "\t\t\t<field name=\"action\">action_cancel_wkf()</field>\r\n";
                    activities += "\t\t\t<field name=\"flow_stop\">True</field>\r\n";
                    activities += "\t\t</record>\r\n";
                }
                else
                {
                    activities += "\r\n";
                    activities += "\t\t<record id=\"act_" + key + "\" model=\"workflow.activity\">\r\n";
                    activities += "\t\t\t<field name=\"wkf_id\" ref=\"wkf_" + classData.Name + "\"/>\r\n";
                    activities += "\t\t\t<field name=\"kind\">function</field>\r\n";
                    activities += "\t\t\t<field name=\"name\">" + key + "</field>\r\n";
                    activities += "\t\t\t<field name=\"action\">action_" + key + "_wkf()</field>\r\n";
                    activities += "\t\t</record>\r\n";
                }

                if (i != 1)
                {
                    // button
                    if (classData.ListOfWorkFlowButton.ContainsKey(key) && classData.ListOfWorkFlowButton[key].RenderXML)
                    {
                        transitions += "\r\n";
                        transitions += "\t\t<record id=\"trans_" + preKeyValue.Key + "_" + key + "\" model=\"workflow.transition\">\r\n";
                        transitions += "\t\t\t<field name=\"act_from\" ref=\"act_" + preKeyValue.Key + "\"/>\r\n";
                        transitions += "\t\t\t<field name=\"act_to\" ref=\"act_" + key + "\"/>\r\n";
                        transitions += "\t\t\t<field name=\"signal\">button_" + key + "</field>\r\n";
                        transitions += "\t\t</record>\r\n";

                        /*transitions += "\r\n";
                        transitions += "\t\t<record id=\"trans_" + key + "_cancel\" model=\"workflow.transition\">\r\n";
                        transitions += "\t\t\t<field name=\"act_from\" ref=\"act_" + key + "\"/>\r\n";
                        transitions += "\t\t\t<field name=\"act_to\" ref=\"act_cancel\"/>\r\n";
                        transitions += "\t\t\t<field name=\"signal\">button_cancel</field>\r\n";
                        transitions += "\t\t</record>\r\n";*/
                    }

                    // function
                    else if (classData.ListOfWorkFlowFunction.ContainsKey(key))
                    {
                        transitions += "\r\n";
                        transitions += "\t\t<record id=\"trans_" + preKeyValue.Key + "_" + key + "\" model=\"workflow.transition\">\r\n";
                        transitions += "\t\t\t<field name=\"act_from\" ref=\"act_" + preKeyValue.Key + "\"/>\r\n";
                        transitions += "\t\t\t<field name=\"act_to\" ref=\"act_" + key + "\"/>\r\n";
                        transitions += "\t\t\t<field name=\"condition\">" + classData.ListOfWorkFlowFunction[key].Name + "()</field>\r\n";
                        transitions += "\t\t</record>\r\n";

                        transitions += "\r\n";
                        transitions += "\t\t<record id=\"trans_" + key + "_" + preKeyValue.Key + "\" model=\"workflow.transition\">\r\n";
                        transitions += "\t\t\t<field name=\"act_from\" ref=\"act_" + key + "\"/>\r\n";
                        transitions += "\t\t\t<field name=\"act_to\" ref=\"act_" + preKeyValue.Key + "\"/>\r\n";
                        transitions += "\t\t\t<field name=\"condition\">not " + classData.ListOfWorkFlowFunction[key].Name + "()</field>\r\n";
                        transitions += "\t\t</record>\r\n";

                        /*transitions += "\r\n";
                        transitions += "\t\t<record id=\"trans_" + key + "_cancel_auto\" model=\"workflow.transition\">\r\n";
                        transitions += "\t\t\t<field name=\"act_from\" ref=\"act_" + key + "\"/>\r\n";
                        transitions += "\t\t\t<field name=\"act_to\" ref=\"act_cancel\"/>\r\n";
                        transitions += "\t\t\t<field name=\"condition\">test_cancel()</field>\r\n";
                        transitions += "\t\t</record>\r\n";*/
                    }
                }

                preKeyValue = KeyValue;

                i++;
            }

            classview += activities + transitions;

            openerp_class_viewValues["classview"] = classview;

            string fileXml = classData.Parent.DirectoryInfo_Base.FullName + "/workflow/workflow_" + classData.Parent.ClassicName + "_" + classData.Name + ".xml";

            Utils.MakeFileFromModel("openerp_workflow.xml.model", fileXml, openerp_class_viewValues);

            return fileXml;
        }
 public SearchData(string Id, ActionData refAction, string Name, ClassData classData, string sequence)
     : base(Id, refAction, Name, classData, sequence, "Search")
 {
     //
 }
        public static string CreateDatas(ClassData classData)
        {
            Dictionary<string, string> openerp_class_viewValues = new Dictionary<string, string>();

            string classview = "<record forcecreate=\"1\" id=\"sequence_" + classData.Name + "_type\" model=\"ir.sequence.type\">\r\n";
            classview += "\t\t\t<field name=\"name\">" + classData.Name + " code</field>\r\n";
            classview += "\t\t\t<field name=\"code\">code." + classData.Name + "</field>\r\n";
            classview += "\t\t</record>\r\n";
            classview += "\r\n";
            classview += "\t\t<record forcecreate=\"1\" id=\"sequence_" + classData.Name + "\" model=\"ir.sequence\">\r\n";
            classview += "\t\t\t<field name=\"name\">" + classData.Name + " code</field>\r\n";
            classview += "\t\t\t<field name=\"code\">code." + classData.Name + "</field>\r\n";
            classview += "\t\t\t<field name=\"padding\">6</field>\r\n";
            classview += "\t\t\t<field name=\"prefix\">" + classData.Code + " %(y)s%(month)s%(day)s </field>\r\n";
            classview += "\t\t</record>\r\n";
            
            
            openerp_class_viewValues["classview"] = classview;

            string fileXml = classData.Parent.DirectoryInfo_Base.FullName + "/data/data_" + classData.Parent.ClassicName + "_" + classData.Name + ".xml";

            Utils.MakeFileFromModel("openerp_workflow.xml.model", fileXml, openerp_class_viewValues);

            return fileXml;
        }
        public void addTraduction(ClassData classData, string text)
        {
            if ((!ListOfTraduction.ContainsKey(text)) && (!text.Trim().Equals("")))
            {
                string traduction = "";

                traduction += "#. module: " + classData.Parent.ClassicName + "\r\n";
                traduction += "#: view:" + classData.Parent.ClassicName + "." + classData.Name + ":0\r\n";
                traduction += "msgid \"" + Utils.ReplaceSpecialChar(text) + "\"\r\n";
                traduction += "msgstr \"" + text + "\"\r\n";

                traduction += "\r\n";

                ListOfTraduction.Add(text, traduction);
            }
        }
        public static string CreateProcess(ClassData classData)
        {
            Dictionary<string, string> openerp_module_processValues = new Dictionary<string, string>();

            string moduleprocess = "<record id=\"process_process_" + classData.Parent.ClassicName + "_" + classData.Name + "\" model=\"process.process\">\r\n";
            moduleprocess += "\t\t\t<field eval=\"1\" name=\"active\"/>\r\n";
            moduleprocess += "\t\t\t<field name=\"model_id\" ref=\"" + classData.Parent.ClassicName + ".model_" + classData.Parent.ClassicName + "_" + classData.Name + "\"/>\r\n";
            moduleprocess += "\t\t\t<field eval=\"&quot;&quot;&quot;" + Utils.ReplaceSpecialChar(classData.Alias) + "&quot;&quot;&quot;\" name=\"name\"/>\r\n";
            moduleprocess += "\t\t</record>\r\n";


            openerp_module_processValues["classview"] = moduleprocess;

            string fileXml = classData.Parent.DirectoryInfo_Base.FullName + "/process/process_" + classData.Parent.ClassicName + "_" + classData.Name + ".xml";

            Utils.MakeFileFromModel("openerp_class_view.xml.model", fileXml, openerp_module_processValues);

            return fileXml;
        }
 public CalendarData(string Id, ActionData refAction, string Name, ClassData classData, string sequence)
     : base(Id, refAction, Name, classData, sequence, "Calendar")
 {
     //
 }
        public static string CreateView(ClassData classData)
        {
            Dictionary<string, string> openerp_class_viewValues = new Dictionary<string, string>();

            string classview = "";



            if (classData.ListOfView.Count > 0)
            {
                classview += "<!-- [ VIEWS SECTION ] -->\r\n\r\n\t\t";
            }

            foreach (ViewData viewData in classData.ListOfView)
            {
                switch (viewData.Kind)
                {
                    case "Act":
                    {
                        classview += addAct((ActData)viewData);
                        break;
                    }

                    case "Form":
                    {
                        classview += addForm((FormData)viewData);
                        break;
                    }

                    case "Tree":
                    {
                        classview += addTree((TreeData)viewData);
                        break;
                    }

                    case "Graph":
                    {
                        classview += addGraph((GraphData)viewData);
                        break;
                    }

                    case "Calendar":
                    {
                        classview += addCalendar((CalendarData)viewData);
                        break;
                    }

                    case "Search":
                    {
                        classview += addSearch((SearchData)viewData);
                        break;
                    }

                    case "Kanban":
                    {
                        classview += addKanban((KanbanData)viewData);
                        break;
                    }

                    case "Gantt":
                    {
                        //classview += addGantt((GanttData)viewData);
                        break;
                    }
                }
            }

            if (classData.ListOfAction.Count > 0)
            {
                classview += "<!-- [ ACTIONS SECTION ] -->\r\n\r\n\t\t";
            }

            foreach (ActionData actionData in classData.ListOfAction)
            {
                classview += addAction(actionData);
            }

            if (classData.ListOfMenu.Count > 0)
            {
                classview += "<!-- [ MENUS SECTION ] -->\r\n\r\n\t\t";
            }

            foreach (MenuData menuData in classData.ListOfMenu)
            {
                classview += addMenu(menuData);
            }

            openerp_class_viewValues["classview"] = classview;

            string fileXml = classData.Parent.DirectoryInfo_Base.FullName + "/view/" + classData.Parent.ClassicName + "_" + classData.Name + "_view.xml";

            Utils.MakeFileFromModel("openerp_class_view.xml.model", fileXml, openerp_class_viewValues);

            return fileXml;
        }
Example #56
0
        public void Create()
        {
            Name = Name.Replace(".", "_");

            List <PropertyData> listOfPropertyData_Code   = new List <PropertyData>();
            List <PropertyData> listOfPropertyData_Name   = new List <PropertyData>();
            List <PropertyData> listOfPropertyData_Others = new List <PropertyData>();

            foreach (PropertyData propertyData in ListOfProperties)
            {
                if (propertyData.Name.Equals("code"))
                {
                    listOfPropertyData_Code.Add(propertyData);
                }
                else if (propertyData.Name.Equals("name"))
                {
                    listOfPropertyData_Name.Add(propertyData);
                }
                else
                {
                    listOfPropertyData_Others.Add(propertyData);
                }
            }

            ListOfProperties = new List <PropertyData>();
            ListOfProperties.AddRange(listOfPropertyData_Code);
            ListOfProperties.AddRange(listOfPropertyData_Name);
            ListOfProperties.AddRange(listOfPropertyData_Others);


            ListOfGroups = new Dictionary <string, GroupData>();

            ListOfGroupsReport     = new Dictionary <string, GroupData>();
            ListOfPropertiesReport = new List <PropertyData>();

            GroupData rootGroupData = new GroupData("default");

            rootGroupData.Root      = true;
            rootGroupData.ClassData = this;
            rootGroupData.Report    = false;
            ListOfGroups.Add("default", rootGroupData);

            GroupData rootReportGroupData = new GroupData("default");

            rootReportGroupData.Root      = true;
            rootReportGroupData.ClassData = this;
            rootReportGroupData.Report    = true;


            string sel = "";
            List <PropertyData> listOfDates = new List <PropertyData>();

            foreach (PropertyData propertyData in ListOfProperties)
            {
                if (propertyData.Typage.Equals("date") || propertyData.Typage.Equals("datetime") || propertyData.Typage.Equals("time"))
                {
                    listOfDates.Add(propertyData);
                    ListOfPropertiesReport.Add(propertyData);
                }
            }

            if (listOfDates.Count > 0)
            {
                sel += "('date', 'Date'),";
            }

            if (!sel.Equals(""))
            {
                PropertyData property = new PropertyData();
                property.Name   = "filtrerpar";
                property.Alias  = "Filtrer par";
                property.Typage = "selection";

                sel = sel.Substring(0, sel.Length - 1);
                property.Selection = "[" + sel + "]";


                PageData pageFilter = new PageData("Filtres");
                pageFilter.ListOfGroups["default"]           = new GroupData("default");
                pageFilter.ListOfGroups["default"].ClassData = this;
                pageFilter.ListOfGroups["default"].ListOfProperties.Add(property);
                ListOfPropertiesReport.Add(property);

                if (listOfDates.Count > 0)
                {
                    pageFilter.ListOfGroups["default"].ListOfGroups.Add("dates", new GroupData("Dates", this));
                    pageFilter.ListOfGroups["default"].ListOfGroups["dates"].ListOfProperties = listOfDates;
                }

                rootReportGroupData.ListOfPages.Add("filter", pageFilter);
            }


            rootReportGroupData.ListOfPages.Add("avances", new PageData("Avancés"));
            rootReportGroupData.ListOfPages.Add("options", new PageData("Options"));

            ListOfGroupsReport.Add("default", rootReportGroupData);

            foreach (PropertyData propertyData in ListOfProperties)
            {
                bool dontthread = false;

                if (!propertyData.Name.Equals(Name + "_id"))
                {
                    propertyData.Update();


                    if ((propertyData.Name.Equals("state")) && (propertyData.Typage.Equals("selection")))
                    {
                        dontthread    = true;
                        StateWorkflow = true;
                        StateProperty = propertyData;

                        propertyData.Readonly = "1";
                        propertyData.Select   = "1";

                        ListOfWorkFlowButton   = new Dictionary <string, ButtonData>();
                        ListOfWorkFlowFunction = new Dictionary <string, OperationData>();
                        foreach (KeyValuePair <string, string> KeyValue in propertyData.SelectionData.ListOfValues)
                        {
                            OperationData operationData = GetOperation(propertyData.TypageInitial, KeyValue.Key);

                            if (operationData != null)
                            {
                                ButtonData buttonData = new ButtonData();
                                buttonData.States = KeyValue.Key;

                                if (operationData.CallBy.Equals("button"))
                                {
                                    buttonData.Text = KeyValue.Value;
                                    buttonData.Name = operationData.Name;
                                }
                                else if (operationData.CallBy.Equals(""))
                                {
                                    buttonData.RenderXML = false;
                                    ListOfWorkFlowFunction.Add(KeyValue.Key, operationData);

                                    operationData.ReturnType = "boolean";
                                }

                                ListOfWorkFlowButton.Add(KeyValue.Key, buttonData);
                            }
                        }
                    }
                    else if (propertyData.Name.Equals("name"))
                    {
                        //
                    }
                    else if (propertyData.Name.Equals("code"))
                    {
                        if (!Code.Equals(""))
                        {
                            CodeProperty      = propertyData;
                            propertyData.Uniq = true;
                        }
                    }
                    else if (propertyData.Name.Equals("sequence"))
                    {
                        //
                    }
                    else if (propertyData.Name.Equals("parent_id"))
                    {
                        //
                    }



                    if (!dontthread)
                    {
                        if (propertyData.Typage.Equals("text"))
                        {
                            if (propertyData.Group.Equals("") && propertyData.Page.Equals(""))
                            {
                                propertyData.Page      = propertyData.Alias;
                                propertyData.ColSpan   = "6";
                                propertyData.ShowLabel = false;
                            }
                        }
                        else if (propertyData.Typage.Equals("selection") || (propertyData.LinkData != null))
                        {
                            ListOfGroupsReport["default"].ListOfProperties.Add(propertyData);
                            ListOfPropertiesReport.Add(propertyData);
                        }


                        if (propertyData.Group.Equals(string.Empty) && propertyData.Page.Equals(string.Empty))
                        {
                            ListOfGroups["default"].ListOfProperties.Add(propertyData);
                        }
                        else if (!propertyData.Group.Equals(string.Empty) && propertyData.Page.Equals(string.Empty))
                        {
                            if (!ListOfGroups["default"].ListOfGroups.ContainsKey(propertyData.Group))
                            {
                                ListOfGroups["default"].ListOfGroups.Add(propertyData.Group, new GroupData(propertyData.Group, this));
                            }

                            ListOfGroups["default"].ListOfGroups[propertyData.Group].ListOfProperties.Add(propertyData);
                        }
                        else if (propertyData.Group.Equals(string.Empty) && !propertyData.Page.Equals(string.Empty))
                        {
                            if (!ListOfGroups["default"].ListOfPages.ContainsKey(propertyData.Page))
                            {
                                ListOfGroups["default"].ListOfPages.Add(propertyData.Page, new PageData(propertyData.Page));
                                ListOfGroups["default"].ListOfPages[propertyData.Page].ListOfGroups.Add("default", new GroupData("default", this));
                            }

                            ListOfGroups["default"].ListOfPages[propertyData.Page].ListOfGroups["default"].ListOfProperties.Add(propertyData);
                        }
                        else if (!propertyData.Group.Equals(string.Empty) && !propertyData.Page.Equals(string.Empty))
                        {
                            if (!ListOfGroups["default"].ListOfPages.ContainsKey(propertyData.Page))
                            {
                                ListOfGroups["default"].ListOfPages.Add(propertyData.Page, new PageData(propertyData.Page));
                                ListOfGroups["default"].ListOfPages[propertyData.Page].ListOfGroups.Add("default", new GroupData("default", this));
                            }

                            if (!ListOfGroups["default"].ListOfPages[propertyData.Page].ListOfGroups.ContainsKey(propertyData.Group))
                            {
                                ListOfGroups["default"].ListOfPages[propertyData.Page].ListOfGroups.Add(propertyData.Group, new GroupData(propertyData.Group, this));
                            }

                            ListOfGroups["default"].ListOfPages[propertyData.Page].ListOfGroups[propertyData.Group].ListOfProperties.Add(propertyData);
                        }
                    }
                    else
                    {
                        if (propertyData.Typage.Equals("selection") || (propertyData.LinkData != null))
                        {
                            ListOfGroupsReport["default"].ListOfProperties.Add(propertyData);
                            ListOfPropertiesReport.Add(propertyData);
                        }
                    }
                }
            }

            foreach (PropertyData propertyData in ListOfProperties)
            {
                if (propertyData.Typage.Equals("one2many"))
                {
                    foreach (PropertyData property in ListOfProperties)
                    {
                        if (!propertyData.Equals(property))
                        {
                            if (!property.ShareTo.Equals(""))
                            {
                                string[] shareto = property.ShareTo.Split(new char[] { '.' });

                                string clssppt = Parent.ClassicName + "." + shareto[0];

                                if (clssppt.Equals(propertyData.LinkManyClass))
                                {
                                    ClassData clssData = Parent.GetClass(propertyData.LinkManyClass.Split(new char[] { '.' })[1]);

                                    PropertyData propData = clssData.GetProperty(shareto[1]);

                                    propData.MaxUse = Name + "." + propData.Name;
                                }
                            }
                        }
                    }
                }
            }

            Dictionary <string, PageData> ListOfPages  = new Dictionary <string, PageData>();
            Dictionary <string, PageData> ListOfPages2 = new Dictionary <string, PageData>();

            foreach (KeyValuePair <string, PageData> pageData in ListOfGroups["default"].ListOfPages)
            {
                if ((pageData.Value.ListOfGroups != null) && (pageData.Value.ListOfGroups.Count > 0) &&
                    (pageData.Value.ListOfGroups.ContainsKey("default")) && (pageData.Value.ListOfGroups["default"].ListOfProperties != null) &&
                    (pageData.Value.ListOfGroups["default"].ListOfProperties.Count > 0) && (pageData.Value.ListOfGroups["default"].ListOfProperties[0].Typage.Equals("text")))
                {
                    ListOfPages2.Add(pageData.Value.Label, pageData.Value);
                }
                else
                {
                    ListOfPages.Add(pageData.Value.Label, pageData.Value);
                }
            }

            foreach (KeyValuePair <string, PageData> pageData in ListOfPages2)
            {
                ListOfPages.Add(pageData.Value.Label, pageData.Value);
            }

            ListOfGroups["default"].ListOfPages = ListOfPages;

            ListOfButton = new List <ButtonData>();
            foreach (KeyValuePair <string, OperationData> operationDataKV in ListOfOperations)
            {
                OperationData operationData = operationDataKV.Value;

                if ((operationData.CallBy.Equals("button")) && (operationData.State.Equals("")))
                {
                    ButtonData buttonData = new ButtonData(operationData);

                    ListOfButton.Add(buttonData);
                }
                else if ((operationData.CallBy.Equals("button")) && (!operationData.State.Equals("")))
                {
                    FunctionModel pythonCode = Utils.GetFunctionModel("function_caller_action_wkf", FunctionUsage.Classic);

                    string[] states = operationData.State.Split(new char[] { '.' });

                    string state = states[1].Trim(); //GetNextState(states[1].Trim());

                    if (!state.Equals(""))
                    {
                        /*Dictionary<string, string> pythonCode_values = new Dictionary<string, string>();
                         * pythonCode_values["function_name"] = operationData.Name;
                         * pythonCode_values["action_wkf"] = "action_" + state + "_wkf";
                         *
                         * pythonCode.Content = Utils.replaceValues(pythonCode.Content, pythonCode_values) + "\r\n\t";*/

                        pythonCode.ReplaceValues(operationData.Name, "action_" + state + "_wkf");

                        operationData.PythonCode = pythonCode.Content;
                    }
                }
                else if (!operationData.CallBy.Equals("button") && !operationData.CallBy.Equals(""))
                {
                    PropertyData propertyData = GetProperty(operationData.CallBy);

                    string param = "";
                    foreach (ParameterData parameterData in operationData.ListOfParameter)
                    {
                        param += parameterData.Name + ", ";
                    }

                    if (!param.Equals(""))
                    {
                        param = param.Substring(0, param.Length - 2);
                    }

                    propertyData.OnChange = operationData.Name + "(" + param + ")";
                }
            }

            ListOfGroups["default"].ListOfButtons = ListOfButton;

            PyGenerator.CreateClass(this);
            PyGenerator.CreateReportModel(this);
            PyGenerator.CreateReportWizardModel(this);

            XmlGenerator.CreateView(this);
            XmlGenerator.CreateReportView(this);
            XmlGenerator.CreateWizardReportView(this, MenuRapport);

            if (CodeProperty != null)
            {
                XmlGenerator.CreateDatas(this);
            }

            if (StateWorkflow)
            {
                XmlGenerator.CreateWorkFlow(this);
            }

            XslGenerator.CreateReport(this);
        }
        public static string CreateWizardReportView(ClassData classData, string MenuRapport)
        {
            Dictionary<string, string> openerp_class_viewValues = new Dictionary<string, string>();

            string classview = "";

            Program.ProjectData.addTraduction(classData, "Rapport: " + classData.Alias);
            Program.ProjectData.addTraduction(classData, "Imprimer");
            Program.ProjectData.addTraduction(classData, "Annuler");

            classview += "<record id=\"view_" + classData.Parent.ClassicName + "_" + classData.Name + "_wizard\" model=\"ir.ui.view\">\r\n";

            classview += "\t\t\t<field name=\"name\">Rapport : " + Utils.ReplaceSpecialChar(classData.Alias) + "</field>\r\n";
            classview += "\t\t\t<field name=\"model\">" + classData.Parent.ClassicName + ".wizard." + classData.Name + "</field>\r\n";
            classview += "\t\t\t<field name=\"type\">form</field>\r\n";
            classview += "\t\t\t<field name=\"arch\" type=\"xml\">\r\n";
            classview += "\t\t\t\t<form string=\"" + Utils.ReplaceSpecialChar(classData.Alias) + "\" col=\"" + classData.Columns + "\" version=\"7.0\">\r\n";

            classview += "\t\t\t\t\t<group col=\"" + classData.Columns + "\" colspan=\"" + classData.Columns + "\">\r\n";
            classview += "\t\t\t\t\t\t<separator colspan=\"" + classData.Columns + "\" string=\"" + Utils.ReplaceSpecialChar(classData.Alias) + "\"/>\r\n";
            classview += "\t\t\t\t\t\t<label colspan=\"" + classData.Columns + "\" string=\"Ce rapport permet d'imprimer ou de générer un pdf.\"/>\r\n";

            classview += "\t\t\t\t\t\t<field name=\"typerapport\" colspan=\"2\"/>\r\n";

            classview += "\t\t\t\t\t\t<separator colspan=\"" + classData.Columns + "\"/>\r\n";

            classview += addFormGroup(classData.ListOfGroupsReport["default"], "\t", true, ViewKind.ReportFilter);

            classview += "\t\t\t\t\t</group>\r\n";

            classview += "\t\t\t\t\t<footer>\r\n";
            classview += "\t\t\t\t\t\t<button name=\"print_report\" string=\"Imprimer\" type=\"object\" icon=\"gtk-print\" colspan=\"2\"/>\r\n";
            classview += "\t\t\t\t\t\tou\r\n";
            classview += "\t\t\t\t\t\t<button icon=\"gtk-cancel\" special=\"cancel\" string=\"Annuler\" colspan=\"2\"/>\r\n";
            classview += "\t\t\t\t\t</footer>\r\n";

            classview += "\t\t\t\t</form>\r\n";
            classview += "\t\t\t</field>\r\n";

            classview += "\t\t</record>\r\n";

            classview += "\r\n";

            Program.ProjectData.addTraduction(classData, "Rapport: " + classData.Alias);
            
            classview += "\t\t<record model=\"ir.actions.act_window\" id=\"action_rapport_" + classData.Name + "\">\r\n";
            classview += "\t\t\t<field name=\"name\">Rapport : " + Utils.ReplaceSpecialChar(classData.Alias) + "</field>\r\n";
            classview += "\t\t\t<field name=\"type\">ir.actions.act_window</field>\r\n";
            classview += "\t\t\t<field name=\"res_model\">" + classData.Parent.ClassicName + ".wizard." + classData.Name + "</field>\r\n";
            classview += "\t\t\t<field name=\"view_type\">form</field>\r\n";
            classview += "\t\t\t<field name=\"view_mode\">form</field>\r\n";
            //classview += "\t\t\t<field name=\"view_id\" ref=\"view_" + classData.Parent.ClassicName + "_" + classData.Name + "_wizard\"/>\r\n";
            classview += "\t\t\t<field name=\"target\">new</field>\r\n";
            classview += "\t\t</record>\r\n";

            classview += "\r\n";
            classview += MenuRapport;
            
            openerp_class_viewValues["classview"] = classview;

            string fileXml = classData.Parent.DirectoryInfo_Base.FullName + "/wizard/wizard_" + classData.Parent.ClassicName + "_" + classData.Name + ".xml";

            Utils.MakeFileFromModel("openerp_wizard.xml.model", fileXml, openerp_class_viewValues);

            return fileXml;
        }