Loading...
 

History: Work_Custom_Pricing

Preview of version: 33

This profile is a showcase of how to setup trackers to allow defining work orders in one tracker, and linked them to billable tasks from another one, allowing to define a custom price aside of the guide and get some of the items selected summed in another field of tracker1. The tracker also demonstrates how item link field currently allows to create and link items in a second tracker on the fly and get them stored while adding the new item in the first tracker.

These pages will be created:

Some tracker items are created for the price guide to ease the usage of the system.

YAML
permissions: preferences: feature_trackers: y feature_search: y feature_search_fulltext: n feature_wiki_argvariable: y feature_syntax_highlighter: y feature_jquery_tablesorter: y unified_incremental_update: y wikiplugin_tabs: y wikiplugin_button: y wikiplugin_param: y wikiplugin_tracker: y wikiplugin_trackerlist: y wikiplugin_list: y trackerfield_dropdownother: y trackerfield_autoincrement: y trackerfield_currency: y trackerfield_dynamiclist: y trackerfield_math: y


Tracker 1: Work Orders

YAML
objects: - type: tracker ref: work_orders data: name: Work orders description: > This is where the work orders are stored sort_default_order: desc list_default_status: opc hide_list_empty_fields: y restrict_end: 0 form_classes: section_format: tab restrict_start: 0 show: - status - type: tracker_field ref: work_orders_general data: name: General permname: general tracker: $profileobject:work_orders$ options: level: 3 toggle: o type: header order: 5 flags: - public - type: tracker_field ref: work_orders_WOID data: name: 'WO#' permname: woWOID tracker: $profileobject:work_orders$ options: samerow: 1 autocomplete: n exact: n type: text_field order: 10 flags: - list - searchable - public - mandatory - type: tracker_field ref: work_orders_name data: name: Name permname: woName tracker: $profileobject:work_orders$ options: samerow: 1 type: text_field order: 20 flags: - link - list - searchable - public - mandatory - type: tracker_field ref: work_orders_status data: name: Status permname: woStatus tracker: $profileobject:work_orders$ options: options: - 0-Received from client - 0-Received from client - 1-Confirmed by us - 2-Assigned to Account Manager - 3-Bid by contractor - 4-Assigned to contractor - 5-Work done by contractor - 6-Work accepted by our company - 7-Invoice Received from Contractor - 8-Contractor Paid - 9-Client Invoiced - 10-Client payment received type: dropdown order: 30 flags: - list - public - type: tracker_field ref: work_orders_workPrice data: name: Work Price permname: woWorkPrice tracker: $profileobject:work_orders$ options: trackerId: $profileobject:work_order_line_items$ displayFieldsList: - $profileobject:work_order_line_items_workDescription$ - $profileobject:work_order_line_items_contractorPricePerUnit$ - $profileobject:work_order_line_items_overridePrice$ - $profileobject:work_order_line_items_woliKeywords$ displayFieldsListType: table status: opc addItems: Add preSelectFieldMethod: exact displayOneItem: multi selectMultipleValues: 1 indexRemote: - 0 type: item_link order: 40 flags: - list - public - type: tracker_field ref: work_orders_workPriceFinal data: name: Work Price, final permname: woWorkPriceFinal tracker: $profileobject:work_orders$ options: calculation: | (add (for-each (list (split-list (content woWorkPrice) (separator ,) (key id) ) ) (formula (tracker-field (object "trackeritem" id) (field woliOverridePrice) ) ) ) ) recalculate: save type: math order: 50 flags: - list - public - type: tracker_field ref: work_orders_location data: name: Location permname: location tracker: $profileobject:work_orders$ options: level: 3 toggle: o type: header order: 60 flags: - public - type: tracker_field ref: work_orders_address data: name: Address permname: woAddress tracker: $profileobject:work_orders$ options: samerow: 1 type: text_field order: 70 flags: - list - public - type: tracker_field ref: work_orders_zipCode data: name: Zip Code permname: woZipCode tracker: $profileobject:work_orders$ options: samerow: 1 type: numeric order: 80 flags: - list - public - type: tracker_field ref: work_orders_map data: name: Map permname: woMap tracker: $profileobject:work_orders$ options: use_as_item_location: 1 list_width: 200 list_height: 200 item_width: 500 item_height: 400 sourceFieldsList: - > $profileobject:work_orders_address$ sourceSearchEvent: indexalways type: map order: 100 flags: - list - public - type: tracker_field ref: work_orders_otherInfos data: name: Other infos permname: otherInfos tracker: $profileobject:work_orders$ options: level: 3 toggle: o type: header order: 200 flags: - public - type: tracker_field ref: work_orders_workOrderInstructions data: name: work order instructions permname: woWorkOrderInstructions tracker: $profileobject:work_orders$ options: distinct: n wysiwyg: n samerow: 1 type: text_area order: 210 flags: - public - type: tracker_field ref: work_orders_estimatedCompletionDate data: name: Estimated Completion Date permname: woEstimatedCompletionDate tracker: $profileobject:work_orders$ options: datetime: d blankdate: blank type: datetime order: 250 flags: - list - public - type: tracker_field ref: work_orders_user data: name: user permname: woUser tracker: $profileobject:work_orders$ options: type: user order: 300 flags: - public - type: tracker_option ref: work_orders_sort_default_field data: tracker: $profileobject:work_orders$ name: sort_default_field value: > $profileobject:work_orders_WOID$ - type: tracker_option ref: work_orders_popup_fields data: tracker: $profileobject:work_orders$ name: popup_fields value: > $profileobject:work_orders_workOrderInstructions$


