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 string Create() { string AddonPath = this.Parent.AddonsPath; string moduleDirectory = AddonPath + "/" + NameDirectory; if (Directory.Exists(moduleDirectory)) { Directory.Delete(moduleDirectory, true); } Directory.CreateDirectory(moduleDirectory); DirectoryInfo_Base = Directory.CreateDirectory(moduleDirectory); DirectoryInfo_I18n = Directory.CreateDirectory(moduleDirectory + "/i18n"); DirectoryInfo_Process = Directory.CreateDirectory(moduleDirectory + "/process"); DirectoryInfo_Report = Directory.CreateDirectory(moduleDirectory + "/report"); DirectoryInfo_Security = Directory.CreateDirectory(moduleDirectory + "/security"); DirectoryInfo_Static = Directory.CreateDirectory(moduleDirectory + "/static/src/img"); DirectoryInfo_Wizard = Directory.CreateDirectory(moduleDirectory + "/wizard"); DirectoryInfo_View = Directory.CreateDirectory(moduleDirectory + "/view"); DirectoryInfo_Demo = Directory.CreateDirectory(moduleDirectory + "/demo"); DirectoryInfo_Workflow = Directory.CreateDirectory(moduleDirectory + "/workflow"); DirectoryInfo_Images = Directory.CreateDirectory(moduleDirectory + "/images"); DirectoryInfo_Sequences = Directory.CreateDirectory(moduleDirectory + "/data"); Utils.MakeFileFromModel("openerp_security.xml.model", DirectoryInfo_Security.FullName + "/groups.xml"); Utils.MakeFileFromModel("ir.model.access.csv.model", DirectoryInfo_Security.FullName + "/ir.model.access.csv"); Dashboard = ""; foreach (ClassData classData in ListOfClass) { if (classData.InDashBoard) { Dashboard += "\t\t<record id=\"" + classData.DashboardAction["id"] + "\" model=\"ir.actions.act_window\">\r\n"; Dashboard += "\t\t\t<field name=\"name\">" + classData.DashboardAction["name"] + "</field>\r\n"; Dashboard += "\t\t\t<field name=\"type\">ir.actions.act_window</field>\r\n"; Dashboard += "\t\t\t<field name=\"res_model\">" + classData.DashboardAction["res_model"] + "</field>\r\n"; Dashboard += "\t\t\t<field name=\"view_type\">" + classData.DashboardAction["view_type"] + "</field>\r\n"; Dashboard += "\t\t\t<field name=\"view_mode\">" + classData.DashboardAction["view_mode"] + "</field>\r\n"; //Dashboard += "\t\t\t<field name=\"context\">" + classData.DashboardAction["context"] + "</field>\r\n"; Dashboard += "\t\t\t<field name=\"view_id\" ref=\"" + classData.DashboardAction["view_id"] + "\"/>\r\n"; //Dashboard += "\t\t\t<field name=\"domain\">" + classData.DashboardAction["domain"] + "</field>\r\n"; Dashboard += "\t\t</record>\r\n"; Dashboard += "\r\n"; } } string board_style = "1"; foreach (ClassData classData in ListOfClass) { if (classData.InDashBoard) { if (!classData.DashboardAction["position"].Equals("1")) { board_style = "2-1"; } } } Dashboard += "\t\t<record id=\"dashboard_" + ClassicName + "_form\" model=\"ir.ui.view\">\r\n"; Dashboard += "\t\t\t<field name=\"name\">dashboard." + ClassicName + ".form</field>\r\n"; Dashboard += "\t\t\t<field name=\"model\">board.board</field>\r\n"; Dashboard += "\t\t\t<field name=\"type\">form</field>\r\n"; Dashboard += "\t\t\t<field name=\"arch\" type=\"xml\">\r\n"; Dashboard += "\t\t\t\t<form string=\"Tableau de bord : " + Alias + "\">\r\n"; Dashboard += "\t\t\t\t\t<board style=\"" + board_style + "\">\r\n"; Dashboard += "\t\t\t\t\t\t<column>\r\n"; foreach (ClassData classData in ListOfClass) { if ((classData.InDashBoard) && (classData.DashboardAction["position"].Equals("1"))) { Dashboard += "\t\t\t\t\t\t\t<action name=\"%(" + classData.DashboardAction["id"] + ")d\" creatable=\"true\" string=\"" + classData.Alias + "\"/>\r\n"; } } Dashboard += "\t\t\t\t\t\t</column>\r\n"; if (board_style.Equals("2-1")) { Dashboard += "\t\t\t\t\t\t<column>\r\n"; foreach (ClassData classData in ListOfClass) { if ((classData.InDashBoard) && (classData.DashboardAction["position"].Equals("2"))) { Dashboard += "\t\t\t\t\t\t\t<action name=\"%(" + classData.DashboardAction["id"] + ")d\" creatable=\"true\" string=\"" + classData.Alias + "\"/>\r\n"; } } Dashboard += "\t\t\t\t\t\t</column>\r\n"; } Dashboard += "\t\t\t\t\t</board>\r\n"; Dashboard += "\t\t\t\t</form>\r\n"; Dashboard += "\t\t\t</field>\r\n"; Dashboard += "\t\t</record>\r\n"; Dashboard += "\r\n"; Dashboard += "\t\t<record id=\"open_dashboard_" + ClassicName + "\" model=\"ir.actions.act_window\">\r\n"; Dashboard += "\t\t\t<field name=\"name\">Tableau de bord : " + Alias + "</field>\r\n"; Dashboard += "\t\t\t<field name=\"res_model\">board.board</field>\r\n"; Dashboard += "\t\t\t<field name=\"view_type\">form</field>\r\n"; Dashboard += "\t\t\t<field name=\"view_mode\">form</field>\r\n"; Dashboard += "\t\t\t<field name=\"usage\">menu</field>\r\n"; Dashboard += "\t\t\t<field name=\"view_id\" ref=\"dashboard_" + ClassicName + "_form\"/>\r\n"; Dashboard += "\t\t</record>\r\n"; Dashboard += "\r\n"; Dashboard += "\t\t<menuitem name=\"" + Alias + "\" id=\"" + ClassicName + ".menu_" + ClassicName + "\" action=\"open_dashboard_" + ClassicName + "\"/>\r\n"; Dashboard = Dashboard.Substring(2); Dictionary <string, string> __module_dashboard_Values__ = new Dictionary <string, string>(); __module_dashboard_Values__["classview"] = Dashboard; Utils.MakeFileFromModel("openerp_class_view.xml.model", DirectoryInfo_Base.FullName + "/" + ClassicName + "_dashboard_view.xml", __module_dashboard_Values__); Dictionary <string, string> __module_Values__ = new Dictionary <string, string>(); __module_Values__["classview"] = Menus; Utils.MakeFileFromModel("openerp_class_view.xml.model", DirectoryInfo_Base.FullName + "/" + ClassicName + "_view.xml", __module_Values__); string imports = ""; string report_imports = ""; string wizard_imports = ""; string updateXml = ""; string demoXml = ""; string images = ""; string test = ""; string depends = ""; foreach (ClassData classData in ListOfClass) { classData.GetLinkData(); } string updateWorkflowXml = ""; string updateReportXml = ""; string updateWizardXml = ""; string updateDataXml = ""; string updateProcessXml = ""; foreach (ClassData classData in ListOfClass) { if (!((classData.AssociationClass) && (classData.ListOfProperties.Count <= 1))) { classData.Create(); imports += "import " + ClassicName + "_" + classData.Name + "\r\n"; report_imports += "import report_" + ClassicName + "_" + classData.Name + "\r\n"; wizard_imports += "import wizard_" + ClassicName + "_" + classData.Name + "\r\n"; updateXml += "'view/" + ClassicName + "_" + classData.Name + "_view.xml',\r\n\t"; updateReportXml += "'report/report_" + ClassicName + "_" + classData.Name + ".xml',\r\n\t"; updateWizardXml += "'wizard/wizard_" + ClassicName + "_" + classData.Name + ".xml',\r\n\t"; if (classData.StateWorkflow) { updateWorkflowXml += "'workflow/workflow_" + ClassicName + "_" + classData.Name + ".xml',\r\n\t"; } if (classData.CodeProperty != null) { updateDataXml += "'data/data_" + ClassicName + "_" + classData.Name + ".xml',\r\n\t"; } if (classData.Process) { updateProcessXml += "'process/process_" + ClassicName + "_" + classData.Name + ".xml',\r\n\t"; } Program.Form.SetTaskText(Program.Form.GetTaskText() + " \\ " + classData.Name); Application.DoEvents(); } } imports += "\r\n"; imports += "import report\r\n"; imports += "import wizard\r\n"; updateXml += updateReportXml; updateXml += updateWizardXml; updateXml += updateWorkflowXml; updateXml += updateDataXml; updateXml += updateProcessXml; if (updateXml.Length > 3) { updateXml = updateXml.Substring(0, updateXml.Length - 3); } if (Depends.Count > 0) { foreach (string depend in Depends) { depends += "\r\n\t'" + depend + "',"; } depends += "\r\n\t"; } this.Data["imports"] = imports; this.Data["report_imports"] = report_imports; this.Data["wizard_imports"] = wizard_imports; this.Data["update_xml"] = updateXml; this.Data["demo_xml"] = demoXml; this.Data["images"] = images; this.Data["category"] = Category; this.Data["depends"] = depends; this.Data["test"] = test; PyGenerator.CreateInit(this); PyGenerator.CreateReportInit(this); PyGenerator.CreateWizardInit(this); PyGenerator.CreateOpenERP(this); XmlGenerator.CreateView(this); foreach (ClassData classData in ListOfClass) { if (classData.Process) { XmlGenerator.CreateProcess(classData); } } PoGenerator.CreateLanguage(this); Utils.CopyIcons(DirectoryInfo_Base.FullName + "/images/"); Utils.CopyIcon(DirectoryInfo_Static.FullName); return((new DirectoryInfo(AddonPath + "/" + NameDirectory)).FullName); }