History: Work_Custom_Pricing
Preview of version: 38
- «
- »
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.
This will include: Profile_Work_Custom_Pricing_page
These pages will be created:
- Profile_Work_Custom_Pricing_page
- Profile_Work_Custom_Pricing_instructions_page
- Profile_Work_Custom_Pricing_menupage_include
Some tracker items are created for the price guide to ease the usage of the system.
YAML
Copy to clipboard
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
Copy to clipboard
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
Copy to clipboard
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
Copy to clipboard
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
Copy to clipboard
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
Copy to clipboard
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 pageThis will include: Profile_Work_Custom_Pricing_page
YAML
Copy to clipboard
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 - type: wiki_page ref: wcp_menupage_include data: name: Menu WCP description: Custom Wiki Menu for the Work Custom Pricing Profile lang: en content: wikicontent:Profile_Work_Custom_Pricing_menupage_include
Modules
YAML
Copy to clipboard
objects: - type: module ref: module_menupage_wcp data: name: menupage params: pagemenu: $profileobject:wcp_menupage_include$ groups: - Anonymous - Registered order: 2 position: left