Tracker 2: Work Price Guide

YAML
objects: - type: tracker ref: work_price_guide data: name: Work Price Guide description: list_default_status: opc hide_list_empty_fields: y restrict_end: 0 form_classes: restrict_start: 0 - type: tracker_field ref: work_price_guide_workCategory data: name: Work category permname: wpgWorkCategory tracker: $profileobject:work_price_guide$ options: options: - | Appliance - remove - | Appliance - replace - Boarding - | Cap - dryer vent - | Cap - exposed drain - | Cap - exposed wire - | Cap - gas/water line - | Carpet - clean - | Clean - fireplace & chimney - | Clean - gutters type: dropdown order: 0 flags: - list - public - type: tracker_field ref: work_price_guide_workDescription data: name: Work description permname: wpgWorkDescription tracker: $profileobject:work_price_guide$ options: samerow: 1 type: text_field order: 10 flags: - link - list - public - mandatory - type: tracker_field ref: work_price_guide_uM data: name: U/M permname: wpgUM tracker: $profileobject:work_price_guide$ options: options: - Unit - HRS type: dropdown order: 30 flags: - list - public - type: tracker_field ref: work_price_guide_contractorPricePerUnit data: name: Contractor Price Per Unit permname: wpgContractorPricePerUnit tracker: $profileobject:work_price_guide$ options: samerow: 1 size: 7 locale: en_US.UTF-8 currency: USD symbol: i all_symbol: 1 type: currency order: 40 flags: - list - public - type: tracker_option ref: work_price_guide_sort_default_field data: tracker: $profileobject:work_price_guide$ name: sort_default_field value: modification


Tracker 3: Work Order Line Items

