Document toolboxDocument toolbox

Project Transaction cube from custom fields

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 ####