This profile is a showcase of how to setup trackers to allow defining work orders in one tracker, and linked them to billable tasks frmo 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.
This page 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
unified_incremental_update: y
wikiplugin_tabs: y
wikiplugin_trackerlist: y
wikiplugin_list: y
trackerfield_dropdownother: y
instructions: Profile_Work_Custom_Pricing_Instructions_page
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_WOID
data:
name: 'WO#'
permname: woWOID
tracker: $profileobject:work_orders$
options:
samerow: 1
autocomplete: n
exact: n
type: text_field
order: 0
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 A.M.
- 3-Bid by contractor
- 4-Assigned to contractor
- 5-Work done by contractor
- 6-Work accepted by PPM
- 7-Invoice Received from Contractor
- 8-Contractor Paid
- 9-Client Invoiced
- 10-Client payment received
type: dropdown
order: 10
flags:
- list
- 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: 50
flags:
- link
- list
- public
-
type: tracker_field
ref: work_orders_address
data:
name: Address
permname: woAddress
tracker: $profileobject:work_orders$
options:
samerow: 1
type: text_field
order: 90
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: 100
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_SITEADDRESS$
sourceSearchEvent: indexalways
type: map
order: 110
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$
displayFieldsListType: table
status: opc
addItems: Add
preSelectFieldMethod: exact
displayOneItem: multi
selectMultipleValues: 1
indexRemote:
- 0
type: item_link
order: 130
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 workPrice)
(separator ,)
(key id)
)
)
(formula
(tracker-field
(object "trackeritem" id)
(field overridePrice)
)
)
)
)
recalculate: save
type: math
order: 140
flags:
- list
- public
-
type: tracker_field
ref: work_orders_name
data:
name: Name
permname: woName
tracker: $profileobject:work_orders$
options:
samerow: 1
type: text_field
order: 190
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_SITEADDRESS
data:
name: ADDRESS
permname: woSITEADDRESS
tracker: $profileobject:work_orders$
options:
height: 2
distinct: n
wysiwyg: n
samerow: 1
type: text_area
order: 230
flags:
- list
- searchable
- public
-
type: tracker_field
ref: work_orders_user
data:
name: user
permname: woUser
tracker: $profileobject:work_orders$
options:
type: user
order: 310
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:
- EA
- SF
- LF
- CBYD
- HRS
- Per 1000SF
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
currency: USD
symbol: n
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:wpgWorkDescription$
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:wpgWorkDescription$
filterFieldIdHere: >
$profileobject:work_order_line_items_workDescription$
listFieldIdThere: $profileobject:wpgContractorPricePerUnit$
statusThere: opc
hideBlank: 1
type: item_list_dynamic
order: 20
flags:
- 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
currency: USD
symbol: n
type: currency
order: 30
flags:
- 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
YAML
objects:
-
type: tracker_item
ref: event_001
data:
tracker: $Work_Custom_Pricing:wcp_work_orders
status: open
values:
- [ $Work_Custom_Pricing:wcp_summary, "Welcome Party" ]
- [ $Work_Custom_Pricing:wcp_location, hall (100 seats) ]
-
type: tracker_item
ref: event_002
data:
tracker: $Work_Custom_Pricing:wcp_work_orders
status: pending
values:
- [ $Work_Custom_Pricing:wcp_summary, "Welcome Party" ]
- [ $Work_Custom_Pricing:wcp_location, hall (100 seats) ] -
type: tracker_item
ref: event_003
data:
tracker: $Work_Custom_Pricing:wcp_work_orders
status: open
values:
- [ $Work_Custom_Pricing:wcp_summary, "Welcome Party" ]
- [ $Work_Custom_Pricing:wcp_location, hall (100 seats) ]
Add a page to allow adding items
This will include:
Profile_Work_Custom_Pricing_page
YAML
instructions: Work_Custom_Pricing
preferences:
enable: [ feature_wiki ]
objects:
-
type: wiki_page
ref: wcp_page
data:
name: Work_Custom_Pricing
description: Interface to manage work orders
lang: en
content: wikicontent:Profile_Work_Custom_Pricing_page