Sie sind auf Seite 1von 35

Users Manual

July 2012

Version 1.3.0

Table of Contents
What is KliqPlan? ................................................................................................................................ 3 What can you do with KliqPlan? The functional perspective ................................................................. 4 What can you do with KliqPlan? The application perspective ................................................................ 5 How does KliqPlan work? .................................................................................................................... 6 Configuring KliqPlan............................................................................................................................ 7 Setting the back-end database ......................................................................................................... 7 Setting the audit trail fields .............................................................................................................. 8 Adding KliqPlan to the QlikView document........................................................................................... 9 Settings ........................................................................................................................................ 10 Dimensions ................................................................................................................................... 12 Expressions................................................................................................................................... 13 Calculated Columns....................................................................................................................... 15 Server Reload................................................................................................................................ 16 Options......................................................................................................................................... 18 Data-entry with KliqPlan.................................................................................................................... 20 Smart data-entry........................................................................................................................... 20 Using the toolbar........................................................................................................................... 24 Configuring KliqPlan for spread-back.................................................................................................. 32 Setting the back-end database ....................................................................................................... 32 Managing Users................................................................................................................................ 33 Examples.......................................................................................................................................... 34 Locking cells based on a planning calendar ..................................................................................... 34 Combining locked actuals with editable budget figures.................................................................... 35

Kl i qPl a n Us ers Ma nua l Vers i on 1.3 Pa ge 2 of 35

What is KliqPlan?

If you love QlikView and you ever thought "Wouldn't be great to do data-entry inside QlikView and to be able to develop budgeting and planning applications?" now you can with KliqPlan. KliqPlan is the first of a new line of Extension Objects for QlikView called KliqObjects. It supports data-entry within QlikView with a rich set of features including: data spread&break -back, blocked totals, cells locking, smart Paste and audit trails.

KliqPlan is available for QlikView version 10 and later.

Kl i qPl a n Us ers Ma nua l Vers i on 1.3 Pa ge 3 of 35

What can you do with KliqPlan? The functional perspective


In essence KliqPlan is a data-entry grid for QlikView. Any time you need to enter numbers within QlikView you can use KliqPlan. If you need also to add data items (like products, versions, etc.) there is a companion KliqObject (KliqTable) you can use as a table editor. Although the grid itself is two-dimensional (rows and columns) it works within the QlikView document and therefore there is no limit to the number of dimensions you can manage for your input data. You can for example enter sales plan data by Month, Year, Version and Product: the data-entry grid may have products by row and months by columns. Years and versions may be managed with lists in your QlikView document.

If you have hierarchies (e.g. products-lines-brands), KliqPlan allows you entering data at an aggregate level (e.g. by brand) and it will automatically spread-back the changes to the lowest level (e.g. by product). In a very simple way you can lock data (disable the data-entry) on a cell-by-cell basis through a QlikView expression: you can display actual data for closed month and editable cells for planning months. Being a QlikView expression the locking logic can be as complex as you need: taking into account for example the current date versus the planning calendar and the current user versus the hierarchies. You can manage a distributed planning process with multiple users entering data in a common database with full control thanks to KliqPlan Audit Trails feature. The KliqPlan grid is dynamically integrated within the QlikView document and gathers the data from it: when you are entering your budget figures you can use a QlikView expression to display side by side any useful info like the previous year sales. KliqPlan does not come with a predefined model , you can use it to build exactly the application you need.
Kl i qPl a n Us ers Ma nua l Vers i on 1.3 Pa ge 4 of 35

What can you do with KliqPlan? The application perspective

Initialize the budget using previous year sales as a reference Create different budget versions Manage a distributed data-entry where different actors collaborate, participating to the budgeting process in a secure and controlled way with audit trails Manage planning calendars Explode an aggregate budget to a detailed one in a Top-Down approach Leverage all the power of QlikView for analyzing performance against the budget Make the budget figures available for other systems

All this and much more is now possible with amazing speed and simplicity thanks to KliqPlan.

Kl i qPl a n Us ers Ma nua l Vers i on 1.3 Pa ge 5 of 35

How does KliqPlan work?


The KliqPlan solution is made of two components: the extension object (KPEO) and the web service (KPWS). The extension object is a data-entry grid which can be used in any QlikView document. When the user hits Save the new/changed data are sent to the web service which takes care of writing them in a buffer table in a relational database. The data are then loaded back into QlikView.

