]> git.mxchange.org Git - addressbook-war.git/commitdiff
Please cherry-pick:
authorRoland Häder <roland@mxchange.org>
Thu, 3 Nov 2022 12:51:54 +0000 (13:51 +0100)
committerRoland Häder <roland@mxchange.org>
Thu, 3 Nov 2022 12:58:08 +0000 (13:58 +0100)
- moved related files for jcontact-business-core to own "business" folder
- updated navigation rules accordingly

16 files changed:
web/WEB-INF/faces-config.xml
web/WEB-INF/templates/admin/business/branch_office/admin_form_branch_office_data.tpl [new file with mode: 0644]
web/WEB-INF/templates/admin/business/branch_office/admin_form_branch_opening_time.tpl [new file with mode: 0644]
web/WEB-INF/templates/admin/business/department/admin_form_department_data.tpl [new file with mode: 0644]
web/WEB-INF/templates/admin/business/employee/admin_form_employee_data.tpl [new file with mode: 0644]
web/WEB-INF/templates/admin/business/headquarter/admin_form_headquarter_data.tpl [new file with mode: 0644]
web/WEB-INF/templates/admin/business/headquarter/admin_form_headquarter_opening_time.tpl [new file with mode: 0644]
web/WEB-INF/templates/admin/business/opening_time/admin_form_opening_time.tpl [new file with mode: 0644]
web/admin/business/basic_data/admin_basic_data_list.xhtml [new file with mode: 0644]
web/admin/business/branch_office/admin_branch_office_edit.xhtml [new file with mode: 0644]
web/admin/business/branch_office/admin_branch_office_list.xhtml [new file with mode: 0644]
web/admin/business/department/admin_department_edit.xhtml [new file with mode: 0644]
web/admin/business/department/admin_department_list.xhtml [new file with mode: 0644]
web/admin/business/employee/admin_employee_list.xhtml [new file with mode: 0644]
web/admin/business/headquarter/admin_headquarter_list.xhtml [new file with mode: 0644]
web/admin/business/opening_time/admin_opening_time_list.xhtml [new file with mode: 0644]

index 4262b9098db31c606ee691549cfdeceda4b6599f..700a3a1bb23ffca459f5e6c0e93310fc60513d3b 100644 (file)
                        <to-view-id>/admin/contact/admin_contact_export.xhtml</to-view-id>
                </navigation-case>
                <navigation-case>
-                       <from-outcome>admin_list_basic_company_data</from-outcome>
-                       <to-view-id>/admin/basic_company_data/admin_basic_company_data_list.xhtml</to-view-id>
+                       <from-outcome>admin_list_headquarters</from-outcome>
+                       <to-view-id>/admin/business/headquarter/admin_headquarter_list.xhtml</to-view-id>
+               </navigation-case>
+               <navigation-case>
+                       <from-outcome>admin_list_basic_data</from-outcome>
+                       <to-view-id>/admin/business/basic_data/admin_basic_data_list.xhtml</to-view-id>
                </navigation-case>
                <navigation-case>
                        <from-outcome>admin_list_branch_offices</from-outcome>
-                       <to-view-id>/admin/branch_offices/admin_branch_offices_list.xhtml</to-view-id>
+                       <to-view-id>/admin/business/branch_office/admin_branch_office_list.xhtml</to-view-id>
+               </navigation-case>
+               <navigation-case>
+                       <from-outcome>admin_list_departments</from-outcome>
+                       <to-view-id>/admin/business/department/admin_department_list.xhtml</to-view-id>
+               </navigation-case>
+               <navigation-case>
+                       <from-outcome>admin_list_opening_times</from-outcome>
+                       <to-view-id>/admin/business/opening_time/admin_opening_time_list.xhtml</to-view-id>
+               </navigation-case>
+               <navigation-case>
+                       <from-outcome>admin_list_employees</from-outcome>
+                       <to-view-id>/admin/business/employee/admin_employee_list.xhtml</to-view-id>
                </navigation-case>
                <navigation-case>
                        <from-outcome>admin_list_user</from-outcome>
                        <from-outcome>user_contact_data_saved</from-outcome>
                        <to-view-id>/user/login_contact_data_saved.xhtml</to-view-id>
                </navigation-case>
-               <navigation-case>
-                       <from-outcome>admin_delete_product</from-outcome>
-                       <to-view-id>/admin/admin_product_delete.xhtml</to-view-id>
-               </navigation-case>
        </navigation-rule>
        <navigation-rule>
                <from-view-id>/user/login_user_change_personal_data.xhtml</from-view-id>
                </navigation-case>
        </navigation-rule>
        <navigation-rule>
-               <from-view-id>/admin/basic_company_data/admin_basic_company_data_list.xhtml</from-view-id>
+               <from-view-id>/admin/business/basic_data/admin_basic_data_list.xhtml</from-view-id>
                <navigation-case>
                        <from-outcome>admin_show_basic_data</from-outcome>
-                       <to-view-id>/admin/basic_company_data/admin_basic_company_data_show.xhtml</to-view-id>
+                       <to-view-id>/admin/business/basic_data/admin_basic_data_show.xhtml</to-view-id>
                </navigation-case>
                <navigation-case>
                        <from-outcome>admin_edit_basic_data</from-outcome>
-                       <to-view-id>/admin/basic_company_data/admin_basic_company_data_edit.xhtml</to-view-id>
+                       <to-view-id>/admin/business/basic_data/admin_basic_data_edit.xhtml</to-view-id>
                </navigation-case>
                <navigation-case>
                        <from-outcome>admin_delete_basic_data</from-outcome>
-                       <to-view-id>/admin/basic_company_data/admin_basic_company_data_delete.xhtml</to-view-id>
+                       <to-view-id>/admin/business/basic_data/admin_basic_data_delete.xhtml</to-view-id>
+               </navigation-case>
+               <navigation-case>
+                       <from-outcome>admin_assign_basic_data_contact</from-outcome>
+                       <to-view-id>/admin/business/basic_data/admin_basic_data_assign_contact.xhtml</to-view-id>
+               </navigation-case>
+               <navigation-case>
+                       <from-outcome>admin_assign_basic_data_founder</from-outcome>
+                       <to-view-id>/admin/business/basic_data/admin_basic_data_assign_founder.xhtml</to-view-id>
+               </navigation-case>
+               <navigation-case>
+                       <from-outcome>admin_assign_basic_data_owner</from-outcome>
+                       <to-view-id>/admin/business/basic_data/admin_basic_data_assign_owner.xhtml</to-view-id>
+               </navigation-case>
+               <navigation-case>
+                       <from-outcome>admin_show_employee</from-outcome>
+                       <to-view-id>/admin/business/employee/admin_employee_show.xhtml</to-view-id>
+               </navigation-case>
+               <navigation-case>
+                       <from-outcome>admin_assign_basic_data_employee</from-outcome>
+                       <to-view-id>/admin/business/basic_data/admin_basic_data_assign_employee.xhtml</to-view-id>
+               </navigation-case>
+       </navigation-rule>
+       <navigation-rule>
+               <from-view-id>/admin/business/headquarter/admin_headquarter_list.xhtml</from-view-id>
+               <navigation-case>
+                       <from-outcome>admin_show_headquarter</from-outcome>
+                       <to-view-id>/admin/business/headquarter/admin_headquarter_show.xhtml</to-view-id>
+               </navigation-case>
+               <navigation-case>
+                       <from-outcome>admin_edit_headquarter</from-outcome>
+                       <to-view-id>/admin/business/headquarter/admin_headquarter_edit.xhtml</to-view-id>
                </navigation-case>
                <navigation-case>
-                       <from-outcome>admin_assign_basic_company_data_contact</from-outcome>
-                       <to-view-id>/admin/basic_company_data/admin_basic_company_data_assign_contact.xhtml</to-view-id>
+                       <from-outcome>admin_delete_headquarter</from-outcome>
+                       <to-view-id>/admin/business/headquarter/admin_headquarter_delete.xhtml</to-view-id>
                </navigation-case>
                <navigation-case>
-                       <from-outcome>admin_assign_basic_company_data_founder</from-outcome>
-                       <to-view-id>/admin/basic_company_data/admin_basic_company_data_assign_founder.xhtml</to-view-id>
+                       <from-outcome>admin_show_user</from-outcome>
+                       <to-view-id>/admin/user/admin_user_show.xhtml</to-view-id>
                </navigation-case>
                <navigation-case>
-                       <from-outcome>admin_assign_basic_company_data_owner</from-outcome>
-                       <to-view-id>/admin/basic_company_data/admin_basic_company_data_assign_owner.xhtml</to-view-id>
+                       <from-outcome>admin_assign_headquarter_owner</from-outcome>
+                       <to-view-id>/admin/business/headquarter/admin_headquarter_assign_owner.xhtml</to-view-id>
                </navigation-case>
                <navigation-case>
-                       <from-outcome>admin_show_business_employee</from-outcome>
-                       <to-view-id>/admin/company_employee/admin_company_employee_show.xhtml</to-view-id>
+                       <from-outcome>admin_show_contact</from-outcome>
+                       <to-view-id>/admin/contact/admin_contact_show.xhtml</to-view-id>
                </navigation-case>
                <navigation-case>
-                       <from-outcome>admin_assign_basic_company_data_employee</from-outcome>
-                       <to-view-id>/admin/basic_company_data/admin_basic_company_data_assign_employee.xhtml</to-view-id>
+                       <from-outcome>admin_assign_headquarter_contact</from-outcome>
+                       <to-view-id>/admin/business/headquarter/admin_headquarter_assign_contact.xhtml</to-view-id>
                </navigation-case>
        </navigation-rule>
        <navigation-rule>
-               <from-view-id>/admin/branch_offices/admin_branch_offices_list.xhtml</from-view-id>
+               <from-view-id>/admin/business/branch_office/admin_branch_office_list.xhtml</from-view-id>
                <navigation-case>
                        <from-outcome>admin_show_branch_office</from-outcome>
-                       <to-view-id>/admin/branch_offices/admin_branch_office_show.xhtml</to-view-id>
+                       <to-view-id>/admin/business/branch_office/admin_branch_office_show.xhtml</to-view-id>
                </navigation-case>
                <navigation-case>
                        <from-outcome>admin_edit_branch_office</from-outcome>
-                       <to-view-id>/admin/branch_offices/admin_branch_office_edit.xhtml</to-view-id>
+                       <to-view-id>/admin/business/branch_office/admin_branch_office_edit.xhtml</to-view-id>
                </navigation-case>
                <navigation-case>
                        <from-outcome>admin_delete_branch_office</from-outcome>
-                       <to-view-id>/admin/branch_offices/admin_branch_office_delete.xhtml</to-view-id>
+                       <to-view-id>/admin/business/branch_office/admin_branch_office_delete.xhtml</to-view-id>
                </navigation-case>
                <navigation-case>
                        <from-outcome>admin_show_user</from-outcome>
                </navigation-case>
                <navigation-case>
                        <from-outcome>admin_assign_branch_office_owner</from-outcome>
-                       <to-view-id>/admin/branch_offices/admin_branch_office_assign_owner.xhtml</to-view-id>
+                       <to-view-id>/admin/business/branch_office/admin_branch_office_assign_owner.xhtml</to-view-id>
                </navigation-case>
                <navigation-case>
                        <from-outcome>admin_show_basic_data</from-outcome>
-                       <to-view-id>/admin/basic_company_data/admin_basic_company_data_show.xhtml</to-view-id>
+                       <to-view-id>/admin/business/basic_data/admin_basic_data_show.xhtml</to-view-id>
+               </navigation-case>
+               <navigation-case>
+                       <from-outcome>admin_show_contact</from-outcome>
+                       <to-view-id>/admin/contact/admin_contact_show.xhtml</to-view-id>
+               </navigation-case>
+               <navigation-case>
+                       <from-outcome>admin_assign_branch_office_contact</from-outcome>
+                       <to-view-id>/admin/business/branch_office/admin_branch_office_assign_contact.xhtml</to-view-id>
+               </navigation-case>
+               <navigation-case>
+                       <from-outcome>admin_show_fax</from-outcome>
+                       <to-view-id>/admin/fax/admin_fax_show.xhtml</to-view-id>
                </navigation-case>
                <navigation-case>
-                       <from-outcome>admin_show_business_employee</from-outcome>
-                       <to-view-id>/admin/company_employee/admin_company_employee_show.xhtml</to-view-id>
+                       <from-outcome>admin_show_landline</from-outcome>
+                       <to-view-id>/admin/landline/admin_landline_show.xhtml</to-view-id>
                </navigation-case>
+       </navigation-rule>
+       <navigation-rule>
+               <from-view-id>/admin/business/branch_office/admin_branch_office_edit.xhtml</from-view-id>
+               <navigation-case>
+                       <from-outcome>admin_list_branch_offices</from-outcome>
+                       <to-view-id>/admin/business/branch_office/admin_branch_office_list.xhtml</to-view-id>
+                       <redirect></redirect>
+               </navigation-case>
+       </navigation-rule>
+       <navigation-rule>
+               <from-view-id>/admin/business/department/admin_department_list.xhtml</from-view-id>
+               <navigation-case>
+                       <from-outcome>admin_show_department</from-outcome>
+                       <to-view-id>/admin/business/department/admin_department_show.xhtml</to-view-id>
+               </navigation-case>
+               <navigation-case>
+                       <from-outcome>admin_edit_department</from-outcome>
+                       <to-view-id>/admin/business/department/admin_department_edit.xhtml</to-view-id>
+               </navigation-case>
+               <navigation-case>
+                       <from-outcome>admin_delete_department</from-outcome>
+                       <to-view-id>/admin/business/department/admin_department_delete.xhtml</to-view-id>
+               </navigation-case>
+               <navigation-case>
+                       <from-outcome>admin_show_branch_office</from-outcome>
+                       <to-view-id>/admin/business/branch_office/admin_branch_office_show.xhtml</to-view-id>
+               </navigation-case>
+               <navigation-case>
+                       <from-outcome>admin_assign_department_branch_office</from-outcome>
+                       <to-view-id>/admin/business/department/admin_assign_department_branch_office.xhtml</to-view-id>
+               </navigation-case>
+               <navigation-case>
+                       <from-outcome>admin_show_contact</from-outcome>
+                       <to-view-id>/admin/contact/admin_contact_show.xhtml</to-view-id>
+               </navigation-case>
+               <navigation-case>
+                       <from-outcome>admin_assign_department_lead</from-outcome>
+                       <to-view-id>/admin/business/department/admin_assign_department_lead.xhtml</to-view-id>
+               </navigation-case>
+               <navigation-case>
+                       <from-outcome>admin_assign_department_user</from-outcome>
+                       <to-view-id>/admin/business/department/admin_assign_department_user.xhtml</to-view-id>
+               </navigation-case>
+               <navigation-case>
+                       <from-outcome>admin_show_basic_data</from-outcome>
+                       <to-view-id>/admin/business/basic_data/admin_basic_data_show.xhtml</to-view-id>
+               </navigation-case>
+       </navigation-rule>
+       <navigation-rule>
+               <from-view-id>/admin/business/department/admin_department_edit.xhtml</from-view-id>
+               <navigation-case>
+                       <from-outcome>admin_list_departments</from-outcome>
+                       <to-view-id>/admin/business/department/admin_department_list.xhtml</to-view-id>
+                       <redirect></redirect>
+               </navigation-case>
+       </navigation-rule>
+       <navigation-rule>
+               <from-view-id>/admin/business/employee/admin_employee_list.xhtml</from-view-id>
+               <navigation-case>
+                       <from-outcome>admin_show_employee</from-outcome>
+                       <to-view-id>/admin/business/employee/admin_employee_show.xhtml</to-view-id>
+               </navigation-case>
+               <navigation-case>
+                       <from-outcome>admin_edit_employee</from-outcome>
+                       <to-view-id>/admin/business/employee/admin_employee_edit.xhtml</to-view-id>
+               </navigation-case>
+               <navigation-case>
+                       <from-outcome>admin_delete_employee</from-outcome>
+                       <to-view-id>/admin/business/employee/admin_employee_delete.xhtml</to-view-id>
+               </navigation-case>
+               <navigation-case>
+                       <from-outcome>admin_show_branch_office</from-outcome>
+                       <to-view-id>/admin/business/branch_office/admin_branch_office_show.xhtml</to-view-id>
+               </navigation-case>
+               <navigation-case>
+                       <from-outcome>admin_assign_user_owner</from-outcome>
+                       <to-view-id>/admin/business/employee/admin_assign_employee_user.xhtml</to-view-id>
+               </navigation-case>
+               <navigation-case>
+                       <from-outcome>admin_assign_branch_office</from-outcome>
+                       <to-view-id>/admin/business/employee/admin_assign_employee_branch_office.xhtml</to-view-id>
+               </navigation-case>
+               <navigation-case>
+                       <from-outcome>admin_show_basic_data</from-outcome>
+                       <to-view-id>/admin/business/basic_data/admin_basic_data_show.xhtml</to-view-id>
+               </navigation-case>
+       </navigation-rule>
+       <navigation-rule>
+               <from-view-id>/admin/business/opening_time/admin_opening_time_list.xhtml</from-view-id>
+               <navigation-case>
+                       <from-outcome>admin_show_opening_time</from-outcome>
+                       <to-view-id>/admin/business/opening_time/admin_opening_time_show.xhtml</to-view-id>
+               </navigation-case>
+               <navigation-case>
+                       <from-outcome>admin_edit_opening_time</from-outcome>
+                       <to-view-id>/admin/business/opening_time/admin_opening_time_edit.xhtml</to-view-id>
+               </navigation-case>
+               <navigation-case>
+                       <from-outcome>admin_delete_opening_time</from-outcome>
+                       <to-view-id>/admin/business/opening_time/admin_opening_time_delete.xhtml</to-view-id>
+               </navigation-case>
+       </navigation-rule>
+       <navigation-rule>
+               <from-view-id>/admin/financial/receipt_item/admin_receipt_item_edit.xhtml</from-view-id>
                <navigation-case>
-                       <from-outcome>admin_assign_branch_office_employee</from-outcome>
-                       <to-view-id>/admin/branch_offices/admin_branch_office_assign_employee.xhtml</to-view-id>
+                       <from-outcome>admin_list_receipt_items</from-outcome>
+                       <to-view-id>/admin/financial/receipt_item/admin_receipt_item_list.xhtml</to-view-id>
+                       <redirect></redirect>
                </navigation-case>
        </navigation-rule>
        <!--
