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 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; }
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"] = "{}"; }
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 = ""; }
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 = ""; }
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; }
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") { // }
public KanbanData(ActData refView, ActionData refAction, string Name, ClassData classData, string sequence) : base(refView, refAction, Name, classData, sequence, "Kanban") { // }
public TreeData(ActData refView, ActionData refAction, string Name, ClassData classData, string sequence) : base(refView, refAction, Name, classData, sequence, "Tree") { // }
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") { // }
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++; } }
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 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; }
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=\""""" + Utils.ReplaceSpecialChar(classData.Alias) + """"\" 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; }
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; }