You can use the KPEO in a document opened with the browser (AJAX client) from the QlikView access point or opened with the Desktop client in WebView mode. KPWS receives from the KPEO the new/changed data together with the Qlik View document current selection and the user id: it compares these data with the structure of the buffer table to check that it has all the information (e.g. primary keys) it needs to create/update records in the table. If it does not have all the required information it automatically looks for hierarchy tables (please see chapter Configuring KliqPlan for spread-back). If the buffer table contains some standard audit trail fields (user name, date/time of creation, date/time of last change), the KPWS automatically updates them.

Kl i qPl a n Us ers Ma nua l Vers i on 1.3 Pa ge 6 of 35

Configuring KliqPlan
Setting the back-end database
The database used to store the entry data can be any kind of OLEDB accessible database (e.g. MS SQL Server standard or Express, Oracle, DB2, MySQL, etc.). The demo dataset is provided both in SQL Server and MS Access (.accdb) format. Important! Make sure you define the primary keys.

The following image illustrates an example where we are entering data with products by row and months by column. The document contains two lists: years and versions. Therefore the KPWS has all the information corresponding to the primary keys of the buffer table budget_month_prod : Year, month, version and product_code. Important! In this case both Year and version must have one value selected. To avoid wrong selections, use the objects properties (not in web view) and select in the "General" tab the option "Always one value selected".

Kl i qPl a n Us ers Ma nua l Vers i on 1.3 Pa ge 7 of 35

Important! The name of the fields in the QlikView document must match exactly the names of the fields in the buffer table.

Setting the audit trail fields


KPWS recognizes and uses automatically the following fields for audit trail: Field Name kp_user kp_created kp_modified Nvarchar datetime2 datetime2 Field Type User name Date/time of creation Date/time of last change Description

If these fields (one or more) are present in the buffer table KPWS will update them using the user and the current date/time.

Kl i qPl a n Us ers Ma nua l Vers i on 1.3 Pa ge 8 of 35

Adding KliqPlan to the QlikView document


Using QlikView Desktop in WebView mode you can add the KPEO by selecting it from the list of installed extension objects:

Having added the KPEO to the document you can right click on it to set its properties. Important! You can add only one KPEO in each tab of your document. Important! Since QlikView will automatically set default values for all the expressions (like the description for rows and columns, the input, base, etc.) please check them one by one and clear them if you dont need them.

Kl i qPl a n Us ers Ma nua l Vers i on 1.3 Pa ge 9 of 35

Settings

Important! When you change the properties the grid will be refreshed and therefore any unsaved data will be lost. This applies only when working with the QlikView Desktop client since properties cannot be changed when opening the document with the browser from the Access Point. Server Here you must set the URL of the KliqPlan server. If you installed KliqPlan with the UltiDev web server by default it will be set on port 2033: http://myServer:2033/kliqplan For a local installation the URL will be: http://localhost:2033/kliqplan For an installation under MS IIS the default URL will be: http://myServer /kliqplan You can check if KliqPlan is properly installed and installed by opening the URL in a browser. Connection string Here you set the connection string to be used to connect via OLEDB to the backend database. You can: type here the full connection string, like:
Provider=SQLOLEDB;Data Source=(local);Initial Catalog=KliqPlanDemoTennis;User Id=kp;Password=kp;

or
Kl i qPl a n Us ers Ma nua l Vers i on 1.3 Pa ge 10 of 35

store the connection string in text file located in the KliqPlan folder on the server in \KliqPlan\App_data\connections and indicate here the name of the file without the extension and preceded by @, e.g. @kpdemo2012 to point to the file kpdemo2012.txt.

Please see the useful web site www.connectionstrings.com for examples of connection strings. MySQL support KliqPlan integrates directly with MySQL thanks to Connector/Net, the fully-managed ADO.NET driver for MySQL. Connector/Net can be downloaded from http://www.mysql.com/downloads/connector/net/ and must be installed where KliqPlan Server is installed. KliqPlan has been tested with version 6.5.4 of Connector/Net. Important!

The connection string must start with MYSQL: the character set must be set in the connection string in order to manage fields/tables with characters such as , , etc.
E.g. MYSQL:Server=192.168.0.3;Port=3306;Da ta base=DemoTennis;Uid=kp;Pwd=kp;character set=utf8;

