HansaWorld custom field examples

HansaWorld custom field examples

Price List dimension

In the example below, a combination of Price List, Price and Customer registers are used to create 3 level hierarchy.

[PLVc.F_PriceList] name = 'Price List Code' dimension_name = 'Price' cube_name = 'Hansaworld Invoices' level_name = 'Price list' rest_api_field = "PLCode" key_field = true [PLVc.F_PriceListName] name = 'Price List Name' dimension_name = 'Price' cube_name = 'Hansaworld Invoices' level_name = 'Price list' rest_api_field = "PLCode" name_field = true [PLVc.F_PriceItemCode] name = 'Price Item Code' dimension_name = 'Price' cube_name = 'Hansaworld Invoices' level_name = 'Item' rest_api_field = "ArtCode" key_field = true [PLVc.F_PriceItemName] name = 'Price Item Name' dimension_name = 'Price' cube_name = 'Hansaworld Invoices' level_name = 'Item' rest_api_field = "Comment" name_field = true [PLVc.F_PriceCustomerCode] name = 'Price Customer Code' dimension_name = 'Price' cube_name = 'Hansaworld Invoices' level_name = 'Customer' rest_api_field = "CustCode" key_field = true [PLVc.F_PriceCustomerName] name = 'Price Customer Name' dimension_name = 'Price' cube_name = 'Hansaworld Invoices' level_name = 'Customer' rest_api_field = "CustCode" name_field = true [IVVc.PriceListProperty] name = "Price list Property" cube_name = 'Hansaworld Invoices' data_type = "string" dimension_name = 'Invoice' level_name = 'Invoice' rest_api_field = 'PriceList' [IVVc.RowPriceListCode] name = 'Invoice Price List Code' cube_name = 'Hansaworld Invoices' for_custom_dimension = 'Price' for_custom_dimension_level = 'Price list' bind_field_name = 'F_PriceList' rest_api_item_field = "rows" javascript_code = ''' if (doc.rows) { doc.rows.forEach(function(row){ if (doc.PriceList){ row.RowPriceListCode = doc.PriceList; } }) } ''' [IVVc.ArtCode] name = 'Invoice Item Code' cube_name = 'Hansaworld Invoices' for_custom_dimension = 'Price' for_custom_dimension_level = 'Item' bind_field_name = 'F_PriceItemCode' rest_api_item_field = "rows" [IVVc.RowCustCode] name = 'Invoice Customer Code' cube_name = 'Hansaworld Invoices' for_custom_dimension = 'Price' for_custom_dimension_level = 'Customer' bind_field_name = 'F_PriceCustomerCode' rest_api_item_field = "rows" javascript_code = ''' if (doc.rows) { doc.rows.forEach(function(row){ if (doc.CustCode){ row.RowCustCode = doc.CustCode; } }) } '''

Project Transaction cube

This is an example on how Project Transaction cube can be build based on SERP data.
This cube definition contains these sections:

  • Defining Project transaction dimensions

  • Binding project transaction to dimensions

  • Defining Project transaction measures

    Note: Cube name is given a name when you import first Custom field

Note: to see re- used standard Dimensions see sections “ for_standard_dimensions”, to see new dimension setup see sections “ for_custom_dimension”

Idea: With Javascript you can manipulate values during import and use them in a different way , see sections “ javascript_code"

