@rippling/rippling-sdk 0.2.0-alpha.82 → 0.2.0-alpha.84
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/client.d.mts +4 -4
- package/client.d.mts.map +1 -1
- package/client.d.ts +4 -4
- package/client.d.ts.map +1 -1
- package/client.js.map +1 -1
- package/client.mjs.map +1 -1
- package/core/platform/custom-objects/category.d.mts +125 -0
- package/core/platform/custom-objects/category.d.mts.map +1 -0
- package/core/platform/custom-objects/category.d.ts +125 -0
- package/core/platform/custom-objects/category.d.ts.map +1 -0
- package/core/platform/custom-objects/category.js +188 -0
- package/core/platform/custom-objects/category.js.map +1 -0
- package/core/platform/custom-objects/category.mjs +178 -0
- package/core/platform/custom-objects/category.mjs.map +1 -0
- package/core/platform/custom-objects/definition.d.mts +147 -0
- package/core/platform/custom-objects/definition.d.mts.map +1 -0
- package/core/platform/custom-objects/definition.d.ts +147 -0
- package/core/platform/custom-objects/definition.d.ts.map +1 -0
- package/core/platform/custom-objects/definition.js +200 -0
- package/core/platform/custom-objects/definition.js.map +1 -0
- package/core/platform/custom-objects/definition.mjs +190 -0
- package/core/platform/custom-objects/definition.mjs.map +1 -0
- package/core/platform/custom-objects/fields.d.mts +302 -0
- package/core/platform/custom-objects/fields.d.mts.map +1 -0
- package/core/platform/custom-objects/fields.d.ts +302 -0
- package/core/platform/custom-objects/fields.d.ts.map +1 -0
- package/core/platform/custom-objects/fields.js +369 -0
- package/core/platform/custom-objects/fields.js.map +1 -0
- package/core/platform/custom-objects/fields.mjs +347 -0
- package/core/platform/custom-objects/fields.mjs.map +1 -0
- package/core/platform/custom-objects/function-runtime.d.mts +42 -0
- package/core/platform/custom-objects/function-runtime.d.mts.map +1 -0
- package/core/platform/custom-objects/function-runtime.d.ts +42 -0
- package/core/platform/custom-objects/function-runtime.d.ts.map +1 -0
- package/core/platform/custom-objects/function-runtime.js +38 -0
- package/core/platform/custom-objects/function-runtime.js.map +1 -0
- package/core/platform/custom-objects/function-runtime.mjs +35 -0
- package/core/platform/custom-objects/function-runtime.mjs.map +1 -0
- package/core/platform/custom-objects/lifecycle.d.mts +83 -0
- package/core/platform/custom-objects/lifecycle.d.mts.map +1 -0
- package/core/platform/custom-objects/lifecycle.d.ts +83 -0
- package/core/platform/custom-objects/lifecycle.d.ts.map +1 -0
- package/core/platform/custom-objects/lifecycle.js +372 -0
- package/core/platform/custom-objects/lifecycle.js.map +1 -0
- package/core/platform/custom-objects/lifecycle.mjs +367 -0
- package/core/platform/custom-objects/lifecycle.mjs.map +1 -0
- package/core/platform/custom-objects/manager.d.mts +354 -0
- package/core/platform/custom-objects/manager.d.mts.map +1 -0
- package/core/platform/custom-objects/manager.d.ts +354 -0
- package/core/platform/custom-objects/manager.d.ts.map +1 -0
- package/core/platform/custom-objects/manager.js +646 -0
- package/core/platform/custom-objects/manager.js.map +1 -0
- package/core/platform/custom-objects/manager.mjs +637 -0
- package/core/platform/custom-objects/manager.mjs.map +1 -0
- package/core/platform/custom-objects/provisioning.d.mts +138 -0
- package/core/platform/custom-objects/provisioning.d.mts.map +1 -0
- package/core/platform/custom-objects/provisioning.d.ts +138 -0
- package/core/platform/custom-objects/provisioning.d.ts.map +1 -0
- package/core/platform/custom-objects/provisioning.js +455 -0
- package/core/platform/custom-objects/provisioning.js.map +1 -0
- package/core/platform/custom-objects/provisioning.mjs +447 -0
- package/core/platform/custom-objects/provisioning.mjs.map +1 -0
- package/core/platform/custom-objects/rql.d.mts +122 -0
- package/core/platform/custom-objects/rql.d.mts.map +1 -0
- package/core/platform/custom-objects/rql.d.ts +122 -0
- package/core/platform/custom-objects/rql.d.ts.map +1 -0
- package/core/platform/custom-objects/rql.js +225 -0
- package/core/platform/custom-objects/rql.js.map +1 -0
- package/core/platform/custom-objects/rql.mjs +222 -0
- package/core/platform/custom-objects/rql.mjs.map +1 -0
- package/core/platform/custom-objects/schema-manager.d.mts +203 -0
- package/core/platform/custom-objects/schema-manager.d.mts.map +1 -0
- package/core/platform/custom-objects/schema-manager.d.ts +203 -0
- package/core/platform/custom-objects/schema-manager.d.ts.map +1 -0
- package/core/platform/custom-objects/schema-manager.js +256 -0
- package/core/platform/custom-objects/schema-manager.js.map +1 -0
- package/core/platform/custom-objects/schema-manager.mjs +249 -0
- package/core/platform/custom-objects/schema-manager.mjs.map +1 -0
- package/core/platform/custom-objects/typed-rql.d.mts +157 -0
- package/core/platform/custom-objects/typed-rql.d.mts.map +1 -0
- package/core/platform/custom-objects/typed-rql.d.ts +157 -0
- package/core/platform/custom-objects/typed-rql.d.ts.map +1 -0
- package/core/platform/custom-objects/typed-rql.js +583 -0
- package/core/platform/custom-objects/typed-rql.js.map +1 -0
- package/core/platform/custom-objects/typed-rql.mjs +580 -0
- package/core/platform/custom-objects/typed-rql.mjs.map +1 -0
- package/core/platform/custom-objects/types.d.mts +549 -0
- package/core/platform/custom-objects/types.d.mts.map +1 -0
- package/core/platform/custom-objects/types.d.ts +549 -0
- package/core/platform/custom-objects/types.d.ts.map +1 -0
- package/core/platform/custom-objects/types.js +20 -0
- package/core/platform/custom-objects/types.js.map +1 -0
- package/core/platform/custom-objects/types.mjs +17 -0
- package/core/platform/custom-objects/types.mjs.map +1 -0
- package/core/platform/custom-objects/validation.d.mts +97 -0
- package/core/platform/custom-objects/validation.d.mts.map +1 -0
- package/core/platform/custom-objects/validation.d.ts +97 -0
- package/core/platform/custom-objects/validation.d.ts.map +1 -0
- package/core/platform/custom-objects/validation.js +477 -0
- package/core/platform/custom-objects/validation.js.map +1 -0
- package/core/platform/custom-objects/validation.mjs +465 -0
- package/core/platform/custom-objects/validation.mjs.map +1 -0
- package/core/platform/custom-objects.d.mts +67 -0
- package/core/platform/custom-objects.d.mts.map +1 -0
- package/core/platform/custom-objects.d.ts +67 -0
- package/core/platform/custom-objects.d.ts.map +1 -0
- package/core/platform/custom-objects.js +118 -0
- package/core/platform/custom-objects.js.map +1 -0
- package/core/platform/custom-objects.mjs +45 -0
- package/core/platform/custom-objects.mjs.map +1 -0
- package/core/platform/manifest/custom-objects/action.d.mts +58 -0
- package/core/platform/manifest/custom-objects/action.d.mts.map +1 -0
- package/core/platform/manifest/custom-objects/action.d.ts +58 -0
- package/core/platform/manifest/custom-objects/action.d.ts.map +1 -0
- package/core/platform/manifest/custom-objects/action.js +44 -0
- package/core/platform/manifest/custom-objects/action.js.map +1 -0
- package/core/platform/manifest/custom-objects/action.mjs +40 -0
- package/core/platform/manifest/custom-objects/action.mjs.map +1 -0
- package/core/platform/manifest/custom-objects/conditions.d.mts +240 -0
- package/core/platform/manifest/custom-objects/conditions.d.mts.map +1 -0
- package/core/platform/manifest/custom-objects/conditions.d.ts +240 -0
- package/core/platform/manifest/custom-objects/conditions.d.ts.map +1 -0
- package/core/platform/manifest/custom-objects/conditions.js +326 -0
- package/core/platform/manifest/custom-objects/conditions.js.map +1 -0
- package/core/platform/manifest/custom-objects/conditions.mjs +321 -0
- package/core/platform/manifest/custom-objects/conditions.mjs.map +1 -0
- package/core/platform/manifest/custom-objects/existing.d.mts +87 -0
- package/core/platform/manifest/custom-objects/existing.d.mts.map +1 -0
- package/core/platform/manifest/custom-objects/existing.d.ts +87 -0
- package/core/platform/manifest/custom-objects/existing.d.ts.map +1 -0
- package/core/platform/manifest/custom-objects/existing.js +113 -0
- package/core/platform/manifest/custom-objects/existing.js.map +1 -0
- package/core/platform/manifest/custom-objects/existing.mjs +109 -0
- package/core/platform/manifest/custom-objects/existing.mjs.map +1 -0
- package/core/platform/manifest/custom-objects/field-resolution.d.mts +48 -0
- package/core/platform/manifest/custom-objects/field-resolution.d.mts.map +1 -0
- package/core/platform/manifest/custom-objects/field-resolution.d.ts +48 -0
- package/core/platform/manifest/custom-objects/field-resolution.d.ts.map +1 -0
- package/core/platform/manifest/custom-objects/field-resolution.js +61 -0
- package/core/platform/manifest/custom-objects/field-resolution.js.map +1 -0
- package/core/platform/manifest/custom-objects/field-resolution.mjs +58 -0
- package/core/platform/manifest/custom-objects/field-resolution.mjs.map +1 -0
- package/core/platform/manifest/custom-objects/function-file.d.mts +87 -0
- package/core/platform/manifest/custom-objects/function-file.d.mts.map +1 -0
- package/core/platform/manifest/custom-objects/function-file.d.ts +87 -0
- package/core/platform/manifest/custom-objects/function-file.d.ts.map +1 -0
- package/core/platform/manifest/custom-objects/function-file.js +76 -0
- package/core/platform/manifest/custom-objects/function-file.js.map +1 -0
- package/core/platform/manifest/custom-objects/function-file.mjs +69 -0
- package/core/platform/manifest/custom-objects/function-file.mjs.map +1 -0
- package/core/platform/manifest/custom-objects/list-view.d.mts +65 -0
- package/core/platform/manifest/custom-objects/list-view.d.mts.map +1 -0
- package/core/platform/manifest/custom-objects/list-view.d.ts +65 -0
- package/core/platform/manifest/custom-objects/list-view.d.ts.map +1 -0
- package/core/platform/manifest/custom-objects/list-view.js +33 -0
- package/core/platform/manifest/custom-objects/list-view.js.map +1 -0
- package/core/platform/manifest/custom-objects/list-view.mjs +30 -0
- package/core/platform/manifest/custom-objects/list-view.mjs.map +1 -0
- package/core/platform/manifest/custom-objects/object-list-page.d.mts +43 -0
- package/core/platform/manifest/custom-objects/object-list-page.d.mts.map +1 -0
- package/core/platform/manifest/custom-objects/object-list-page.d.ts +43 -0
- package/core/platform/manifest/custom-objects/object-list-page.d.ts.map +1 -0
- package/core/platform/manifest/custom-objects/object-list-page.js +54 -0
- package/core/platform/manifest/custom-objects/object-list-page.js.map +1 -0
- package/core/platform/manifest/custom-objects/object-list-page.mjs +50 -0
- package/core/platform/manifest/custom-objects/object-list-page.mjs.map +1 -0
- package/core/platform/manifest/custom-objects/page-layout.d.mts +142 -0
- package/core/platform/manifest/custom-objects/page-layout.d.mts.map +1 -0
- package/core/platform/manifest/custom-objects/page-layout.d.ts +142 -0
- package/core/platform/manifest/custom-objects/page-layout.d.ts.map +1 -0
- package/core/platform/manifest/custom-objects/page-layout.js +184 -0
- package/core/platform/manifest/custom-objects/page-layout.js.map +1 -0
- package/core/platform/manifest/custom-objects/page-layout.mjs +180 -0
- package/core/platform/manifest/custom-objects/page-layout.mjs.map +1 -0
- package/core/platform/manifest/custom-objects/register.d.mts +87 -0
- package/core/platform/manifest/custom-objects/register.d.mts.map +1 -0
- package/core/platform/manifest/custom-objects/register.d.ts +87 -0
- package/core/platform/manifest/custom-objects/register.d.ts.map +1 -0
- package/core/platform/manifest/custom-objects/register.js +395 -0
- package/core/platform/manifest/custom-objects/register.js.map +1 -0
- package/core/platform/manifest/custom-objects/register.mjs +391 -0
- package/core/platform/manifest/custom-objects/register.mjs.map +1 -0
- package/core/platform/manifest/custom-objects/rule.d.mts +113 -0
- package/core/platform/manifest/custom-objects/rule.d.mts.map +1 -0
- package/core/platform/manifest/custom-objects/rule.d.ts +113 -0
- package/core/platform/manifest/custom-objects/rule.d.ts.map +1 -0
- package/core/platform/manifest/custom-objects/rule.js +49 -0
- package/core/platform/manifest/custom-objects/rule.js.map +1 -0
- package/core/platform/manifest/custom-objects/rule.mjs +45 -0
- package/core/platform/manifest/custom-objects/rule.mjs.map +1 -0
- package/core/platform/manifest/custom-objects/sdui-page.d.mts +214 -0
- package/core/platform/manifest/custom-objects/sdui-page.d.mts.map +1 -0
- package/core/platform/manifest/custom-objects/sdui-page.d.ts +214 -0
- package/core/platform/manifest/custom-objects/sdui-page.d.ts.map +1 -0
- package/core/platform/manifest/custom-objects/sdui-page.js +194 -0
- package/core/platform/manifest/custom-objects/sdui-page.js.map +1 -0
- package/core/platform/manifest/custom-objects/sdui-page.mjs +182 -0
- package/core/platform/manifest/custom-objects/sdui-page.mjs.map +1 -0
- package/core/platform/manifest/custom-objects/typed-condition.d.mts +28 -0
- package/core/platform/manifest/custom-objects/typed-condition.d.mts.map +1 -0
- package/core/platform/manifest/custom-objects/typed-condition.d.ts +28 -0
- package/core/platform/manifest/custom-objects/typed-condition.d.ts.map +1 -0
- package/core/platform/manifest/custom-objects/typed-condition.js +434 -0
- package/core/platform/manifest/custom-objects/typed-condition.js.map +1 -0
- package/core/platform/manifest/custom-objects/typed-condition.mjs +431 -0
- package/core/platform/manifest/custom-objects/typed-condition.mjs.map +1 -0
- package/core/platform/manifest/custom-objects/types.d.mts +29 -0
- package/core/platform/manifest/custom-objects/types.d.mts.map +1 -0
- package/core/platform/manifest/custom-objects/types.d.ts +29 -0
- package/core/platform/manifest/custom-objects/types.d.ts.map +1 -0
- package/core/platform/manifest/custom-objects/types.js +3 -0
- package/core/platform/manifest/custom-objects/types.js.map +1 -0
- package/core/platform/manifest/custom-objects/types.mjs +2 -0
- package/core/platform/manifest/custom-objects/types.mjs.map +1 -0
- package/core/platform/manifest/custom-objects/validation.d.mts +44 -0
- package/core/platform/manifest/custom-objects/validation.d.mts.map +1 -0
- package/core/platform/manifest/custom-objects/validation.d.ts +44 -0
- package/core/platform/manifest/custom-objects/validation.d.ts.map +1 -0
- package/core/platform/manifest/custom-objects/validation.js +30 -0
- package/core/platform/manifest/custom-objects/validation.js.map +1 -0
- package/core/platform/manifest/custom-objects/validation.mjs +27 -0
- package/core/platform/manifest/custom-objects/validation.mjs.map +1 -0
- package/core/platform/manifest/custom-objects/workflow.d.mts +47 -0
- package/core/platform/manifest/custom-objects/workflow.d.mts.map +1 -0
- package/core/platform/manifest/custom-objects/workflow.d.ts +47 -0
- package/core/platform/manifest/custom-objects/workflow.d.ts.map +1 -0
- package/core/platform/manifest/custom-objects/workflow.js +38 -0
- package/core/platform/manifest/custom-objects/workflow.js.map +1 -0
- package/core/platform/manifest/custom-objects/workflow.mjs +34 -0
- package/core/platform/manifest/custom-objects/workflow.mjs.map +1 -0
- package/core/platform/manifest/custom-objects.d.mts +85 -0
- package/core/platform/manifest/custom-objects.d.mts.map +1 -0
- package/core/platform/manifest/custom-objects.d.ts +85 -0
- package/core/platform/manifest/custom-objects.d.ts.map +1 -0
- package/core/platform/manifest/custom-objects.js +84 -0
- package/core/platform/manifest/custom-objects.js.map +1 -0
- package/core/platform/manifest/custom-objects.mjs +55 -0
- package/core/platform/manifest/custom-objects.mjs.map +1 -0
- package/examples/manifest/custom-object-creation-workflow/custom-object-creation-workflow.ts +26 -44
- package/examples/manifest/custom-object-creation-workflow/functions/intake-request-created.ts +20 -0
- package/examples/manifest/custom-object-creation-workflow/schema.ts +29 -0
- package/examples/manifest/dental-practice-management/dental-practice-management.ts +142 -470
- package/examples/manifest/dental-practice-management/functions/chair-schedule.ts +13 -23
- package/examples/manifest/dental-practice-management/functions/complete-visit.ts +32 -55
- package/examples/manifest/dental-practice-management/functions/operatory-list.ts +13 -23
- package/examples/manifest/dental-practice-management/functions/patient-list.ts +13 -23
- package/examples/manifest/dental-practice-management/functions/treatment-plan-list.ts +13 -23
- package/examples/manifest/dental-practice-management/schema.ts +298 -0
- package/examples/manifest/existing-manifest-mutations/existing-manifest-mutations.ts +68 -23
- package/examples/manifest/field-service-dispatch/field-service-dispatch.ts +102 -375
- package/examples/manifest/field-service-dispatch/schema.ts +248 -0
- package/examples/manifest/grant-program-management/grant-program-management.ts +125 -419
- package/examples/manifest/grant-program-management/schema.ts +269 -0
- package/examples/manifest/gym-membership-management/functions/check-in-desk.ts +13 -23
- package/examples/manifest/gym-membership-management/functions/member-list.ts +13 -23
- package/examples/manifest/gym-membership-management/functions/today-schedule.ts +13 -23
- package/examples/manifest/gym-membership-management/functions/trainer-list.ts +13 -23
- package/examples/manifest/gym-membership-management/gym-membership-management.ts +92 -442
- package/examples/manifest/gym-membership-management/schema.ts +266 -0
- package/examples/manifest/procurement-approval-hub/functions/route-purchase-request.ts +20 -0
- package/examples/manifest/procurement-approval-hub/procurement-approval-hub.ts +122 -408
- package/examples/manifest/procurement-approval-hub/schema.ts +256 -0
- package/examples/manifest/simple-todo-app/functions/mark-done.ts +16 -12
- package/examples/manifest/simple-todo-app/functions/todo-list.ts +13 -23
- package/examples/manifest/simple-todo-app/schema.ts +60 -0
- package/examples/manifest/simple-todo-app/simple-todo-app.ts +40 -109
- package/examples/manifest/todo-app-without-object-list-view/functions/todo-page.ts +166 -193
- package/examples/manifest/todo-app-without-object-list-view/schema.ts +28 -0
- package/examples/manifest/todo-app-without-object-list-view/todo-app-without-object-list-view.ts +24 -47
- package/package.json +7 -13
- package/resources/custom-objects/custom-objects.d.mts +7 -0
- package/resources/custom-objects/custom-objects.d.mts.map +1 -1
- package/resources/custom-objects/custom-objects.d.ts +7 -0
- package/resources/custom-objects/custom-objects.d.ts.map +1 -1
- package/resources/custom-objects/custom-objects.js.map +1 -1
- package/resources/custom-objects/custom-objects.mjs.map +1 -1
- package/resources/custom-objects/fields.d.mts +170 -15
- package/resources/custom-objects/fields.d.mts.map +1 -1
- package/resources/custom-objects/fields.d.ts +170 -15
- package/resources/custom-objects/fields.d.ts.map +1 -1
- package/resources/index.d.mts +2 -2
- package/resources/index.d.mts.map +1 -1
- package/resources/index.d.ts +2 -2
- package/resources/index.d.ts.map +1 -1
- package/resources/index.js.map +1 -1
- package/resources/index.mjs.map +1 -1
- package/resources/leave-program-evaluations.d.mts +510 -3
- package/resources/leave-program-evaluations.d.mts.map +1 -1
- package/resources/leave-program-evaluations.d.ts +510 -3
- package/resources/leave-program-evaluations.d.ts.map +1 -1
- package/resources/levels.d.mts +64 -2
- package/resources/levels.d.mts.map +1 -1
- package/resources/levels.d.ts +64 -2
- package/resources/levels.d.ts.map +1 -1
- package/resources/levels.js +22 -0
- package/resources/levels.js.map +1 -1
- package/resources/levels.mjs +22 -0
- package/resources/levels.mjs.map +1 -1
- package/resources/tracks.d.mts +45 -1
- package/resources/tracks.d.mts.map +1 -1
- package/resources/tracks.d.ts +45 -1
- package/resources/tracks.d.ts.map +1 -1
- package/resources/tracks.js +22 -0
- package/resources/tracks.js.map +1 -1
- package/resources/tracks.mjs +22 -0
- package/resources/tracks.mjs.map +1 -1
- package/src/client.ts +8 -0
- package/src/core/platform/README.md +20 -0
- package/src/core/platform/custom-objects/category.ts +294 -0
- package/src/core/platform/custom-objects/definition.ts +373 -0
- package/src/core/platform/custom-objects/fields.ts +653 -0
- package/src/core/platform/custom-objects/function-runtime.ts +76 -0
- package/src/core/platform/custom-objects/lifecycle.ts +557 -0
- package/src/core/platform/custom-objects/manager.ts +959 -0
- package/src/core/platform/custom-objects/provisioning.ts +672 -0
- package/src/core/platform/custom-objects/rql.ts +375 -0
- package/src/core/platform/custom-objects/schema-manager.ts +351 -0
- package/src/core/platform/custom-objects/typed-rql.ts +1273 -0
- package/src/core/platform/custom-objects/types.ts +753 -0
- package/src/core/platform/custom-objects/validation.ts +573 -0
- package/src/core/platform/custom-objects.ts +269 -0
- package/src/core/platform/manifest/README.md +26 -0
- package/src/core/platform/manifest/custom-objects/action.ts +87 -0
- package/src/core/platform/manifest/custom-objects/conditions.ts +762 -0
- package/src/core/platform/manifest/custom-objects/existing.ts +221 -0
- package/src/core/platform/manifest/custom-objects/field-resolution.ts +116 -0
- package/src/core/platform/manifest/custom-objects/function-file.ts +149 -0
- package/src/core/platform/manifest/custom-objects/list-view.ts +95 -0
- package/src/core/platform/manifest/custom-objects/object-list-page.ts +87 -0
- package/src/core/platform/manifest/custom-objects/page-layout.ts +380 -0
- package/src/core/platform/manifest/custom-objects/register.ts +555 -0
- package/src/core/platform/manifest/custom-objects/rule.ts +192 -0
- package/src/core/platform/manifest/custom-objects/sdui-page.ts +515 -0
- package/src/core/platform/manifest/custom-objects/typed-condition.ts +617 -0
- package/src/core/platform/manifest/custom-objects/types.ts +92 -0
- package/src/core/platform/manifest/custom-objects/validation.ts +70 -0
- package/src/core/platform/manifest/custom-objects/workflow.ts +71 -0
- package/src/core/platform/manifest/custom-objects.ts +203 -0
- package/src/pebble-sdui-web-custom-apps-shim.d.ts +3 -0
- package/src/resources/custom-objects/custom-objects.ts +8 -0
- package/src/resources/custom-objects/fields.ts +239 -14
- package/src/resources/index.ts +4 -0
- package/src/resources/leave-program-evaluations.ts +610 -3
- package/src/resources/levels.ts +93 -1
- package/src/resources/tracks.ts +70 -0
- package/src/tsconfig.json +1 -1
- package/src/version.ts +1 -1
- package/version.d.mts +1 -1
- package/version.d.ts +1 -1
- package/version.js +1 -1
- package/version.mjs +1 -1
|
@@ -12,26 +12,23 @@
|
|
|
12
12
|
* > examples/manifest/field-service-dispatch/manifest.json
|
|
13
13
|
*/
|
|
14
14
|
|
|
15
|
+
import { toCustomCategoryApiName } from '@rippling/rippling-sdk/core/platform/custom-objects';
|
|
15
16
|
import {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
SummaryField,
|
|
32
|
-
TextField,
|
|
33
|
-
Validation,
|
|
34
|
-
} from '@rippling/rippling-sdk/lib/manifest';
|
|
17
|
+
defineBasicTypedPageLayout,
|
|
18
|
+
defineTypedListView,
|
|
19
|
+
defineTypedRule,
|
|
20
|
+
defineTypedValidation,
|
|
21
|
+
registerManifestCustomObjects,
|
|
22
|
+
} from '@rippling/rippling-sdk/core/platform/manifest/custom-objects';
|
|
23
|
+
import { Category, ManifestBuilder, SummaryField } from '@rippling/rippling-sdk/lib/manifest';
|
|
24
|
+
import {
|
|
25
|
+
assetDefinition,
|
|
26
|
+
FIELD_SERVICE_CATEGORY,
|
|
27
|
+
partUsageDefinition,
|
|
28
|
+
siteDefinition,
|
|
29
|
+
taskDefinition,
|
|
30
|
+
workOrderDefinition,
|
|
31
|
+
} from './schema';
|
|
35
32
|
|
|
36
33
|
const manifest = new ManifestBuilder({
|
|
37
34
|
key: 'field_service_dispatch',
|
|
@@ -40,491 +37,221 @@ const manifest = new ManifestBuilder({
|
|
|
40
37
|
});
|
|
41
38
|
|
|
42
39
|
const category = new Category(manifest, {
|
|
43
|
-
apiName:
|
|
40
|
+
apiName: toCustomCategoryApiName(FIELD_SERVICE_CATEGORY),
|
|
44
41
|
name: 'Field service',
|
|
45
42
|
description: 'Service operations and dispatch records',
|
|
46
43
|
});
|
|
47
44
|
|
|
48
|
-
const
|
|
49
|
-
apiName: 'fs_customer_site__c',
|
|
50
|
-
name: 'Customer site',
|
|
51
|
-
pluralLabel: 'Customer sites',
|
|
52
|
-
category,
|
|
53
|
-
description: 'Customer location with service tier and access notes',
|
|
54
|
-
});
|
|
55
|
-
|
|
56
|
-
const siteSection = new CustomObjectFieldSection(siteObj, {
|
|
57
|
-
name: 'Site',
|
|
58
|
-
sectionId: 'sec_fs_site',
|
|
59
|
-
});
|
|
60
|
-
|
|
61
|
-
const siteAccountField = new TextField(siteObj, {
|
|
62
|
-
apiName: 'account_name__c',
|
|
63
|
-
displayName: 'Account name',
|
|
64
|
-
description: 'Customer account or property group',
|
|
65
|
-
required: true,
|
|
66
|
-
maxLength: 160,
|
|
67
|
-
section: siteSection,
|
|
68
|
-
});
|
|
69
|
-
|
|
70
|
-
const siteAddressField = new LongTextField(siteObj, {
|
|
71
|
-
apiName: 'service_address__c',
|
|
72
|
-
displayName: 'Service address',
|
|
73
|
-
description: 'Address, gate code, and arrival instructions',
|
|
74
|
-
maxLength: 3000,
|
|
75
|
-
section: siteSection,
|
|
76
|
-
});
|
|
77
|
-
|
|
78
|
-
const siteTierField = new RadioField(siteObj, {
|
|
79
|
-
apiName: 'service_tier__c',
|
|
80
|
-
displayName: 'Service tier',
|
|
81
|
-
description: 'SLA tier for dispatch prioritization',
|
|
82
|
-
options: ['Standard', 'Premium', 'Critical 24x7'],
|
|
83
|
-
required: true,
|
|
84
|
-
section: siteSection,
|
|
85
|
-
});
|
|
86
|
-
|
|
87
|
-
const assetObj = new CustomObject(manifest, {
|
|
88
|
-
apiName: 'fs_asset__c',
|
|
89
|
-
name: 'Asset',
|
|
90
|
-
pluralLabel: 'Assets',
|
|
45
|
+
const [site, asset, workOrder, task, partUsage] = registerManifestCustomObjects(manifest, {
|
|
91
46
|
category,
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
const assetSiteRef = new ParentChildField(assetObj, {
|
|
101
|
-
apiName: 'customer_site_ref__c',
|
|
102
|
-
displayName: 'Customer site',
|
|
103
|
-
target: siteObj,
|
|
104
|
-
relatedDataLabel: 'Assets',
|
|
105
|
-
parentChildType: 'PRIMARY',
|
|
106
|
-
enableParentOwnerInheritance: false,
|
|
107
|
-
description: 'Site where this asset is installed',
|
|
108
|
-
section: assetSection,
|
|
109
|
-
});
|
|
110
|
-
|
|
111
|
-
const assetSerialField = new TextField(assetObj, {
|
|
112
|
-
apiName: 'serial_number__c',
|
|
113
|
-
displayName: 'Serial number',
|
|
114
|
-
description: 'Manufacturer serial number',
|
|
115
|
-
maxLength: 80,
|
|
116
|
-
section: assetSection,
|
|
117
|
-
});
|
|
118
|
-
|
|
119
|
-
const assetTypeField = new RadioField(assetObj, {
|
|
120
|
-
apiName: 'asset_type__c',
|
|
121
|
-
displayName: 'Asset type',
|
|
122
|
-
description: 'Equipment category',
|
|
123
|
-
options: ['HVAC', 'Generator', 'Security', 'Network', 'Kitchen equipment', 'Other'],
|
|
124
|
-
required: true,
|
|
125
|
-
section: assetSection,
|
|
126
|
-
});
|
|
127
|
-
|
|
128
|
-
const assetWarrantyEndField = new DateField(assetObj, {
|
|
129
|
-
apiName: 'warranty_end__c',
|
|
130
|
-
displayName: 'Warranty end',
|
|
131
|
-
description: 'Warranty expiration date',
|
|
132
|
-
section: assetSection,
|
|
133
|
-
});
|
|
134
|
-
|
|
135
|
-
const workOrderObj = new CustomObject(manifest, {
|
|
136
|
-
apiName: 'fs_work_order__c',
|
|
137
|
-
name: 'Work order',
|
|
138
|
-
pluralLabel: 'Work orders',
|
|
139
|
-
category,
|
|
140
|
-
description: 'Dispatch job with schedule, priority, and status',
|
|
141
|
-
});
|
|
142
|
-
|
|
143
|
-
const workOrderSection = new CustomObjectFieldSection(workOrderObj, {
|
|
144
|
-
name: 'Work order',
|
|
145
|
-
sectionId: 'sec_fs_work_order',
|
|
146
|
-
});
|
|
147
|
-
|
|
148
|
-
const workOrderSiteRef = new ParentChildField(workOrderObj, {
|
|
149
|
-
apiName: 'customer_site_ref__c',
|
|
150
|
-
displayName: 'Customer site',
|
|
151
|
-
target: siteObj,
|
|
152
|
-
relatedDataLabel: 'Work orders',
|
|
153
|
-
parentChildType: 'PRIMARY',
|
|
154
|
-
enableParentOwnerInheritance: false,
|
|
155
|
-
description: 'Site receiving service',
|
|
156
|
-
section: workOrderSection,
|
|
157
|
-
});
|
|
158
|
-
|
|
159
|
-
const workOrderAssetRef = new LookupField(workOrderObj, {
|
|
160
|
-
apiName: 'asset_ref__c',
|
|
161
|
-
displayName: 'Asset',
|
|
162
|
-
target: assetObj,
|
|
163
|
-
relatedDataLabel: 'Work orders',
|
|
164
|
-
description: 'Optional installed asset being serviced',
|
|
165
|
-
section: workOrderSection,
|
|
166
|
-
});
|
|
167
|
-
|
|
168
|
-
const workOrderPriorityField = new RadioField(workOrderObj, {
|
|
169
|
-
apiName: 'priority__c',
|
|
170
|
-
displayName: 'Priority',
|
|
171
|
-
description: 'Dispatch priority',
|
|
172
|
-
options: ['Low', 'Normal', 'High', 'Emergency'],
|
|
173
|
-
required: true,
|
|
174
|
-
section: workOrderSection,
|
|
175
|
-
});
|
|
176
|
-
|
|
177
|
-
const workOrderStatusField = new RadioField(workOrderObj, {
|
|
178
|
-
apiName: 'status__c',
|
|
179
|
-
displayName: 'Status',
|
|
180
|
-
description: 'Current dispatch status',
|
|
181
|
-
options: ['New', 'Scheduled', 'In progress', 'Blocked', 'Complete', 'Cancelled'],
|
|
182
|
-
required: true,
|
|
183
|
-
section: workOrderSection,
|
|
184
|
-
});
|
|
185
|
-
|
|
186
|
-
const workOrderScheduledStartField = new DatetimeField(workOrderObj, {
|
|
187
|
-
apiName: 'scheduled_start__c',
|
|
188
|
-
displayName: 'Scheduled start',
|
|
189
|
-
description: 'Planned arrival window start',
|
|
190
|
-
section: workOrderSection,
|
|
191
|
-
});
|
|
192
|
-
|
|
193
|
-
const workOrderScheduledEndField = new DatetimeField(workOrderObj, {
|
|
194
|
-
apiName: 'scheduled_end__c',
|
|
195
|
-
displayName: 'Scheduled end',
|
|
196
|
-
description: 'Planned arrival window end',
|
|
197
|
-
section: workOrderSection,
|
|
47
|
+
definitions: [
|
|
48
|
+
siteDefinition,
|
|
49
|
+
assetDefinition,
|
|
50
|
+
workOrderDefinition,
|
|
51
|
+
taskDefinition,
|
|
52
|
+
partUsageDefinition,
|
|
53
|
+
] as const,
|
|
198
54
|
});
|
|
199
55
|
|
|
200
|
-
const
|
|
201
|
-
apiName: 'problem_summary__c',
|
|
202
|
-
displayName: 'Problem summary',
|
|
203
|
-
description: 'Customer-reported issue and triage notes',
|
|
204
|
-
maxLength: 6000,
|
|
205
|
-
section: workOrderSection,
|
|
206
|
-
});
|
|
207
|
-
|
|
208
|
-
const taskObj = new CustomObject(manifest, {
|
|
209
|
-
apiName: 'fs_task__c',
|
|
210
|
-
name: 'Task',
|
|
211
|
-
pluralLabel: 'Tasks',
|
|
212
|
-
category,
|
|
213
|
-
description: 'Work order task with labor estimate and completion state',
|
|
214
|
-
});
|
|
215
|
-
|
|
216
|
-
const taskSection = new CustomObjectFieldSection(taskObj, {
|
|
217
|
-
name: 'Task',
|
|
218
|
-
sectionId: 'sec_fs_task',
|
|
219
|
-
});
|
|
220
|
-
|
|
221
|
-
const taskWorkOrderRef = new ParentChildField(taskObj, {
|
|
222
|
-
apiName: 'work_order_ref__c',
|
|
223
|
-
displayName: 'Work order',
|
|
224
|
-
target: workOrderObj,
|
|
225
|
-
relatedDataLabel: 'Tasks',
|
|
226
|
-
parentChildType: 'PRIMARY',
|
|
227
|
-
enableParentOwnerInheritance: true,
|
|
228
|
-
description: 'Work order this task belongs to',
|
|
229
|
-
section: taskSection,
|
|
230
|
-
});
|
|
231
|
-
|
|
232
|
-
const taskTypeField = new RadioField(taskObj, {
|
|
233
|
-
apiName: 'task_type__c',
|
|
234
|
-
displayName: 'Task type',
|
|
235
|
-
description: 'Type of work required',
|
|
236
|
-
options: ['Inspect', 'Repair', 'Replace', 'Calibrate', 'Clean', 'Customer walkthrough'],
|
|
237
|
-
required: true,
|
|
238
|
-
section: taskSection,
|
|
239
|
-
});
|
|
240
|
-
|
|
241
|
-
const taskStatusField = new RadioField(taskObj, {
|
|
242
|
-
apiName: 'status__c',
|
|
243
|
-
displayName: 'Status',
|
|
244
|
-
description: 'Task status',
|
|
245
|
-
options: ['Open', 'In progress', 'Blocked', 'Done'],
|
|
246
|
-
required: true,
|
|
247
|
-
section: taskSection,
|
|
248
|
-
});
|
|
249
|
-
|
|
250
|
-
const taskEstimatedHoursField = new NumberField(taskObj, {
|
|
251
|
-
apiName: 'estimated_hours__c',
|
|
252
|
-
displayName: 'Estimated hours',
|
|
253
|
-
description: 'Labor estimate for this task',
|
|
254
|
-
decimalPlaces: 2,
|
|
255
|
-
section: taskSection,
|
|
256
|
-
});
|
|
257
|
-
|
|
258
|
-
const taskCompletedAtField = new DatetimeField(taskObj, {
|
|
259
|
-
apiName: 'completed_at__c',
|
|
260
|
-
displayName: 'Completed at',
|
|
261
|
-
description: 'Completion timestamp',
|
|
262
|
-
section: taskSection,
|
|
263
|
-
});
|
|
264
|
-
|
|
265
|
-
const partUsageObj = new CustomObject(manifest, {
|
|
266
|
-
apiName: 'fs_part_usage__c',
|
|
267
|
-
name: 'Part usage',
|
|
268
|
-
pluralLabel: 'Part usage',
|
|
269
|
-
category,
|
|
270
|
-
description: 'Part consumed while completing a task',
|
|
271
|
-
});
|
|
272
|
-
|
|
273
|
-
const partUsageSection = new CustomObjectFieldSection(partUsageObj, {
|
|
274
|
-
name: 'Part usage',
|
|
275
|
-
sectionId: 'sec_fs_part_usage',
|
|
276
|
-
});
|
|
277
|
-
|
|
278
|
-
const partTaskRef = new ParentChildField(partUsageObj, {
|
|
279
|
-
apiName: 'task_ref__c',
|
|
280
|
-
displayName: 'Task',
|
|
281
|
-
target: taskObj,
|
|
282
|
-
relatedDataLabel: 'Parts used',
|
|
283
|
-
parentChildType: 'PRIMARY',
|
|
284
|
-
enableParentOwnerInheritance: true,
|
|
285
|
-
description: 'Task that consumed this part',
|
|
286
|
-
section: partUsageSection,
|
|
287
|
-
});
|
|
288
|
-
|
|
289
|
-
const partSkuField = new TextField(partUsageObj, {
|
|
290
|
-
apiName: 'sku__c',
|
|
291
|
-
displayName: 'SKU',
|
|
292
|
-
description: 'Inventory SKU or part number',
|
|
293
|
-
maxLength: 80,
|
|
294
|
-
required: true,
|
|
295
|
-
section: partUsageSection,
|
|
296
|
-
});
|
|
297
|
-
|
|
298
|
-
const partQuantityField = new NumberField(partUsageObj, {
|
|
299
|
-
apiName: 'quantity__c',
|
|
300
|
-
displayName: 'Quantity',
|
|
301
|
-
description: 'Quantity consumed',
|
|
302
|
-
decimalPlaces: 2,
|
|
303
|
-
required: true,
|
|
304
|
-
section: partUsageSection,
|
|
305
|
-
});
|
|
306
|
-
|
|
307
|
-
const partCostCentsField = new NumberField(partUsageObj, {
|
|
308
|
-
apiName: 'unit_cost_cents__c',
|
|
309
|
-
displayName: 'Unit cost (cents)',
|
|
310
|
-
description: 'Unit material cost in cents',
|
|
311
|
-
decimalPlaces: 0,
|
|
312
|
-
section: partUsageSection,
|
|
313
|
-
});
|
|
314
|
-
|
|
315
|
-
const assetCountOnSite = new SummaryField(siteObj, {
|
|
56
|
+
const assetCountOnSite = new SummaryField(site.object, {
|
|
316
57
|
apiName: 'asset_count__c',
|
|
317
58
|
displayName: 'Assets',
|
|
318
|
-
aggregates:
|
|
59
|
+
aggregates: asset.fields.serial_number,
|
|
319
60
|
using: 'COUNT',
|
|
320
|
-
lookup:
|
|
61
|
+
lookup: asset.fields.customer_site_ref,
|
|
321
62
|
description: 'Installed asset count',
|
|
322
|
-
section:
|
|
63
|
+
section: site.sections.site,
|
|
323
64
|
});
|
|
324
65
|
|
|
325
|
-
const workOrderCountOnSite = new SummaryField(
|
|
66
|
+
const workOrderCountOnSite = new SummaryField(site.object, {
|
|
326
67
|
apiName: 'work_order_count__c',
|
|
327
68
|
displayName: 'Work orders',
|
|
328
|
-
aggregates:
|
|
69
|
+
aggregates: workOrder.fields.status,
|
|
329
70
|
using: 'COUNT',
|
|
330
|
-
lookup:
|
|
71
|
+
lookup: workOrder.fields.customer_site_ref,
|
|
331
72
|
description: 'Work orders associated with this site',
|
|
332
|
-
section:
|
|
73
|
+
section: site.sections.site,
|
|
333
74
|
});
|
|
334
75
|
|
|
335
|
-
const taskCountOnWorkOrder = new SummaryField(
|
|
76
|
+
const taskCountOnWorkOrder = new SummaryField(workOrder.object, {
|
|
336
77
|
apiName: 'task_count__c',
|
|
337
78
|
displayName: 'Tasks',
|
|
338
|
-
aggregates:
|
|
79
|
+
aggregates: task.fields.task_type,
|
|
339
80
|
using: 'COUNT',
|
|
340
|
-
lookup:
|
|
81
|
+
lookup: task.fields.work_order_ref,
|
|
341
82
|
description: 'Task count on this work order',
|
|
342
|
-
section:
|
|
83
|
+
section: workOrder.sections.work_order,
|
|
343
84
|
});
|
|
344
85
|
|
|
345
|
-
const estimatedHoursOnWorkOrder = new SummaryField(
|
|
86
|
+
const estimatedHoursOnWorkOrder = new SummaryField(workOrder.object, {
|
|
346
87
|
apiName: 'estimated_hours_total__c',
|
|
347
88
|
displayName: 'Estimated hours total',
|
|
348
|
-
aggregates:
|
|
89
|
+
aggregates: task.fields.estimated_hours,
|
|
349
90
|
using: 'SUM',
|
|
350
|
-
lookup:
|
|
91
|
+
lookup: task.fields.work_order_ref,
|
|
351
92
|
description: 'Total estimated labor hours',
|
|
352
|
-
section:
|
|
93
|
+
section: workOrder.sections.work_order,
|
|
353
94
|
});
|
|
354
95
|
|
|
355
|
-
const partsCountOnTask = new SummaryField(
|
|
96
|
+
const partsCountOnTask = new SummaryField(task.object, {
|
|
356
97
|
apiName: 'parts_count__c',
|
|
357
98
|
displayName: 'Parts lines',
|
|
358
|
-
aggregates:
|
|
99
|
+
aggregates: partUsage.fields.sku,
|
|
359
100
|
using: 'COUNT',
|
|
360
|
-
lookup:
|
|
101
|
+
lookup: partUsage.fields.task_ref,
|
|
361
102
|
description: 'Number of part usage lines',
|
|
362
|
-
section:
|
|
363
|
-
});
|
|
364
|
-
|
|
365
|
-
const workOrderLabelField = new FormulaField(workOrderObj, {
|
|
366
|
-
apiName: 'dispatch_label__c',
|
|
367
|
-
displayName: 'Dispatch label',
|
|
368
|
-
description: 'Compact board label',
|
|
369
|
-
fieldType: 'TEXT',
|
|
370
|
-
maxLength: 240,
|
|
371
|
-
formula: "CONCATENATE(priority__c, ' - ', status__c)",
|
|
372
|
-
section: workOrderSection,
|
|
103
|
+
section: task.sections.task,
|
|
373
104
|
});
|
|
374
105
|
|
|
375
|
-
|
|
106
|
+
// ── Validations & defaults ────────────────────────────────────────────────
|
|
107
|
+
defineTypedValidation(workOrder, {
|
|
376
108
|
ruleId: 'fs_work_order_window_valid',
|
|
377
109
|
displayName: 'Scheduled end must be after start',
|
|
378
|
-
|
|
110
|
+
whenInvalid: (c) => c.lte(c.fields.scheduled_end, c.fields.scheduled_start),
|
|
379
111
|
errorMessage: 'Scheduled end must be after scheduled start.',
|
|
380
112
|
ruleDescription: 'Prevents inverted dispatch windows',
|
|
381
113
|
state: 'ACTIVE',
|
|
382
114
|
level: 'FIELD',
|
|
383
|
-
|
|
115
|
+
field: 'scheduled_end',
|
|
384
116
|
});
|
|
385
117
|
|
|
386
|
-
|
|
118
|
+
defineTypedValidation(partUsage, {
|
|
387
119
|
ruleId: 'fs_part_quantity_positive',
|
|
388
120
|
displayName: 'Quantity must be positive',
|
|
389
|
-
|
|
121
|
+
whenInvalid: (c) => c.lte(c.fields.quantity, 0),
|
|
390
122
|
errorMessage: 'Quantity must be greater than zero.',
|
|
391
123
|
ruleDescription: 'Blocks zero or negative parts usage',
|
|
392
124
|
state: 'ACTIVE',
|
|
393
125
|
level: 'FIELD',
|
|
394
|
-
|
|
126
|
+
field: 'quantity',
|
|
395
127
|
});
|
|
396
128
|
|
|
397
|
-
|
|
129
|
+
defineTypedRule(workOrder, {
|
|
398
130
|
flowId: 'fs_default_work_order_status',
|
|
399
131
|
flowName: 'Default work order status',
|
|
400
132
|
triggerType: 'CREATE',
|
|
401
133
|
description: 'New work orders start in New status',
|
|
402
|
-
actions:
|
|
134
|
+
actions: (rules) => [rules.setField('status').toValue('New')],
|
|
403
135
|
});
|
|
404
136
|
|
|
405
|
-
|
|
137
|
+
defineTypedRule(task, {
|
|
406
138
|
flowId: 'fs_default_task_status',
|
|
407
139
|
flowName: 'Default task status',
|
|
408
140
|
triggerType: 'CREATE',
|
|
409
141
|
description: 'New tasks start Open',
|
|
410
|
-
actions:
|
|
142
|
+
actions: (rules) => [rules.setField('status').toValue('Open')],
|
|
411
143
|
});
|
|
412
144
|
|
|
413
|
-
|
|
145
|
+
// ── List views ─────────────────────────────────────────────────────────────
|
|
146
|
+
defineTypedListView(site, {
|
|
414
147
|
viewId: 'view_fs_customer_sites',
|
|
415
148
|
name: 'Customer sites',
|
|
416
149
|
description: 'Sites with service tier, assets, and work order volume',
|
|
417
|
-
fields: ['name',
|
|
150
|
+
fields: ['name', 'account_name', 'service_tier', assetCountOnSite, workOrderCountOnSite],
|
|
418
151
|
orderBy: 'name',
|
|
419
152
|
sortOrder: 'ASC',
|
|
420
153
|
isPublic: true,
|
|
421
154
|
objectScope: 'all',
|
|
422
155
|
});
|
|
423
156
|
|
|
424
|
-
|
|
157
|
+
defineTypedListView(asset, {
|
|
425
158
|
viewId: 'view_fs_assets',
|
|
426
159
|
name: 'Assets',
|
|
427
160
|
description: 'Installed equipment by site',
|
|
428
|
-
fields: ['name',
|
|
161
|
+
fields: ['name', 'customer_site_ref', 'asset_type', 'serial_number', 'warranty_end'],
|
|
429
162
|
orderBy: 'name',
|
|
430
163
|
sortOrder: 'ASC',
|
|
431
164
|
isPublic: true,
|
|
432
165
|
objectScope: 'all',
|
|
433
166
|
});
|
|
434
167
|
|
|
435
|
-
|
|
168
|
+
defineTypedListView(workOrder, {
|
|
436
169
|
viewId: 'view_fs_work_orders',
|
|
437
170
|
name: 'Work orders',
|
|
438
171
|
description: 'Dispatch board with schedule and rollups',
|
|
439
172
|
fields: [
|
|
440
173
|
'name',
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
174
|
+
'customer_site_ref',
|
|
175
|
+
'asset_ref',
|
|
176
|
+
'priority',
|
|
177
|
+
'status',
|
|
178
|
+
'scheduled_start',
|
|
446
179
|
taskCountOnWorkOrder,
|
|
447
180
|
estimatedHoursOnWorkOrder,
|
|
448
|
-
|
|
181
|
+
'dispatch_label',
|
|
449
182
|
],
|
|
450
|
-
orderBy:
|
|
183
|
+
orderBy: 'scheduled_start',
|
|
451
184
|
sortOrder: 'ASC',
|
|
452
185
|
isPublic: true,
|
|
453
186
|
objectScope: 'all',
|
|
454
187
|
});
|
|
455
188
|
|
|
456
|
-
|
|
189
|
+
defineTypedListView(task, {
|
|
457
190
|
viewId: 'view_fs_tasks',
|
|
458
191
|
name: 'Tasks',
|
|
459
192
|
description: 'Task checklist with estimates and parts lines',
|
|
460
|
-
fields: [
|
|
461
|
-
|
|
462
|
-
taskWorkOrderRef,
|
|
463
|
-
taskTypeField,
|
|
464
|
-
taskStatusField,
|
|
465
|
-
taskEstimatedHoursField,
|
|
466
|
-
partsCountOnTask,
|
|
467
|
-
],
|
|
468
|
-
orderBy: taskWorkOrderRef,
|
|
193
|
+
fields: ['name', 'work_order_ref', 'task_type', 'status', 'estimated_hours', partsCountOnTask],
|
|
194
|
+
orderBy: 'work_order_ref',
|
|
469
195
|
sortOrder: 'ASC',
|
|
470
196
|
isPublic: true,
|
|
471
197
|
objectScope: 'all',
|
|
472
198
|
});
|
|
473
199
|
|
|
474
|
-
|
|
200
|
+
defineTypedListView(partUsage, {
|
|
475
201
|
viewId: 'view_fs_part_usage',
|
|
476
202
|
name: 'Part usage',
|
|
477
203
|
description: 'Parts consumed by service tasks',
|
|
478
|
-
fields: ['name',
|
|
479
|
-
orderBy:
|
|
204
|
+
fields: ['name', 'task_ref', 'sku', 'quantity', 'unit_cost_cents'],
|
|
205
|
+
orderBy: 'task_ref',
|
|
480
206
|
sortOrder: 'ASC',
|
|
481
207
|
isPublic: true,
|
|
482
208
|
objectScope: 'all',
|
|
483
209
|
});
|
|
484
210
|
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
211
|
+
// ── Page layouts ───────────────────────────────────────────────────────────
|
|
212
|
+
defineBasicTypedPageLayout(site, {
|
|
213
|
+
section: site.sections.site,
|
|
214
|
+
fields: ['name', 'account_name', 'service_address', 'service_tier', assetCountOnSite, workOrderCountOnSite],
|
|
488
215
|
});
|
|
489
216
|
|
|
490
|
-
|
|
491
|
-
section:
|
|
492
|
-
fields: ['name',
|
|
217
|
+
defineBasicTypedPageLayout(asset, {
|
|
218
|
+
section: asset.sections.asset,
|
|
219
|
+
fields: ['name', 'customer_site_ref', 'serial_number', 'asset_type', 'warranty_end'],
|
|
493
220
|
});
|
|
494
221
|
|
|
495
|
-
|
|
496
|
-
section:
|
|
222
|
+
defineBasicTypedPageLayout(workOrder, {
|
|
223
|
+
section: workOrder.sections.work_order,
|
|
497
224
|
fields: [
|
|
498
225
|
'name',
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
226
|
+
'customer_site_ref',
|
|
227
|
+
'asset_ref',
|
|
228
|
+
'priority',
|
|
229
|
+
'status',
|
|
230
|
+
'scheduled_start',
|
|
231
|
+
'scheduled_end',
|
|
232
|
+
'problem_summary',
|
|
506
233
|
taskCountOnWorkOrder,
|
|
507
234
|
estimatedHoursOnWorkOrder,
|
|
508
|
-
|
|
235
|
+
'dispatch_label',
|
|
509
236
|
],
|
|
510
237
|
});
|
|
511
238
|
|
|
512
|
-
|
|
513
|
-
section:
|
|
239
|
+
defineBasicTypedPageLayout(task, {
|
|
240
|
+
section: task.sections.task,
|
|
514
241
|
fields: [
|
|
515
242
|
'name',
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
243
|
+
'work_order_ref',
|
|
244
|
+
'task_type',
|
|
245
|
+
'status',
|
|
246
|
+
'estimated_hours',
|
|
247
|
+
'completed_at',
|
|
521
248
|
partsCountOnTask,
|
|
522
249
|
],
|
|
523
250
|
});
|
|
524
251
|
|
|
525
|
-
|
|
526
|
-
section:
|
|
527
|
-
fields: ['name',
|
|
252
|
+
defineBasicTypedPageLayout(partUsage, {
|
|
253
|
+
section: partUsage.sections.part_usage,
|
|
254
|
+
fields: ['name', 'task_ref', 'sku', 'quantity', 'unit_cost_cents'],
|
|
528
255
|
});
|
|
529
256
|
|
|
530
257
|
console.log(manifest.preview());
|