Table Type here the name of the buffer table. E.g. budget_month_prod Input field Type here the name of the field of the buffer table corresponding to the input data. E.g. bdgProduct. If you leave it blank KliqPlan will use the name of the Input field set in the Expressions section of the properties. Number mask This option is not yet active. Planned for release 1.2.1 Totals Check this option to display row and column totals in the grid.

Kl i qPl a n Us ers Ma nua l Vers i on 1.3 Pa ge 11 of 35

Dimensions

By Column You must choose what you want to display by column. The name must correspond to a field in the buffer table or in a hierarchy table (see section Configuring KliqPlan for spread-back). You can also set a QlikView expression (by clicking the black squared button) which will be used as a description of the items by column (e.g. Month by column and =MonthName(monthStart) as description). You can select with the drop-down if you want to display in the headers the codes, the descriptions or both. KliqPlan will save always the code to the backend database. This expression could also be us ed to display descriptions in different languages based on the users language settings. The users language can be obtained with: =getregistrystring('HKEY_CURRENT_USER\Control Panel\International','sLanguage') By Row You must choose what you want to display by row. The name must correspond to a field in the buffer table or in a hierarchy table (see section Configuring KliqPlan for spread-back). You can also set a QlikView expression (by clicking the black squared button) which will be used as a description of the items by row (e.g. product_code by row and product as description). You can select with the drop-down if you want to display in the headers the codes, the descriptions or both. KliqPlan will save always the code to the backend database.

Kl i qPl a n Us ers Ma nua l Vers i on 1.3 Pa ge 12 of 35

This expression could also be used to display descriptions in different languages base d on the users language settings. The users language can be obtained with: =getregistrystring('HKEY_CURRENT_USER\Control Panel\International','sLanguage')

Important! If you use an expression for rows/cols description please make sure that the expression returns values. You can check it with a separate pivot table. If the expression does not return values the grid will be empty. E.g. in the DemoTennis the expression =MonthName(monthStart) will not return values if more than one year is selected.

Expressions

Input This is the expression determining what will be shown in the entry cells. It may be used to display both the input value and calculated ones: please see section Combining locked actuals with editable budget figures for more details. Base This expression (mandatory) will be used as a base and will be displayed/hidden when you click the Base button on the toolbar. Please see the section Difference/Variance for more details. If you dont want to use any base calculated expression simply set it to 0. You can modify the input values by entering the Difference or the Variance.

Kl i qPl a n Us ers Ma nua l Vers i on 1.3 Pa ge 13 of 35

An example of a Base expression to visualize previous year sales could be: =sum( {$<version=, Year = {$(=Max(Year)-1)}>} sales )

Lock This expression will determine if a cell is open for input or read-only. The cell will be read-only if the value of this expression is -1. Example of its usage are: locking cells based on the user thanks to the QlikView function OSUser or QVUser. Locking cells based on the current date (using the QlikView function Today) and the start and end planning dates of each version. Locking cells based on the status of the period (actual or planning).

Please see the sections Locking cells based on a planning calendar and Combining locked actuals with editable budget figures for more details. Cells Due to the associative nature of QlikView it may happens that some cells will not appear in the KliqPlan grid. For example if you have sales data until July 2012 and no other data in the model linked to following months the KP grid will only display months from January to July for 2012. The Cells expression will force KP to create the cells for months from August to December if you set an expression which has values for August to December (for example by using set analysis). We recommend testing the expression using a normal QlikView pivot table first. Filter You can use this expression to determine a filter (based on the row totals) for the rows. It can be: Top to select the top x rows based on the filter expression. The rows will be sorted in descending order.
Kl i qPl a n Us ers Ma nua l Vers i on 1.3 Pa ge 14 of 35

Bottom to select the bottom x rows based on the filter expression. The rows will be sorted in ascending order. Greater then to select the rows with a total (based on the filter expression) greater than the entered value. The rows will be sorted in descending order. Smaller than to select the rows with a total (based on the filter expression) smaller than the entered value. The rows will be sorted in ascending order. Top % to select the rows which makes up to the x% of the total (based on the filter expression). The rows will be sorted in descending order.

If the expression is left blank the Base expression will be used. Context This expression can be used to add values to the current selection (which will be used by KPWS while saving the data). The required syntax is: [field1 name]:[field1 values]; [field2 name]:[field2 values]; e.g. Channel:OEM;Version:Forecast; If the same field is present in both the document current selection and in the Context expression, the later will win.

