425 lines
13 KiB
Markdown
425 lines
13 KiB
Markdown
# Commission-Based Cut Feature Manual Test Plan
|
|
|
|
## Purpose
|
|
Use this guide to manually test the commission-based cut feature from an end-user point of view.
|
|
|
|
This plan is written for a non-technical tester. Follow the steps exactly as written and mark each scenario as Pass or Fail.
|
|
|
|
## What You Need Before You Start
|
|
- A login that can open `Manage my Shop`, `Jobs`, and `Time Tickets`.
|
|
- At least 2 active employees in the shop.
|
|
- At least 1 converted repair order that already has labor lines on it.
|
|
- If possible, use a simple test job where the labor sale rates are easy to calculate.
|
|
- A notebook, spreadsheet, or screenshot folder to record what happened.
|
|
|
|
## Recommended Easy-Math Test Data
|
|
If you can choose your own test job, use something simple like this:
|
|
|
|
- Body sale rate: `$100.00`
|
|
- Refinish sale rate: `$120.00`
|
|
- Mechanical sale rate: `$80.00`
|
|
- 1 Body labor line with `10.0` hours
|
|
- 1 Refinish labor line with `4.0` hours
|
|
|
|
This makes the expected payout easy to check:
|
|
|
|
- `40%` of `$100.00` = `$40.00`
|
|
- `30%` of `$120.00` = `$36.00`
|
|
|
|
## Important Navigation Notes
|
|
- Team setup is under `Manage my Shop` > `Employee Teams`.
|
|
- Team assignment happens on the job line grid in the `Team` column.
|
|
- Automatic payout happens from the job's `Labor Allocations` card using the `Pay All` button.
|
|
- If your shop uses task presets, the `Flag Hours` button can preview the payout method before committing tickets.
|
|
|
|
---
|
|
|
|
## Scenario 1: Create a Simple Commission Team
|
|
### Goal
|
|
Confirm a team member can be set to commission and saved successfully.
|
|
|
|
### Steps
|
|
1. Sign in.
|
|
2. Click `Manage my Shop`.
|
|
3. Click the `Employee Teams` tab.
|
|
4. Click `New Team`.
|
|
5. In `Team Name`, type `Commission Team Test`.
|
|
6. Make sure `Active` is turned on.
|
|
7. In `Max Load`, enter `10`.
|
|
8. Click `New Team Member`.
|
|
9. In `Employee`, choose an active employee.
|
|
10. In `Allocation %`, enter `100`.
|
|
11. In `Payout Method`, choose `Commission %`.
|
|
12. In each commission field that appears, enter a value.
|
|
13. For the main labor types you plan to test, use these values:
|
|
14. Enter `40` for Body.
|
|
15. Enter `30` for Refinish.
|
|
16. Enter `25` for Mechanical.
|
|
17. Enter `20` for Frame.
|
|
18. Enter `15` for Glass.
|
|
19. Fill in the remaining commission boxes with any valid number from `0` to `100`.
|
|
20. Click `Save`.
|
|
|
|
### Expected Result
|
|
- The team saves successfully.
|
|
- The team stays visible in the Employee Teams list.
|
|
- The team member card shows a `Commission` tag.
|
|
- The `Allocation Total` shows `100%`.
|
|
|
|
### Record
|
|
- [ ] Pass
|
|
- [ ] Fail
|
|
- Notes:
|
|
|
|
---
|
|
|
|
## Scenario 2: Allocation Total Must Equal 100%
|
|
### Goal
|
|
Confirm the system blocks a team that does not total exactly 100%.
|
|
|
|
### Steps
|
|
1. Stay on the same team.
|
|
2. Change `Allocation %` from `100` to `90`.
|
|
3. Click `Save`.
|
|
4. Change `Allocation %` from `90` to `110`.
|
|
5. Click `Save`.
|
|
6. Change `Allocation %` back to `100`.
|
|
7. Click `Save` again.
|
|
|
|
### Expected Result
|
|
- When the total is `90%`, the system should not save.
|
|
- When the total is `110%`, the system should not save.
|
|
- The page should show that the allocation total is not correct.
|
|
- When the total is set back to `100%`, the save should succeed.
|
|
|
|
### Record
|
|
- [ ] Pass
|
|
- [ ] Fail
|
|
- Notes:
|
|
|
|
---
|
|
|
|
## Scenario 3: The Same Employee Cannot Be Added Twice
|
|
### Goal
|
|
Confirm the same employee cannot appear twice on one team.
|
|
|
|
### Steps
|
|
1. Open the same team again.
|
|
2. Click `New Team Member`.
|
|
3. Choose the same employee already used on the team.
|
|
4. Enter any valid allocation amount.
|
|
5. Choose `Commission %`.
|
|
6. Fill in all required commission fields.
|
|
7. Click `Save`.
|
|
|
|
### Expected Result
|
|
- The system should block the save.
|
|
- The team should not save with the same employee listed twice.
|
|
|
|
### Record
|
|
- [ ] Pass
|
|
- [ ] Fail
|
|
- Notes:
|
|
|
|
---
|
|
|
|
## Scenario 4: Switching Between Hourly and Commission Changes the Input Style
|
|
### Goal
|
|
Confirm the rate section changes correctly when the payout method changes.
|
|
|
|
### Steps
|
|
1. Open the same team again.
|
|
2. On the team member row, change `Payout Method` from `Commission %` to `Hourly`.
|
|
3. Look at the rate fields that appear.
|
|
4. Change `Payout Method` back to `Commission %`.
|
|
5. Look at the rate fields again.
|
|
|
|
### Expected Result
|
|
- In `Hourly` mode, the rate boxes should behave like money/rate fields.
|
|
- In `Commission %` mode, the rate boxes should behave like percentage fields.
|
|
- The screen should clearly show you are editing the correct type of value.
|
|
|
|
### Record
|
|
- [ ] Pass
|
|
- [ ] Fail
|
|
- Notes:
|
|
|
|
---
|
|
|
|
## Scenario 5: Boundary Values for Commission %
|
|
### Goal
|
|
Confirm the feature accepts valid boundary values and blocks invalid ones.
|
|
|
|
### Steps
|
|
1. Open the team again.
|
|
2. In one commission box, enter `0`.
|
|
3. In another commission box, enter `100`.
|
|
4. Click `Save`.
|
|
5. Try to type a value above `100` in one of the commission boxes.
|
|
6. Try to type a negative value in one of the commission boxes.
|
|
|
|
### Expected Result
|
|
- `0` should be accepted.
|
|
- `100` should be accepted.
|
|
- Values above `100` should not be allowed or should fail validation.
|
|
- Negative values should not be allowed or should fail validation.
|
|
|
|
### Record
|
|
- [ ] Pass
|
|
- [ ] Fail
|
|
- Notes:
|
|
|
|
---
|
|
|
|
## Scenario 6: Inactive Teams Should Not Be Offered for New Assignment
|
|
### Goal
|
|
Confirm inactive teams do not appear as normal team choices.
|
|
|
|
### Steps
|
|
1. Open the team again.
|
|
2. Turn `Active` off.
|
|
3. Click `Save`.
|
|
4. Open a converted repair order.
|
|
5. Go to the job lines area where the `Team` column is visible.
|
|
6. Click inside the `Team` field on any labor line.
|
|
7. Open the team drop-down list.
|
|
8. Look for `Commission Team Test`.
|
|
9. Go back to `Manage my Shop` > `Employee Teams`.
|
|
10. Turn `Active` back on.
|
|
11. Click `Save`.
|
|
12. Return to the same job line and open the `Team` drop-down again.
|
|
|
|
### Expected Result
|
|
- When the team is inactive, it should not appear as a normal assignment choice.
|
|
- After turning it back on, it should appear again.
|
|
|
|
### Record
|
|
- [ ] Pass
|
|
- [ ] Fail
|
|
- Notes:
|
|
|
|
---
|
|
|
|
## Scenario 7: Assign the Commission Team to a Labor Line
|
|
### Goal
|
|
Confirm the team can be assigned to a job line from the job screen.
|
|
|
|
### Steps
|
|
1. Open a converted repair order that has labor lines.
|
|
2. Find a labor line in the job line grid.
|
|
3. In the `Team` column, click the blank area or the current team name.
|
|
4. From the drop-down list, choose `Commission Team Test`.
|
|
5. Click outside the field so it saves.
|
|
6. Repeat for at least 1 Body line and 1 Refinish line if both exist.
|
|
|
|
### Expected Result
|
|
- The selected team name should appear in the `Team` column.
|
|
- The assignment should stay in place after the screen refreshes.
|
|
|
|
### Record
|
|
- [ ] Pass
|
|
- [ ] Fail
|
|
- Notes:
|
|
|
|
---
|
|
|
|
## Scenario 8: Pay All Creates Commission-Based Tickets
|
|
### Goal
|
|
Confirm `Pay All` creates time tickets using the commission rate, not a flat hourly rate.
|
|
|
|
### Steps
|
|
1. Use a converted repair order that has:
|
|
2. At least 1 labor line assigned to `Commission Team Test`.
|
|
3. Known labor sale rates on the job.
|
|
4. No existing time tickets for the same employee and labor type.
|
|
5. Open that repair order.
|
|
6. Go to the labor/payroll area where the `Labor Allocations` card is visible.
|
|
7. Write down the following before you click anything:
|
|
8. The labor type on the line.
|
|
9. The sold labor rate for that labor type.
|
|
10. The hours on that line.
|
|
11. The commission % you entered for that labor type on the team.
|
|
12. Click `Pay All`.
|
|
13. Wait for the success message.
|
|
14. Look at the `Time Tickets` list on the same screen.
|
|
15. Find the new ticket created for that employee.
|
|
|
|
### Expected Result
|
|
- The system should show `All hours paid out successfully.`
|
|
- A new time ticket should appear.
|
|
- The ticket rate should equal:
|
|
- `sale rate x commission %`
|
|
- Example: if Body sale rate is `$100.00` and commission is `40%`, the ticket rate should be `$40.00`.
|
|
- The productive hours should match the assigned labor hours for that employee.
|
|
|
|
### Record
|
|
- [ ] Pass
|
|
- [ ] Fail
|
|
- Notes:
|
|
|
|
---
|
|
|
|
## Scenario 9: Different Labor Types Use Different Commission Rates
|
|
### Goal
|
|
Confirm the feature uses the correct commission % for each labor type.
|
|
|
|
### Steps
|
|
1. Use a job that has at least:
|
|
2. One Body labor line.
|
|
3. One Refinish labor line.
|
|
4. Make sure both lines are assigned to `Commission Team Test`.
|
|
5. Confirm your team is set up like this:
|
|
6. Body = `40%`
|
|
7. Refinish = `30%`
|
|
8. Open the job's `Labor Allocations` area.
|
|
9. Click `Pay All`.
|
|
10. Review the new time tickets that are created.
|
|
|
|
### Expected Result
|
|
- The Body ticket should use the Body commission %.
|
|
- The Refinish ticket should use the Refinish commission %.
|
|
- Example:
|
|
- If Body sale rate is `$100.00`, Body payout rate should be `$40.00`.
|
|
- If Refinish sale rate is `$120.00`, Refinish payout rate should be `$36.00`.
|
|
|
|
### Record
|
|
- [ ] Pass
|
|
- [ ] Fail
|
|
- Notes:
|
|
|
|
---
|
|
|
|
## Scenario 10: Mixed Team With Commission and Hourly Members
|
|
### Goal
|
|
Confirm one team can contain both commission and hourly members, and each person is paid correctly.
|
|
|
|
### Steps
|
|
1. Open `Manage my Shop` > `Employee Teams`.
|
|
2. Open `Commission Team Test`.
|
|
3. Edit the first team member:
|
|
4. Keep Employee 1 as `Commission %`.
|
|
5. Change `Allocation %` to `60`.
|
|
6. Make sure Body commission is still `40`.
|
|
7. Add a second team member.
|
|
8. Choose a different active employee.
|
|
9. Set `Allocation %` to `40`.
|
|
10. Set `Payout Method` to `Hourly`.
|
|
11. Enter an hourly rate for each required labor type.
|
|
12. For Body, use `$25.00`.
|
|
13. Fill in the other required hourly boxes with valid values.
|
|
14. Make sure the total allocation shows `100%`.
|
|
15. Click `Save`.
|
|
16. Assign this team to a Body line with `10.0` hours.
|
|
17. Click `Pay All`.
|
|
18. Review the new time tickets.
|
|
|
|
### Expected Result
|
|
- Employee 1 should receive `60%` of the hours at the commission-derived rate.
|
|
- Employee 2 should receive `40%` of the hours at the hourly rate you entered.
|
|
- Example with a 10-hour Body line and `$100.00` sale rate:
|
|
- Employee 1 should get `6.0` hours at `$40.00`.
|
|
- Employee 2 should get `4.0` hours at `$25.00`.
|
|
|
|
### Record
|
|
- [ ] Pass
|
|
- [ ] Fail
|
|
- Notes:
|
|
|
|
---
|
|
|
|
## Scenario 11: Pay All Only Adds the Remaining Hours
|
|
### Goal
|
|
Confirm `Pay All` does not duplicate hours that were already paid.
|
|
|
|
### Steps
|
|
1. Use a job with one Body line assigned to `Commission Team Test`.
|
|
2. Make sure the line has `10.0` hours.
|
|
3. In the `Time Tickets` card, click `Enter New Time Ticket`.
|
|
4. Create a manual time ticket for the same employee and the same labor type.
|
|
5. Enter `4.0` productive hours.
|
|
6. Save the manual time ticket.
|
|
7. Go back to the `Labor Allocations` card.
|
|
8. Click `Pay All`.
|
|
9. Review the new ticket that is created.
|
|
|
|
### Expected Result
|
|
- The system should only create the remaining unpaid hours.
|
|
- In this example, it should add `6.0` hours, not `10.0`.
|
|
- The payout rate should still use the current commission-based rate.
|
|
|
|
### Record
|
|
- [ ] Pass
|
|
- [ ] Fail
|
|
- Notes:
|
|
|
|
---
|
|
|
|
## Scenario 12: Unassigned Labor Lines Should Block Automatic Payout
|
|
### Goal
|
|
Confirm `Pay All` does not silently pay lines that do not have a team assigned.
|
|
|
|
### Steps
|
|
1. Open a converted repair order with at least 2 labor lines.
|
|
2. Assign `Commission Team Test` to one line.
|
|
3. Leave the second labor line with no team assigned.
|
|
4. Go to the `Labor Allocations` card.
|
|
5. Click `Pay All`.
|
|
|
|
### Expected Result
|
|
- The system should not quietly pay everything.
|
|
- You should see an error telling you that not all hours have been assigned.
|
|
- The unassigned line should still need manual attention.
|
|
|
|
### Record
|
|
- [ ] Pass
|
|
- [ ] Fail
|
|
- Notes:
|
|
|
|
---
|
|
|
|
## Scenario 13: Flag Hours Preview Shows the Correct Payout Method
|
|
### Goal
|
|
If your shop uses task presets, confirm the preview shows `Commission` for commission-based tickets.
|
|
|
|
### Steps
|
|
1. Open a converted repair order.
|
|
2. Go to the `Time Tickets` card.
|
|
3. Click `Flag Hours`.
|
|
4. Choose a task preset.
|
|
5. Wait for the preview table to load.
|
|
6. Review the `Payout Method` column in the preview.
|
|
7. If the preview includes more than one employee, review each row.
|
|
|
|
### Expected Result
|
|
- The preview table should load without error.
|
|
- Rows for commission-based employees should show `Commission`.
|
|
- Rows for hourly employees should show `Hourly`.
|
|
- If there are unassigned hours, a warning should appear.
|
|
|
|
### Record
|
|
- [ ] Pass
|
|
- [ ] Fail
|
|
- Notes:
|
|
|
|
---
|
|
|
|
## Quick Regression Checklist
|
|
- [ ] I can create a commission-based team.
|
|
- [ ] Allocation must total exactly 100%.
|
|
- [ ] The same employee cannot be added twice to one team.
|
|
- [ ] Inactive teams do not appear for normal assignment.
|
|
- [ ] A team can be assigned to job lines from the `Team` column.
|
|
- [ ] `Pay All` creates commission-based tickets correctly.
|
|
- [ ] Different labor types use different commission percentages.
|
|
- [ ] Mixed commission and hourly teams calculate correctly.
|
|
- [ ] `Pay All` only creates the remaining unpaid hours.
|
|
- [ ] Unassigned labor lines stop automatic payout.
|
|
- [ ] `Flag Hours` preview shows the correct payout method.
|
|
|
|
## Tester Sign-Off
|
|
- Tester name:
|
|
- Test date:
|
|
- Environment:
|
|
- Overall result:
|
|
- Follow-up issues found:
|