---
type: redmine-readme
project: Endress + Hauser
subject: Tax Category and single GST Rate dropdown on wizard items
story_key: dc-wizard-tax-category-gst-rate
generated_at: 2026-10-16T16:56:59+05:30
story_type: feature
---

# Tax Category and single GST Rate dropdown on wizard items

> Users pick Inter State or Intra State once, then a single GST Rate per item row that splits into IGST or CGST and SGST.

## 1. Summary
Items used three tax columns (IGST, CGST, SGST) entered by hand. The user asked for a Tax Category chosen first (Inter State or Intra State) and only a GST Rate selection in the item table. The rate is a dropdown of the standard slabs (0, 5, 12, 18, 28), chosen by the user over free entry. An Inter State category puts the rate on IGST; Intra State splits it evenly into CGST and SGST. A new `tax_category` Select field on the Delivery Challan stores the choice. Changing the category re-splits all rows live, and locked return rows show their rate read-only. The work is in the working tree and not committed.

## 2. Requirement
| # | Requirement | Source | Status |
|---|---|---|---|
| R1 | Choose Tax Category first (Inter State or Intra State) | User, 16 Sep | Done |
| R2 | Item table shows only a GST Rate selection | User, 16 Sep | Done |
| R3 | Rate fills IGST or CGST/SGST by category and totals follow | User, 16 Sep | Done |

## 3. Decisions
| Decision | Options considered | Why this one | Date |
|---|---|---|---|
| GST Rate is a dropdown of standard slabs 0/5/12/18/28 | Free-entry percentage | User chose the dropdown | 2026-09-16 |
| GST Rate column sits right after HSN | After Unit Cost | A Select after the last input broke Frappe's Tab handling and added a blank row | 2026-10-05 |
| IGST, CGST, SGST remain real fields but are hidden and derived | Remove them | The Delivery Challan Item schema is unchanged | 2026-09-16 |

## 4. Logic & Workflow
1. The user selects Tax Category above the grid; it is required before Next.
2. Each row has one GST Rate dropdown. Inter State sets `igst_rate`; Intra State sets `cgst_rate` and `sgst_rate` to half each.
3. Changing the category re-splits every row. Totals recompute.
4. On Review the Items card shows the category. `tax_category` is saved on the document by `build_unsaved_delivery_challan`.
5. Rows from a predecessor DC derive their rate from the stored taxes and are read-only.

## 5. Files & Components Changed
| File / DocType / Fixture | Type | Change | Purpose |
|---|---|---|---|
| canofy_custom_eh/canofy_custom_eh/doctype/delivery_challan/delivery_challan.json | DocType | Changed | New `tax_category` Select (Inter State / Intra State) |
| canofy_custom_eh/public/js/dc_wizard_common.js | Shared JS | Changed | `NativeItemsGrid` GST Rate column and split |
| canofy_custom_eh/canofy_custom_eh/page/delivery_challan_wizard/delivery_challan_wizard.js | Page JS | Changed | Tax Category control, validation, review card |
| canofy_custom_eh/wizard/dc_wizard.py | Python | Changed | Sets `tax_category` on the new document |

## 6. Configuration & Deployment
DocType change: `bench --site <site> migrate`. Then build assets and clear cache.

## 7. Testing
| Test | Data / Site | Expected | Actual | Status |
|---|---|---|---|---|
| Single GST Rate column, slabs, Inter and Intra split, live re-split | E2E suite, 5 Oct | TC-019 to TC-025 pass | Pass | PASS |
| Next blocked without category or rate | E2E suite, 5 Oct | TC-029 to TC-036 pass | Pass | PASS |
| Tab order HSN to GST Rate to Qty to Unit Cost | E2E suite, 5 Oct | TC-020 passes | Pass | PASS |
| Category survives Review's Edit | E2E suite, 5 Oct | TC-100 passes | Pass | PASS |

## 8. Known Limitations & Open Items
- Uncommitted (working tree of the feature branch) at the time this README was generated.
- Only the five standard slabs are offered; a non-standard rate on an existing document cannot be selected.

## 9. Status
| Item | Value |
|---|---|
| Branch | claude/delivery-challan-wizard-bcb464 |
| Commits | None yet |
| PR | None |
| Version | Not confirmed |
| Deployed to | Local dev site only |

## 10. References
- Related: `dc-wizard-items-native-grid`, `dc-wizard-phase-merge`, `dc-wizard-e2e-tests`