diff --git a/web/WEB-INF/templates/admin/business/branch_office/admin_form_branch_office_data.tpl b/web/WEB-INF/templates/admin/business/branch_office/admin_form_branch_office_data.tpl
new file mode 100644 (file)
index 0000000..45efc8a
--- /dev/null
@@ -0,0 +1,187 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<ui:composition
+       xmlns="http://www.w3.org/1999/xhtml"
+       xmlns:core="http://mxchange.org/jsf/core/widgets"
+       xmlns:validator="http://mxchange.org/jsf/core/validators"
+       xmlns:f="http://xmlns.jcp.org/jsf/core"
+       xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+       xmlns:p="http://primefaces.org/ui"
+       >
+
+       <p:fieldset
+               legend="#{msg.ADMIN_BRANCH_OFFICE_DATA_LEGEND}"
+               title="#{msg.ADMIN_BRANCH_OFFICE_DATA_LEGEND_TITLE}"
+               >
+               <p:panelGrid
+                       layout="grid"
+                       columns="2"
+                       columnClasses="ui-grid-col-4,ui-grid-col-8"
+                       styleClass="ui-noborder"
+                       >
+                       <p:outputLabel for="branchCompany" value="#{msg.ADMIN_ASSIGN_BASIC_DATA_BRANCH_OFFICE}" />
+                       <p:selectOneMenu
+                               id="branchCompany"
+                               value="#{adminBranchOfficeActionController.branchCompany}"
+                               filter="true"
+                               filterMatchMode="contains"
+                               required="true"
+                               requiredMessage="#{msg.ADMIN_BRANCH_OFFICE_REQUIRED}"
+                               >
+
+                               <f:converter converterId="BasicCompanyDataConverter" />
+
+                               <f:selectItem itemValue="#{null}" itemLabel="#{msg.PLEASE_SELECT}" noSelectionOption="true" itemDisabled="true" />
+
+                               <f:selectItems
+                                       value="#{basicDataListController.allBasicData}"
+                                       var="basicData"
+                                       itemValue="#{basicData}"
+                                       itemLabel="#{beanHelper.renderBasicData(basicData, true, false)}"
+                                       />
+                       </p:selectOneMenu>
+
+                       <p:outputLabel for="branchContactEmployee" value="#{msg.ADMIN_ASSIGN_BRANCH_OFFICE_CONTACT_EMPLOYEE}" />
+                       <p:selectOneMenu
+                               id="branchContactEmployee"
+                               value="#{adminBranchOfficeActionController.branchContactEmployee}"
+                               filter="true"
+                               filterMatchMode="contains"
+                               >
+
+                               <f:converter converterId="ContactConverter" />
+
+                               <f:selectItem
+                                       itemValue="#{null}"
+                                       itemLabel="#{msg.NONE_SELECTED}"
+                                       />
+
+                               <f:selectItems
+                                       value="#{contactListController.allContacts}"
+                                       var="contact"
+                                       itemValue="#{contact}"
+                                       itemLabel="#{beanHelper.renderContact(contact)}"
+                                       />
+                       </p:selectOneMenu>
+
+                       <p:outputLabel for="branchOwnerEmployee" value="#{msg.ADMIN_ASSIGN_BRANCH_OFFICE_OWNER}" />
+                       <p:selectOneMenu
+                               id="branchOwnerEmployee"
+                               value="#{adminBranchOfficeActionController.branchOwnerEmployee}"
+                               filter="true"
+                               filterMatchMode="contains"
+                               >
+
+                               <f:converter converterId="ContactConverter" />
+
+                               <f:selectItem
+                                       itemValue="#{null}"
+                                       itemLabel="#{msg.NONE_SELECTED}"
+                                       />
+
+                               <f:selectItems
+                                       value="#{contactListController.allContacts}"
+                                       var="contact"
+                                       itemValue="#{contact}"
+                                       itemLabel="#{beanHelper.renderContact(contact)}"
+                                       />
+                       </p:selectOneMenu>
+
+                       <p:outputLabel for="branchUserOwner" value="#{msg.ADMIN_ASSIGN_BRANCH_OFFICE_USER_OWNER}" />
+                       <p:selectOneMenu
+                               id="branchUserOwner"
+                               value="#{adminBranchOfficeActionController.branchUserOwner}"
+                               filter="true"
+                               filterMatchMode="contains"
+                               >
+
+                               <f:converter converterId="UserConverter" />
+
+                               <f:selectItem
+                                       itemValue="#{null}"
+                                       itemLabel="#{msg.NONE_SELECTED}"
+                                       />
+
+                               <f:selectItems
+                                       value="#{userListController.allUsers}"
+                                       var="branchUserOwner"
+                                       itemValue="#{branchUserOwner}"
+                                       itemLabel="#{beanHelper.renderContact(branchUserOwner.userContact)} (#{branchUserOwner.userName})"
+                                       />
+                       </p:selectOneMenu>
+
+                       <p:outputLabel for="branchEmailAddress" value="#{msg.ADMIN_ENTER_BRANCH_OFFICE_EMAIL_ADDRESS}" />
+                       <p:inputText
+                               id="branchEmailAddress"
+                               size="40"
+                               maxlength="255"
+                               value="#{adminBranchOfficeActionController.branchEmailAddress}"
+                               validatorMessage="#{msg.ENTERED_EMAIL_ADDRESS_IS_INVALID}"
+                               >
+                               <validator:branchOfficeEmailAddressValidator />
+                       </p:inputText>
+
+                       <p:outputLabel for="landLineCountry" value="#{msg.ADMIN_ENTER_BRANCH_OFFICE_LAND_LINE_NUMBER}" />
+                       <core:inputLandLineNumberPanelGrid targetController="#{adminBranchOfficeActionController}" />
+
+                       <p:outputLabel for="faxCountry" value="#{msg.ADMIN_ENTER_BRANCH_OFFICE_FAX_NUMBER}" />
+                       <core:inputFaxNumberPanelGrid targetController="#{adminBranchOfficeActionController}" />
+
+                       <p:outputLabel for="branchNumber" value="#{msg.ADMIN_ENTER_BRANCH_OFFICE_NUMBER}" />
+                       <p:inputText
+                               id="branchNumber"
+                               size="5"
+                               maxlength="10"
+                               value="#{adminBranchOfficeActionController.branchNumber}"
+                               />
+               </p:panelGrid>
+       </p:fieldset>
+
+       <p:fieldset
+               legend="#{msg.ADMIN_BRANCH_OFFICE_ADDRESS_LEGEND}"
+               title="#{msg.ADMIN_BRANCH_OFFICE_ADDRESS_LEGEND_TITLE}"
+               >
+               <p:panelGrid
+                       layout="grid"
+                       columns="2"
+                       columnClasses="ui-grid-col-4,ui-grid-col-8"
+                       styleClass="ui-noborder"
+                       >
+                       <p:outputLabel for="branchStreet" value="#{msg.ADMIN_DATA_STREET_NAME}" />
+                       <p:inputText id="branchStreet" size="20" maxlength="255" value="#{adminBranchOfficeActionController.branchStreet}" required="true" requiredMessage="#{msg.ADMIN_BRANCH_OFFICE_STREET_NAME_REQUIRED}" />
+
+                       <p:outputLabel for="branchHouseNumber" value="#{msg.ADMIN_DATA_HOUSE_NUMBER}" />
+                       <p:inputText id="branchHouseNumber" size="3" maxlength="5" value="#{adminBranchOfficeActionController.branchHouseNumber}" validatorMessage="#{msg.ENTERED_HOUSE_NUMBER_INVALID}" required="true" requiredMessage="#{msg.ADMIN_BRANCH_OFFICE_HOUSE_NUMBER_REQUIRED}">
+                               <f:validateLongRange minimum="1" maximum="500" />
+                       </p:inputText>
+
+                       <p:outputLabel for="branchLastHouseNumber" value="#{msg.ADMIN_DATA_LAST_HOUSE_NUMBER}" />
+                       <p:inputText id="branchLastHouseNumber" size="3" maxlength="5" value="#{adminBranchOfficeActionController.branchLastHouseNumber}" validatorMessage="#{msg.ENTERED_HOUSE_NUMBER_INVALID}">
+                               <f:validateLongRange minimum="1" maximum="500" />
+                       </p:inputText>
+
+                       <p:outputLabel for="branchHouseNumberExtension" value="#{msg.ADMIN_DATA_HOUSE_NUMBER_EXTENSION}" />
+                       <p:inputText id="branchHouseNumberExtension" size="1" maxlength="255" value="#{adminBranchOfficeActionController.branchHouseNumberExtension}" validatorMessage="#{msg.ENTERED_HOUSE_NUMBER_INVALID}" />
+
+                       <p:outputLabel for="branchStore" value="#{msg.ADMIN_ENTER_DATA_STORE}" />
+                       <p:inputText id="branchStore" size="3" maxlength="5" value="#{adminBranchOfficeActionController.branchStore}" validatorMessage="#{msg.ENTERED_STORE_INVALID}">
+                               <f:validateLongRange minimum="-5" maximum="200" />
+                       </p:inputText>
+
+                       <p:outputLabel for="branchSuiteNumber" value="#{msg.ADMIN_ENTER_DATA_SUITE_NUMBER}" />
+                       <p:inputText id="branchSuiteNumber" size="3" maxlength="5" value="#{adminBranchOfficeActionController.branchSuiteNumber}" validatorMessage="#{msg.ENTERED_SUITE_NUMBER_INVALID}">
+                               <f:validateLongRange minimum="1" maximum="500" />
+                       </p:inputText>
+
+                       <p:outputLabel for="branchZipCode" value="#{msg.DATA_ZIP_CODE}" />
+                       <p:inputText id="branchZipCode" size="5" maxlength="6" value="#{adminBranchOfficeActionController.branchZipCode}" required="true" requiredMessage="#{msg.ADMIN_BRANCH_OFFICE_ZIP_CODE_REQUIRED}">
+                               <f:validateLongRange minimum="1" maximum="99999" />
+                       </p:inputText>
+
+                       <p:outputLabel for="branchCity" value="#{msg.ADMIN_DATA_CITY}" />
+                       <p:inputText id="branchCity" size="20" maxlength="255" value="#{adminBranchOfficeActionController.branchCity}" required="true" requiredMessage="#{msg.ADMIN_BRANCH_OFFICE_CITY_REQUIRED}" />
+
+                       <p:outputLabel for="branchCountry" value="#{msg.ADMIN_SELECT_COUNTRY}" />
+                       <core:outputCountrySelector id="branchCountry" value="#{adminBranchOfficeActionController.branchCountry}" required="true" requiredMessage="#{msg.ADMIN_BRANCH_OFFICE_COUNTRY_REQUIRED}" />
+               </p:panelGrid>
+       </p:fieldset>
+</ui:composition>
diff --git a/web/WEB-INF/templates/admin/business/branch_office/admin_form_branch_opening_time.tpl b/web/WEB-INF/templates/admin/business/branch_office/admin_form_branch_opening_time.tpl
new file mode 100644 (file)
index 0000000..4af4b86
--- /dev/null
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+@TODO: title="#{msg.ADMIN_BRANCH_OFFICE_OPENING_TIME_LEGEND_TITLE}"
+-->
+<ui:composition
+       xmlns="http://www.w3.org/1999/xhtml"
+       xmlns:f="http://xmlns.jcp.org/jsf/core"
+       xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+       xmlns:p="http://primefaces.org/ui"
+       >
+
+       <p:fieldset legend="#{msg.ADMIN_BRANCH_OFFICE_OPENING_TIME_LEGEND}">
+               <p:panelGrid
+                       layout="grid"
+                       columns="4"
+                       columnClasses="ui-grid-col-4,ui-grid-col-8"
+                       styleClass="ui-noborder">
+                       <p:outputLabel for="openingStartDay" value="#{msg.ADMIN_START_WEEK_DAY}" />
+                       <p:outputLabel for="openingEndDay" value="#{msg.ADMIN_END_WEEK_DAY}" />
+                       <p:outputLabel for="openingStartTime" value="#{msg.ADMIN_START_TIME}" />
+                       <p:outputLabel for="openingEndTime" value="#{msg.ADMIN_END_TIME}" />
+
+                       <p:selectOneMenu
+                               id="openingStartDay"
+                               value="#{adminBranchOfficeActionController.openingStartDay}"
+                               filter="true"
+                               filterMatchMode="contains"
+                               required="true"
+                               requiredMessage="#{msg.ADMIN_START_WEEK_DAY_REQUIRED}"
+                               >
+
+                               <f:converter converterId="DayOfTheWeekConverter" />
+
+                               <f:selectItem itemValue="#{null}" itemLabel="#{msg.PLEASE_SELECT}" noSelectionOption="true" itemDisabled="true" />
+
+                               <f:selectItems
+                                       value="#{dataController.dayOfTheWeek}"
+                                       var="dayOfWeek"
+                                       itemValue="#{dayOfWeek}"
+                                       itemLabel="#{dayOfWeek.toString()}"
+                                       />
+                       </p:selectOneMenu>
+
+                       <p:selectOneMenu
+                               id="openingEndDay"
+                               value="#{adminBranchOfficeActionController.openingEndDay}"
+                               filter="true"
+                               filterMatchMode="contains"
+                               required="true"
+                               requiredMessage="#{msg.ADMIN_END_WEEK_DAY_REQUIRED}"
+                               >
+
+                               <f:converter converterId="DayOfTheWeekConverter" />
+
+                               <f:selectItem itemValue="#{null}" itemLabel="#{msg.PLEASE_SELECT}" noSelectionOption="true" itemDisabled="true" />
+
+                               <f:selectItems
+                                       value="#{dataController.dayOfTheWeek}"
+                                       var="dayOfWeek"
+                                       itemValue="#{dayOfWeek}"
+                                       itemLabel="#{dayOfWeek.toString()}"
+                                       />
+                       </p:selectOneMenu>
+
+                       <p:calendar
+                               id="openingStartTime"
+                               value="#{adminBranchOfficeActionController.openingStartTime}"
+                               pattern="HH:mm"
+                               timeOnly="true"
+                               stepMinute="5"
+                               navigator="true"
+                               required="true"
+                               requiredMessage="#{msg.ADMIN_START_TIME_REQUIRED}"
+                               />
+
+                       <p:calendar
+                               id="openingEndTime"
+                               value="#{adminBranchOfficeActionController.openingEndTime}"
+                               pattern="HH:mm"
+                               timeOnly="true"
+                               stepMinute="5"
+                               navigator="true"
+                               required="true"
+                               requiredMessage="#{msg.ADMIN_END_TIME_REQUIRED}"
+                               />
+               </p:panelGrid>
+       </p:fieldset>
+</ui:composition>
diff --git a/web/WEB-INF/templates/admin/business/department/admin_form_department_data.tpl b/web/WEB-INF/templates/admin/business/department/admin_form_department_data.tpl
new file mode 100644 (file)
index 0000000..af7eb06
--- /dev/null
@@ -0,0 +1,143 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+@TODO: title="#{msg.ADMIN_DEPARTMENT_LEGEND_TITLE}"
+-->
+<ui:composition
+       xmlns="http://www.w3.org/1999/xhtml"
+       xmlns:f="http://xmlns.jcp.org/jsf/core"
+       xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+       xmlns:p="http://primefaces.org/ui"
+       >
+
+       <p:fieldset legend="#{msg.ADMIN_DEPARTMENT_LEGEND}">
+               <p:panelGrid
+                       layout="grid"
+                       columns="2"
+                       columnClasses="ui-grid-col-4,ui-grid-col-8"
+                       styleClass="ui-noborder"
+                       >
+                       <p:outputLabel for="departmentI18nKey" value="#{msg.ADMIN_ENTER_DEPARTMENT_I18N_KEY}" />
+                       <p:inputText
+                               id="departmentI18nKey"
+                               maxlength="255"
+                               value="#{adminDepartmentActionController.departmentI18nKey}"
+                               required="true"
+                               requiredMessage="#{msg.ADMIN_DEPARTMENT_I18N_KEY_REQUIRED}"
+                               />
+
+                       <p:outputLabel for="departmentCompany" value="#{msg.ADMIN_ASSIGN_DEPARTMENT_COMPANY}" />
+                       <p:selectOneMenu
+                               id="departmentCompany"
+                               value="#{adminDepartmentActionController.departmentCompany}"
+                               filter="true"
+                               filterMatchMode="contains"
+                               required="true"
+                               requiredMessage="#{msg.ADMIN_DEPARTMENT_COMPANY_REQUIRED}"
+                               >
+
+                               <f:converter converterId="BasicCompanyDataConverter" />
+
+                               <f:selectItem itemValue="#{null}" itemLabel="#{msg.PLEASE_SELECT}" noSelectionOption="true" itemDisabled="true" />
+
+                               <f:selectItems
+                                       value="#{basicDataListController.allBasicData}"
+                                       var="basicData"
+                                       itemValue="#{basicData}"
+                                       itemLabel="#{beanHelper.renderBasicData(basicData, true, false)}"
+                                       />
+                       </p:selectOneMenu>
+
+                       <p:outputLabel for="departmentBranchOffice" value="#{msg.ADMIN_ASSIGN_DEPARTMENT_BRANCH_OFFICE}" />
+                       <p:selectOneMenu
+                               id="departmentBranchOffice"
+                               value="#{adminDepartmentActionController.departmentBranchOffice}"
+                               filter="true"
+                               filterMatchMode="contains"
+                               >
+
+                               <f:converter converterId="BranchOfficeConverter" />
+
+                               <f:selectItem
+                                       itemValue="#{null}"
+                                       itemLabel="#{msg.NONE_SELECTED}"
+                                       />
+
+                               <f:selectItems
+                                       value="#{branchOfficeListController.allBranchOffices}"
+                                       var="branchOffice"
+                                       itemValue="#{branchOffice}"
+                                       itemLabel="#{beanHelper.renderBranchOffice(branchOffice, false)}"
+                                       />
+                       </p:selectOneMenu>
+
+                       <p:outputLabel for="departmentHeadquarter" value="#{msg.ADMIN_ASSIGN_DEPARTMENT_HEADQUARTER}" />
+                       <p:selectOneMenu
+                               id="departmentHeadquarter"
+                               value="#{adminDepartmentActionController.departmentHeadquarter}"
+                               filter="true"
+                               filterMatchMode="contains"
+                               >
+
+                               <f:converter converterId="HeadquarterConverter" />
+
+                               <f:selectItem
+                                       itemValue="#{null}"
+                                       itemLabel="#{msg.NONE_SELECTED}"
+                                       />
+
+                               <f:selectItems
+                                       value="#{headquarterListController.allHeadquarters}"
+                                       var="headquarter"
+                                       itemValue="#{headquarter}"
+                                       itemLabel="#{beanHelper.renderHeadquarter(headquarter)}"
+                                       />
+                       </p:selectOneMenu>
+
+                       <p:outputLabel for="departmentLead" value="#{msg.ADMIN_ASSIGN_DEPARTMENT_LEAD_EMPLOYEE}" />
+                       <p:selectOneMenu
+                               id="departmentLead"
+                               value="#{adminDepartmentActionController.departmentLead}"
+                               filter="true"
+                               filterMatchMode="contains"
+                               >
+
+                               <f:converter converterId="ContactConverter" />
+
+                               <f:selectItem
+                                       itemValue="#{null}"
+                                       itemLabel="#{msg.NONE_SELECTED}"
+                                       />
+
+                               <f:selectItems
+                                       value="#{contactListController.allContacts}"
+                                       var="contact"
+                                       itemValue="#{contact}"
+                                       itemLabel="#{beanHelper.renderContact(contact)}"
+                                       />
+                       </p:selectOneMenu>
+
+                       <p:outputLabel for="departmentUserOwner" value="#{msg.ADMIN_ASSIGN_DEPARTMENT_USER_OWNER}" />
+                       <p:selectOneMenu
+                               id="departmentUserOwner"
+                               value="#{adminDepartmentActionController.departmentUserOwner}"
+                               filter="true"
+                               filterMatchMode="contains"
+                               >
+
+                               <f:converter converterId="UserConverter" />
+
+                               <f:selectItem
+                                       itemValue="#{null}"
+                                       itemLabel="#{msg.NONE_SELECTED}"
+                                       />
+
+                               <f:selectItems
+                                       value="#{userListController.allUsers}"
+                                       var="departmentUserOwner"
+                                       itemValue="#{departmentUserOwner}"
+                                       itemLabel="#{beanHelper.renderContact(departmentUserOwner.userContact)} (#{departmentUserOwner.userName})"
+                                       />
+                       </p:selectOneMenu>
+               </p:panelGrid>
+       </p:fieldset>
+</ui:composition>
diff --git a/web/WEB-INF/templates/admin/business/employee/admin_form_employee_data.tpl b/web/WEB-INF/templates/admin/business/employee/admin_form_employee_data.tpl
new file mode 100644 (file)
index 0000000..21644cf
--- /dev/null
@@ -0,0 +1,196 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<ui:composition
+       xmlns="http://www.w3.org/1999/xhtml"
+       xmlns:core="http://mxchange.org/jsf/core/widgets"
+       xmlns:validator="http://mxchange.org/jsf/core/validators"
+       xmlns:f="http://xmlns.jcp.org/jsf/core"
+       xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+       xmlns:p="http://primefaces.org/ui"
+       >
+
+       <p:fieldset
+               legend="#{msg.ADMIN_EMPLOYEE_GENERAL_LEGEND}"
+               title="#{msg.ADMIN_EMPLOYEE_GENERAL_LEGEND_TITLE}"
+               >
+               <p:panelGrid
+                       layout="grid"
+                       columns="2"
+                       columnClasses="ui-grid-col-4,ui-grid-col-8"
+                       styleClass="ui-noborder"
+                       >
+                       <p:outputLabel for="employeeBasicData" value="#{msg.ADMIN_ASSIGN_EMPLOYEE_COMPANY}" />
+                       <p:selectOneMenu
+                               id="employeeBasicData"
+                               value="#{adminEmployeeController.employeeBasicData}"
+                               filter="true"
+                               filterMatchMode="contains"
+                               required="true"
+                               requiredMessage="#{msg.ADMIN_EMPLOYEE_COMPANY_REQUIRED}"
+                               >
+
+                               <f:converter converterId="BasicCompanyDataConverter" />
+
+                               <f:selectItem
+                                       itemValue="#{null}"
+                                       itemLabel="#{msg.PLEASE_SELECT}"
+                                       noSelectionOption="true"
+                                       itemDisabled="true"
+                                       />
+
+                               <f:selectItems
+                                       value="#{basicDataListController.allBasicData}"
+                                       var="basicData"
+                                       itemValue="#{basicData}"
+                                       itemLabel="#{beanHelper.renderBasicData(basicData, true, false)}"
+                                       />
+                       </p:selectOneMenu>
+
+                       <p:outputLabel for="employeeBranchOffice" value="#{msg.ADMIN_ASSIGN_EMPLOYEE_BRANCH_OFFICE}" />
+                       <p:selectOneMenu
+                               id="employeeBranchOffice"
+                               value="#{adminEmployeeController.employeeBranchOffice}"
+                               filter="true"
+                               filterMatchMode="contains"
+                               >
+
+                               <f:converter converterId="BranchOfficeConverter" />
+
+                               <f:selectItem
+                                       itemValue="#{null}"
+                                       itemLabel="#{msg.NONE_SELECTED}"
+                                       />
+
+                               <f:selectItems
+                                       value="#{branchOfficeListController.allBranchOffices}"
+                                       var="branchOffice"
+                                       itemValue="#{branchOffice}"
+                                       itemLabel="#{beanHelper.renderBranchOffice(branchOffice, false)}"
+                                       />
+                       </p:selectOneMenu>
+
+                       <p:outputLabel for="employeePersonalData" value="#{msg.ADMIN_ASSIGN_EMPLOYEE_PERSONAL_DATA}" />
+                       <p:selectOneMenu
+                               id="employeePersonalData"
+                               value="#{adminEmployeeController.employeePersonalData}"
+                               filter="true"
+                               filterMatchMode="contains"
+                               >
+
+                               <f:converter converterId="ContactConverter" />
+
+                               <f:selectItem
+                                       itemValue="#{null}"
+                                       itemLabel="#{msg.NONE_SELECTED}"
+                                       />
+
+                               <f:selectItems
+                                       value="#{contactListController.allContacts}"
+                                       var="contact"
+                                       itemValue="#{contact}"
+                                       itemLabel="#{beanHelper.renderContact(contact)}"
+                                       />
+                       </p:selectOneMenu>
+
+                       <p:outputLabel for="employeeUserOwner" value="#{msg.ADMIN_ASSIGN_EMPLOYEE_USER_OWNER}" />
+                       <p:selectOneMenu
+                               id="employeeUserOwner"
+                               value="#{adminEmployeeController.employeeUserOwner}"
+                               filter="true"
+                               filterMatchMode="contains"
+                               >
+
+                               <f:converter converterId="UserConverter" />
+
+                               <f:selectItem
+                                       itemValue="#{null}"
+                                       itemLabel="#{msg.NONE_SELECTED}"
+                                       />
+
+                               <f:selectItems
+                                       value="#{userListController.allUsers}"
+                                       var="employeeUserOwner"
+                                       itemValue="#{employeeUserOwner}"
+                                       itemLabel="#{beanHelper.renderContact(employeeUserOwner.userContact)} (#{employeeUserOwner.userName})"
+                                       />
+                       </p:selectOneMenu>
+
+                       <p:outputLabel for="employeeEmailAddress" value="#{msg.ADMIN_ENTER_EMPLOYEE_EMAIL_ADDRESS}" />
+                       <p:inputText
+                               id="employeeEmailAddress"
+                               size="40"
+                               maxlength="255"
+                               value="#{adminEmployeeController.employeeEmailAddress}"
+                               validatorMessage="#{msg.ENTERED_EMAIL_ADDRESS_IS_INVALID}"
+                               >
+                               <validator:employeeEmailAddressValidator />
+                       </p:inputText>
+
+                       <p:outputLabel for="employeeStaffNumber" value="#{msg.ADMIN_ENTER_EMPLOYEE_STAFF_NUMBER}" />
+                       <p:inputText id="employeeStaffNumber" size="2" maxlength="10" value="#{adminEmployeeController.employeeNumber}" />
+               </p:panelGrid>
+       </p:fieldset>
+
+       <p:fieldset
+               legend="#{msg.ADMIN_EMPLOYEE_OTHER_LEGEND}"
+               title="#{msg.ADMIN_EMPLOYEE_OTHER_LEGEND_TITLE}"
+               >
+               <p:panelGrid
+                       layout="grid"
+                       columns="2"
+                       columnClasses="ui-grid-col-4,ui-grid-col-8"
+                       styleClass="ui-noborder"
+                       >
+                       <p:outputLabel for="employeePhoneExtension" value="#{msg.ADMIN_ENTER_PHONE_EXTENSION}" />
+                       <p:inputText id="employeePhoneExtension" size="2" maxlength="10" value="#{adminEmployeeController.employeePhoneExtension}" />
+
+                       <p:outputLabel for="employeeDepartment" value="#{msg.ADMIN_ASSIGN_EMPLOYEE_DEPARTMENT}" />
+                       <p:selectOneMenu
+                               id="employeeDepartment"
+                               value="#{adminEmployeeController.employeeDepartment}"
+                               filter="true"
+                               filterMatchMode="contains"
+                               >
+
+                               <f:converter converterId="DepartmentConverter" />
+
+                               <f:selectItem
+                                       itemValue="#{null}"
+                                       itemLabel="#{msg.NONE_SELECTED}"
+                                       />
+
+                               <f:selectItems
+                                       value="#{departmentListController.allDepartments}"
+                                       var="department"
+                                       itemValue="#{department}"
+                                       itemLabel="#{beanHelper.renderDepartment(department, false)}"
+                                       />
+                       </p:selectOneMenu>
+
+                       <p:outputLabel for="employeeHeadquarter" value="#{msg.ADMIN_ASSIGN_EMPLOYEE_HEADQUARTER}" />
+                       <p:selectOneMenu
+                               id="employeeHeadquarter"
+                               value="#{adminEmployeeController.employeeHeadquarter}"
+                               filter="true"
+                               filterMatchMode="contains"
+                               >
+
+                               <f:converter converterId="HeadquarterConverter" />
+
+                               <f:selectItem
+                                       itemValue="#{null}"
+                                       itemLabel="#{msg.NONE_SELECTED}"
+                                       />
+
+                               <f:selectItems
+                                       value="#{headquarterListController.allHeadquarters}"
+                                       var="headquarter"
+                                       itemValue="#{headquarter}"
+                                       itemLabel="#{beanHelper.renderHeadquarter(headquarter)}"
+                                       />
+                       </p:selectOneMenu>
+
+                       <p:outputLabel for="mobileNumber" value="#{msg.ADMIN_ENTER_EMPLOYEE_MOBILE_NUMBER}" />
+                       <core:inputMobileNumberPanelGrid targetController="#{adminEmployeeController}" />
+               </p:panelGrid>
+       </p:fieldset>
+</ui:composition>
diff --git a/web/WEB-INF/templates/admin/business/headquarter/admin_form_headquarter_data.tpl b/web/WEB-INF/templates/admin/business/headquarter/admin_form_headquarter_data.tpl
new file mode 100644 (file)
index 0000000..61ddb0b
--- /dev/null
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+@TODO: title="#{msg.ADMIN_HEADQUARTER_LEGEND_TITLE}"
+-->
+<ui:composition
+       xmlns="http://www.w3.org/1999/xhtml"
+       xmlns:core="http://mxchange.org/jsf/core/widgets"
+       xmlns:validator="http://mxchange.org/jsf/core/validators"
+       xmlns:f="http://xmlns.jcp.org/jsf/core"
+       xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+       xmlns:p="http://primefaces.org/ui"
+       >
+
+       <p:fieldset legend="#{msg.ADMIN_HEADQUARTER_LEGEND}">
+               <p:panelGrid
+                       layout="grid"
+                       columns="2"
+                       columnClasses="ui-grid-col-4,ui-grid-col-8"
+                       styleClass="ui-noborder"
+                       >
+                       <p:outputLabel for="headquarterCompanyName" value="#{msg.ADMIN_HEADQUARTER_COMPANY_NAME}" />
+                       <p:inputText
+                               id="headquarterCompanyName"
+                               value="#{adminHeadquarterActionController.headquarterCompanyName}"
+                               size="30"
+                               maxlength="200"
+                               required="true"
+                               requiredMessage="#{msg.ADMIN_HEADQUARTER_COMPANY_NAME_REQUIRED}"
+                               >
+                               <f:validator validatorId="HeadquarterCompanyNameValidator" />
+                               <f:attribute name="checkExisting" value="false" />
+                       </p:inputText>
+
+                       <p:outputLabel for="headquarterContactEmployee" value="#{msg.ADMIN_ASSIGN_HEADQUARTER_CONTACT_EMPLOYEE}" />
+                       <p:selectOneMenu
+                               id="headquarterContactEmployee"
+                               value="#{adminHeadquarterActionController.headquarterContactEmployee}"
+                               filter="true"
+                               filterMatchMode="contains"
+                               >
+
+                               <f:converter converterId="ContactConverter" />
+
+                               <f:selectItem
+                                       itemValue="#{null}"
+                                       itemLabel="#{msg.NONE_SELECTED}"
+                                       />
+
+                               <f:selectItems
+                                       value="#{contactListController.allContacts}"
+                                       var="contact"
+                                       itemValue="#{contact}"
+                                       itemLabel="#{beanHelper.renderContact(contact)}"
+                                       />
+                       </p:selectOneMenu>
+
+                       <p:outputLabel for="headquarterUserOwner" value="#{msg.ADMIN_ASSIGN_HEADQUARTER_USER_OWNER}" />
+                       <p:selectOneMenu
+                               id="headquarterUserOwner"
+                               value="#{adminHeadquarterActionController.headquarterUserOwner}"
+                               filter="true"
+                               filterMatchMode="contains"
+                               >
+
+                               <f:converter converterId="UserConverter" />
+
+                               <f:selectItem
+                                       itemValue="#{null}"
+                                       itemLabel="#{msg.NONE_SELECTED}"
+                                       />
+
+                               <f:selectItems
+                                       value="#{userListController.allUsers}"
+                                       var="headquarterUserOwner"
+                                       itemValue="#{headquarterUserOwner}"
+                                       itemLabel="#{beanHelper.renderContact(headquarterUserOwner.userContact)} (#{headquarterUserOwner.userName})"
+                                       />
+                       </p:selectOneMenu>
+
+                       <p:outputLabel for="headquarterEmailAddress" value="#{msg.ADMIN_ENTER_HEADQUARTER_EMAIL_ADDRESS}" />
+                       <p:inputText
+                               id="headquarterEmailAddress"
+                               size="40"
+                               maxlength="255"
+                               value="#{adminHeadquarterActionController.headquarterEmailAddress}"
+                               validatorMessage="#{msg.ENTERED_EMAIL_ADDRESS_IS_INVALID}"
+                               >
+                               <validator:headquarterEmailAddressValidator />
+                       </p:inputText>
+
+                       <p:outputLabel for="landLineCountry" value="#{msg.ADMIN_ENTER_HEADQUARTER_LAND_LINE_NUMBER}" />
+                       <core:inputLandLineNumberPanelGrid targetController="#{adminHeadquarterActionController}" />
+
+                       <p:outputLabel for="faxCountry" value="#{msg.ADMIN_ENTER_HEADQUARTER_FAX_NUMBER}" />
+                       <core:inputFaxNumberPanelGrid targetController="#{adminHeadquarterActionController}" />
+               </p:panelGrid>
+       </p:fieldset>
+
+       <p:fieldset legend="#{msg.ADMIN_HEADQUARTER_ADDRESS_LEGEND}">
+               <p:panelGrid
+                       layout="grid"
+                       columns="2"
+                       columnClasses="ui-grid-col-4,ui-grid-col-8"
+                       styleClass="ui-noborder"
+                       >
+                       <p:outputLabel for="headquarterStreet" value="#{msg.ADMIN_DATA_STREET_NAME}" />
+                       <p:inputText id="headquarterStreet" size="20" maxlength="255" value="#{adminHeadquarterActionController.headquarterStreet}" required="true" requiredMessage="#{msg.ADMIN_HEADQUARTER_STREET_NAME_REQUIRED}" />
+
+                       <p:outputLabel for="headquarterHouseNumber" value="#{msg.ADMIN_DATA_HOUSE_NUMBER}" />
+                       <p:inputText id="headquarterHouseNumber" size="3" maxlength="5" value="#{adminHeadquarterActionController.headquarterHouseNumber}" validatorMessage="#{msg.ENTERED_HOUSE_NUMBER_INVALID}" required="true" requiredMessage="#{msg.ADMIN_HEADQUARTER_HOUSE_NUMBER_REQUIRED}">
+                               <f:validateLongRange minimum="1" maximum="500" />
+                       </p:inputText>
+
+                       <p:outputLabel for="headquarterHouseNumberExtension" value="#{msg.ADMIN_DATA_HOUSE_NUMBER_EXTENSION}" />
+                       <p:inputText id="headquarterHouseNumberExtension" size="1" maxlength="255" value="#{adminHeadquarterActionController.headquarterHouseNumberExtension}" validatorMessage="#{msg.ENTERED_HOUSE_NUMBER_INVALID}" />
+
+                       <p:outputLabel for="headquarterLastHouseNumber" value="#{msg.ADMIN_DATA_LAST_HOUSE_NUMBER}" />
+                       <p:inputText id="headquarterLastHouseNumber" size="3" maxlength="5" value="#{adminHeadquarterActionController.headquarterLastHouseNumber}" validatorMessage="#{msg.ENTERED_HOUSE_NUMBER_INVALID}">
+                               <f:validateLongRange minimum="1" maximum="500" />
+                       </p:inputText>
+
+                       <p:outputLabel for="headquarterStore" value="#{msg.ADMIN_ENTER_DATA_STORE}" />
+                       <p:inputText id="headquarterStore" size="3" maxlength="5" value="#{adminHeadquarterActionController.headquarterStore}" validatorMessage="#{msg.ENTERED_STORE_INVALID}">
+                               <f:validateLongRange minimum="-5" maximum="200" />
+                       </p:inputText>
+
+                       <p:outputLabel for="headquarterSuiteNumber" value="#{msg.ADMIN_ENTER_DATA_SUITE_NUMBER}" />
+                       <p:inputText id="headquarterSuiteNumber" size="3" maxlength="5" value="#{adminHeadquarterActionController.headquarterSuiteNumber}" validatorMessage="#{msg.ENTERED_SUITE_NUMBER_INVALID}">
+                               <f:validateLongRange minimum="1" maximum="500" />
+                       </p:inputText>
+
+                       <p:outputLabel for="headquarterZipCode" value="#{msg.DATA_ZIP_CODE}" />
+                       <p:inputText id="headquarterZipCode" size="5" maxlength="6" value="#{adminHeadquarterActionController.headquarterZipCode}" required="true" requiredMessage="#{msg.ADMIN_HEADQUARTER_ZIP_CODE_REQUIRED}">
+                               <f:validateLongRange minimum="1" maximum="99999" />
+                       </p:inputText>
+
+                       <p:outputLabel for="headquarterCity" value="#{msg.ADMIN_DATA_CITY}" />
+                       <p:inputText id="headquarterCity" size="20" maxlength="255" value="#{adminHeadquarterActionController.headquarterCity}" required="true" requiredMessage="#{msg.ADMIN_HEADQUARTER_CITY_REQUIRED}" />
+
+                       <p:outputLabel for="headquarterCountry" value="#{msg.ADMIN_SELECT_COUNTRY}" />
+                       <core:outputCountrySelector id="headquarterCountry" value="#{adminHeadquarterActionController.headquarterCountry}" required="true" requiredMessage="#{msg.ADMIN_HEADQUARTER_COUNTRY_REQUIRED}" />
+               </p:panelGrid>
+       </p:fieldset>
+</ui:composition>
diff --git a/web/WEB-INF/templates/admin/business/headquarter/admin_form_headquarter_opening_time.tpl b/web/WEB-INF/templates/admin/business/headquarter/admin_form_headquarter_opening_time.tpl
new file mode 100644 (file)
index 0000000..4256ad2
--- /dev/null
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+@TODO: title="#{msg.ADMIN_BRANCH_OFFICE_OPENING_TIME_LEGEND_TITLE}"
+-->
+<ui:composition
+       xmlns="http://www.w3.org/1999/xhtml"
+       xmlns:f="http://xmlns.jcp.org/jsf/core"
+       xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+       xmlns:p="http://primefaces.org/ui"
+       >
+
+       <p:fieldset legend="#{msg.ADMIN_BRANCH_OFFICE_OPENING_TIME_LEGEND}">
+               <p:panelGrid
+                       layout="grid"
+                       columns="4"
+                       columnClasses="ui-grid-col-4,ui-grid-col-8"
+                       styleClass="ui-noborder"
+                       >
+                       <p:outputLabel for="openingStartDay" value="#{msg.ADMIN_START_WEEK_DAY}" />
+                       <p:outputLabel for="openingEndDay" value="#{msg.ADMIN_END_WEEK_DAY}" />
+                       <p:outputLabel for="openingStartTime" value="#{msg.ADMIN_START_TIME}" />
+                       <p:outputLabel for="openingEndTime" value="#{msg.ADMIN_END_TIME}" />
+
+                       <p:selectOneMenu
+                               id="openingStartDay"
+                               value="#{adminHeadquarterActionController.openingStartDay}"
+                               filter="true"
+                               filterMatchMode="contains"
+                               required="true"
+                               requiredMessage="#{msg.ADMIN_START_WEEK_DAY_REQUIRED}"
+                               >
+
+                               <f:converter converterId="DayOfTheWeekConverter" />
+
+                               <f:selectItem itemValue="#{null}" itemLabel="#{msg.PLEASE_SELECT}" noSelectionOption="true" itemDisabled="true" />
+
+                               <f:selectItems
+                                       value="#{dataController.dayOfTheWeek}"
+                                       var="dayOfWeek"
+                                       itemValue="#{dayOfWeek}"
+                                       itemLabel="#{dayOfWeek.toString()}"
+                                       />
+                       </p:selectOneMenu>
+
+                       <p:selectOneMenu
+                               id="openingEndDay"
+                               value="#{adminHeadquarterActionController.openingEndDay}"
+                               filter="true"
+                               filterMatchMode="contains"
+                               required="true"
+                               requiredMessage="#{msg.ADMIN_END_WEEK_DAY_REQUIRED}"
+                               >
+
+                               <f:converter converterId="DayOfTheWeekConverter" />
+
+                               <f:selectItem itemValue="#{null}" itemLabel="#{msg.PLEASE_SELECT}" noSelectionOption="true" itemDisabled="true" />
+
+                               <f:selectItems
+                                       value="#{dataController.dayOfTheWeek}"
+                                       var="dayOfWeek"
+                                       itemValue="#{dayOfWeek}"
+                                       itemLabel="#{dayOfWeek.toString()}"
+                                       />
+                       </p:selectOneMenu>
+
+                       <p:calendar
+                               id="openingStartTime"
+                               value="#{adminHeadquarterActionController.openingStartTime}"
+                               pattern="HH:mm"
+                               timeOnly="true"
+                               stepMinute="5"
+                               navigator="true"
+                               required="true"
+                               requiredMessage="#{msg.ADMIN_START_TIME_REQUIRED}"
+                               />
+
+                       <p:calendar
+                               id="openingEndTime"
+                               value="#{adminHeadquarterActionController.openingEndTime}"
+                               pattern="HH:mm"
+                               timeOnly="true"
+                               stepMinute="5"
+                               navigator="true"
+                               required="true"
+                               requiredMessage="#{msg.ADMIN_END_TIME_REQUIRED}"
+                               />
+               </p:panelGrid>
+       </p:fieldset>
+</ui:composition>
diff --git a/web/WEB-INF/templates/admin/business/opening_time/admin_form_opening_time.tpl b/web/WEB-INF/templates/admin/business/opening_time/admin_form_opening_time.tpl
new file mode 100644 (file)
index 0000000..767ee3e
--- /dev/null
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+@TODO: title="#{msg.ADMIN_OPENING_TIME_LEGEND_TITLE}"
+-->
+<ui:composition
+       xmlns="http://www.w3.org/1999/xhtml"
+       xmlns:f="http://xmlns.jcp.org/jsf/core"
+       xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+       xmlns:p="http://primefaces.org/ui"
+       >
+
+       <p:fieldset legend="#{msg.ADMIN_OPENING_TIME_LEGEND}">
+               <p:panelGrid
+                       layout="grid"
+                       columns="4"
+                       columnClasses="ui-grid-col-4,ui-grid-col-8"
+                       styleClass="ui-noborder"
+                       >
+                       <p:outputLabel for="openingStartDay" value="#{msg.ADMIN_START_WEEK_DAY}" />
+                       <p:outputLabel for="openingEndDay" value="#{msg.ADMIN_END_WEEK_DAY}" />
+                       <p:outputLabel for="openingStartTime" value="#{msg.ADMIN_START_TIME}" />
+                       <p:outputLabel for="openingEndTime" value="#{msg.ADMIN_END_TIME}" />
+
+                       <p:selectOneMenu
+                               id="openingStartDay"
+                               value="#{adminOpeningTimeController.openingStartDay}"
+                               filter="true"
+                               filterMatchMode="contains"
+                               required="true"
+                               requiredMessage="#{msg.ADMIN_START_WEEK_DAY_REQUIRED}"
+                               >
+
+                               <f:converter converterId="DayOfTheWeekConverter" />
+
+                               <f:selectItem itemValue="#{null}" itemLabel="#{msg.PLEASE_SELECT}" noSelectionOption="true" itemDisabled="true" />
+
+                               <f:selectItems
+                                       value="#{dataController.dayOfTheWeek}"
+                                       var="dayOfWeek"
+                                       itemValue="#{dayOfWeek}"
+                                       itemLabel="#{dayOfWeek.toString()}"
+                                       />
+                       </p:selectOneMenu>
+
+                       <p:selectOneMenu
+                               id="openingEndDay"
+                               value="#{adminOpeningTimeController.openingEndDay}"
+                               filter="true"
+                               filterMatchMode="contains"
+                               required="true"
+                               requiredMessage="#{msg.ADMIN_END_WEEK_DAY_REQUIRED}"
+                               >
+
+                               <f:converter converterId="DayOfTheWeekConverter" />
+
+                               <f:selectItem itemValue="#{null}" itemLabel="#{msg.PLEASE_SELECT}" noSelectionOption="true" itemDisabled="true" />
+
+                               <f:selectItems
+                                       value="#{dataController.dayOfTheWeek}"
+                                       var="dayOfWeek"
+                                       itemValue="#{dayOfWeek}"
+                                       itemLabel="#{dayOfWeek.toString()}"
+                                       />
+                       </p:selectOneMenu>
+
+                       <p:calendar
+                               id="openingStartTime"
+                               value="#{adminOpeningTimeController.openingStartTime}"
+                               pattern="HH:mm"
+                               timeOnly="true"
+                               stepMinute="5"
+                               navigator="true"
+                               required="true"
+                               requiredMessage="#{msg.ADMIN_START_TIME_REQUIRED}"
+                               />
+
+                       <p:calendar
+                               id="openingEndTime"
+                               value="#{adminOpeningTimeController.openingEndTime}"
+                               pattern="HH:mm"
+                               timeOnly="true"
+                               stepMinute="5"
+                               navigator="true"
+                               required="true"
+                               requiredMessage="#{msg.ADMIN_END_TIME_REQUIRED}"
+                               />
+               </p:panelGrid>
+       </p:fieldset>
+</ui:composition>
diff --git a/web/admin/business/basic_data/admin_basic_data_list.xhtml b/web/admin/business/basic_data/admin_basic_data_list.xhtml
new file mode 100644 (file)
index 0000000..441db7d
--- /dev/null
@@ -0,0 +1,619 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<ui:composition
+       template="/WEB-INF/templates/admin/admin_base.tpl"
+       xmlns="http://www.w3.org/1999/xhtml"
+       xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+       xmlns:h="http://xmlns.jcp.org/jsf/html"
+       xmlns:f="http://xmlns.jcp.org/jsf/core"
+       xmlns:p="http://primefaces.org/ui"
+       xmlns:core="http://mxchange.org/jsf/core/widgets"
+       xmlns:validator="http://mxchange.org/jsf/core/validators"
+       >
+
+       <ui:define name="document_admin_title">
+               <h:outputText value="#{msg.PAGE_TITLE_ADMIN_LIST_BASIC_DATA}" />
+       </ui:define>
+
+       <ui:define name="content_header">
+               <h:outputText value="#{msg.CONTENT_TITLE_ADMIN_LIST_BASIC_DATA}" />
+       </ui:define>
+
+       <ui:define name="content">
+               <h:form id="form-list-basic-data">
+                       <p:dataTable
+                               id="basicDataList"
+                               var="basicData"
+                               value="#{basicDataListController.allBasicData}"
+                               paginator="true"
+                               paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
+                               filteredValue="#{basicDataListController.filteredBasicData}"
+                               rows="10"
+                               rowKey="#{basicData.basicDataId}"
+                               reflow="true"
+                               resizableColumns="true"
+                               rowsPerPageTemplate="5,10,20,50,100"
+                               sortMode="multiple"
+                               summary="#{msg.TABLE_SUMMARY_ADMIN_LIST_BASIC_DATA}"
+                               emptyMessage="#{msg.ADMIN_EMPTY_LIST_BASIC_DATA}"
+                               widgetVar="basicDataList"
+                               selectionMode="single"
+                               selection="#{basicDataListController.selectedBasicData}"
+                               skipChildren="true"
+                               >
+
+                               <f:facet name="header">
+                                       <p:panelGrid
+                                               columns="3"
+                                               layout="grid"
+                                               columnClasses="ui-grid-col-4,ui-grid-col-6,ui-grid-col-2"
+                                               >
+                                               <p:spacer />
+
+                                               <p:panelGrid
+                                                       columns="2"
+                                                       columnClasses="ui-grid-4,ui-grid-8"
+                                                       layout="grid"
+                                                       styleClass="ui-noborder"
+                                                       >
+                                                       <p:outputLabel
+                                                               for="globalFilter"
+                                                               value="#{msg.SEARCH_ALL_FIELDS}"
+                                                               style="float: right"
+                                                               />
+
+                                                       <p:inputText
+                                                               id="globalFilter"
+                                                               onkeyup="PF('basicDataList').filter()"
+                                                               placeholder="#{msg.ENTER_KEYWORD}"
+                                                               />
+                                               </p:panelGrid>
+
+                                               <p:outputPanel>
+                                                       <p:spacer height="4" />
+
+                                                       <p:commandButton
+                                                               id="toggler"
+                                                               type="button"
+                                                               value="#{msg.SELECT_SHOWN_COLUMNS}"
+                                                               styleClass="column-selector"
+                                                               />
+
+                                                       <p:columnToggler datasource="basicDataList" trigger="toggler" />
+                                               </p:outputPanel>
+                                       </p:panelGrid>
+                               </f:facet>
+
+                               <p:ajax
+                                       event="rowSelect"
+                                       update="form-list-basic-data:basic-data-details"
+                                       oncomplete="PF('basicDataDialog').show()"
+                                       />
+
+                               <p:column
+                                       headerText="#{msg.ID_HEADER}"
+                                       sortBy="#{basicData.basicDataId}"
+                                       filterable="false"
+                                       >
+                                       <p:link
+                                               outcome="admin_show_basic_data"
+                                               value="#{basicData.basicDataId}"
+                                               title="#{msg.ADMIN_LINK_SHOW_BASIC_DATA_TITLE}"
+                                               >
+                                               <f:param name="basicDataId" value="#{basicData.basicDataId}" />
+                                       </p:link>
+                               </p:column>
+
+                               <p:column
+                                       headerText="#{msg.ADMIN_BASIC_DATA_COMPANY_SHORT_NAME_HEADER}"
+                                       sortBy="#{basicData.companyShortName}"
+                                       filterBy="#{basicData.companyShortName}"
+                                       filterMatchMode="contains"
+                                       >
+                                       <h:outputLink
+                                               value="#{basicData.companyWebsiteUrl}"
+                                               target="_blank"
+                                               title="#{msg.LINK_COMPANY_WEBSITE_URL_TITLE}"
+                                               rel="external"
+                                               rendered="#{not empty basicData.companyWebsiteUrl}"
+                                               >
+                                               <h:outputText value="#{basicData.companyShortName}" />
+                                       </h:outputLink>
+
+                                       <h:outputText
+                                               value="#{basicData.companyShortName}"
+                                               title="#{msg.NO_WEBSITE_URL_ENTERED}"
+                                               rendered="#{empty basicData.companyWebsiteUrl}"
+                                               />
+                               </p:column>
+
+                               <p:column
+                                       headerText="#{msg.ADMIN_BASIC_DATA_COMPANY_NAME_HEADER}"
+                                       sortBy="#{basicData.companyName}"
+                                       filterBy="#{basicData.companyName}"
+                                       filterMatchMode="contains"
+                                       >
+                                       <h:outputText value="#{basicData.companyName}" rendered="#{not empty basicData.companyName}" />
+
+                                       <h:outputText value="-" rendered="#{empty basicData.companyName}" />
+                               </p:column>
+
+                               <p:column
+                                       headerText="#{msg.ADMIN_COMPANY_CONTACT_PERSON_HEADER}"
+                                       sortBy="#{basicData.companyContactEmployee}"
+                                       filterBy="#{basicData.companyContactEmployee}"
+                                       filterMatchMode="in"
+                                       >
+                                       <f:facet name="filter">
+                                               <p:selectCheckboxMenu
+                                                       filter="true"
+                                                       filterMatchMode="contains"
+                                                       label="#{msg.LABEL_EMPLOYEES}"
+                                                       onchange="PF('basicDataList').filter()"
+                                                       updateLabel="true"
+                                                       title="#{msg.FILTER_BY_MULTIPLE_EMPLOYEES_TITLE}"
+                                                       >
+                                                       <f:converter converterId="EmployeeConverter" />
+
+                                                       <f:selectItems
+                                                               value="#{employeeListController.allEmployees}"
+                                                               var="employee"
+                                                               itemValue="#{employee}"
+                                                               itemLabel="#{beanHelper.renderEmployee(employee, true)}"
+                                                               />
+                                               </p:selectCheckboxMenu>
+                                       </f:facet>
+
+                                       <p:link
+                                               outcome="admin_show_employee"
+                                               value="#{beanHelper.renderEmployee(basicData.companyContactEmployee, true)}"
+                                               title="#{msg.ADMIN_LINK_SHOW_BASIC_DATA_CONTACT_PERSON_TITLE}"
+                                               rendered="#{not empty basicData.companyContactEmployee}"
+                                               >
+                                               <f:param name="employeeId" value="#{basicData.companyContactEmployee.employeeId}" />
+                                       </p:link>
+
+                                       <p:link
+                                               outcome="admin_assign_basic_data_employee"
+                                               value="#{msg.ADMIN_LINK_ASSIGN_BASIC_DATA_CONTACT_PERSON}"
+                                               title="#{msg.ADMIN_LINK_ASSIGN_BASIC_DATA_CONTACT_PERSON_TITLE}"
+                                               rendered="#{empty basicData.companyContactEmployee}"
+                                               >
+                                               <f:param name="basicDataId" value="#{basicData.basicDataId}" />
+                                       </p:link>
+                               </p:column>
+
+                               <p:column
+                                       headerText="#{msg.ADMIN_BASIC_DATA_COMPANY_FOUNDER_HEADER}"
+                                       sortBy="#{basicData.companyFounder}"
+                                       filterBy="#{basicData.companyFounder}"
+                                       filterMatchMode="in"
+                                       >
+                                       <f:facet name="filter">
+                                               <p:selectCheckboxMenu
+                                                       filter="true"
+                                                       filterMatchMode="contains"
+                                                       label="#{msg.LABEL_EMPLOYEES}"
+                                                       onchange="PF('basicDataList').filter()"
+                                                       updateLabel="true"
+                                                       title="#{msg.FILTER_BY_MULTIPLE_EMPLOYEES_TITLE}"
+                                                       >
+                                                       <f:converter converterId="EmployeeConverter" />
+
+                                                       <f:selectItems
+                                                               value="#{employeeListController.allEmployees}"
+                                                               var="employee"
+                                                               itemValue="#{employee}"
+                                                               itemLabel="#{beanHelper.renderEmployee(employee, false)}"
+                                                               />
+                                               </p:selectCheckboxMenu>
+                                       </f:facet>
+
+                                       <p:link
+                                               outcome="admin_show_employee"
+                                               value="#{beanHelper.renderEmployee(basicData.companyFounder, false)}"
+                                               title="#{msg.ADMIN_LINK_SHOW_BASIC_DATA_COMPANY_FOUNDER_TITLE}"
+                                               rendered="#{not empty basicData.companyFounder}"
+                                               >
+                                               <f:param name="employeeId" value="#{basicData.companyFounder.employeeId}" />
+                                       </p:link>
+
+                                       <p:link
+                                               outcome="admin_assign_basic_data_contact"
+                                               value="#{msg.ADMIN_LINK_ASSIGN}"
+                                               title="#{msg.ADMIN_LINK_ASSIGN_BASIC_DATA_COMPANY_FOUNDER_TITLE}"
+                                               rendered="#{empty basicData.companyFounder}"
+                                               >
+                                               <f:param name="basicDataId" value="#{basicData.basicDataId}" />
+                                       </p:link>
+                               </p:column>
+
+                               <p:column
+                                       headerText="#{msg.ADMIN_USER_HEADER}"
+                                       sortBy="#{basicData.companyUserOwner}"
+                                       filterBy="#{basicData.companyUserOwner}"
+                                       filterMatchMode="in"
+                                       >
+                                       <f:facet name="filter">
+                                               <p:selectCheckboxMenu
+                                                       filter="true"
+                                                       filterMatchMode="contains"
+                                                       label="#{msg.LABEL_USERS}"
+                                                       onchange="PF('basicDataList').filter()"
+                                                       updateLabel="true"
+                                                       title="#{msg.FILTER_BY_MULTIPLE_USERS_TITLE}"
+                                                       >
+                                                       <f:converter converterId="UserConverter" />
+
+                                                       <f:selectItems
+                                                               value="#{userListController.allUsers}"
+                                                               var="user"
+                                                               itemValue="#{user}"
+                                                               itemLabel="#{beanHelper.renderUser(user)}"
+                                                               />
+                                               </p:selectCheckboxMenu>
+                                       </f:facet>
+
+                                       <p:link
+                                               outcome="admin_show_user"
+                                               value="#{beanHelper.renderUser(basicData.companyUserOwner)}"
+                                               title="#{msg.ADMIN_LINK_SHOW_BASIC_DATA_OWNER_USER_TITLE}"
+                                               rendered="#{not empty basicData.companyUserOwner}"
+                                               >
+                                               <f:param name="userId" value="#{basicData.companyUserOwner.userId}" />
+                                       </p:link>
+
+                                       <p:link
+                                               outcome="admin_assign_basic_data_owner"
+                                               value="#{msg.ADMIN_LINK_ASSIGN}"
+                                               title="#{msg.ADMIN_LINK_ASSIGN_BASIC_DATA_OWNER_USER_TITLE}"
+                                               rendered="#{empty basicData.companyUserOwner}"
+                                               >
+                                               <f:param name="basicDataId" value="#{basicData.basicDataId}" />
+                                       </p:link>
+                               </p:column>
+
+                               <p:column
+                                       headerText="#{msg.TAX_NUMBER_HEADER}"
+                                       sortBy="#{basicData.companyTaxNumber}"
+                                       filterBy="#{basicData.companyTaxNumber}"
+                                       filterMatchMode="contains"
+                                       >
+                                       <h:outputText value="#{basicData.companyTaxNumber}" />
+                               </p:column>
+
+                               <p:column
+                                       headerText="#{msg.LANDLINE_NUMBER_HEADER}"
+                                       sortBy="#{basicData.companyLandLineNumber}"
+                                       filterBy="#{basicData.companyLandLineNumber}"
+                                       filterMatchMode="contains"
+                                       >
+                                       <h:outputText value="#{beanHelper.renderPhoneNumber(basicData.companyLandLineNumber)}" />
+                               </p:column>
+
+                               <p:column
+                                       headerText="#{msg.FAX_NUMBER_HEADER}"
+                                       sortBy="#{basicData.companyFaxNumber}"
+                                       filterBy="#{basicData.companyFaxNumber}"
+                                       filterMatchMode="contains"
+                                       >
+                                       <h:outputText value="#{beanHelper.renderPhoneNumber(basicData.companyFaxNumber)}" />
+                               </p:column>
+
+                               <p:column
+                                       headerText="#{msg.ROAD_NUMBER_HEADER}"
+                                       sortBy="#{basicData.companyRoadNumber}"
+                                       filterBy="#{basicData.companyRoadNumber}"
+                                       filterMatchMode="contains"
+                                       >
+                                       <h:outputText value="#{basicData.companyRoadNumber}" />
+                               </p:column>
+
+                               <p:column
+                                       headerText="#{msg.ENTRY_CREATED_HEADER}"
+                                       sortBy="#{basicData.companyEntryCreated}"
+                                       filterBy="#{basicData.companyEntryCreated}"
+                                       filterMatchMode="contains"
+                                       >
+                                       <h:outputText value="#{basicData.companyEntryCreated}">
+                                               <f:convertDateTime type="both" timeStyle="short" dateStyle="short" />
+                                       </h:outputText>
+                               </p:column>
+
+                               <p:column
+                                       headerText="#{msg.ENTRY_UPDATED_HEADER}"
+                                       sortBy="#{basicData.companyEntryUpdated}"
+                                       filterBy="#{basicData.companyEntryUpdated}"
+                                       filterMatchMode="contains"
+                                       >
+                                       <h:outputText value="#{basicData.companyEntryUpdated}">
+                                               <f:convertDateTime type="both" timeStyle="short" dateStyle="short" />
+                                       </h:outputText>
+                               </p:column>
+
+                               <p:column
+                                       headerText="#{msg.ADMIN_ACTION_LINKS_HEADER}"
+                                       sortable="false"
+                                       filterable="false"
+                                       >
+                                       <p:menuButton value="#{msg.OPTIONS}">
+                                               <p:menuitem
+                                                       outcome="admin_show_basic_data"
+                                                       value="#{msg.ADMIN_LINK_SHOW_SHORT}"
+                                                       title="#{msg.ADMIN_LINK_SHOW_BASIC_DATA_TITLE}"
+                                                       >
+                                                       <f:param name="basicDataId" value="#{basicData.basicDataId}" />
+                                               </p:menuitem>
+
+                                               <p:menuitem
+                                                       outcome="admin_edit_basic_data"
+                                                       value="#{msg.ADMIN_LINK_EDIT_SHORT}"
+                                                       title="#{msg.ADMIN_LINK_EDIT_BASIC_DATA_TITLE}"
+                                                       >
+                                                       <f:param name="basicDataId" value="#{basicData.basicDataId}" />
+                                               </p:menuitem>
+
+                                               <p:menuitem outcome="admin_delete_basic_data">
+                                                       <h:outputText
+                                                               styleClass="link-danger"
+                                                               value="#{msg.ADMIN_LINK_DELETE_SHORT}"
+                                                               title="#{msg.ADMIN_LINK_DELETE_BASIC_DATA_TITLE}"
+                                                               />
+                                                       <f:param name="basicDataId" value="#{basicData.basicDataId}" />
+                                               </p:menuitem>
+                                       </p:menuButton>
+                               </p:column>
+                       </p:dataTable>
+
+                       <p:dialog
+                               dynamic="true"
+                               modal="true"
+                               resizable="false"
+                               header="#{msg.ADMIN_SINGLE_BASIC_DATA_DETAILS_HEADER}"
+                               hideEffect="fade"
+                               showEffect="fade"
+                               widgetVar="basicDataDialog"
+                               position="top"
+                               responsive="true"
+                               closeOnEscape="true"
+                               >
+                               <p:outputPanel id="basic-data-details">
+                                       <p:panelGrid columns="2" rendered="#{not empty basicDataListController.selectedBasicData}">
+                                               <f:facet name="header">
+                                                       <h:outputFormat value="#{msg.ADMIN_BASIC_DATA_DETAILS_HEADER}">
+                                                               <f:param value="#{basicDataListController.selectedBasicData.companyName}" />
+                                                               <f:param value="#{basicDataListController.selectedBasicData.basicDataId}" />
+                                                       </h:outputFormat>
+                                               </f:facet>
+
+                                               <p:outputLabel value="#{msg.ID_HEADER}" title="#{msg.BASIC_DATA_ID_NUMBER_TITLE}" />
+                                               <h:outputText value="#{basicDataListController.selectedBasicData.basicDataId}" />
+                                       </p:panelGrid>
+                               </p:outputPanel>
+                       </p:dialog>
+               </h:form>
+
+               <h:form>
+                       <p:panelGrid
+                               columns="1"
+                               layout="grid"
+                               >
+                               <f:facet name="header">
+                                       <h:outputText value="#{msg.ADMIN_ADD_BASIC_DATA_TITLE}" />
+                               </f:facet>
+
+                               <h:panelGroup styleClass="para" layout="block">
+                                       <h:outputText value="#{msg.ADMIN_ADD_BASIC_DATA_MINIMUM_DATA}" />
+                               </h:panelGroup>
+
+                               <h:panelGroup styleClass="para" layout="block">
+                                       <p:fieldset legend="#{msg.ADMIN_BASIC_DATA_LEGEND}">
+                                               <p:panelGrid
+                                                       columns="2"
+                                                       columnClasses="ui-grid-col-4,ui-grid-col-8"
+                                                       styleClass="ui-noborder"
+                                                       >
+                                                       <p:outputLabel for="companyShortName" value="#{msg.ADMIN_BASIC_DATA_COMPANY_SHORT_NAME}" />
+                                                       <p:inputText
+                                                               id="companyShortName"
+                                                               value="#{adminBasicCompanyDataController.companyShortName}"
+                                                               size="20"
+                                                               maxlength="100"
+                                                               required="true"
+                                                               requiredMessage="#{msg.ADMIN_BASIC_DATA_COMPANY_SHORT_NAME_REQUIRED}"
+                                                               >
+                                                               <f:validator validatorId="BasicDataCompanyShortNameValidator" />
+                                                               <f:attribute name="checkExisting" value="false" />
+                                                       </p:inputText>
+
+                                                       <p:outputLabel for="companyName" value="#{msg.ADMIN_BASIC_DATA_COMPANY_NAME}" />
+                                                       <p:inputText
+                                                               id="companyName"
+                                                               value="#{adminBasicCompanyDataController.companyName}"
+                                                               size="30"
+                                                               maxlength="255"
+                                                               >
+                                                               <f:validator validatorId="BasicDataCompanyNameValidator" />
+                                                               <f:attribute name="checkExisting" value="false" />
+                                                       </p:inputText>
+
+                                                       <p:outputLabel for="companyEmailAddress" value="#{msg.ADMIN_BASIC_DATA_COMPANY_EMAIL_ADDRESS}" />
+                                                       <p:inputText
+                                                               id="companyEmailAddress"
+                                                               size="40"
+                                                               maxlength="255"
+                                                               value="#{adminBasicCompanyDataController.companyEmailAddress}"
+                                                               validatorMessage="#{msg.ENTERED_EMAIL_ADDRESS_IS_INVALID}"
+                                                               >
+                                                               <validator:basicDataEmailAddressValidator />
+                                                       </p:inputText>
+
+                                                       <p:outputLabel for="companyLogo" value="#{msg.ADMIN_SELECT_BASIC_DATA_COMPANY_LOGO}" />
+                                                       <core:outputMessageBox
+                                                               panelGroupId="companyLogo"
+                                                               message="#{msg.ADMIN_FEATURE_UNFINISHED_WARNING}"
+                                                               boxStyleClass="message-full"
+                                                               messageStyleClass="alert-warning"
+                                                               />
+
+                                                       <p:outputLabel for="companyRoadNumber" value="#{msg.ADMIN_BASIC_DATA_COMPANY_ROAD_NUMBER}" />
+                                                       <p:inputText
+                                                               id="companyRoadNumber"
+                                                               size="10"
+                                                               maxlength="10"
+                                                               value="#{adminBasicCompanyDataController.companyRoadNumber}"
+                                                               onblur="value = value.toUpperCase()"
+                                                               >
+                                                               <f:validateRegex
+                                                                       pattern="[A-Z]{2} [A-Z]{2} [0-9]{2,5}"
+                                                                       />
+                                                               <f:validator validatorId="BasicDataCompanyRoadNumberValidator" />
+                                                               <f:attribute name="checkExisting" value="false" />
+                                                       </p:inputText>
+
+                                                       <p:outputLabel for="companyTaxNumber" value="#{msg.ADMIN_BASIC_DATA_COMPANY_TAX_NUMBER}" />
+                                                       <p:inputText
+                                                               id="companyTaxNumber"
+                                                               size="30"
+                                                               maxlength="200"
+                                                               value="#{adminBasicCompanyDataController.companyTaxNumber}"
+                                                               />
+
+                                                       <p:outputLabel for="companyWebsiteUrl" value="#{msg.ADMIN_BASIC_DATA_COMPANY_WEBSITE_URL}" />
+                                                       <p:inputText
+                                                               id="companyWebsiteUrl"
+                                                               size="30"
+                                                               maxlength="200"
+                                                               value="#{adminBasicCompanyDataController.companyWebsiteUrl}"
+                                                               validatorMessage="#{msg.URL_NOT_MATCHING_REGULAR_EXPRESSION}"
+                                                               >
+                                                               <validator:urlValidator allowEmptyRequiredData="true" />
+                                                       </p:inputText>
+
+                                                       <p:outputLabel for="companyUserOwner" value="#{msg.ADMIN_SELECT_BASIC_DATA_COMPANY_USER_OWNER}" />
+                                                       <p:selectOneMenu
+                                                               id="companyUserOwner"
+                                                               value="#{adminBasicCompanyDataController.companyUserOwner}"
+                                                               filter="true"
+                                                               filterMatchMode="contains"
+                                                               >
+
+                                                               <f:converter converterId="UserConverter" />
+
+                                                               <f:selectItem
+                                                                       itemValue="#{null}"
+                                                                       itemLabel="#{msg.NONE_SELECTED}"
+                                                                       />
+
+                                                               <f:selectItems
+                                                                       value="#{userListController.allUsers}"
+                                                                       var="companyUserOwner"
+                                                                       itemValue="#{companyUserOwner}"
+                                                                       itemLabel="#{beanHelper.renderContact(companyUserOwner.userContact)} (#{companyUserOwner.userName})"
+                                                                       />
+                                                       </p:selectOneMenu>
+
+                                                       <p:outputLabel for="companyContactEmployee" value="#{msg.ADMIN_SELECT_BASIC_DATA_COMPANY_CONTACT_EMPLOYEE}" />
+                                                       <p:selectOneMenu
+                                                               id="companyContactEmployee"
+                                                               value="#{adminBasicCompanyDataController.companyContactEmployee}"
+                                                               filter="true"
+                                                               filterMatchMode="contains"
+                                                               >
+
+                                                               <f:converter converterId="EmployeeConverter" />
+
+                                                               <f:selectItem
+                                                                       itemValue="#{null}"
+                                                                       itemLabel="#{msg.NONE_SELECTED}"
+                                                                       />
+
+                                                               <f:selectItems
+                                                                       value="#{employeeListController.allEmployees}"
+                                                                       var="companyEmployee"
+                                                                       itemValue="#{companyEmployee}"
+                                                                       itemLabel="#{beanHelper.renderEmployee(companyEmployee, false)}"
+                                                                       />
+                                                       </p:selectOneMenu>
+
+                                                       <p:outputLabel for="companyFounder" value="#{msg.ADMIN_SELECT_BASIC_DATA_COMPANY_FOUNDER}" />
+                                                       <p:selectOneMenu
+                                                               id="companyFounder"
+                                                               value="#{adminBasicCompanyDataController.companyFounder}"
+                                                               filter="true"
+                                                               filterMatchMode="contains"
+                                                               >
+
+                                                               <f:converter converterId="EmployeeConverter" />
+
+                                                               <f:selectItem
+                                                                       itemValue="#{null}"
+                                                                       itemLabel="#{msg.NONE_SELECTED}"
+                                                                       />
+
+                                                               <f:selectItems
+                                                                       value="#{employeeListController.allEmployees}"
+                                                                       var="companyEmployee"
+                                                                       itemValue="#{companyEmployee}"
+                                                                       itemLabel="#{beanHelper.renderEmployee(companyEmployee, false)}"
+                                                                       />
+                                                       </p:selectOneMenu>
+
+                                                       <p:outputLabel for="companyHeadquarter" value="#{msg.ADMIN_SELECT_BASIC_DATA_COMPANY_HEADQUARTER}" />
+                                                       <p:selectOneMenu
+                                                               id="companyHeadquarter"
+                                                               value="#{adminBasicCompanyDataController.companyHeadQuarter}"
+                                                               filter="true"
+                                                               filterMatchMode="contains"
+                                                               >
+
+                                                               <f:converter converterId="HeadquarterConverter" />
+
+                                                               <f:selectItem
+                                                                       itemValue="#{null}"
+                                                                       itemLabel="#{msg.NONE_SELECTED}"
+                                                                       />
+
+                                                               <f:selectItems
+                                                                       value="#{headquarterListController.allHeadquarters}"
+                                                                       var="headquarter"
+                                                                       itemValue="#{headquarter}"
+                                                                       itemLabel="#{beanHelper.renderHeadquarter(headquarter)}"
+                                                                       />
+                                                       </p:selectOneMenu>
+
+                                                       <p:outputLabel for="landLineCountry" value="#{msg.ADMIN_BASIC_DATA_PHONE_NUMBER}" />
+                                                       <core:inputLandLineNumberPanelGrid targetController="#{adminBasicCompanyDataController}" />
+
+                                                       <p:outputLabel for="faxCountry" value="#{msg.ADMIN_BASIC_DATA_FAX_NUMBER}" />
+                                                       <core:inputFaxNumberPanelGrid targetController="#{adminBasicCompanyDataController}" />
+
+                                                       <p:outputLabel for="companyComments" value="#{msg.ADMIN_BASIC_DATA_COMPANY_COMMENTS}" />
+                                                       <p:inputTextarea
+                                                               id="companyComments"
+                                                               value="#{adminBasicCompanyDataController.companyComments}"
+                                                               rows="7"
+                                                               cols="25"
+                                                               />
+                                               </p:panelGrid>
+                                       </p:fieldset>
+                               </h:panelGroup>
+
+                               <f:facet name="footer">
+                                       <p:panelGrid columns="2" layout="grid">
+                                               <p:commandButton
+                                                       type="reset"
+                                                       value="#{msg.BUTTON_RESET_FORM}"
+                                                       />
+
+                                               <p:commandButton
+                                                       type="submit"
+                                                       value="#{msg.BUTTON_ADMIN_ADD_BASIC_DATA}"
+                                                       action="#{adminBasicCompanyDataController.addBusinessBasicData()}"
+                                                       update="form-list-basic-data:basicDataList"
+                                                       />
+                                       </p:panelGrid>
+                               </f:facet>
+                       </p:panelGrid>
+               </h:form>
+       </ui:define>
+</ui:composition>
diff --git a/web/admin/business/branch_office/admin_branch_office_edit.xhtml b/web/admin/business/branch_office/admin_branch_office_edit.xhtml
new file mode 100644 (file)
index 0000000..1bc3e95
--- /dev/null
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<ui:composition
+       template="/WEB-INF/templates/admin/admin_base.tpl"
+       xmlns="http://www.w3.org/1999/xhtml"
+       xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+       xmlns:h="http://xmlns.jcp.org/jsf/html"
+       xmlns:f="http://xmlns.jcp.org/jsf/core"
+       xmlns:p="http://primefaces.org/ui"
+       >
+
+       <ui:define name="metadata">
+               <f:metadata>
+                       <f:viewParam
+                               name="branchId"
+                               value="#{adminBranchOfficeActionController.currentBranchOffice}"
+                               converter="BranchOfficeConverter"
+                               required="true"
+                               requiredMessage="#{msg.ERROR_PARAMETER_BRANCH_OFFICE_ID_NOT_SET}"
+                               converterMessage="#{msg.PARAMETER_BRANCH_OFFICE_ID_INVALID}"
+                               />
+
+                       <f:viewAction
+                               action="#{adminBranchOfficeActionController.copyAllBranchOfficeProperties()}"
+                               />
+               </f:metadata>
+       </ui:define>
+
+       <ui:define name="document_admin_title">
+               <h:outputText value="#{msg.PAGE_TITLE_ADMIN_EDIT_BRANCH_OFFICE}" />
+       </ui:define>
+
+       <ui:define name="content_header">
+               <h:outputText value="#{msg.CONTENT_TITLE_ADMIN_EDIT_BRANCH_OFFICE}" />
+       </ui:define>
+
+       <ui:define name="content">
+               <h:form
+                       id="form-admin-edit-branch-office"
+                       rendered="#{not empty adminBranchOfficeActionController.currentBranchOffice}"
+                       >
+                       <h:inputHidden value="#{adminBranchOfficeActionController.branchId}" />
+
+                       <p:panelGrid
+                               columns="1"
+                               layout="grid"
+                               >
+                               <f:facet name="header">
+                                       <h:outputFormat
+                                               value="#{msg.ADMIN_EDIT_BRANCH_OFFICE_TITLE}"
+                                               title="#{beanHelper.renderBranchOffice(adminBranchOfficeActionController.currentBranchOffice, false)}"
+                                               rendered="#{empty adminBranchOfficeActionController.branchNumber}"
+                                               >
+                                               <f:param value="#{adminBranchOfficeActionController.branchId}" />
+                                       </h:outputFormat>
+
+                                       <h:outputFormat
+                                               value="#{msg.ADMIN_EDIT_BRANCH_OFFICE_NUMBER_TITLE}"
+                                               title="#{beanHelper.renderBranchOffice(adminBranchOfficeActionController.currentBranchOffice, false)}"
+                                               rendered="#{not empty adminBranchOfficeActionController.branchNumber}"
+                                               >
+                                               <f:param value="#{adminBranchOfficeActionController.branchId}" />
+                                               <f:param value="#{adminBranchOfficeActionController.branchNumber}" />
+                                       </h:outputFormat>
+                               </f:facet>
+
+                               <h:panelGroup styleClass="para" layout="block">
+                                       <h:outputText value="#{msg.ADMIN_BRANCH_OFFICE_MINIMUM_DATA}" />
+                               </h:panelGroup>
+
+                               <ui:include src="/WEB-INF/templates/admin/business/branch_office/admin_form_branch_office_data.tpl" />
+
+                               <f:facet name="footer">
+                                       <p:panelGrid columns="2" layout="grid">
+                                               <p:commandButton
+                                                       type="reset"
+                                                       value="#{msg.BUTTON_RESET_FORM}"
+                                                       />
+
+                                               <p:commandButton
+                                                       type="submit"
+                                                       value="#{msg.BUTTON_ADMIN_EDIT_BRANCH_OFFICE}"
+                                                       action="#{adminBranchOfficeActionController.updateBranchOffice()}"
+                                                       />
+                                       </p:panelGrid>
+                               </f:facet>
+                       </p:panelGrid>
+               </h:form>
+       </ui:define>
+</ui:composition>
diff --git a/web/admin/business/branch_office/admin_branch_office_list.xhtml b/web/admin/business/branch_office/admin_branch_office_list.xhtml
new file mode 100644 (file)
index 0000000..c28d1e6
--- /dev/null
@@ -0,0 +1,560 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<ui:composition
+       template="/WEB-INF/templates/admin/admin_base.tpl"
+       xmlns="http://www.w3.org/1999/xhtml"
+       xmlns:core="http://mxchange.org/jsf/core/widgets"
+       xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+       xmlns:h="http://xmlns.jcp.org/jsf/html"
+       xmlns:f="http://xmlns.jcp.org/jsf/core"
+       xmlns:p="http://primefaces.org/ui"
+       >
+
+       <ui:define name="document_admin_title">
+               <h:outputText value="#{msg.PAGE_TITLE_ADMIN_LIST_BRANCH_OFFICES}" />
+       </ui:define>
+
+       <ui:define name="content_header">
+               <h:outputText value="#{msg.CONTENT_TITLE_ADMIN_LIST_BRANCH_OFFICES}" />
+       </ui:define>
+
+       <ui:define name="content">
+               <h:form id="form-list-branch-offices">
+                       <p:dataTable
+                               id="branchOfficeList"
+                               var="branchOffice"
+                               value="#{branchOfficeListController.allBranchOffices}"
+                               paginator="true"
+                               paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
+                               filteredValue="#{branchOfficeListController.filteredBranchOffices}"
+                               rows="10"
+                               rowKey="#{branchOffice.branchId}"
+                               reflow="true"
+                               resizableColumns="true"
+                               rowsPerPageTemplate="5,10,20,50,100"
+                               sortMode="multiple"
+                               summary="#{msg.TABLE_SUMMARY_ADMIN_LIST_BRANCH_OFFICES}"
+                               emptyMessage="#{msg.ADMIN_EMPTY_LIST_BRANCH_OFFICES}"
+                               widgetVar="branchOfficeList"
+                               selectionMode="single"
+                               selection="#{branchOfficeListController.selectedBranchOffice}"
+                               skipChildren="true"
+                               >
+
+                               <f:facet name="header">
+                                       <p:panelGrid
+                                               columns="3"
+                                               layout="grid"
+                                               columnClasses="ui-grid-col-4,ui-grid-col-6,ui-grid-col-2"
+                                               >
+                                               <p:spacer />
+
+                                               <p:panelGrid
+                                                       columns="2"
+                                                       columnClasses="ui-grid-4,ui-grid-8"
+                                                       layout="grid"
+                                                       styleClass="ui-noborder"
+                                                       >
+                                                       <p:outputLabel
+                                                               for="globalFilter"
+                                                               value="#{msg.SEARCH_ALL_FIELDS}"
+                                                               style="float: right"
+                                                               />
+
+                                                       <p:inputText
+                                                               id="globalFilter"
+                                                               onkeyup="PF('branchOfficeList').filter()"
+                                                               placeholder="#{msg.ENTER_KEYWORD}"
+                                                               />
+                                               </p:panelGrid>
+
+                                               <p:outputPanel>
+                                                       <p:spacer height="4" />
+
+                                                       <p:commandButton
+                                                               id="toggler"
+                                                               type="button"
+                                                               value="#{msg.SELECT_SHOWN_COLUMNS}"
+                                                               styleClass="column-selector"
+                                                               />
+
+                                                       <p:columnToggler datasource="branchOfficeList" trigger="toggler" />
+                                               </p:outputPanel>
+                                       </p:panelGrid>
+                               </f:facet>
+
+                               <p:ajax
+                                       event="rowSelect"
+                                       update="form-list-branch-offices:branch-office-details"
+                                       oncomplete="PF('branchOfficeDialog').show()"
+                                       />
+
+                               <p:column
+                                       headerText="#{msg.ID_HEADER}"
+                                       sortBy="#{branchOffice.branchId}"
+                                       filterable="false"
+                                       >
+                                       <p:link
+                                               outcome="admin_show_branch_office"
+                                               value="#{branchOffice.branchId}"
+                                               title="#{msg.ADMIN_LINK_SHOW_BRANCH_OFFICE_TITLE}"
+                                               >
+                                               <f:param name="branchId" value="#{branchOffice.branchId}" />
+                                       </p:link>
+                               </p:column>
+
+                               <p:column
+                                       headerText="#{msg.BRANCH_OFFICE_NUMBER_HEADER}"
+                                       sortBy="#{branchOffice.branchNumber}"
+                                       filterBy="#{branchOffice.branchNumber}"
+                                       filterMatchMode="contains"
+                                       >
+                                       <h:outputText value="#{branchOffice.branchNumber}" rendered="#{not empty branchOffice.branchNumber}" />
+                                       <h:outputText value="-" rendered="#{empty branchOffice.branchNumber}" />
+                               </p:column>
+
+                               <p:column
+                                       headerText="#{msg.ADMIN_BASIC_DATA_COMPANY_NAME_HEADER}"
+                                       sortBy="#{branchOffice.branchCompany}"
+                                       filterBy="#{branchOffice.branchCompany}"
+                                       filterMatchMode="in"
+                                       >
+                                       <f:facet name="filter">
+                                               <p:selectCheckboxMenu
+                                                       filter="true"
+                                                       filterMatchMode="contains"
+                                                       label="#{msg.LABEL_COMPANIES}"
+                                                       onchange="PF('branchOfficeList').filter()"
+                                                       updateLabel="true"
+                                                       title="#{msg.FILTER_BY_MULTIPLE_COMPANIES_TITLE}"
+                                                       >
+                                                       <f:converter converterId="BasicCompanyDataConverter" />
+
+                                                       <f:selectItems
+                                                               value="#{basicDataListController.allBasicData}"
+                                                               var="basicData"
+                                                               itemValue="#{basicData}"
+                                                               itemLabel="#{beanHelper.renderBasicData(basicData, true, false)}"
+                                                               />
+                                               </p:selectCheckboxMenu>
+                                       </f:facet>
+
+                                       <p:link
+                                               outcome="admin_show_basic_data"
+                                               value="#{beanHelper.renderBasicData(branchOffice.branchCompany, true, false)}"
+                                               title="#{msg.ADMIN_LINK_SHOW_BASIC_DATA_TITLE}"
+                                               >
+                                               <f:param name="basicDataId" value="#{branchOffice.branchCompany.basicDataId}" />
+                                       </p:link>
+                               </p:column>
+
+                               <p:column
+                                       headerText="#{msg.ADMIN_USER_HEADER}"
+                                       sortBy="#{branchOffice.branchUserOwner}"
+                                       filterBy="#{branchOffice.branchUserOwner}"
+                                       filterMatchMode="in"
+                                       >
+                                       <f:facet name="filter">
+                                               <p:selectCheckboxMenu
+                                                       filter="true"
+                                                       filterMatchMode="contains"
+                                                       label="#{msg.LABEL_USERS}"
+                                                       onchange="PF('branchOfficeList').filter()"
+                                                       updateLabel="true"
+                                                       title="#{msg.FILTER_BY_MULTIPLE_USERS_TITLE}"
+                                                       >
+                                                       <f:converter converterId="UserConverter" />
+
+                                                       <f:selectItems
+                                                               value="#{userListController.allUsers}"
+                                                               var="user"
+                                                               itemValue="#{user}"
+                                                               itemLabel="#{beanHelper.renderUser(user)}"
+                                                               />
+                                               </p:selectCheckboxMenu>
+                                       </f:facet>
+
+                                       <p:link
+                                               outcome="admin_show_user"
+                                               value="#{beanHelper.renderUser(branchOffice.branchUserOwner)}"
+                                               title="#{msg.ADMIN_LINK_SHOW_BRANCH_OFFICE_OWNER_USER_TITLE}"
+                                               rendered="#{not empty branchOffice.branchUserOwner}"
+                                               >
+                                               <f:param name="userId" value="#{branchOffice.branchUserOwner.userId}" />
+                                       </p:link>
+
+                                       <p:link
+                                               outcome="admin_assign_branch_office_owner"
+                                               value="#{msg.ADMIN_LINK_ASSIGN}"
+                                               title="#{msg.ADMIN_LINK_ASSIGN_BRANCH_OFFICES_OWNER_USER_TITLE}"
+                                               rendered="#{empty branchOffice.branchUserOwner}"
+                                               >
+                                               <f:param name="branchId" value="#{branchOffice.branchId}" />
+                                       </p:link>
+                               </p:column>
+
+                               <p:column
+                                       headerText="#{msg.DATA_EMAIL_ADDRESS}"
+                                       sortBy="#{branchOffice.branchEmailAddress}"
+                                       filterBy="#{branchOffice.branchEmailAddress}"
+                                       filterMatchMode="contains"
+                                       >
+                                       <p:link
+                                               href="mailto:#{branchOffice.branchEmailAddress}"
+                                               value="#{branchOffice.branchEmailAddress}"
+                                               rendered="#{not empty branchOffice.branchEmailAddress}"
+                                               />
+
+                                       <h:outputText value="#{msg.NO_EMAIL_ADDRESS_ENTERED}" rendered="#{empty branchOffice.branchEmailAddress}" />
+                               </p:column>
+
+                               <p:column
+                                       headerText="#{msg.DATA_ADDRESS}"
+                                       sortBy="#{branchOffice.branchCity}"
+                                       filterBy="#{branchOffice.branchCity}"
+                                       filterMatchMode="contains"
+                                       >
+                                       <h:outputText
+                                               value="#{beanHelper.renderBranchOffice(branchOffice, false)}"
+                                               title="#{beanHelper.renderBranchOffice(branchOffice, true)}"
+                                               />
+                               </p:column>
+
+                               <p:column
+                                       headerText="#{msg.ADMIN_COMPANY_CONTACT_PERSON_HEADER}"
+                                       sortBy="#{branchOffice.branchContactEmployee}"
+                                       filterBy="#{branchOffice.branchContactEmployee}"
+                                       filterMatchMode="in"
+                                       >
+                                       <f:facet name="filter">
+                                               <p:selectCheckboxMenu
+                                                       filter="true"
+                                                       filterMatchMode="contains"
+                                                       label="#{msg.LABEL_EMPLOYEES}"
+                                                       onchange="PF('branchOfficeList').filter()"
+                                                       updateLabel="true"
+                                                       title="#{msg.FILTER_BY_MULTIPLE_EMPLOYEES_TITLE}"
+                                                       >
+                                                       <f:converter converterId="ContactConverter" />
+
+                                                       <f:selectItems
+                                                               value="#{contactListController.allContacts}"
+                                                               var="contact"
+                                                               itemValue="#{contact}"
+                                                               itemLabel="#{beanHelper.renderContact(contact)}"
+                                                               />
+                                               </p:selectCheckboxMenu>
+                                       </f:facet>
+
+                                       <p:link
+                                               outcome="admin_show_contact"
+                                               value="#{beanHelper.renderContact(branchOffice.branchContactEmployee)}"
+                                               title="#{msg.ADMIN_LINK_SHOW_BRANCH_OFFICE_CONTACT_PERSON_TITLE}"
+                                               rendered="#{not empty branchOffice.branchContactEmployee}"
+                                               >
+                                               <f:param name="contactId" value="#{branchOffice.branchContactEmployee.contactId}" />
+                                       </p:link>
+
+                                       <p:link
+                                               outcome="admin_assign_branch_office_contact"
+                                               value="#{msg.ADMIN_LINK_ASSIGN}"
+                                               title="#{msg.ADMIN_LINK_ASSIGN_BRANCH_OFFICES_CONTACT_PERSON_TITLE}"
+                                               rendered="#{empty branchOffice.branchContactEmployee}"
+                                               >
+                                               <f:param name="branchId" value="#{branchOffice.branchId}" />
+                                       </p:link>
+                               </p:column>
+
+                               <p:column
+                                       headerText="#{msg.ENTRY_CREATED_HEADER}"
+                                       sortBy="#{branchOffice.branchEntryCreated}"
+                                       filterable="false"
+                                       >
+                                       <h:outputText value="#{branchOffice.branchEntryCreated}">
+                                               <f:convertDateTime type="both" timeStyle="short" dateStyle="short" />
+                                       </h:outputText>
+                               </p:column>
+
+                               <p:column
+                                       headerText="#{msg.ENTRY_UPDATED_HEADER}"
+                                       sortBy="#{branchOffice.branchEntryUpdated}"
+                                       filterable="false"
+                                       >
+                                       <h:outputText value="#{branchOffice.branchEntryUpdated}">
+                                               <f:convertDateTime type="both" timeStyle="short" dateStyle="short" />
+                                       </h:outputText>
+                               </p:column>
+
+                               <p:column
+                                       headerText="#{msg.ADMIN_ACTION_LINKS_HEADER}"
+                                       sortable="false"
+                                       filterable="false"
+                                       >
+                                       <p:menuButton value="#{msg.OPTIONS}">
+                                               <p:menuitem
+                                                       outcome="admin_show_branch_office"
+                                                       value="#{msg.ADMIN_LINK_SHOW_SHORT}"
+                                                       title="#{msg.ADMIN_LINK_SHOW_BRANCH_OFFICE_TITLE}"
+                                                       >
+                                                       <f:param name="branchId" value="#{branchOffice.branchId}" />
+                                               </p:menuitem>
+
+                                               <p:menuitem
+                                                       outcome="admin_edit_branch_office"
+                                                       value="#{msg.ADMIN_LINK_EDIT_SHORT}"
+                                                       title="#{msg.ADMIN_LINK_EDIT_BRANCH_OFFICE_TITLE}"
+                                                       >
+                                                       <f:param name="branchId" value="#{branchOffice.branchId}" />
+                                               </p:menuitem>
+
+                                               <p:menuitem outcome="admin_delete_branch_office">
+                                                       <h:outputText
+                                                               styleClass="link-danger"
+                                                               value="#{msg.ADMIN_LINK_DELETE_SHORT}"
+                                                               title="#{msg.ADMIN_LINK_DELETE_BRANCH_OFFICE_TITLE}"
+                                                               />
+                                                       <f:param name="branchId" value="#{branchOffice.branchId}" />
+                                               </p:menuitem>
+                                       </p:menuButton>
+                               </p:column>
+                       </p:dataTable>
+
+                       <p:dialog
+                               dynamic="true"
+                               modal="true"
+                               resizable="false"
+                               header="#{msg.ADMIN_SINGLE_BRANCH_OFFICE_DETAILS_HEADER}"
+                               hideEffect="fade"
+                               showEffect="fade"
+                               widgetVar="branchOfficeDialog"
+                               position="top"
+                               responsive="true"
+                               closeOnEscape="true"
+                               >
+                               <p:outputPanel id="branch-office-details">
+                                       <p:tabView>
+                                               <p:tab title="#{msg.ADMIN_BRANCH_OFFICE_DATA_TAB_TITLE}">
+                                                       <p:panelGrid columns="2" rendered="#{not empty branchOfficeListController.selectedBranchOffice}">
+                                                               <f:facet name="header">
+                                                                       <h:outputFormat value="#{msg.ADMIN_BRANCH_OFFICE_BASIC_DETAILS_HEADER}">
+                                                                               <f:param value="#{branchOfficeListController.selectedBranchOffice.branchId}" />
+                                                                       </h:outputFormat>
+                                                               </f:facet>
+
+                                                               <p:outputLabel value="#{msg.ID_HEADER}" title="#{msg.BRANCH_OFFICE_ID_NUMBER_TITLE}" />
+                                                               <h:outputText value="#{branchOfficeListController.selectedBranchOffice.branchId}" />
+
+                                                               <p:outputLabel value="#{msg.BRANCH_OFFICE_NUMBER_HEADER}" title="#{msg.BRANCH_OFFICE_NUMBER_TITLE}" />
+                                                               <h:outputText value="#{branchOfficeListController.selectedBranchOffice.branchNumber}" />
+
+                                                               <p:outputLabel value="#{msg.ASSIGNED_BASIC_DATA_HEADER}" title="#{msg.ASSIGNED_BASIC_DATA_TO_BRANCH_OFFICE_TITLE}" />
+                                                               <p:link
+                                                                       outcome="admin_show_basic_data"
+                                                                       target="_blank"
+                                                                       value="#{beanHelper.renderBasicData(branchOfficeListController.selectedBranchOffice.branchCompany, false, true)}"
+                                                                       title="#{msg.ADMIN_LINK_SHOW_BASIC_DATA_TITLE}"
+                                                                       >
+                                                                       <f:param name="basicDataId" value="#{branchOfficeListController.selectedBranchOffice.branchCompany.basicDataId}" />
+                                                               </p:link>
+
+                                                               <p:outputLabel value="#{msg.ASSIGNED_CONTACT_PERSON_HEADER}" title="#{msg.ASSIGNED_CONTACT_PERSON_TO_BRANCH_OFFICE_TITLE}" />
+                                                               <p:link
+                                                                       outcome="admin_show_contact"
+                                                                       target="_blank"
+                                                                       value="#{beanHelper.renderContact(branchOfficeListController.selectedBranchOffice.branchContactEmployee)}"
+                                                                       title="#{msg.ADMIN_LINK_SHOW_BRANCH_OFFICE_CONTACT_PERSON_TITLE}"
+                                                                       rendered="#{not empty branchOfficeListController.selectedBranchOffice.branchContactEmployee}"
+                                                                       >
+                                                                       <f:param name="contactId" value="#{branchOfficeListController.selectedBranchOffice.branchContactEmployee.contactId}" />
+                                                               </p:link>
+                                                               <h:outputText value="#{msg.NO_CONTACT_EMPLOYEE_ASSIGNED_TO_BRANCH_OFFICE}" rendered="#{empty branchOfficeListController.selectedBranchOffice.branchContactEmployee}" />
+
+                                                               <p:outputLabel value="#{msg.ASSIGNED_OWNER_EMPLOYEE_HEADER}" title="#{msg.ASSIGNED_OWNER_EMPLOYEE_TO_BRANCH_OFFICE_TITLE}" />
+                                                               <p:link
+                                                                       outcome="admin_show_contact"
+                                                                       target="_blank"
+                                                                       value="#{beanHelper.renderContact(branchOfficeListController.selectedBranchOffice.branchOwnerEmployee)}"
+                                                                       title="#{msg.ADMIN_LINK_SHOW_BRANCH_OFFICE_OWNER_EMPLOYEE_TITLE}"
+                                                                       rendered="#{not empty branchOfficeListController.selectedBranchOffice.branchOwnerEmployee}"
+                                                                       >
+                                                                       <f:param name="contactId" value="#{branchOfficeListController.selectedBranchOffice.branchContactEmployee.contactId}" />
+                                                               </p:link>
+                                                               <h:outputText value="#{msg.NO_OWNER_EMPLOYEE_ASSIGNED_TO_BRANCH_OFFICE}" rendered="#{empty branchOfficeListController.selectedBranchOffice.branchOwnerEmployee}" />
+
+                                                               <p:outputLabel value="#{msg.ASSIGNED_USER_OWNER_HEADER}" title="#{msg.ASSIGNED_USER_OWNER_TO_BRANCH_OFFICE_TITLE}" />
+                                                               <p:link
+                                                                       outcome="admin_show_user"
+                                                                       target="_blank"
+                                                                       value="#{beanHelper.renderUser(branchOfficeListController.selectedBranchOffice.branchUserOwner)}"
+                                                                       title="#{msg.ADMIN_LINK_SHOW_BRANCH_OFFICE_OWNER_USER_TITLE}"
+                                                                       rendered="#{not empty branchOfficeListController.selectedBranchOffice.branchUserOwner}"
+                                                                       >
+                                                                       <f:param name="userId" value="#{branchOfficeListController.selectedBranchOffice.branchUserOwner.userId}" />
+                                                               </p:link>
+                                                               <h:outputText value="#{msg.NO_USER_ASSIGNED_AS_OWNER_TO_BRANCH_OFFICE}" rendered="#{empty branchOfficeListController.selectedBranchOffice.branchUserOwner}" />
+
+                                                               <p:outputLabel value="#{msg.EMAIL_ADDRESS_HEADER}" title="#{msg.EMAIL_ADDRESS_OF_BRANCH_OFFICE_TITLE}" />
+                                                               <h:outputLink value="mailto:#{branchOfficeListController.selectedBranchOffice.branchEmailAddress}" rendered="#{not empty branchOfficeListController.selectedBranchOffice.branchEmailAddress}" />
+                                                               <h:outputText value="#{msg.BRANCH_OFFICE_HAS_NO_EMAIL_ADDRESS}" rendered="#{empty branchOfficeListController.selectedBranchOffice.branchEmailAddress}" />
+
+                                                               <p:outputLabel value="#{msg.LANDLINE_NUMBER_HEADER}" title="#{msg.ASSIGNED_LANDLINE_NUMBER_OF_BRANCH_OFFICE_TITLE}" />
+                                                               <p:link
+                                                                       outcome="admin_show_landline"
+                                                                       value="#{beanHelper.renderPhoneNumber(branchOfficeListController.selectedBranchOffice.branchLandLineNumber)}"
+                                                                       target="_blank"
+                                                                       title="#{msg.ADMIN_LINK_SHOW_LAND_LINE_NUMBER_TITLE}"
+                                                                       rendered="#{not empty branchOfficeListController.selectedBranchOffice.branchLandLineNumber}"
+                                                                       >
+                                                                       <f:param name="landLineId" value="#{branchOfficeListController.selectedBranchOffice.branchLandLineNumber.phoneId}" />
+                                                               </p:link>
+                                                               <h:outputText value="#{msg.NO_LANDLINE_NUMBER_ASSIGNED_TO_BRANCH_OFFICE}" rendered="#{empty branchOfficeListController.selectedBranchOffice.branchLandLineNumber}" />
+
+                                                               <p:outputLabel value="#{msg.FAX_NUMBER_HEADER}" title="#{msg.ASSIGNED_FAX_NUMBER_OF_BRANCH_OFFICE_TITLE}" />
+                                                               <p:link
+                                                                       outcome="admin_show_fax"
+                                                                       value="#{beanHelper.renderPhoneNumber(branchOfficeListController.selectedBranchOffice.branchFaxNumber)}"
+                                                                       target="_blank"
+                                                                       title="#{msg.ADMIN_LINK_SHOW_FAX_NUMBER_TITLE}"
+                                                                       rendered="#{not empty branchOfficeListController.selectedBranchOffice.branchFaxNumber}"
+                                                                       >
+                                                                       <f:param name="faxId" value="#{branchOfficeListController.selectedBranchOffice.branchFaxNumber.phoneId}" />
+                                                               </p:link>
+                                                               <h:outputText value="#{msg.NO_FAX_NUMBER_ASSIGNED_TO_BRANCH_OFFICE}" rendered="#{empty branchOfficeListController.selectedBranchOffice.branchFaxNumber}" />
+                                                       </p:panelGrid>
+                                               </p:tab>
+
+                                               <p:tab title="#{msg.ADMIN_BRANCH_OFFICE_ADDRESS_TAB_TITLE}">
+                                                       <p:panelGrid columns="2" rendered="#{not empty branchOfficeListController.selectedBranchOffice}">
+                                                               <f:facet name="header">
+                                                                       <h:outputFormat value="#{msg.ADMIN_BRANCH_OFFICE_ADDRESS_DETAILS_HEADER}">
+                                                                               <f:param value="#{branchOfficeListController.selectedBranchOffice.branchId}" />
+                                                                       </h:outputFormat>
+                                                               </f:facet>
+
+                                                               <p:outputLabel value="#{msg.STREET_NAME_HEADER}" title="#{msg.STREET_NAME_OF_BRANCH_OFFICE_TITLE}" />
+                                                               <h:outputText value="#{branchOfficeListController.selectedBranchOffice.branchStreet}" />
+
+                                                               <p:outputLabel value="#{msg.HOUSE_NUMBER_HEADER}" title="#{msg.HOUSE_NUMBER_OF_BRANCH_OFFICE_TITLE}" />
+                                                               <h:outputText value="#{branchOfficeListController.selectedBranchOffice.branchHouseNumber}" />
+
+                                                               <p:outputLabel value="#{msg.LAST_HOUSE_NUMBER_HEADER}" title="#{msg.LAST_HOUSE_NUMBER_OF_BRANCH_OFFICE_TITLE}" />
+                                                               <h:outputText value="#{branchOfficeListController.selectedBranchOffice.branchLastHouseNumber}" />
+
+                                                               <p:outputLabel value="#{msg.HOUSE_NUMBER_EXTENSION_HEADER}" title="#{msg.HOUSE_NUMBER_EXTENSION_OF_BRANCH_OFFICE_TITLE}" />
+                                                               <h:outputText value="#{branchOfficeListController.selectedBranchOffice.branchHouseNumberExtension}" />
+
+                                                               <p:outputLabel value="#{msg.STORE_HEADER}" title="#{msg.STORE_OF_BRANCH_OFFICE_TITLE}" />
+                                                               <h:outputText value="#{branchOfficeListController.selectedBranchOffice.branchStore}" />
+
+                                                               <p:outputLabel value="#{msg.SUITE_NUMBER_HEADER}" title="#{msg.SUITE_NUMBER_OF_BRANCH_OFFICE_TITLE}" />
+                                                               <h:outputText value="#{branchOfficeListController.selectedBranchOffice.branchSuiteNumber}" />
+
+                                                               <p:outputLabel value="#{msg.DATA_ZIP_CODE}" title="#{msg.ZIP_CODE_OF_BRANCH_OFFICE_TITLE}" />
+                                                               <h:outputText value="#{branchOfficeListController.selectedBranchOffice.branchZipCode}" />
+
+                                                               <p:outputLabel value="#{msg.CITY_HEADER}" title="#{msg.CITY_OF_BRANCH_OFFICE_TITLE}" />
+                                                               <h:outputText value="#{branchOfficeListController.selectedBranchOffice.branchCity}" />
+
+                                                               <p:outputLabel value="#{msg.COUNTRY_HEADER}" title="#{msg.COUNTRY_OF_BRANCH_OFFICE_TITLE}" />
+                                                               <h:outputText value="#{beanHelper.renderCountry(branchOfficeListController.selectedBranchOffice.branchCountry)}" />
+                                                       </p:panelGrid>
+                                               </p:tab>
+
+                                               <p:tab title="#{msg.ADMIN_OPENING_TIMES_TAB_TITLE}">
+                                                       <core:outputOpeningTimesDataTable
+                                                               id="branchOpeningTimeDetailList"
+                                                               value="#{branchOfficeListController.selectedBranchOffice.branchOpeningTimes}"
+                                                               rows="10"
+                                                               summary="#{msg.TABLE_SUMMARY_ADMIN_LIST_BRANCH_OFFICE_OPENING_TIMES}"
+                                                               emptyMessage="#{msg.ADMIN_EMPTY_LIST_BRANCH_OFFICE_OPENING_TIMES}"
+                                                               widgetVar="branchOpeningTimeDetailList"
+                                                               headerMessage="#{msg.ADMIN_LIST_BRANCH_OFFICE_OPENING_TIMES_HEADER}"
+                                                               />
+                                               </p:tab>
+                                       </p:tabView>
+                               </p:outputPanel>
+                       </p:dialog>
+               </h:form>
+
+               <h:form>
+                       <p:panelGrid
+                               columns="1"
+                               layout="grid"
+                               >
+                               <f:facet name="header">
+                                       <h:outputText value="#{msg.ADMIN_ADD_BRANCH_OFFICE_TITLE}" />
+                               </f:facet>
+
+                               <h:panelGroup styleClass="para" layout="block">
+                                       <h:outputText value="#{msg.ADMIN_BRANCH_OFFICE_MINIMUM_DATA}" />
+                               </h:panelGroup>
+
+                               <ui:include src="/WEB-INF/templates/admin/business/branch_office/admin_form_branch_office_data.tpl" />
+
+                               <f:facet name="footer">
+                                       <p:panelGrid columns="2" layout="grid">
+                                               <p:commandButton
+                                                       type="reset"
+                                                       value="#{msg.BUTTON_RESET_FORM}"
+                                                       />
+
+                                               <p:commandButton
+                                                       type="submit"
+                                                       value="#{msg.BUTTON_ADMIN_ADD_BASIC_DATA}"
+                                                       action="#{adminBranchOfficeActionController.addBranchOffice()}"
+                                                       update="form-list-branch-offices:branchOfficeList"
+                                                       oncomplete="PF('branchOfficeList').filter()"
+                                                       />
+                                       </p:panelGrid>
+                               </f:facet>
+                       </p:panelGrid>
+               </h:form>
+
+               <h:form id="form-list-branch-opening-time">
+                       <p:fieldset legend="#{msg.ADMIN_BRANCH_OFFICE_OPENING_TIMES_LEGEND}">
+                               <core:outputOpeningTimesDataTable
+                                       id="branchOpeningTimeList"
+                                       value="#{adminBranchOfficeActionController.branchOpeningTimes}"
+                                       rows="10"
+                                       summary="#{msg.TABLE_SUMMARY_ADMIN_LIST_BRANCH_OFFICE_OPENING_TIMES}"
+                                       emptyMessage="#{msg.ADMIN_EMPTY_LIST_BRANCH_OFFICE_OPENING_TIMES}"
+                                       widgetVar="branchOpeningTimeList"
+                                       headerMessage="#{msg.ADMIN_LIST_BRANCH_OFFICE_OPENING_TIMES_HEADER}"
+                                       />
+                       </p:fieldset>
+               </h:form>
+
+               <h:form>
+                       <p:panelGrid
+                               columns="1"
+                               layout="grid"
+                               >
+                               <f:facet name="header">
+                                       <h:outputText value="#{msg.ADMIN_ADD_BRANCH_OFFICE_OPENING_TIME_TITLE}" />
+                               </f:facet>
+
+                               <h:panelGroup styleClass="para" layout="block">
+                                       <h:outputText value="#{msg.ADMIN_ADD_OPENING_TIME_MINIMUM_DATA}" />
+                               </h:panelGroup>
+
+                               <ui:include src="/WEB-INF/templates/admin/business/branch_office/admin_form_branch_opening_time.tpl" />
+
+                               <f:facet name="footer">
+                                       <p:panelGrid columns="2" layout="grid">
+                                               <p:commandButton
+                                                       type="reset"
+                                                       value="#{msg.BUTTON_RESET_FORM}"
+                                                       />
+
+                                               <p:commandButton
+                                                       type="submit"
+                                                       value="#{msg.BUTTON_ADMIN_ADD_BRANCH_OFFICE_OPENING_TIME}"
+                                                       action="#{adminBranchOfficeActionController.addOpeningTime()}"
+                                                       update="form-list-branch-opening-time:branchOpeningTimeList"
+                                                       oncomplete=""
+                                                       />
+                                       </p:panelGrid>
+                               </f:facet>
+                       </p:panelGrid>
+               </h:form>
+       </ui:define>
+</ui:composition>
diff --git a/web/admin/business/department/admin_department_edit.xhtml b/web/admin/business/department/admin_department_edit.xhtml
new file mode 100644 (file)
index 0000000..ab4b6e1
--- /dev/null
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<ui:composition
+       template="/WEB-INF/templates/admin/admin_base.tpl"
+       xmlns="http://www.w3.org/1999/xhtml"
+       xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+       xmlns:h="http://xmlns.jcp.org/jsf/html"
+       xmlns:f="http://xmlns.jcp.org/jsf/core"
+       xmlns:p="http://primefaces.org/ui"
+       >
+
+       <ui:define name="metadata">
+               <f:metadata>
+                       <f:viewParam
+                               name="departmentId"
+                               value="#{adminDepartmentActionController.currentDepartment}"
+                               converter="DepartmentConverter"
+                               required="true"
+                               requiredMessage="#{msg.ERROR_PARAMETER_DEPARTMENT_ID_NOT_SET}"
+                               converterMessage="#{msg.PARAMETER_DEPARTMENT_ID_INVALID}"
+                               />
+
+                       <f:viewAction
+                               action="#{adminDepartmentActionController.copyAllDepartmentProperties()}"
+                               />
+               </f:metadata>
+       </ui:define>
+
+       <ui:define name="document_admin_title">
+               <h:outputText value="#{msg.PAGE_TITLE_ADMIN_EDIT_DEPARTMENT}" />
+       </ui:define>
+
+       <ui:define name="content_header">
+               <h:outputText value="#{msg.CONTENT_TITLE_ADMIN_EDIT_DEPARTMENT}" />
+       </ui:define>
+
+       <ui:define name="content">
+               <h:form
+                       id="form-admin-edit-department"
+                       rendered="#{not empty adminDepartmentActionController.currentDepartment}"
+                       >
+                       <h:inputHidden value="#{adminDepartmentActionController.departmentId}" />
+
+                       <p:panelGrid
+                               columns="1"
+                               layout="grid"
+                               >
+                               <f:facet name="header">
+                                       <h:outputFormat
+                                               value="#{msg.ADMIN_EDIT_DEPARTMENT_TITLE}"
+                                               title="#{beanHelper.renderDepartment(adminDepartmentActionController.currentDepartment, false)}"
+                                               >
+                                               <f:param value="#{local[adminDepartmentActionController.departmentI18nKey]}" />
+                                               <f:param value="#{adminDepartmentActionController.departmentId}" />
+                                       </h:outputFormat>
+                               </f:facet>
+
+                               <h:panelGroup styleClass="para" layout="block">
+                                       <h:outputText value="#{msg.ADMIN_DEPARTMENT_MINIMUM_DATA}" />
+                               </h:panelGroup>
+
+                               <ui:include src="/WEB-INF/templates/admin/business/department/admin_form_department_data.tpl" />
+
+                               <f:facet name="footer">
+                                       <p:panelGrid columns="2" layout="grid">
+                                               <p:commandButton
+                                                       type="reset"
+                                                       value="#{msg.BUTTON_RESET_FORM}"
+                                                       />
+
+                                               <p:commandButton
+                                                       type="submit"
+                                                       value="#{msg.BUTTON_ADMIN_EDIT_DEPARTMENT}"
+                                                       action="#{adminDepartmentActionController.updateDepartment()}"
+                                                       />
+                                       </p:panelGrid>
+                               </f:facet>
+                       </p:panelGrid>
+               </h:form>
+       </ui:define>
+</ui:composition>
diff --git a/web/admin/business/department/admin_department_list.xhtml b/web/admin/business/department/admin_department_list.xhtml
new file mode 100644 (file)
index 0000000..192053d
--- /dev/null
@@ -0,0 +1,398 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<ui:composition
+       template="/WEB-INF/templates/admin/admin_base.tpl"
+       xmlns="http://www.w3.org/1999/xhtml"
+       xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+       xmlns:h="http://xmlns.jcp.org/jsf/html"
+       xmlns:f="http://xmlns.jcp.org/jsf/core"
+       xmlns:p="http://primefaces.org/ui"
+       >
+
+       <ui:define name="document_admin_title">
+               <h:outputText value="#{msg.PAGE_TITLE_ADMIN_LIST_DEPARTMENTS}" />
+       </ui:define>
+
+       <ui:define name="content_header">
+               <h:outputText value="#{msg.CONTENT_TITLE_ADMIN_LIST_DEPARTMENTS}" />
+       </ui:define>
+
+       <ui:define name="content">
+               <h:form id="form-list-departments">
+                       <p:dataTable
+                               id="departmentList"
+                               var="department"
+                               value="#{departmentListController.allDepartments}"
+                               paginator="true"
+                               paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
+                               filteredValue="#{departmentListController.filteredDepartments}"
+                               rows="10"
+                               rowKey="#{department.departmentId}"
+                               reflow="true"
+                               resizableColumns="true"
+                               rowsPerPageTemplate="5,10,20,50,100"
+                               sortMode="multiple"
+                               summary="#{msg.TABLE_SUMMARY_ADMIN_LIST_DEPARTMENTS}"
+                               emptyMessage="#{msg.ADMIN_EMPTY_LIST_DEPARTMENTS}"
+                               widgetVar="departmentList"
+                               selectionMode="single"
+                               selection="#{departmentListController.selectedDepartment}"
+                               skipChildren="true"
+                               >
+
+                               <f:facet name="header">
+                                       <p:panelGrid
+                                               columns="3"
+                                               layout="grid"
+                                               columnClasses="ui-grid-col-4,ui-grid-col-6,ui-grid-col-2"
+                                               >
+                                               <p:spacer />
+
+                                               <p:panelGrid
+                                                       columns="2"
+                                                       columnClasses="ui-grid-4,ui-grid-8"
+                                                       layout="grid"
+                                                       styleClass="ui-noborder"
+                                                       >
+                                                       <p:outputLabel
+                                                               for="globalFilter"
+                                                               value="#{msg.SEARCH_ALL_FIELDS}"
+                                                               style="float: right"
+                                                               />
+
+                                                       <p:inputText
+                                                               id="globalFilter"
+                                                               onkeyup="PF('departmentList').filter()"
+                                                               placeholder="#{msg.ENTER_KEYWORD}"
+                                                               />
+                                               </p:panelGrid>
+
+                                               <p:outputPanel>
+                                                       <p:spacer height="4" />
+
+                                                       <p:commandButton
+                                                               id="toggler"
+                                                               type="button"
+                                                               value="#{msg.SELECT_SHOWN_COLUMNS}"
+                                                               styleClass="column-selector"
+                                                               />
+
+                                                       <p:columnToggler datasource="departmentList" trigger="toggler" />
+                                               </p:outputPanel>
+                                       </p:panelGrid>
+                               </f:facet>
+
+                               <p:ajax
+                                       event="rowSelect"
+                                       update="form-list-departments:department-details"
+                                       oncomplete="PF('departmentDialog').show()"
+                                       />
+
+                               <p:column
+                                       headerText="#{msg.ID_HEADER}"
+                                       sortBy="#{department.departmentId}"
+                                       filterable="false"
+                                       >
+                                       <p:link
+                                               outcome="admin_show_department"
+                                               value="#{department.departmentId}"
+                                               title="#{msg.ADMIN_LINK_SHOW_DEPARTMENT_TITLE}"
+                                               >
+                                               <f:param name="departmentId" value="#{department.departmentId}" />
+                                       </p:link>
+                               </p:column>
+
+                               <p:column
+                                       headerText="#{msg.ADMIN_I18N_KEY_HEADER}"
+                                       sortBy="#{local[department.departmentI18nKey]}"
+                                       filterBy="#{local[department.departmentI18nKey]}"
+                                       filterMatchMode="contains"
+                                       >
+                                       <h:outputText value="#{local[department.departmentI18nKey]}" />
+                               </p:column>
+
+                               <p:column
+                                       headerText="#{msg.ADMIN_BASIC_DATA_COMPANY_NAME_HEADER}"
+                                       sortBy="#{department.departmentCompany}"
+                                       filterBy="#{department.departmentCompany}"
+                                       filterMatchMode="in"
+                                       >
+                                       <f:facet name="filter">
+                                               <p:selectCheckboxMenu
+                                                       filter="true"
+                                                       filterMatchMode="contains"
+                                                       label="#{msg.LABEL_COMPANIES}"
+                                                       onchange="PF('departmentList').filter()"
+                                                       updateLabel="true"
+                                                       title="#{msg.FILTER_BY_MULTIPLE_COMPANIES_TITLE}"
+                                                       >
+                                                       <f:converter converterId="BasicCompanyDataConverter" />
+
+                                                       <f:selectItems
+                                                               value="#{basicDataListController.allBasicData}"
+                                                               var="basicData"
+                                                               itemValue="#{basicData}"
+                                                               itemLabel="#{beanHelper.renderBasicData(basicData, true, false)}"
+                                                               />
+                                               </p:selectCheckboxMenu>
+                                       </f:facet>
+
+                                       <p:link
+                                               outcome="admin_show_basic_data"
+                                               value="#{beanHelper.renderBasicData(department.departmentCompany, true, false)}"
+                                               title="#{msg.ADMIN_LINK_SHOW_BASIC_DATA_TITLE}"
+                                               >
+                                               <f:param name="basicDataId" value="#{department.departmentCompany.basicDataId}" />
+                                       </p:link>
+                               </p:column>
+
+                               <p:column
+                                       headerText="#{msg.ADMIN_BRANCH_OFFICE_HEADER}"
+                                       sortBy="#{department.departmentBranchOffice}"
+                                       filterBy="#{department.departmentBranchOffice}"
+                                       filterMatchMode="in"
+                                       >
+                                       <f:facet name="filter">
+                                               <p:selectCheckboxMenu
+                                                       filter="true"
+                                                       filterMatchMode="contains"
+                                                       label="#{msg.LABEL_BRANCH_OFFICES}"
+                                                       onchange="PF('departmentList').filter()"
+                                                       updateLabel="true"
+                                                       title="#{msg.FILTER_BY_MULTIPLE_EMPLOYEES_TITLE}"
+                                                       >
+                                                       <f:converter converterId="BranchOfficeConverter" />
+
+                                                       <f:selectItems
+                                                               value="#{branchOfficeListController.allBranchOffices}"
+                                                               var="branchOffice"
+                                                               itemValue="#{branchOffice}"
+                                                               itemLabel="#{beanHelper.renderBranchOffice(branchOffice, false)}"
+                                                               />
+                                               </p:selectCheckboxMenu>
+                                       </f:facet>
+
+                                       <p:link
+                                               outcome="admin_show_branch_office"
+                                               value="#{beanHelper.renderBranchOffice(department.departmentBranchOffice, false)}"
+                                               title="#{msg.ADMIN_LINK_SHOW_BRANCH_OFFICE_TITLE}"
+                                               rendered="#{not empty department.departmentBranchOffice}"
+                                               >
+                                               <f:param name="branchId" value="#{department.departmentBranchOffice.branchId}" />
+                                       </p:link>
+
+                                       <p:link
+                                               outcome="admin_assign_department_branch_office"
+                                               value="#{msg.ADMIN_LINK_ASSIGN}"
+                                               title="#{msg.ADMIN_LINK_ASSIGN_DEPARTMENT_BRANCH_OFFICE_TITLE}"
+                                               rendered="#{empty department.departmentBranchOffice}"
+                                               >
+                                               <f:param name="departmentId" value="#{department.departmentId}" />
+                                       </p:link>
+                               </p:column>
+
+                               <p:column
+                                       headerText="#{msg.ADMIN_DEPARTMENT_LEAD_EMPLOYEE}"
+                                       sortBy="#{department.departmentLead}"
+                                       filterBy="#{department.departmentLead}"
+                                       filterMatchMode="in"
+                                       >
+                                       <f:facet name="filter">
+                                               <p:selectCheckboxMenu
+                                                       filter="true"
+                                                       filterMatchMode="contains"
+                                                       label="#{msg.LABEL_EMPLOYEES}"
+                                                       onchange="PF('departmentList').filter()"
+                                                       updateLabel="true"
+                                                       title="#{msg.FILTER_BY_MULTIPLE_EMPLOYEES_TITLE}"
+                                                       >
+                                                       <f:converter converterId="ContactConverter" />
+
+                                                       <f:selectItems
+                                                               value="#{contactListController.allContacts}"
+                                                               var="contact"
+                                                               itemValue="#{contact}"
+                                                               itemLabel="#{beanHelper.renderContact(contact)}"
+                                                               />
+                                               </p:selectCheckboxMenu>
+                                       </f:facet>
+
+                                       <p:link
+                                               outcome="admin_show_contact"
+                                               value="#{beanHelper.renderContact(department.departmentLead)}"
+                                               title="#{msg.ADMIN_LINK_SHOW_DEPARTMENT_LEAD_CONTACT_TITLE}"
+                                               rendered="#{not empty department.departmentLead}"
+                                               >
+                                               <f:param name="contactId" value="#{department.departmentLead.contactId}" />
+                                       </p:link>
+
+                                       <p:link
+                                               outcome="admin_assign_department_lead"
+                                               value="#{msg.ADMIN_LINK_ASSIGN}"
+                                               title="#{msg.ADMIN_LINK_ASSIGN_DEPARTMENTS_LEAD_CONTACT_TITLE}"
+                                               rendered="#{empty department.departmentLead}"
+                                               >
+                                               <f:param name="departmentId" value="#{department.departmentId}" />
+                                       </p:link>
+                               </p:column>
+
+                               <p:column
+                                       headerText="#{msg.ADMIN_USER_HEADER}"
+                                       sortBy="#{department.departmentUserOwner}"
+                                       filterBy="#{department.departmentUserOwner}"
+                                       filterMatchMode="in"
+                                       >
+                                       <f:facet name="filter">
+                                               <p:selectCheckboxMenu
+                                                       filter="true"
+                                                       filterMatchMode="contains"
+                                                       label="#{msg.LABEL_USERS}"
+                                                       onchange="PF('departmentList').filter()"
+                                                       updateLabel="true"
+                                                       title="#{msg.FILTER_BY_MULTIPLE_USERS_TITLE}"
+                                                       >
+                                                       <f:converter converterId="UserConverter" />
+
+                                                       <f:selectItems
+                                                               value="#{userListController.allUsers}"
+                                                               var="user"
+                                                               itemValue="#{user}"
+                                                               itemLabel="#{beanHelper.renderUser(user)}"
+                                                               />
+                                               </p:selectCheckboxMenu>
+                                       </f:facet>
+
+                                       <p:link
+                                               outcome="admin_show_user"
+                                               value="#{department.departmentUserOwner.userId}"
+                                               title="#{msg.ADMIN_LINK_SHOW_DEPARTMENT_OWNER_USER_TITLE}"
+                                               rendered="#{not empty department.departmentUserOwner}"
+                                               >
+                                               <f:param name="userId" value="#{department.departmentUserOwner.userId}" />
+                                       </p:link>
+
+                                       <p:link
+                                               outcome="admin_assign_department_user"
+                                               value="#{msg.ADMIN_LINK_ASSIGN}"
+                                               title="#{msg.ADMIN_LINK_ASSIGN_DEPARTMENTS_OWNER_USER_TITLE}"
+                                               rendered="#{empty department.departmentUserOwner}"
+                                               >
+                                               <f:param name="departmentId" value="#{department.departmentId}" />
+                                       </p:link>
+                               </p:column>
+
+                               <p:column
+                                       headerText="#{msg.ENTRY_CREATED_HEADER}"
+                                       sortBy="#{department.departmentEntryCreated}"
+                                       filterable="false"
+                                       >
+                                       <h:outputText value="#{department.departmentEntryCreated}">
+                                               <f:convertDateTime type="both" timeStyle="short" dateStyle="short" />
+                                       </h:outputText>
+                               </p:column>
+
+                               <p:column
+                                       headerText="#{msg.ENTRY_UPDATED_HEADER}"
+                                       sortBy="#{department.departmentEntryUpdated}"
+                                       filterable="false"
+                                       >
+                                       <h:outputText value="#{department.departmentEntryUpdated}">
+                                               <f:convertDateTime type="both" timeStyle="short" dateStyle="short" />
+                                       </h:outputText>
+                               </p:column>
+
+                               <p:column
+                                       headerText="#{msg.ADMIN_ACTION_LINKS_HEADER}"
+                                       sortable="false"
+                                       filterable="false"
+                                       >
+                                       <p:menuButton value="#{msg.OPTIONS}">
+                                               <p:menuitem
+                                                       outcome="admin_show_department"
+                                                       value="#{msg.ADMIN_LINK_SHOW_SHORT}"
+                                                       title="#{msg.ADMIN_LINK_SHOW_DEPARTMENT_TITLE}"
+                                                       >
+                                                       <f:param name="departmentId" value="#{department.departmentId}" />
+                                               </p:menuitem>
+
+                                               <p:menuitem
+                                                       outcome="admin_edit_department"
+                                                       value="#{msg.ADMIN_LINK_EDIT_SHORT}"
+                                                       title="#{msg.ADMIN_LINK_EDIT_DEPARTMENT_TITLE}"
+                                                       >
+                                                       <f:param name="departmentId" value="#{department.departmentId}" />
+                                               </p:menuitem>
+
+                                               <p:menuitem outcome="admin_delete_department">
+                                                       <h:outputText
+                                                               styleClass="link-danger"
+                                                               value="#{msg.ADMIN_LINK_DELETE_SHORT}"
+                                                               title="#{msg.ADMIN_LINK_DELETE_DEPARTMENT_TITLE}"
+                                                               />
+                                                       <f:param name="departmentId" value="#{department.departmentId}" />
+                                               </p:menuitem>
+                                       </p:menuButton>
+                               </p:column>
+                       </p:dataTable>
+
+                       <p:dialog
+                               dynamic="true"
+                               modal="true"
+                               resizable="false"
+                               header="#{msg.ADMIN_SINGLE_DEPARTMENT_DETAILS_HEADER}"
+                               hideEffect="fade"
+                               showEffect="fade"
+                               widgetVar="departmentDialog"
+                               position="top"
+                               responsive="true"
+                               closeOnEscape="true"
+                               >
+                               <p:outputPanel id="department-details">
+                                       <p:panelGrid columns="2" rendered="#{not empty departmentListController.selectedDepartment}">
+                                               <f:facet name="header">
+                                                       <h:outputFormat value="#{msg.ADMIN_DEPARTMENT_DETAILS_HEADER}">
+                                                               <f:param value="#{local[departmentListController.selectedDepartment.departmentI18nKey]}" />
+                                                               <f:param value="#{departmentListController.selectedDepartment.departmentId}" />
+                                                       </h:outputFormat>
+                                               </f:facet>
+
+                                               <p:outputLabel value="#{msg.ID_HEADER}" title="#{msg.DEPARTMENT_ID_NUMBER_TITLE}" />
+                                               <h:outputText value="#{departmentListController.selectedDepartment.departmentId}" />
+                                       </p:panelGrid>
+                               </p:outputPanel>
+                       </p:dialog>
+               </h:form>
+
+               <h:form>
+                       <p:panelGrid
+                               columns="1"
+                               layout="grid"
+                               >
+                               <f:facet name="header">
+                                       <h:outputText value="#{msg.ADMIN_ADD_DEPARTMENT_TITLE}" />
+                               </f:facet>
+
+                               <h:panelGroup styleClass="para" layout="block">
+                                       <h:outputText value="#{msg.ADMIN_ADD_DEPARTMENT_MINIMUM_DATA}" />
+                               </h:panelGroup>
+
+                               <ui:include src="/WEB-INF/templates/admin/department/admin_form_department_data.tpl" />
+
+                               <f:facet name="footer">
+                                       <p:panelGrid columns="2" layout="grid">
+                                               <p:commandButton
+                                                       type="reset"
+                                                       value="#{msg.BUTTON_RESET_FORM}"
+                                                       />
+
+                                               <p:commandButton
+                                                       type="submit"
+                                                       value="#{msg.BUTTON_ADMIN_ADD_DEPARTMENT_DATA}"
+                                                       action="#{adminDepartmentActionController.addDepartment()}"
+                                                       update="form-list-departments:departmentList"
+                                                       />
+                                       </p:panelGrid>
+                               </f:facet>
+                       </p:panelGrid>
+               </h:form>
+       </ui:define>
+</ui:composition>
diff --git a/web/admin/business/employee/admin_employee_list.xhtml b/web/admin/business/employee/admin_employee_list.xhtml
new file mode 100644 (file)
index 0000000..c6e460c
--- /dev/null
@@ -0,0 +1,380 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<ui:composition
+       template="/WEB-INF/templates/admin/admin_base.tpl"
+       xmlns="http://www.w3.org/1999/xhtml"
+       xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+       xmlns:h="http://xmlns.jcp.org/jsf/html"
+       xmlns:f="http://xmlns.jcp.org/jsf/core"
+       xmlns:p="http://primefaces.org/ui"
+       >
+
+       <ui:define name="document_admin_title">
+               <h:outputText value="#{msg.PAGE_TITLE_ADMIN_LIST_EMPLOYEE}" />
+       </ui:define>
+
+       <ui:define name="content_header">
+               <h:outputText value="#{msg.CONTENT_TITLE_ADMIN_LIST_EMPLOYEE}" />
+       </ui:define>
+
+       <ui:define name="content">
+               <h:form id="form-list-employees">
+                       <p:dataTable
+                               id="employeeList"
+                               var="employee"
+                               value="#{employeeListController.allEmployees}"
+                               paginator="true"
+                               paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
+                               filteredValue="#{employeeListController.filteredEmployees}"
+                               rows="10"
+                               rowKey="#{employee.employeeId}"
+                               reflow="true"
+                               resizableColumns="true"
+                               rowsPerPageTemplate="5,10,20,50,100"
+                               sortMode="multiple"
+                               summary="#{msg.TABLE_SUMMARY_ADMIN_LIST_EMPLOYEESS}"
+                               emptyMessage="#{msg.ADMIN_EMPTY_LIST_EMPLOYEESS}"
+                               widgetVar="employeeList"
+                               selectionMode="single"
+                               selection="#{employeeListController.selectedEmployee}"
+                               skipChildren="true"
+                               >
+
+                               <f:facet name="header">
+                                       <p:panelGrid
+                                               columns="3"
+                                               layout="grid"
+                                               columnClasses="ui-grid-col-4,ui-grid-col-6,ui-grid-col-2"
+                                               >
+                                               <p:spacer />
+
+                                               <p:panelGrid
+                                                       columns="2"
+                                                       columnClasses="ui-grid-4,ui-grid-8"
+                                                       layout="grid"
+                                                       styleClass="ui-noborder"
+                                                       >
+                                                       <p:outputLabel
+                                                               for="globalFilter"
+                                                               value="#{msg.SEARCH_ALL_FIELDS}"
+                                                               style="float: right"
+                                                               />
+
+                                                       <p:inputText
+                                                               id="globalFilter"
+                                                               onkeyup="PF('employeeList').filter()"
+                                                               placeholder="#{msg.ENTER_KEYWORD}"
+                                                               />
+                                               </p:panelGrid>
+
+                                               <p:outputPanel>
+                                                       <p:spacer height="4" />
+
+                                                       <p:commandButton
+                                                               id="toggler"
+                                                               type="button"
+                                                               value="#{msg.SELECT_SHOWN_COLUMNS}"
+                                                               styleClass="column-selector"
+                                                               />
+
+                                                       <p:columnToggler datasource="employeeList" trigger="toggler" />
+                                               </p:outputPanel>
+                                       </p:panelGrid>
+                               </f:facet>
+
+                               <p:ajax
+                                       event="rowSelect"
+                                       update="form-list-employees:employee-details"
+                                       oncomplete="PF('employeeDialog').show()"
+                                       />
+
+                               <p:column
+                                       headerText="#{msg.ID_HEADER}"
+                                       sortBy="#{employee.employeeId}"
+                                       filterable="false"
+                                       >
+                                       <p:link
+                                               outcome="admin_show_employee"
+                                               value="#{employee.employeeId}"
+                                               title="#{msg.ADMIN_LINK_SHOW_EMPLOYEE_TITLE}"
+                                               >
+                                               <f:param name="employeeId" value="#{employee.employeeId}" />
+                                       </p:link>
+                               </p:column>
+
+                               <p:column
+                                       headerText="#{msg.EMPLOYEE_NUMBER_HEADER}"
+                                       sortBy="#{employee.employeeNumber}"
+                                       filterBy="#{employee.employeeNumber}"
+                                       filterMatchMode="contains"
+                                       >
+                                       <h:outputText value="#{employee.employeeNumber}" rendered="#{not empty employee.employeeNumber}" />
+                                       <h:outputText value="-" rendered="#{empty employee.employeeNumber}" />
+                               </p:column>
+
+                               <p:column
+                                       headerText="#{msg.ADMIN_BRANCH_OFFICE_HEADER}"
+                                       sortBy="#{employee.employeeBranchOffice}"
+                                       filterBy="#{employee.employeeBranchOffice}"
+                                       filterMatchMode="in"
+                                       >
+                                       <f:facet name="filter">
+                                               <p:selectCheckboxMenu
+                                                       filter="true"
+                                                       filterMatchMode="contains"
+                                                       label="#{msg.LABEL_BRANCH_OFFICES}"
+                                                       onchange="PF('employeeList').filter()"
+                                                       updateLabel="true"
+                                                       title="#{msg.FILTER_BY_MULTIPLE_EMPLOYEES_TITLE}"
+                                                       >
+                                                       <f:converter converterId="BranchOfficeConverter" />
+
+                                                       <f:selectItems
+                                                               value="#{branchOfficeListController.allBranchOffices}"
+                                                               var="branchOffice"
+                                                               itemValue="#{branchOffice}"
+                                                               itemLabel="#{beanHelper.renderBranchOffice(branchOffice, false)}"
+                                                               />
+                                               </p:selectCheckboxMenu>
+                                       </f:facet>
+
+                                       <p:link
+                                               outcome="admin_show_branch_office"
+                                               value="#{beanHelper.renderBranchOffice(employee.employeeBranchOffice, false)}"
+                                               title="#{msg.ADMIN_LINK_SHOW_BRANCH_OFFICE_TITLE}"
+                                               rendered="#{not empty employee.employeeBranchOffice}"
+                                               >
+                                               <f:param name="branchId" value="#{employee.employeeBranchOffice.branchId}" />
+                                       </p:link>
+
+                                       <p:link
+                                               outcome="admin_assign_branch_office"
+                                               value="#{msg.ADMIN_LINK_ASSIGN}"
+                                               title="#{msg.ADMIN_LINK_ASSIGN_EMPLOYEE_BRANCH_OFFICE_TITLE}"
+                                               rendered="#{empty employee.employeeBranchOffice}"
+                                               >
+                                               <f:param name="employeeId" value="#{employee.employeeId}" />
+                                       </p:link>
+                               </p:column>
+
+                               <p:column
+                                       headerText="#{msg.ADMIN_USER_HEADER}"
+                                       sortBy="#{employee.employeeUserOwner}"
+                                       filterBy="#{employee.employeeUserOwner}"
+                                       filterMatchMode="in"
+                                       >
+                                       <f:facet name="filter">
+                                               <p:selectCheckboxMenu
+                                                       filter="true"
+                                                       filterMatchMode="contains"
+                                                       label="#{msg.LABEL_USERS}"
+                                                       onchange="PF('employeeList').filter()"
+                                                       updateLabel="true" title="#{msg.FILTER_BY_MULTIPLE_USERS_TITLE}"
+                                                       >
+                                                       <f:converter converterId="UserConverter" />
+
+                                                       <f:selectItems
+                                                               value="#{userListController.allUsers}"
+                                                               var="user"
+                                                               itemValue="#{user}"
+                                                               itemLabel="#{beanHelper.renderUser(user)}"
+                                                               />
+                                               </p:selectCheckboxMenu>
+                                       </f:facet>
+
+                                       <p:link
+                                               outcome="admin_show_user"
+                                               value="#{employee.employeeUserOwner.userId}"
+                                               title="#{msg.ADMIN_LINK_SHOW_EMPLOYEES_OWNER_USER_TITLE}"
+                                               rendered="#{not empty employee.employeeUserOwner}"
+                                               >
+                                               <f:param name="userId" value="#{employee.employeeUserOwner.userId}" />
+                                       </p:link>
+
+                                       <p:link
+                                               outcome="admin_assign_user_owner"
+                                               value="#{msg.ADMIN_LINK_ASSIGN}"
+                                               title="#{msg.ADMIN_LINK_ASSIGN_EMPLOYEES_OWNER_USER_TITLE}"
+                                               rendered="#{empty employee.employeeUserOwner}"
+                                               >
+                                               <f:param name="employeeId" value="#{employee.employeeId}" />
+                                       </p:link>
+                               </p:column>
+
+                               <p:column
+                                       headerText="#{msg.ADMIN_BASIC_DATA_COMPANY_NAME_HEADER}"
+                                       sortBy="#{employee.employeeBasicData}"
+                                       filterBy="#{employee.employeeBasicData}"
+                                       filterMatchMode="in"
+                                       >
+                                       <f:facet name="filter">
+                                               <p:selectCheckboxMenu
+                                                       filter="true"
+                                                       filterMatchMode="contains"
+                                                       label="#{msg.LABEL_COMPANIES}"
+                                                       onchange="PF('employeeList').filter()"
+                                                       updateLabel="true"
+                                                       title="#{msg.FILTER_BY_MULTIPLE_COMPANIES_TITLE}"
+                                                       >
+                                                       <f:converter converterId="BasicCompanyDataConverter" />
+
+                                                       <f:selectItems
+                                                               value="#{basicDataListController.allBasicData}"
+                                                               var="basicData"
+                                                               itemValue="#{basicData}"
+                                                               itemLabel="#{beanHelper.renderBasicData(basicData, true, false)}"
+                                                               />
+                                               </p:selectCheckboxMenu>
+                                       </f:facet>
+
+                                       <p:link
+                                               outcome="admin_show_basic_data"
+                                               value="#{beanHelper.renderBasicData(employee.employeeBasicData, true, false)}"
+                                               title="#{msg.ADMIN_LINK_SHOW_BASIC_DATA_TITLE}"
+                                               >
+                                               <f:param name="basicDataId" value="#{employee.employeeBasicData.basicDataId}" />
+                                       </p:link>
+                               </p:column>
+
+                               <p:column
+                                       headerText="#{msg.DATA_EMAIL_ADDRESS}"
+                                       sortBy="#{employee.employeeEmailAddress}"
+                                       filterBy="#{employee.employeeEmailAddress}"
+                                       filterMatchMode="contains"
+                                       >
+                                       <p:link
+                                               href="mailto:#{employee.employeeEmailAddress}"
+                                               value="#{employee.employeeEmailAddress}"
+                                               rendered="#{not empty employee.employeeEmailAddress}"
+                                               />
+
+                                       <h:outputText value="#{msg.NO_EMAIL_ADDRESS_ENTERED}" rendered="#{empty employee.employeeEmailAddress}" />
+                               </p:column>
+
+                               <p:column
+                                       headerText="#{msg.ENTRY_CREATED_HEADER}"
+                                       sortBy="#{employee.employeeEntryCreated}"
+                                       filterable="false"
+                                       >
+                                       <h:outputText value="#{employee.employeeEntryCreated}">
+                                               <f:convertDateTime type="both" timeStyle="short" dateStyle="short" />
+                                       </h:outputText>
+                               </p:column>
+
+                               <p:column
+                                       headerText="#{msg.ENTRY_UPDATED_HEADER}"
+                                       sortBy="#{employee.employeeEntryUpdated}"
+                                       filterable="false"
+                                       >
+                                       <h:outputText value="#{employee.employeeEntryUpdated}">
+                                               <f:convertDateTime type="both" timeStyle="short" dateStyle="short" />
+                                       </h:outputText>
+                               </p:column>
+
+                               <p:column
+                                       headerText="#{msg.ADMIN_ACTION_LINKS_HEADER}"
+                                       sortable="false"
+                                       filterable="false"
+                                       >
+                                       <p:menuButton value="#{msg.OPTIONS}">
+                                               <p:menuitem
+                                                       outcome="admin_show_employee"
+                                                       value="#{msg.ADMIN_LINK_SHOW_SHORT}"
+                                                       title="#{msg.ADMIN_LINK_SHOW_EMPLOYEE_TITLE}"
+                                                       >
+                                                       <f:param name="employeeId" value="#{employee.employeeId}" />
+                                               </p:menuitem>
+
+                                               <p:menuitem
+                                                       outcome="admin_edit_employee"
+                                                       value="#{msg.ADMIN_LINK_EDIT_SHORT}"
+                                                       title="#{msg.ADMIN_LINK_EDIT_EMPLOYEE_TITLE}"
+                                                       >
+                                                       <f:param name="employeeId" value="#{employee.employeeId}" />
+                                               </p:menuitem>
+
+                                               <p:menuitem outcome="admin_delete_employee">
+                                                       <h:outputText
+                                                               styleClass="link-danger"
+                                                               value="#{msg.ADMIN_LINK_DELETE_SHORT}"
+                                                               title="#{msg.ADMIN_LINK_DELETE_EMPLOYEE_TITLE}"
+                                                               />
+                                                       <f:param name="employeeId" value="#{employee.employeeId}" />
+                                               </p:menuitem>
+                                       </p:menuButton>
+                               </p:column>
+                       </p:dataTable>
+
+                       <p:dialog
+                               dynamic="true"
+                               modal="true"
+                               resizable="false"
+                               header="#{msg.ADMIN_SINGLE_EMPLOYEE_DETAILS_HEADER}"
+                               hideEffect="fade"
+                               showEffect="fade"
+                               widgetVar="employeeDialog"
+                               position="top"
+                               responsive="true"
+                               closeOnEscape="true"
+                               >
+                               <p:outputPanel id="employee-details">
+                                       <p:panelGrid
+                                               columns="2"
+                                               rendered="#{not empty employeeListController.selectedEmployee}"
+                                               >
+                                               <f:facet name="header">
+                                                       <h:outputFormat
+                                                               value="#{msg.ADMIN_EMPLOYEE_NUMBER_DETAILS_HEADER}"
+                                                               rendered="#{empty employeeListController.selectedEmployee.employeePersonalData}"
+                                                               >
+                                                               <f:param value="#{employeeListController.selectedEmployee.employeeId}" />
+                                                       </h:outputFormat>
+
+                                                       <h:outputFormat
+                                                               value="#{msg.ADMIN_EMPLOYEE_NAME_DETAILS_HEADER}"
+                                                               rendered="#{not empty employeeListController.selectedEmployee.employeePersonalData}"
+                                                               >
+                                                               <f:param value="#{beanHelper.renderContact(employeeListController.selectedEmployee.employeePersonalData)}" />
+                                                       </h:outputFormat>
+                                               </f:facet>
+
+                                               <p:outputLabel value="#{msg.ID_HEADER}" title="#{msg.EMPLOYEE_ID_NUMBER_TITLE}" />
+                                               <h:outputText value="#{employeeListController.selectedEmployee.employeeId}" />
+                                       </p:panelGrid>
+                               </p:outputPanel>
+                       </p:dialog>
+               </h:form>
+
+               <h:form>
+                       <p:panelGrid
+                               columns="1"
+                               layout="grid"
+                               >
+                               <f:facet name="header">
+                                       <h:outputText value="#{msg.ADMIN_ADD_EMPLOYEE_TITLE}" />
+                               </f:facet>
+
+                               <h:outputText value="#{msg.ADMIN_ADD_EMPLOYEE_MINIMUM_DATA}" />
+
+                               <p:column>
+                                       <ui:include src="/WEB-INF/templates/admin/business/employee/admin_form_employee_data.tpl" />
+                               </p:column>
+
+                               <f:facet name="footer">
+                                       <p:panelGrid columns="2" layout="grid">
+                                               <p:commandButton
+                                                       type="reset"
+                                                       value="#{msg.BUTTON_RESET_FORM}"
+                                                       />
+
+                                               <p:commandButton
+                                                       type="submit"
+                                                       value="#{msg.BUTTON_ADMIN_ADD_EMPLOYEE}"
+                                                       action="#{adminEmployeeController.addEmployee()}"
+                                                       update="form-list-employees:employeeList"
+                                                       />
+                                       </p:panelGrid>
+                               </f:facet>
+                       </p:panelGrid>
+               </h:form>
+       </ui:define>
+</ui:composition>
diff --git a/web/admin/business/headquarter/admin_headquarter_list.xhtml b/web/admin/business/headquarter/admin_headquarter_list.xhtml
new file mode 100644 (file)
index 0000000..9bc2aa4
--- /dev/null
@@ -0,0 +1,415 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<ui:composition
+       template="/WEB-INF/templates/admin/admin_base.tpl"
+       xmlns="http://www.w3.org/1999/xhtml"
+       xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+       xmlns:h="http://xmlns.jcp.org/jsf/html"
+       xmlns:f="http://xmlns.jcp.org/jsf/core"
+       xmlns:p="http://primefaces.org/ui"
+       >
+
+       <ui:define name="document_admin_title">
+               <h:outputText value="#{msg.PAGE_TITLE_ADMIN_LIST_HEADQUARTER}" />
+       </ui:define>
+
+       <ui:define name="content_header">
+               <h:outputText value="#{msg.CONTENT_TITLE_ADMIN_LIST_HEADQUARTER}" />
+       </ui:define>
+
+       <ui:define name="content">
+               <h:form id="form-list-headquarters">
+                       <p:dataTable
+                               id="headquarterList"
+                               var="headquarter"
+                               value="#{headquarterListController.allHeadquarters}"
+                               paginator="true"
+                               paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
+                               filteredValue="#{headquarterListController.filteredHeadquarters}"
+                               rows="10"
+                               rowKey="#{headquarter.headquarterId}"
+                               reflow="true"
+                               resizableColumns="true"
+                               rowsPerPageTemplate="5,10,20,50,100"
+                               sortMode="multiple"
+                               summary="#{msg.TABLE_SUMMARY_ADMIN_LIST_BRANCH_OFFICES}"
+                               emptyMessage="#{msg.ADMIN_EMPTY_LIST_BRANCH_OFFICES}"
+                               widgetVar="headquarterList"
+                               selectionMode="single"
+                               selection="#{headquarterListController.selectedHeadquarter}"
+                               skipChildren="true"
+                               >
+
+                               <f:facet name="header">
+                                       <p:panelGrid
+                                               columns="3"
+                                               layout="grid"
+                                               columnClasses="ui-grid-col-4,ui-grid-col-6,ui-grid-col-2"
+                                               >
+                                               <p:spacer />
+
+                                               <p:panelGrid
+                                                       columns="2"
+                                                       columnClasses="ui-grid-4,ui-grid-8"
+                                                       layout="grid"
+                                                       styleClass="ui-noborder"
+                                                       >
+                                                       <p:outputLabel
+                                                               for="globalFilter"
+                                                               value="#{msg.SEARCH_ALL_FIELDS}"
+                                                               style="float: right"
+                                                               />
+
+                                                       <p:inputText
+                                                               id="globalFilter"
+                                                               onkeyup="PF('departmentList').filter()"
+                                                               placeholder="#{msg.ENTER_KEYWORD}"
+                                                               />
+                                               </p:panelGrid>
+
+                                               <p:outputPanel>
+                                                       <p:spacer height="4" />
+
+                                                       <p:commandButton
+                                                               id="toggler"
+                                                               type="button"
+                                                               value="#{msg.SELECT_SHOWN_COLUMNS}"
+                                                               styleClass="column-selector"
+                                                               />
+
+                                                       <p:columnToggler datasource="headquarterList" trigger="toggler" />
+                                               </p:outputPanel>
+                                       </p:panelGrid>
+                               </f:facet>
+
+                               <p:ajax
+                                       event="rowSelect"
+                                       update="form-list-headquarters:headquarter-details"
+                                       oncomplete="PF('headquarterDialog').show()"
+                                       />
+
+                               <p:column
+                                       headerText="#{msg.ID_HEADER}"
+                                       sortBy="#{headquarter.headquarterId}"
+                                       filterable="false"
+                                       >
+                                       <p:link
+                                               outcome="admin_show_headquarter"
+                                               value="#{headquarter.headquarterId}"
+                                               title="#{msg.ADMIN_LINK_SHOW_HEADQUARTER_TITLE}"
+                                               >
+                                               <f:param name="headquarterId" value="#{headquarter.headquarterId}" />
+                                       </p:link>
+                               </p:column>
+
+                               <p:column
+                                       headerText="#{msg.ADMIN_USER_HEADER}"
+                                       sortBy="#{headquarter.headquarterUserOwner}"
+                                       filterBy="#{headquarter.headquarterUserOwner}"
+                                       filterMatchMode="in"
+                                       >
+                                       <f:facet name="filter">
+                                               <p:selectCheckboxMenu
+                                                       filter="true"
+                                                       filterMatchMode="contains"
+                                                       label="#{msg.LABEL_USERS}"
+                                                       onchange="PF('headquarterList').filter()"
+                                                       updateLabel="true"
+                                                       title="#{msg.FILTER_BY_MULTIPLE_USERS_TITLE}"
+                                                       >
+                                                       <f:converter converterId="UserConverter" />
+
+                                                       <f:selectItems
+                                                               value="#{userListController.allUsers}"
+                                                               var="user"
+                                                               itemValue="#{user}"
+                                                               itemLabel="#{beanHelper.renderUser(user)}"
+                                                               />
+                                               </p:selectCheckboxMenu>
+                                       </f:facet>
+
+                                       <p:link
+                                               outcome="admin_show_user"
+                                               value="#{headquarter.headquarterUserOwner.userId}"
+                                               title="#{msg.ADMIN_LINK_SHOW_HEADQUARTER_OWNER_USER_TITLE}"
+                                               rendered="#{not empty headquarter.headquarterUserOwner}"
+                                               >
+                                               <f:param name="userId" value="#{headquarter.headquarterUserOwner.userId}" />
+                                       </p:link>
+
+                                       <p:link
+                                               outcome="admin_assign_headquarter_owner"
+                                               value="#{msg.ADMIN_LINK_ASSIGN}"
+                                               title="#{msg.ADMIN_LINK_ASSIGN_HEADQUARTER_OWNER_USER_TITLE}"
+                                               rendered="#{empty headquarter.headquarterUserOwner}"
+                                               >
+                                               <f:param name="headquarterId" value="#{headquarter.headquarterId}" />
+                                       </p:link>
+                               </p:column>
+
+                               <p:column
+                                       headerText="#{msg.DATA_EMAIL_ADDRESS}"
+                                       sortBy="#{headquarter.headquarterEmailAddress}"
+                                       filterBy="#{headquarter.headquarterEmailAddress}"
+                                       filterMatchMode="contains"
+                                       >
+                                       <p:link
+                                               href="mailto:#{headquarter.headquarterEmailAddress}"
+                                               value="#{headquarter.headquarterEmailAddress}"
+                                               rendered="#{not empty headquarter.headquarterEmailAddress}"
+                                               />
+
+                                       <h:outputText value="#{msg.NO_EMAIL_ADDRESS_ENTERED}" rendered="#{empty headquarter.headquarterEmailAddress}" />
+                               </p:column>
+
+                               <p:column
+                                       headerText="#{msg.DATA_ADDRESS}"
+                                       sortBy="#{headquarter.headquarterCity}"
+                                       filterBy="#{headquarter.headquarterCity}"
+                                       filterMatchMode="contains"
+                                       >
+                                       <h:outputText value="#{beanHelper.renderHeadquarter(headquarter)}" title="#{beanHelper.renderHeadquarter(headquarter)}" />
+                               </p:column>
+
+                               <p:column
+                                       headerText="#{msg.ADMIN_COMPANY_CONTACT_PERSON_HEADER}"
+                                       sortBy="#{headquarter.headquarterContactEmployee}"
+                                       filterBy="#{headquarter.headquarterContactEmployee}"
+                                       filterMatchMode="in"
+                                       >
+                                       <f:facet name="filter">
+                                               <p:selectCheckboxMenu
+                                                       filter="true"
+                                                       filterMatchMode="contains"
+                                                       label="#{msg.LABEL_EMPLOYEES}"
+                                                       onchange="PF('headquarterList').filter()"
+                                                       updateLabel="true"
+                                                       title="#{msg.FILTER_BY_MULTIPLE_EMPLOYEES_TITLE}"
+                                                       >
+                                                       <f:converter converterId="ContactConverter" />
+
+                                                       <f:selectItems
+                                                               value="#{contactListController.allContacts}"
+                                                               var="contact"
+                                                               itemValue="#{contact}"
+                                                               itemLabel="#{beanHelper.renderContact(contact)}"
+                                                               />
+                                               </p:selectCheckboxMenu>
+                                       </f:facet>
+
+                                       <p:link
+                                               outcome="admin_show_contact"
+                                               value="#{beanHelper.renderContact(headquarter.headquarterContactEmployee)}"
+                                               title="#{msg.ADMIN_LINK_SHOW_HEADQUARTER_CONTACT_PERSON_TITLE}"
+                                               rendered="#{not empty headquarter.headquarterContactEmployee}"
+                                               >
+                                               <f:param name="contactId" value="#{headquarter.headquarterContactEmployee.contactId}" />
+                                       </p:link>
+
+                                       <p:link
+                                               outcome="admin_assign_headquarter_contact"
+                                               value="#{msg.ADMIN_LINK_ASSIGN}"
+                                               title="#{msg.ADMIN_LINK_ASSIGN_HEADQUARTER_CONTACT_PERSON_TITLE}"
+                                               rendered="#{empty headquarter.headquarterContactEmployee}"
+                                               >
+                                               <f:param name="headquarterId" value="#{headquarter.headquarterId}" />
+                                       </p:link>
+                               </p:column>
+
+                               <p:column
+                                       headerText="#{msg.ENTRY_CREATED_HEADER}"
+                                       sortBy="#{headquarter.headquarterEntryCreated}"
+                                       filterable="false"
+                                       >
+                                       <h:outputText value="#{headquarter.headquarterEntryCreated}">
+                                               <f:convertDateTime type="both" timeStyle="short" dateStyle="short" />
+                                       </h:outputText>
+                               </p:column>
+
+                               <p:column
+                                       headerText="#{msg.ENTRY_UPDATED_HEADER}"
+                                       sortBy="#{headquarter.headquarterEntryUpdated}"
+                                       filterable="false"
+                                       >
+                                       <h:outputText value="#{headquarter.headquarterEntryUpdated}">
+                                               <f:convertDateTime type="both" timeStyle="short" dateStyle="short" />
+                                       </h:outputText>
+                               </p:column>
+
+                               <p:column
+                                       headerText="#{msg.ADMIN_ACTION_LINKS_HEADER}"
+                                       sortable="false"
+                                       filterable="false"
+                                       >
+                                       <p:menuButton value="#{msg.OPTIONS}">
+                                               <p:menuitem
+                                                       outcome="admin_show_headquarter"
+                                                       value="#{msg.ADMIN_LINK_SHOW_SHORT}"
+                                                       title="#{msg.ADMIN_LINK_SHOW_HEADQUARTER_TITLE}"
+                                                       >
+                                                       <f:param name="headquarterId" value="#{headquarter.headquarterId}" />
+                                               </p:menuitem>
+
+                                               <p:menuitem
+                                                       outcome="admin_edit_headquarter"
+                                                       value="#{msg.ADMIN_LINK_EDIT_SHORT}"
+                                                       title="#{msg.ADMIN_LINK_EDIT_HEADQUARTER_TITLE}"
+                                                       >
+                                                       <f:param name="headquarterId" value="#{headquarter.headquarterId}" />
+                                               </p:menuitem>
+
+                                               <p:menuitem outcome="admin_delete_headquarter">
+                                                       <h:outputText
+                                                               styleClass="link-danger"
+                                                               value="#{msg.ADMIN_LINK_DELETE_SHORT}"
+                                                               title="#{msg.ADMIN_LINK_DELETE_HEADQUARTER_TITLE}"
+                                                               />
+                                                       <f:param name="headquarterId" value="#{headquarter.headquarterId}" />
+                                               </p:menuitem>
+                                       </p:menuButton>
+                               </p:column>
+                       </p:dataTable>
+
+                       <p:dialog
+                               dynamic="true"
+                               modal="true"
+                               resizable="false"
+                               header="#{msg.ADMIN_SINGLE_HEADQUARTER_DETAILS_HEADER}"
+                               hideEffect="fade"
+                               showEffect="fade"
+                               widgetVar="headquarterDialog"
+                               position="top"
+                               responsive="true"
+                               closeOnEscape="true"
+                               >
+                               <p:outputPanel id="headquarter-details">
+                                       <p:panelGrid columns="2" rendered="#{not empty headquarterListController.selectedHeadquarter}">
+                                               <f:facet name="header">
+                                                       <h:outputFormat value="#{msg.ADMIN_HEADQUARTER_DETAILS_HEADER}">
+                                                               <f:param value="#{headquarterListController.selectedHeadquarter.headquarterCompanyName}" />
+                                                               <f:param value="#{headquarterListController.selectedHeadquarter.headquarterId}" />
+                                                       </h:outputFormat>
+                                               </f:facet>
+
+                                               <p:outputLabel value="#{msg.ID_HEADER}" title="#{msg.HEADQUARTER_ID_NUMBER_TITLE}" />
+                                               <h:outputText value="#{headquarterListController.selectedHeadquarter.headquarterId}" />
+                                       </p:panelGrid>
+                               </p:outputPanel>
+                       </p:dialog>
+               </h:form>
+
+               <h:form>
+                       <p:panelGrid
+                               columns="1"
+                               layout="grid"
+                               >
+                               <f:facet name="header">
+                                       <h:outputText value="#{msg.ADMIN_ADD_HEADQUARTER_TITLE}" />
+                               </f:facet>
+
+                               <h:panelGroup styleClass="para" layout="block">
+                                       <h:outputText value="#{msg.ADMIN_ADD_HEADQUARTER_MINIMUM_DATA}" />
+                               </h:panelGroup>
+
+                               <ui:include src="/WEB-INF/templates/admin/business/headquarter/admin_form_headquarter_data.tpl" />
+
+                               <f:facet name="footer">
+                                       <p:panelGrid columns="2" layout="grid">
+                                               <p:commandButton
+                                                       styleClass="reset"
+                                                       type="reset"
+                                                       value="#{msg.BUTTON_RESET_FORM}"
+                                                       />
+
+                                               <p:commandButton
+                                                       type="submit"
+                                                       value="#{msg.BUTTON_ADMIN_ADD_HEADQUARTER}"
+                                                       action="#{adminHeadquarterActionController.addHeadquarter()}"
+                                                       update="form-list-headquarters:headquarterList"
+                                                       />
+                                       </p:panelGrid>
+                               </f:facet>
+                       </p:panelGrid>
+               </h:form>
+
+               <h:form id="form-list-headquarter-opening-time">
+                       <p:fieldset legend="#{msg.ADMIN_HEADQUARTER_OPENING_TIMES_LEGEND}">
+                               <p:dataTable
+                                       id="headquarterOpeningTimeList"
+                                       var="openingTime"
+                                       value="#{adminHeadquarterActionController.headquarterOpeningTimes}"
+                                       rows="10"
+                                       reflow="true"
+                                       summary="#{msg.TABLE_SUMMARY_ADMIN_LIST_HEADQUARTER_OPENING_TIMES}"
+                                       emptyMessage="#{msg.ADMIN_EMPTY_LIST_HEADQUARTER_OPENING_TIMES}"
+                                       widgetVar="headquarterOpeningTimeList"
+                                       >
+
+                                       <f:facet name="header">
+                                               <h:outputText value="#{msg.ADMIN_LIST_HEADQUARTER_OPENING_TIMES_HEADER}" />
+                                       </f:facet>
+
+                                       <p:column
+                                               headerText="#{msg.ADMIN_START_WEEK_DAY}"
+                                               >
+                                               <h:outputText value="#{openingTime.openingStartDay.toString()}" />
+                                       </p:column>
+
+                                       <p:column
+                                               headerText="#{msg.ADMIN_END_WEEK_DAY}"
+                                               >
+                                               <h:outputText value="#{openingTime.openingEndDay.toString()}" />
+                                       </p:column>
+
+                                       <p:column
+                                               headerText="#{msg.ADMIN_START_TIME}"
+                                               >
+                                               <h:outputText value="#{openingTime.openingStartTime}">
+                                                       <f:convertDateTime type="time" timeStyle="short" />
+                                               </h:outputText>
+                                       </p:column>
+
+                                       <p:column
+                                               headerText="#{msg.ADMIN_END_TIME}"
+                                               >
+                                               <h:outputText value="#{openingTime.openingEndTime}">
+                                                       <f:convertDateTime type="time" timeStyle="short" />
+                                               </h:outputText>
+                                       </p:column>
+                               </p:dataTable>
+                       </p:fieldset>
+               </h:form>
+
+               <h:form>
+                       <p:panelGrid
+                               columns="1"
+                               layout="grid"
+                               >
+                               <f:facet name="header">
+                                       <h:outputText value="#{msg.ADMIN_ADD_HEADQUARTER_OPENING_TIME_TITLE}" />
+                               </f:facet>
+
+                               <h:panelGroup styleClass="para" layout="block">
+                                       <h:outputText value="#{msg.ADMIN_ADD_OPENING_TIME_MINIMUM_DATA}" />
+                               </h:panelGroup>
+
+                               <ui:include src="/WEB-INF/templates/admin/business/headquarter/admin_form_headquarter_opening_time.tpl" />
+
+                               <f:facet name="footer">
+                                       <p:panelGrid columns="2" layout="grid">
+                                               <p:commandButton
+                                                       type="reset"
+                                                       value="#{msg.BUTTON_RESET_FORM}"
+                                                       />
+
+                                               <p:commandButton
+                                                       type="submit"
+                                                       value="#{msg.BUTTON_ADMIN_ADD_HEADQUARTER_OPENING_TIME}"
+                                                       action="#{adminHeadquarterActionController.addOpeningTime()}"
+                                                       update="form-list-headquarter-opening-time:headquarterOpeningTimeList"
+                                                       />
+                                       </p:panelGrid>
+                               </f:facet>
+                       </p:panelGrid>
+               </h:form>
+       </ui:define>
+</ui:composition>
diff --git a/web/admin/business/opening_time/admin_opening_time_list.xhtml b/web/admin/business/opening_time/admin_opening_time_list.xhtml
new file mode 100644 (file)
index 0000000..6d48764
--- /dev/null
@@ -0,0 +1,285 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<ui:composition
+       template="/WEB-INF/templates/admin/admin_base.tpl"
+       xmlns="http://www.w3.org/1999/xhtml"
+       xmlns:links="http://mxchange.org/jsf/core/links"
+       xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+       xmlns:h="http://xmlns.jcp.org/jsf/html"
+       xmlns:f="http://xmlns.jcp.org/jsf/core"
+       xmlns:p="http://primefaces.org/ui"
+       >
+
+       <ui:define name="document_admin_title">
+               <h:outputText value="#{msg.PAGE_TITLE_ADMIN_LIST_OPENING_TIMES}" />
+       </ui:define>
+
+       <ui:define name="content_header">
+               <h:outputText value="#{msg.CONTENT_TITLE_ADMIN_LIST_OPENING_TIMES}" />
+       </ui:define>
+
+       <ui:define name="content">
+               <h:form id="form-list-opening-times">
+                       <p:dataTable
+                               id="openingTimeList"
+                               var="openingTime"
+                               value="#{openingTimeListController.allOpeningTimes}"
+                               paginator="true"
+                               paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
+                               filteredValue="#{openingTimeListController.filteredOpeningTimes}"
+                               rows="10"
+                               rowKey="#{openingTime.openingTimeId}"
+                               reflow="true"
+                               resizableColumns="true"
+                               rowsPerPageTemplate="5,10,20,50,100"
+                               sortMode="multiple"
+                               summary="#{msg.TABLE_SUMMARY_ADMIN_LIST_OPENING_TIMES}"
+                               emptyMessage="#{msg.ADMIN_EMPTY_LIST_OPENING_TIMES}"
+                               widgetVar="openingTimeList"
+                               selectionMode="single"
+                               selection="#{openingTimeListController.selectedOpeningTime}"
+                               skipChildren="true"
+                               >
+
+                               <f:facet name="header">
+                                       <p:panelGrid
+                                               columns="3"
+                                               layout="grid"
+                                               columnClasses="ui-grid-col-4,ui-grid-col-6,ui-grid-col-2"
+                                               >
+                                               <p:spacer />
+
+                                               <p:panelGrid
+                                                       columns="2"
+                                                       columnClasses="ui-grid-4,ui-grid-8"
+                                                       layout="grid"
+                                                       styleClass="ui-noborder"
+                                                       >
+                                                       <p:outputLabel
+                                                               for="globalFilter"
+                                                               value="#{msg.SEARCH_ALL_FIELDS}"
+                                                               style="float: right"
+                                                               />
+
+                                                       <p:inputText
+                                                               id="globalFilter"
+                                                               onkeyup="PF('openingTimeList').filter()"
+                                                               placeholder="#{msg.ENTER_KEYWORD}"
+                                                               />
+                                               </p:panelGrid>
+
+                                               <p:outputPanel>
+                                                       <p:spacer height="4" />
+
+                                                       <p:commandButton
+                                                               id="toggler"
+                                                               type="button"
+                                                               value="#{msg.SELECT_SHOWN_COLUMNS}"
+                                                               styleClass="column-selector"
+                                                               />
+
+                                                       <p:columnToggler datasource="openingTimeList" trigger="toggler" />
+                                               </p:outputPanel>
+                                       </p:panelGrid>
+                               </f:facet>
+
+                               <p:ajax
+                                       event="rowSelect"
+                                       update="form-list-opening-times:opening-time-details"
+                                       oncomplete="PF('openingTimeDialog').show()"
+                                       />
+
+                               <p:column
+                                       headerText="#{msg.ID_HEADER}"
+                                       sortBy="#{openingTime.openingTimeId}"
+                                       filterable="false"
+                                       >
+                                       <p:link
+                                               outcome="admin_show_opening_time"
+                                               value="#{openingTime.openingTimeId}"
+                                               title="#{msg.ADMIN_LINK_SHOW_OPENING_TIME_TITLE}"
+                                               >
+                                               <f:param name="openingTimeId" value="#{openingTime.openingTimeId}" />
+                                       </p:link>
+                               </p:column>
+
+                               <p:column
+                                       headerText="#{msg.ADMIN_START_WEEK_DAY}"
+                                       sortBy="#{openingTime.openingStartDay}"
+                                       filterBy="#{openingTime.openingStartDay}"
+                                       filterMatchMode="in"
+                                       >
+                                       <f:facet name="filter">
+                                               <p:selectCheckboxMenu
+                                                       label="#{msg.LABEL_WEEK_DAYS}"
+                                                       onchange="PF('openingTimeList').filter()"
+                                                       updateLabel="true"
+                                                       title="#{msg.FILTER_BY_MULTIPLE_WEEK_DAYS_TITLE}"
+                                                       >
+                                                       <f:converter converterId="DayOfTheWeekConverter" />
+
+                                                       <f:selectItems
+                                                               value="#{dataController.dayOfTheWeek}"
+                                                               var="dayOfWeek"
+                                                               itemValue="#{dayOfWeek}"
+                                                               itemLabel="#{dayOfWeek.toString()}"
+                                                               />
+                                               </p:selectCheckboxMenu>
+                                       </f:facet>
+
+                                       <h:outputText value="#{openingTime.openingStartDay.toString()}" />
+                               </p:column>
+
+                               <p:column
+                                       headerText="#{msg.ADMIN_END_WEEK_DAY}"
+                                       sortBy="#{openingTime.openingEndDay}"
+                                       filterBy="#{openingTime.openingEndDay}"
+                                       filterMatchMode="in"
+                                       >
+                                       <f:facet name="filter">
+                                               <p:selectCheckboxMenu
+                                                       label="#{msg.LABEL_WEEK_DAYS}"
+                                                       onchange="PF('openingTimeList').filter()"
+                                                       updateLabel="true"
+                                                       title="#{msg.FILTER_BY_MULTIPLE_WEEK_DAYS_TITLE}"
+                                                       >
+                                                       <f:converter converterId="DayOfTheWeekConverter" />
+
+                                                       <f:selectItems
+                                                               value="#{dataController.dayOfTheWeek}"
+                                                               var="dayOfWeek"
+                                                               itemValue="#{dayOfWeek}"
+                                                               itemLabel="#{dayOfWeek.toString()}"
+                                                               />
+                                               </p:selectCheckboxMenu>
+                                       </f:facet>
+
+                                       <h:outputText value="#{openingTime.openingEndDay.toString()}" />
+                               </p:column>
+
+                               <p:column
+                                       headerText="#{msg.ADMIN_START_TIME}"
+                                       sortBy="#{openingTime.openingStartTime}"
+                                       filterBy="#{openingTime.openingStartTime}"
+                                       filterable="false"
+                                       >
+                                       <h:outputText value="#{openingTime.openingStartTime}">
+                                               <f:convertDateTime type="time" timeStyle="short" />
+                                       </h:outputText>
+                               </p:column>
+
+                               <p:column
+                                       headerText="#{msg.ADMIN_END_TIME}"
+                                       sortBy="#{openingTime.openingEndTime}"
+                                       filterBy="#{openingTime.openingEndTime}"
+                                       filterable="false"
+                                       >
+                                       <h:outputText value="#{openingTime.openingEndTime}">
+                                               <f:convertDateTime type="time" timeStyle="short" />
+                                       </h:outputText>
+                               </p:column>
+
+                               <p:column
+                                       headerText="#{msg.ENTRY_CREATED_HEADER}"
+                                       sortBy="#{openingTime.openingTimeEntryCreated}"
+                                       filterBy="#{openingTime.openingTimeEntryCreated}"
+                                       filterMatchMode="contains"
+                                       >
+                                       <h:outputText value="#{openingTime.openingTimeEntryCreated}">
+                                               <f:convertDateTime type="both" timeStyle="short" dateStyle="short" />
+                                       </h:outputText>
+                               </p:column>
+
+                               <p:column
+                                       headerText="#{msg.ENTRY_UPDATED_HEADER}"
+                                       sortBy="#{openingTime.openingTimeEntryUpdated}"
+                                       filterBy="#{openingTime.openingTimeEntryUpdated}"
+                                       filterMatchMode="contains"
+                                       >
+                                       <h:outputText value="#{openingTime.openingTimeEntryUpdated}">
+                                               <f:convertDateTime type="both" timeStyle="short" dateStyle="short" />
+                                       </h:outputText>
+                               </p:column>
+
+                               <p:column
+                                       headerText="#{msg.ADMIN_ACTION_LINKS_HEADER}"
+                                       sortable="false"
+                                       filterable="false"
+                                       >
+                                       <p:menuButton value="#{msg.OPTIONS}">
+                                               <p:menuitem outcome="admin_show_opening_time" value="#{msg.ADMIN_LINK_SHOW_SHORT}" title="#{msg.ADMIN_LINK_SHOW_OPENING_TIME_TITLE}">
+                                                       <f:param name="openingTimeId" value="#{openingTime.openingTimeId}" />
+                                               </p:menuitem>
+
+                                               <p:menuitem outcome="admin_edit_opening_time" value="#{msg.ADMIN_LINK_EDIT_SHORT}" title="#{msg.ADMIN_LINK_EDIT_OPENING_TIME_TITLE}">
+                                                       <f:param name="openingTimeId" value="#{openingTime.openingTimeId}" />
+                                               </p:menuitem>
+
+                                               <p:menuitem outcome="admin_delete_opening_time">
+                                                       <h:outputText styleClass="link-danger" value="#{msg.ADMIN_LINK_DELETE_SHORT}" title="#{msg.ADMIN_LINK_DELETE_OPENING_TIME_TITLE}" />
+                                                       <f:param name="openingTimeId" value="#{openingTime.openingTimeId}" />
+                                               </p:menuitem>
+                                       </p:menuButton>
+                               </p:column>
+                       </p:dataTable>
+
+                       <p:dialog
+                               dynamic="true"
+                               modal="true"
+                               resizable="false"
+                               header="#{msg.ADMIN_SINGLE_OPENING_TIME_DETAILS_HEADER}"
+                               hideEffect="fade"
+                               showEffect="fade"
+                               widgetVar="openingTimeDialog"
+                               position="top"
+                               responsive="true"
+                               closeOnEscape="true"
+                               >
+                               <p:outputPanel id="opening-time-details">
+                                       <p:panelGrid columns="2" rendered="#{not empty openingTimeListController.selectedOpeningTime}">
+                                               <f:facet name="header">
+                                                       <h:outputFormat value="#{msg.ADMIN_OPENING_TIME_DETAILS_HEADER}">
+                                                               <f:param value="#{openingTimeListController.selectedOpeningTime.openingTimeId}" />
+                                                       </h:outputFormat>
+                                               </f:facet>
+
+                                               <p:outputLabel value="#{msg.ID_HEADER}" title="#{msg.OPENING_TIME_ID_NUMBER_TITLE}" />
+                                               <h:outputText value="#{openingTimeListController.selectedOpeningTime.openingTimeId}" />
+                                       </p:panelGrid>
+                               </p:outputPanel>
+                       </p:dialog>
+               </h:form>
+
+               <h:form>
+                       <p:panelGrid
+                               columns="1"
+                               layout="grid"
+                               >
+                               <f:facet name="header">
+                                       <h:outputText value="#{msg.ADMIN_ADD_OPENING_TIME_TITLE}" />
+                               </f:facet>
+
+                               <h:panelGroup styleClass="para" layout="block">
+                                       <h:outputText value="#{msg.ADMIN_ADD_OPENING_TIME_MINIMUM_DATA}" />
+                               </h:panelGroup>
+
+                               <ui:include src="/WEB-INF/templates/admin/business/opening_time/admin_form_opening_time.tpl" />
+
+                               <f:facet name="footer">
+                                       <p:panelGrid columns="2" layout="grid">
+                                               <p:commandButton
+                                                       type="reset"
+                                                       value="#{msg.BUTTON_RESET_FORM}"
+                                                       />
+
+                                               <p:commandButton
+                                                       type="submit"
+                                                       value="#{msg.BUTTON_ADMIN_ADD_OPENING_TIME}"
+                                                       action="#{adminOpeningTimeController.addOpeningTime()}"
+                                                       update="form-list-opening-times:openingTimeList"
+                                                       />
+                                       </p:panelGrid>
+                               </f:facet>
+                       </p:panelGrid>
+               </h:form>
+       </ui:define>
+</ui:composition>