Calculated Columns
You can add calculated columns to the KP grid: the cells are recalculated whenever the user enters data. The calculated columns will be added to the far right of the grid and the calculation expressions can be set using the values of the field displayed by column. If you have for example the measure field by column with the values units, price,discount1, discount2 and specialPrice, the expression to calculate the Gross Sales will be: units*price The field values used in the calculation should be enclosed in double quotes.

Kl i qPl a n Us ers Ma nua l Vers i on 1.3 Pa ge 15 of 35

Server Reload

QlikView provides programmatic control of common management tasks via a web service API (QlikView Management API). QlikView has also a feature that allows for tasks to be triggered: Event Driven Execution
Kl i qPl a n Us ers Ma nua l Vers i on 1.3 Pa ge 16 of 35

(EDX) allows a single reload to be launched. KliqPlan can use the APIs to trigger the reload of the document. You will need first to create in QlikView a task to do the reload.

QV Server Type here the URL of the QlikView API web service. e.g. http://myserver:4799/QMS/Service Task PW Type here the password of the EDX task you created in QlikView to reload the document. Auto Reload When this option is checked and the document is opened with the browser from the QlikView Access Point, KliqPlan will trigger the reload every time the users saves the data. The reload can also be triggered by clicking on the related icon in the toolbar (it will appear if QlikView version is 11 or later and if the URL is set).

Kl i qPl a n Us ers Ma nua l Vers i on 1.3 Pa ge 17 of 35

Options

Administrator If this option is selected and the user is an administrator the Debug button will appear in the toolbar. Please see section Debug On/Off for more details.

Please see section Managing Users for details on how to configure administrator users.

Kl i qPl a n Us ers Ma nua l Vers i on 1.3 Pa ge 18 of 35

Language You can set here the language for the KliqPlan object. The option Auto will detect automatically the users system language. This means that if you have an application used by people from different countries you need only one QlikView document, KliqPlan inside will automatically localize its interface based on the language of each user. The localization is based on xml files located in the server folder : \KliqObjects\KliqPlan\App_Files\localizations

You can check the users language by opening the page ielocalecheck.htm. E.g http://localhost:2033/kliqplan/ielocalecheck.htm

Kl i qPl a n Us ers Ma nua l Vers i on 1.3 Pa ge 19 of 35

Data-entry with KliqPlan


Smart data-entry
In an input cell you can input: numbers (xyz) : totals are recalculated. =xyz : the xyz value is copied in row cells on the right. +xyz : every row cell on the right is set to the previous cells value +xyz. The value +xyz is not accepted in a cell of the first input column. %xyz: every row cell on the right is set to the previous cells value*(1+xyz/100). The value +xyz is not accepted in a cell of the first input column.

Kl i qPl a n Us ers Ma nua l Vers i on 1.3 Pa ge 20 of 35

Totals A total cell can be: the Row total, the Column Total and the Grand Total.

In a total cell you can input: numbers (xyz) : corresponding cells are changed proportionally. If the previous value was 0 then the totally is spread in proportion to the value of the base, otherwise the spread is based on the previous value of each single cell. If the Base expression is set to 0, then the total is spread evenly to all cells = Total / number of cells (eg : if there are 12 columns, each cell = Total/12). = : related cells are set equal to the Base. %xyz : related cells are set equal to Base*(1+xyz/100).

Difference and Variance If you click the View/Hide Base, you make the Base, the Difference and the Variance for each column visible. The Base is read-only, but you can modify the input values by entering the Difference or the Variance.

Kl i qPl a n Us ers Ma nua l Vers i on 1.3 Pa ge 21 of 35

In a Difference cell you can input: numbers (xyz) : the input cell to which the difference cell relates is set equal to the base +xyz. Variance and totals are recalculated. +xyz : the difference cell is set equal to the previous value +xyz. The input cell to which the difference cell relates is set equal to the base + the difference. Variance and totals are recalculated. %xyz : the difference cell is set equal to the previous value + (xyz/100)*the previous . The input cell to which the difference relates is set equal to the base + the difference and variance and totals are recalculated.