#### Start of project transactions cube #### #Defining Project transaction dimensions #-------------------------- [TBIVVc.date] name = 'Project Transaction Date' dimension_name = 'Project Transaction' cube_name = "HansaWorld Project Transactions" rest_api_field = 'TransDate' data_type = 'date' for_standard_dimension = "Time" import_sort_date = true [TBIVVc.code] name = 'Project Transaction Code' for_custom_dimension = 'Project Transaction' dimension_name = 'Project Transaction' cube_name = "HansaWorld Project Transactions" rest_api_field = 'SerNr' key_field = true [TBIVVc.name] name = 'Project Transaction Name' for_custom_dimension = 'Project Transaction' dimension_name = 'Project Transaction' cube_name = "HansaWorld Project Transactions" rest_api_field = 'PRName' name_field = true [TBIVVc.item_type] name = 'Project Transaction Item Type' dimension_name = 'Project Transaction' cube_name = "HansaWorld Project Transactions" rest_api_field = 'ItemType' dimension = true javascript_code = ''' switch(doc.ItemType) { case "0": doc.ItemType = "Plain"; break; case "1": doc.ItemType = "Stocked"; break; case "3": doc.ItemType = "Service"; break; case "5": doc.ItemType = "Materials"; break; } ''' [TBIVVc.transaction_surce] name = 'Project Transaction Source' dimension_name = 'Project Transaction' cube_name = "HansaWorld Project Transactions" rest_api_field = 'oVc' dimension = true javascript_code = ''' switch(doc.oVc) { case "1": doc.oVc = "Timesheet"; break; case "2": doc.oVc = "Purchase inv."; break; case "3": doc.oVc = "Expense"; break; case "4": doc.oVc = "Delivery"; break; case "5": doc.oVc = "Activity"; break; case "6": doc.oVc = "Ret. goods"; break; case "7": doc.oVc = "Depreciation"; break; } ''' [TBIVVc.invoice_status] name = 'Project Transaction Invoice Statuss' dimension_name = 'Project Transaction' cube_name = "HansaWorld Project Transactions" skip_request = true dimension = true javascript_code = ''' if (doc.Invoice) { doc.invoice_status = 'Invoiced' } else { doc.invoice_status = 'Not Invoiced' } ''' [TBIVVc.objects] name = 'Objects' dimension_name = 'Project Transaction' cube_name = "HansaWorld Project Transactions" rest_api_field = 'Objects' for_extra_dimension_type = "Object types" #Binding project transaction to dimensions #-------------------------- [TBIVVc.invoice_code] name = 'Project Transaction Invoice Code' cube_name = "HansaWorld Project Transactions" for_standard_dimension = 'Invoice' bind_field_name = 'code' rest_api_field = 'Invoice' [TBIVVc.invoice_item_position] name = 'Project Transaction Invoice Item Position' cube_name = "HansaWorld Project Transactions" for_standard_dimension = 'Invoice' for_standard_dimension_level = 'Invoice Item' bind_field_name = 'position' skip_import = true javascript_code = ''' doc.invoice_item_position = "-1" ''' [TBIVVc.currency_code] name = 'Project Transaction Currency Code' cube_name = "HansaWorld Project Transactions" for_standard_dimension = 'Currency' bind_field_name = 'currency' rest_api_field = 'CurncyCode' [TBIVVc.project_code] name = 'Project Transaction Project Code' cube_name = "HansaWorld Project Transactions" for_standard_dimension = 'Project (Job)' for_standard_dimension_level = "Project" bind_field_name = 'code' rest_api_field = 'PRCode' [TBIVVc.project_item_position] name = 'Project Transaction Project Item Position' cube_name = "HansaWorld Project Transactions" for_standard_dimension = 'Project (Job)' for_standard_dimension_level = 'Project Item' bind_field_name = 'position' skip_import = true javascript_code = ''' doc.project_item_position = "-1" ''' [TBIVVc.item_code] name = 'Project Transaction Item Code' cube_name = "HansaWorld Project Transactions" for_standard_dimension = 'Item' bind_field_name = 'code' rest_api_field = 'ArtCode' [TBIVVc.person_code] name = 'Project Transaction Person Code' cube_name = "HansaWorld Project Transactions" for_standard_dimension = 'Person' bind_field_name = 'code' rest_api_field = 'EMCode' #Defining Project transaction measures #-------------------------- [TBIVVc.quantity] name = "Project Transaction Quantity" cube_name = "HansaWorld Project Transactions" dimension_name = 'Project Transaction' measure = true cubes_for_measure_sharing = ["HansaWorld Invoices"] rest_api_field = "Qty" [TBIVVc.gross_profit] name = "Project Transaction Gross Profit" cube_name = "HansaWorld Project Transactions" dimension_name = 'Project Transaction' cubes_for_measure_sharing = ["HansaWorld Invoices"] measure = true rest_api_field = "GP" [TBIVVc.cost] name = "Project Transaction Cost" cube_name = "HansaWorld Project Transactions" dimension_name = 'Project Transaction' measure = true cubes_for_measure_sharing = ["HansaWorld Invoices"] skip_request = true javascript_code = ''' if (doc.CostPrice) { doc.cost = String(doc.CostPrice * doc.Qty) } ''' [TBIVVc.sum] name = "Project Transaction Amount" cube_name = "HansaWorld Project Transactions" dimension_name = 'Project Transaction' measure = true rest_api_field = "Sum" cubes_for_measure_sharing = ["HansaWorld Invoices"] javascript_code = ''' doc._source_id = doc.SerNr; ''' #### End of project transactions cube ####