YAML
objects: - type: tracker ref: work_order_line_items data: name: Work Order Line Items description: restrict_end: 0 form_classes: restrict_start: 0 - type: tracker_field ref: work_order_line_items_workDescription data: name: Work description permname: woliWorkDescription tracker: $profileobject:work_order_line_items$ options: trackerId: $profileobject:work_price_guide$ fieldId: $profileobject:work_price_guide_workDescription$ displayFieldsList: - 0 displayFieldsListType: dropdown status: opc preSelectFieldMethod: exact displayOneItem: multi indexRemote: - 0 type: item_link order: 10 flags: - link - list - public - mandatory - type: tracker_field ref: > work_order_line_items_contractorPricePerUnit data: name: Contractor Price Per Unit permname: woliContractorPricePerUnit tracker: $profileobject:work_order_line_items$ options: trackerId: $profileobject:work_price_guide$ filterFieldIdThere: $profileobject:work_price_guide_workDescription$ filterFieldIdHere: > $profileobject:work_order_line_items_workDescription$ listFieldIdThere: $profileobject:work_price_guide_contractorPricePerUnit$ statusThere: opc hideBlank: 1 type: item_list_dynamic order: 20 flags: - list - searchable - public - type: tracker_field ref: work_order_line_items_overridePrice data: name: Override Price permname: woliOverridePrice tracker: $profileobject:work_order_line_items$ options: samerow: 1 size: 7 locale: en_US.UTF-8 currency: USD symbol: i all_symbol: 1 type: currency order: 30 flags: - list - searchable - public - type: tracker_field ref: work_order_line_items_units data: name: Units permname: woliUnits tracker: $profileobject:work_order_line_items$ options: trackerId: $profileobject:work_order_line_items$ filterFieldIdThere: $profileobject:work_price_guide_workDescription$ filterFieldIdHere: > $profileobject:work_order_line_items_WorkDescription$ listFieldIdThere: $profileobject:work_price_guide_uM$ statusThere: opc hideBlank: 1 type: item_list_dynamic order: 30 flags: - list - searchable - public - type: tracker_field ref: work_order_line_items_woliKeywords data: name: Override Reason (Keywords) permname: woliKeywords tracker: $profileobject:work_order_line_items$ options: samerow: 1 autocomplete: n exact: n type: text_field order: 40 description: > Free text to facilitate aggregating in a later stage the work items with overidden prices for a common reason (contractor, type of work, special promotion, etc.) flags: - list - searchable - public - type: tracker_option ref: work_order_line_items_sort_default_field data: tracker: $profileobject:work_order_line_items$ name: sort_default_field value: modification


Sample data

In Tracker1: Work orders

YAML
objects: - type: tracker_item ref: wo_001 data: tracker: $Work_Custom_Pricing:work_orders status: open values: - [ $Work_Custom_Pricing:work_orders_WOID, 1 ] - [ $Work_Custom_Pricing:work_orders_name, "Check current status of the abandoned house ABC (The first Work Order: take pics, etc)" ] - [ $Work_Custom_Pricing:work_orders_status, "1-Confirmed by us" ] - type: tracker_item ref: wo_002 data: tracker: $Work_Custom_Pricing:work_orders status: pending values: - [ $Work_Custom_Pricing:work_orders_WOID, 2 ] - [ $Work_Custom_Pricing:work_orders_name, "Clean the house MNO" ] - [ $Work_Custom_Pricing:work_orders_status, "0-Received from client" ] - type: tracker_item ref: wo_003 data: tracker: $Work_Custom_Pricing:work_orders status: open values: - [ $Work_Custom_Pricing:work_orders_WOID, 3 ] - [ $Work_Custom_Pricing:work_orders_name, "Extend Garage of house XYZ" ] - [ $Work_Custom_Pricing:work_orders_status, "0-Received from client" ]


In Tracker2: Work Price Guide

YAML
objects: - type: tracker_item ref: wpg_001 data: tracker: $Work_Custom_Pricing:work_price_guide status: open values: - [ $Work_Custom_Pricing:work_price_guide_workCategory, "Appliance - remove" ] - [ $Work_Custom_Pricing:work_price_guide_workDescription, "Remove old appliances from the abandoned house" ] - [ $Work_Custom_Pricing:work_price_guide_uM, "HRS" ] - [ $Work_Custom_Pricing:work_price_guide_contractorPricePerUnit, "10" ] - type: tracker_item ref: wpg_002 data: tracker: $Work_Custom_Pricing:work_price_guide status: open values: - [ $Work_Custom_Pricing:work_price_guide_workCategory, "Carpet - clean" ] - [ $Work_Custom_Pricing:work_price_guide_workDescription, "Clear carpets of each room of the house" ] - [ $Work_Custom_Pricing:work_price_guide_uM, "HRS" ] - [ $Work_Custom_Pricing:work_price_guide_contractorPricePerUnit, "15" ] - type: tracker_item ref: wpg_003 data: tracker: $Work_Custom_Pricing:work_price_guide status: open values: - [ $Work_Custom_Pricing:work_price_guide_workCategory, "Fix structures" ] - [ $Work_Custom_Pricing:work_price_guide_workDescription, "Fix wooden fence at the garden" ] - [ $Work_Custom_Pricing:work_price_guide_uM, "HRS" ] - [ $Work_Custom_Pricing:work_price_guide_contractorPricePerUnit, "8" ]



Wiki pages

Add a page to allow adding items, and the instructions page

This will include: Profile_Work_Custom_Pricing_page