In a Variance cell you can input: numbers (xyz) : the input cell to which the variance cell relates is set equal to the base + (1+xyz/100) . Difference and totals are recalculated. +xyz : the variance cell is set equal to the previous value +xyz. The input cell to which the difference cell relates is set equal to the base *{1+previous/100 +[(xyz/100*previous)/100]}. Difference and totals are recalculated. %xyz : the variance cell is set equal to the previous value + (xyz/100)* previous . The input cell to which the variance cell relates is set equal to the base *{1+previous/100 +[(xyz/100*previous)/100]}. Difference and totals are recalculated.

Kl i qPl a n Us ers Ma nua l Vers i on 1.3 Pa ge 22 of 35

Percentage data-entry
If you need to enter percentage va lues (e.g. margins or discounts) now you ca n: when in 'percentage mode' all the totals (not edi table) a re recalculated as weighted a verages using the base which is mandatory. You could for example fi rst enter a sales budget in dollars and then, i n a s econd KliqPlan, enter % margins using the sales budget as a base. To s wi tch on the 'percentage mode' you simply need to enter a % format (e.g. 0.00%) i n the Number Mask property.

KliqPlan now detects when you have unsaved data, also when moving from one tab to another in the QlikView document, and allows saving them.

Kl i qPl a n Us ers Ma nua l Vers i on 1.3 Pa ge 23 of 35

Using the toolbar

Save Click here to save the new/changed data to the backend buffer table.

A message with green background on the toolbar will display the number of cells sent to the KPWS and the number of records created/modified in the buffer table. The 2 numbers may be different (eg : if the Row field is an aggregated level of the product hierarchy, KliqPlan will break-down the value along the hierarchy). When using the QlikView Desktop client a message inviting to reload the document will appear above the toolbar. Server Reload If QlikView version is 11 or later and if the QlikView URL is set in the properties, this button will trigger the reload of the document on the server as set in the properties. The document must be in the server root folder. A message is now shown on the toolbar when the reload is in progress and the reload launch is disabled when it is already in progress.

Kl i qPl a n Us ers Ma nua l Vers i on 1.3 Pa ge 24 of 35

Copy Row Once a row is selected by clicking it, click here to copy the rows cells values to the KP clipboard. Paste Row Once a row is selected by clicking it, click here to paste the rows cells values from the KP clipboard. Paste Distribution Once a row with values is selected by clicking it, click here to paste the rows weights (% of the total) from the KP clipboard. Synch

When you have a row selected and click this button KP will look in the QlikView document for a list object with the objectID equal to the field set by row in the KliqPlan grid (e.g. product_code) and filter it with the value of the row (e.g. P04). If this list belongs, with other objects, to an alternate state (QlikView version 11 or later) you can use this way to use a section of the document to display detailed information (tables, charts, etc.) about the item (e.g. product P04) you are entering data for. Copy Grid Click here to copy the cells of the entire grid to the KP clipboard. Paste Grid Click here to paste the cells of the entire grid from the KP clipboard. View/Hide Base Click here to toggle the viewing of the Base. View/Hide Totals Click here to toggle the viewing of the row and column totals.
Kl i qPl a n Us ers Ma nua l Vers i on 1.3 Pa ge 25 of 35

Lock Row Totals Click this icon, when the totals are displayed, to toggle the locking of row totals. When the row total is locked and you enter/modify a cell value all the other editable cells on the same row will be changed in order to maintain the same row total. Lock Col Totals Click this icon, when the totals are displayed, to toggle the locking of column totals. When the column total is locked and you enter/modify a cell value all the other editable cells on the same column will be changed in order to maintain the same column total. SmartPaste Click this icon to paste values from an external spreadsheet. Important! The first row must contain headers with the first cell empty. The first column must contain headers.

KP will past the cells by mapping the values to rows and columns and by detecti ng automatically codes and descriptions. If there is no match it will paste by position. KP will automatically ignore any subtotal row/column. KP will automatically detect, when there is a match, if a transposition of rows and columns is required.

Kl i qPl a n Us ers Ma nua l Vers i on 1.3 Pa ge 26 of 35

You can paste into a grid without affecting un-matched cells: the pasted data will be shown in italic.

SmartPaste will automatically detect if you have unsaved data in the grid and display a message:

Kl i qPl a n Us ers Ma nua l Vers i on 1.3 Pa ge 27 of 35

SmartPaste is disabled when the Base is displayed:

SmartPaste aggregation & Consolidation

SmartPaste aggregation SmartPaste now adds up automatically source cells corresponding to the same target cell.

Kl i qPl a n Us ers Ma nua l Vers i on 1.3 Pa ge 28 of 35

In the example above the grid cell for product B01 and month Jan 2012 will receive the sum of 4 cells: C5, C6, D5 and D6. When selecting the area to be copied proceed as usual (from cell B3).

Consolidation: SmartPaste Plus

The new SmartPaste Plus (new icon in the toolbar) adds pasted values to the KliqPlan grid existing data so you can, for example, consolidate multiple sheets from Excel in few clicks.

In the next screenshot: if you use SmartPaste Plus and paste in sequence the data for the channels Stores and Web you will end up in KliqPlan with the sum of the two.

Kl i qPl a n Us ers Ma nua l Vers i on 1.3 Pa ge 29 of 35

A confirmation request message will appear when you use SmartPaste Plus:

Kl i qPl a n Us ers Ma nua l Vers i on 1.3 Pa ge 30 of 35

Help Click here to visualize the online help. The tooltip displays both the extension object and the server module version. Debug On/Off If the option Administrator is checked in the Properties/Options and this button is clicked, when you save a new browser window with detailed information about the insert/update actions executed on the backend buffer table.

Please see section Managing Users for details on how to configure administrator users.

Kl i qPl a n Us ers Ma nua l Vers i on 1.3 Pa ge 31 of 35

Configuring KliqPlan for spread-back


When you save data KPWS will check if it has all the information (all the primary keys) to write in the buffer table. If you set the back-end database with views which will tell KPWS what is the data structure, it will automatically use data hierarchies to spread-back the values in a top-down approach when you are entering data at an aggregate level. This may be clearer with an example: in the buffer table you have the product_code field and you have a product hierarchy table where the product_code is the primary key and you have other fields such as line and brand. You will then be able to set Brand by row in the KPEO grid and KPWS will automatically spreadback the inputted brand values to the product_code level using the product hierarchy table.

Setting the back-end database


You will need to: Have hierarchy tables where the primary key corresponds to a primary key of the buffer table . For each hierarchy table (e.g. products) define a view containing all the fields and name it kp_h_[hierarchy table] (e.g. kp_h_products). Define a view joining the buffer table (e.g. budget_month_prod ) with the hierarchy table(s) and named it kp_v_[buffer table] (e.g. kp_v_ budget_month_prod ). This view must contains all the fields from the joined tables.

KPWS will parse all the views with prefix kp_v_ and kp_h_ to automatically detect hierarchies. Please refer to the DemoTennis dataset for an example.

Kl i qPl a n Us ers Ma nua l Vers i on 1.3 Pa ge 32 of 35

Managing Users
Users are managed with the text file LicUsers.txt located on the server in \KliqObjects\Users. Every time a user uses a KliqObjects in a QlikView document the server will check if it is already in the text file and if not will add it to the list up to the number of installed CALs. In order to qualify a user as an administrator it has to be present in the list contained in the file LicAdmins.txt located in the same folder. Users must be added manually to this file.

Kl i qPl a n Us ers Ma nua l Vers i on 1.3 Pa ge 33 of 35

Examples
Locking cells based on a planning calendar
The lock expression, determining if a cell is editable, compares the current date [using the function Today()], to the version starting and ending planning dates. =if( Today() <=planningEndDate,if(Today() >= planningStartDate,1,-1),-1)

Kl i qPl a n Us ers Ma nua l Vers i on 1.3 Pa ge 34 of 35

Combining locked actuals with editable budget figures


Using the Input expression you can determine, on a cell by cell basis, what is displayed in the input column. It could be different from the input field provided that you set the name of the input field of the buffer table in the properties ( Settings/Input Field ).

In this example the field monthClosed , used to flag a month as actual, is true until July 2012. This Input expression visualizes actual data for closed month [until July 2012] and the Budget for others months: =if(monthClosed,sum( {$<version=>} sales ), Sum([bdgProduct])) The input field [bdgProduct] is set in the "Settings" section of the properties. The Lock expression: =if(monthClosed,-1,0) makes the cell non-editable for closed months.

Kl i qPl a n Us ers Ma nua l Vers i on 1.3 Pa ge 35 of 35

Das könnte Ihnen auch gefallen