Dynamic dimension creation with custom fields for object types and item variety groups

#multi value dimension structure (object/category types) definition [OTVc.dimension_name] cube_name = 'HansaWorld Invoices' dimension_name = 'Objectx' name = 'Objectx dimension name' rest_api_field = 'Comment' dynamic_dimension_name_field = true [OTVc.dimension_code] cube_name = 'HansaWorld Invoices' dimension_name = 'Objectx' name = 'Objectx dimension key' rest_api_field = 'Code' dynamic_dimension_key_field = true #multi value dimension definition [ObjVc.name] cube_name = 'HansaWorld Invoices' dimension_name = 'Objectx' name = 'Objectx name' rest_api_field = 'Comment' name_field = true annotation_group = "Objectx dimensions" [ObjVc.code] cube_name = 'HansaWorld Invoices' dimension_name = 'Objectx' name = 'Objectx Code' rest_api_field = 'Code' key_field = true [ObjVc.auto_objects] cube_name = 'HansaWorld Invoices' dimension_name = 'Objectx' name = 'Objectx Auto Objects' rest_api_field = 'AutoObjects' property = true [ObjVc.dimension_key_bind] cube_name = 'HansaWorld Invoices' dimension_name = 'Objectx' name = 'Objectx Dimension Key Bind' rest_api_field = 'OTCode' dynamic_dimension_key_bind_field = true #multi value dimension binding for HansaWorld Invoices [IVVc.objectx_bind] cube_name = 'HansaWorld Invoices' for_custom_dimension = 'Objectx' name = 'Invoices Objectx Bind' rest_api_field = 'Objects' data_type = 'array' bind_field_name = 'code' [IVVc.item_objectx_bind] cube_name = 'HansaWorld Invoices' for_custom_dimension = 'Objectx' name = 'Invoices Objectx Item Bind' rest_api_field = 'Objects' data_type = 'array' bind_field_name = 'code' rest_api_item_field = "rows" javascript_code = ''' if (doc.rows) { doc.rows.forEach(function(row){ row.Objects = doc.Objects + ',' + row.Objects; }) } ''' #multi value dimension binding for HansaWorld Sales Orders [ORVc.objectx_bind] cube_name = 'HansaWorld Sales Orders' for_custom_dimension = 'Objectx' name = 'SO Objectx Bind' rest_api_field = 'Objects' data_type = 'array' bind_field_name = 'code' [ORVc.item_objectx_bind] cube_name = 'HansaWorld Sales Orders' for_custom_dimension = 'Objectx' name = 'SO Objectx Item Bind' rest_api_field = 'Objects' data_type = 'array' bind_field_name = 'code' rest_api_item_field = "rows" javascript_code = ''' if (doc.rows) { doc.rows.forEach(function(row){ row.Objects = doc.Objects + ',' + row.Objects; }) } ''' ##--------------------Item varieties----------------------------------------------- #multi value dimension structure (object/category types) definition [VARGVc.var_dimension_name] cube_name = 'HansaWorld Invoices' dimension_name = 'xVariety' name = 'xVariety dimension name' rest_api_field = 'Comment' dynamic_dimension_name_field = true [VARGVc.var_dimension_code] cube_name = 'HansaWorld Invoices' dimension_name = 'xVariety' name = 'xVariety dimension key' rest_api_field = 'Code' dynamic_dimension_key_field = true #multi value dimension definition [VARVc.var_name] cube_name = 'HansaWorld Invoices' dimension_name = 'xVariety' name = 'xVariety name' rest_api_field = 'Comment' name_field = true annotation_group = "xVariety dimensions" [VARVc.var_code] cube_name = 'HansaWorld Invoices' dimension_name = 'xVariety' name = 'xVariety Code' rest_api_field = 'Code' key_field = true [VARVc.var_dimension_key_bind] cube_name = 'HansaWorld Invoices' dimension_name = 'xVariety' name = 'xVariety Dimension Key Bind' rest_api_field = 'VARGCode' dynamic_dimension_key_bind_field = true [IVVc.item_var_bind] cube_name = 'HansaWorld Invoices' for_custom_dimension = 'xVariety' name = 'Invoices xVariety Item Bind' skip_request = true data_type = 'array' bind_field_name = 'var_code' rest_api_item_field = "rows" javascript_code = ''' if (doc.rows) { doc.rows.forEach(function(row) { var parts = row.ArtCode.split("."); if (parts && parts.length > 1) { row.item_var_bind = parts.slice(1).join(","); } }); } '''