YAML
instructions: Work Custom Pricing Instructions preferences: enable: [ feature_wiki ] objects: - type: wiki_page ref: wcp_page data: name: Work Orders description: Interface to manage work orders lang: en content: wikicontent:Profile_Work_Custom_Pricing_page - type: wiki_page ref: wcp_instructions_page data: name: Work Custom Pricing Instructions description: Instructions on how to use this profile lang: en content: wikicontent:Profile_Work_Custom_Pricing_instructions_page


History

Advanced
Information Version
Tue 14 of Feb, 2023 04:26 GMT-0000 Marc Laporte Profile tester reported There were some errors while trying to load the profile definition Could not parse YAML in profile: "Duplicate key "ajax_inline_edit" detected at line 29 (near "ajax_inline_edit: y")." 110
Tue 14 of Feb, 2023 02:54 GMT-0000 Marc Laporte Broken here: https://tikiwiki.gitlab.io/ci-helpers/tiki-profiles-tester/ 109
Wed 10 of Jul, 2019 09:22 GMT-0000 Xavi (as xavidp - admin) added profile_autoapprove_wikiplugins 108
Wed 10 of Jul, 2019 09:17 GMT-0000 Xavi (as xavidp - admin) plugin jq was used 107
Wed 10 of Jul, 2019 08:40 GMT-0000 Xavi (as xavidp - admin) full path of image to allow display from remote tiki profiles control panel 106
Wed 10 of Jul, 2019 08:39 GMT-0000 Xavi (as xavidp - admin) replaced $profileobject:work_orders_AutoSyncUsers$ with work_orders_AutoSyncUsers_ID to prevent circular reference and profile application failing 105
Sun 07 of Jul, 2019 18:18 GMT-0000 Xavier de Pedro added screenshot 104
Mon 28 of Nov, 2016 13:31 GMT-0000 Xavier de Pedro fixed positions 103
Mon 28 of Nov, 2016 13:28 GMT-0000 Xavier de Pedro typo 102
Mon 28 of Nov, 2016 13:26 GMT-0000 Xavier de Pedro fixed referencs in formula to auxotsyncuserowners between trackers 101
Mon 28 of Nov, 2016 13:23 GMT-0000 Xavier de Pedro added a few fields in trakcer woli, plus field to autosyncowners 100
Fri 04 of Nov, 2016 01:32 GMT-0000 Marc Laporte typo 99
Wed 26 of Oct, 2016 11:58 GMT-0000 Xavier de Pedro added inline edit to the profile 98
Tue 25 of Oct, 2016 13:22 GMT-0000 Xavier de Pedro fixed object perms for staff, clients and contractors 97
Tue 25 of Oct, 2016 13:15 GMT-0000 Xavier de Pedro added perms global local to test issues in show instances so far 96
Tue 25 of Oct, 2016 13:06 GMT-0000 Xavier de Pedro added itemslist 95
Tue 25 of Oct, 2016 10:11 GMT-0000 Xavier de Pedro added local perm for staff to edit his own homepage for the pivot table to work and test local perm but not global issue 94
Tue 25 of Oct, 2016 09:51 GMT-0000 Xavier de Pedro added a couple extra plugins 93
Sat 22 of Oct, 2016 22:43 GMT-0000 Xavier de Pedro minor extra info 92
Sat 22 of Oct, 2016 22:40 GMT-0000 Xavier de Pedro typo 91
Fri 21 of Oct, 2016 21:43 GMT-0000 Xavier de Pedro converted user seleectro in tracker woli to items_list get the data from the corresponding tracker item in WO with the same work order number 90
Fri 21 of Oct, 2016 20:10 GMT-0000 Xavier de Pedro added staff1 or 2 to each default WO tracker item to allow them to edit the corresponding tracker items. 89
Fri 21 of Oct, 2016 20:08 GMT-0000 Xavier de Pedro added default values for woUSers multiple select, make one tracker item as closed, and new woStatus 88
Fri 21 of Oct, 2016 17:27 GMT-0000 Xavier de Pedro added new options for tracker work order to allow a creator to modify his/her items 87
Fri 21 of Oct, 2016 17:22 GMT-0000 Xavier de Pedro added wo users as multiple selction and autoassign as creator for the special permissions to be applicable later on. 86