History: Work_Custom_Pricing

Preview of version: 34

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

Information Version
Thu 06 of Oct, 2016 10:56 GMT-0000 Xavier de Pedro added menu page 35
Thu 06 of Oct, 2016 10:15 GMT-0000 Xavier de Pedro typo 34
Thu 06 of Oct, 2016 10:14 GMT-0000 Xavier de Pedro removed bad ref to work_order_line_items_woliWorkDescription (woli not needed there) thanks kroky6 33
Fri 30 of Sep, 2016 14:45 GMT-0000 Xavier de Pedro added fancytable to the profile since it's reused by item link now 32
Fri 30 of Sep, 2016 10:57 GMT-0000 Xavier de Pedro added units to work order line items tracker 31
Thu 29 of Sep, 2016 10:35 GMT-0000 Xavier de Pedro added work_order_line_items_woliKeywords 30
Fri 23 of Sep, 2016 14:57 GMT-0000 Xavier de Pedro added header sections for tabbed display 29
Fri 23 of Sep, 2016 14:46 GMT-0000 Xavier de Pedro fixed instructions page name 28
Fri 23 of Sep, 2016 14:44 GMT-0000 Xavier de Pedro added instructions page 27
Fri 23 of Sep, 2016 14:39 GMT-0000 Xavier de Pedro added instructions page 26
Fri 23 of Sep, 2016 14:12 GMT-0000 Xavier de Pedro a few tweaks 25
Fri 23 of Sep, 2016 14:01 GMT-0000 Xavier de Pedro added codemirror 24
Fri 23 of Sep, 2016 13:43 GMT-0000 Xavier de Pedro wo to wpg in sample data 23
Fri 23 of Sep, 2016 13:42 GMT-0000 Xavier de Pedro oups 22
Fri 23 of Sep, 2016 13:40 GMT-0000 Xavier de Pedro renamed references to permnames as reference names 21
Fri 23 of Sep, 2016 13:36 GMT-0000 Xavier de Pedro added wo status in the sample data 20
Fri 23 of Sep, 2016 13:23 GMT-0000 Xavier de Pedro added 3 items of tracker price guide 19
Fri 23 of Sep, 2016 13:16 GMT-0000 Xavier de Pedro resorted fields 18
Fri 23 of Sep, 2016 13:13 GMT-0000 Xavier de Pedro removed extra siteadress 17
Fri 23 of Sep, 2016 09:27 GMT-0000 Xavier de Pedro updated formula with right permnames 16
Fri 23 of Sep, 2016 09:21 GMT-0000 Xavier de Pedro fixed locale also in the other tracker 15
Fri 23 of Sep, 2016 09:15 GMT-0000 Xavier de Pedro fixed default locale 14
Fri 23 of Sep, 2016 09:09 GMT-0000 Xavier de Pedro cleared wrong data 13
Fri 23 of Sep, 2016 09:08 GMT-0000 Xavier de Pedro added prefs for a few other fields needed 12
Fri 23 of Sep, 2016 09:05 GMT-0000 Xavier de Pedro added pref for math 11