diff --git a/bt5/erp5_base/ActionTemplateItem/portal_types/System%20Preference/organisation_preference.xml b/bt5/erp5_base/ActionTemplateItem/portal_types/System%20Preference/organisation_preference.xml new file mode 100644 index 0000000000000000000000000000000000000000..78ef096b7c8c8ff61933deb87ab105b70ef278fc --- /dev/null +++ b/bt5/erp5_base/ActionTemplateItem/portal_types/System%20Preference/organisation_preference.xml @@ -0,0 +1,81 @@ + + + + + + + + + + action + + AAAAAAAAAAI= + + + + categories + + + action_type/object_view + + + + + category + object_view + + + condition + + + + description + + + + + + icon + + + + id + organisation_preference + + + permissions + + + View + + + + + priority + 10.0 + + + title + Organisation + + + visible + 1 + + + + + + + + + + + + text + string:${object_url}/SystemPreference_viewOrganisation + + + + + diff --git a/bt5/erp5_base/PropertySheetTemplateItem/portal_property_sheets/OrganisationPreference.xml b/bt5/erp5_base/PropertySheetTemplateItem/portal_property_sheets/OrganisationPreference.xml new file mode 100644 index 0000000000000000000000000000000000000000..61f2a95f4280eea252a91a5c635cacc0577567ea --- /dev/null +++ b/bt5/erp5_base/PropertySheetTemplateItem/portal_property_sheets/OrganisationPreference.xml @@ -0,0 +1,66 @@ + + + + + + + + + + _count + + AAAAAAAAAAI= + + + + _mt_index + + AAAAAAAAAAM= + + + + _tree + + AAAAAAAAAAQ= + + + + description + + + + + + id + OrganisationPreference + + + portal_type + Property Sheet + + + + + + + + + 0 + + + + + + + + + + + + + + + + + + diff --git a/bt5/erp5_base/PropertySheetTemplateItem/portal_property_sheets/OrganisationPreference/preferred_establishment_organisation_role_property.xml b/bt5/erp5_base/PropertySheetTemplateItem/portal_property_sheets/OrganisationPreference/preferred_establishment_organisation_role_property.xml new file mode 100644 index 0000000000000000000000000000000000000000..25d48d77f5bb3fcb87fff0a80caf734f76b511c7 --- /dev/null +++ b/bt5/erp5_base/PropertySheetTemplateItem/portal_property_sheets/OrganisationPreference/preferred_establishment_organisation_role_property.xml @@ -0,0 +1,42 @@ + + + + + + + + + + categories + + + elementary_type/tokens + + + + + description + + + + + + id + preferred_establishment_organisation_role_property + + + multivalued + 1 + + + portal_type + Standard Property + + + preference + 1 + + + + + diff --git a/bt5/erp5_base/PropertySheetTemplateItem/portal_property_sheets/OrganisationPreference/preferred_head_office_organisation_role_property.xml b/bt5/erp5_base/PropertySheetTemplateItem/portal_property_sheets/OrganisationPreference/preferred_head_office_organisation_role_property.xml new file mode 100644 index 0000000000000000000000000000000000000000..c49f02117699e967562821ae9526c75028d128ab --- /dev/null +++ b/bt5/erp5_base/PropertySheetTemplateItem/portal_property_sheets/OrganisationPreference/preferred_head_office_organisation_role_property.xml @@ -0,0 +1,44 @@ + + + + + + + + + + categories + + + elementary_type/tokens + + + + + description + + + + + + id + preferred_head_office_organisation_role_property + + + portal_type + Standard Property + + + preference + 1 + + + property_default + + + + + + + + diff --git a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Organisation_getHeadOfficeValue.py b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Organisation_getHeadOfficeValue.py new file mode 100644 index 0000000000000000000000000000000000000000..5deb6ff9ece3ee818350c38d3f53cbe33a5026eb --- /dev/null +++ b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Organisation_getHeadOfficeValue.py @@ -0,0 +1,28 @@ +# Gets the Head Office Organisation of a Business Group +# The Head Office is the Organisation whose one of its roles matches the role +# category defined as "Head Office Role" in the "Organisation" system preferences +portal = context.getPortalObject() +group_base_category = portal.portal_categories.group + +organisation_group = context.getGroupValue() +if organisation_group is None: + return None + +head_office_category = portal.portal_preferences.getPreferredHeadOfficeOrganisationRole() + +head_office_list = [] + +while len(head_office_list) == 0 and organisation_group != group_base_category: + organisation_list = portal.portal_catalog(portal_type="Organisation", group_uid=organisation_group.getUid()) + + head_office_list = [organisation.getObject() for organisation in organisation_list + if head_office_category in organisation.getRoleList()] + + organisation_group = organisation_group.getParentValue() + +if len(head_office_list) == 0: + return None +if len(head_office_list) == 1: + return head_office_list.pop() +else: + return head_office_list diff --git a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Organisation_getHeadOfficeValue.xml b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Organisation_getHeadOfficeValue.xml new file mode 100644 index 0000000000000000000000000000000000000000..848f67dbc184869de0bc6302c41dc9dc91ab99f9 --- /dev/null +++ b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Organisation_getHeadOfficeValue.xml @@ -0,0 +1,62 @@ + + + + + + + + + + Script_magic + 3 + + + _bind_names + + + + + + + + + + _asgns + + + + name_container + container + + + name_context + context + + + name_m_self + script + + + name_subpath + traverse_subpath + + + + + + + + + + + _params + + + + id + Organisation_getHeadOfficeValue + + + + + diff --git a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/SystemPreference_viewOrganisation.xml b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/SystemPreference_viewOrganisation.xml new file mode 100644 index 0000000000000000000000000000000000000000..65f9930de5c853fec93f72f7d7a4b98ef8942ac1 --- /dev/null +++ b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/SystemPreference_viewOrganisation.xml @@ -0,0 +1,132 @@ + + + + + + + + + + _objects + + + + + + action + Base_edit + + + description + + + + edit_order + + + + + + encoding + UTF-8 + + + enctype + + + + group_list + + + left + right + center + bottom + hidden + + + + + groups + + + + bottom + + + + + + center + + + + + + hidden + + + + + + left + + + my_preferred_head_office_organisation_role + my_preferred_establishment_organisation_role + + + + + right + + + + + + + + + id + SystemPreference_viewOrganisation + + + method + POST + + + name + Preference_viewOrganisation + + + pt + form_view + + + row_length + 4 + + + stored_encoding + UTF-8 + + + title + Organisation + + + unicode_mode + 0 + + + update_action + + + + update_action_title + + + + + + diff --git a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/SystemPreference_viewOrganisation/my_preferred_establishment_organisation_role.xml b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/SystemPreference_viewOrganisation/my_preferred_establishment_organisation_role.xml new file mode 100644 index 0000000000000000000000000000000000000000..d993ae097ad0fe081fea8f3c8d8f604c2a9a1303 --- /dev/null +++ b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/SystemPreference_viewOrganisation/my_preferred_establishment_organisation_role.xml @@ -0,0 +1,110 @@ + + + + + + + + + + delegated_list + + + items + title + + + + + id + my_preferred_establishment_organisation_role + + + message_values + + + + external_validator_failed + The input failed the external validator. + + + + + + overrides + + + + field_id + + + + form_id + + + + + + + tales + + + + field_id + + + + form_id + + + + items + + AAAAAAAAAAI= + + + + + + + values + + + + field_id + my_multi_list_field + + + form_id + Base_viewFieldLibrary + + + items + + + + + + title + Establishment Roles + + + + + + + + + + + + + + + _text + python: getattr(here.portal_categories.role, preferences.getPreference(\'preferred_category_child_item_list_method_id\', \'getCategoryChildCompactLogicalPathItemList\'))(local_sort_id=(\'int_index\', \'translated_title\'), checked_permission=\'View\') + + + + + diff --git a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/SystemPreference_viewOrganisation/my_preferred_head_office_organisation_role.xml b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/SystemPreference_viewOrganisation/my_preferred_head_office_organisation_role.xml new file mode 100644 index 0000000000000000000000000000000000000000..79aaa92fc426e8a608bf3f28e186fdc7688ea981 --- /dev/null +++ b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/SystemPreference_viewOrganisation/my_preferred_head_office_organisation_role.xml @@ -0,0 +1,110 @@ + + + + + + + + + + delegated_list + + + items + title + + + + + id + my_preferred_head_office_organisation_role + + + message_values + + + + external_validator_failed + The input failed the external validator. + + + + + + overrides + + + + field_id + + + + form_id + + + + + + + tales + + + + field_id + + + + form_id + + + + items + + AAAAAAAAAAI= + + + + + + + values + + + + field_id + my_view_mode_category + + + form_id + Base_viewFieldLibrary + + + items + + + + + + title + Head Office Role + + + + + + + + + + + + + + + _text + python: getattr(here.portal_categories.role, preferences.getPreference(\'preferred_category_child_item_list_method_id\', \'getCategoryChildCompactLogicalPathItemList\'))(local_sort_id=(\'int_index\', \'translated_title\'), checked_permission=\'View\') + + + + + diff --git a/bt5/erp5_base/bt/template_action_path_list b/bt5/erp5_base/bt/template_action_path_list index 59dcfeea6ae69a3823e1da1221a2c3ce9305fa0b..7db0aeaa2c4dc957791a3949e54b4ed416293a74 100644 --- a/bt5/erp5_base/bt/template_action_path_list +++ b/bt5/erp5_base/bt/template_action_path_list @@ -100,6 +100,7 @@ Rounding Model | predicate_view Rounding Model | view Rounding Tool | view Split Movement Group | view +System Preference | organisation_preference Telephone | change_function Telephone | view Title Movement Group | view diff --git a/bt5/erp5_base/bt/template_property_sheet_id_list b/bt5/erp5_base/bt/template_property_sheet_id_list index c30db5a11a06a0e2261407ec6f6e5906e767dafa..f3539dc1fbbf61c44fb01a453e83a75e2625e25e 100644 --- a/bt5/erp5_base/bt/template_property_sheet_id_list +++ b/bt5/erp5_base/bt/template_property_sheet_id_list @@ -1 +1,2 @@ +OrganisationPreference PreviousCausalityMovementGroup \ No newline at end of file