CW-045 · ภ.ง.ด.1 monthly withholding filing
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 0
- Forks
- 0
- PR merge metrics
- No merged PRs in 30d
Description
Priority P1 · Area payroll · Estimate M · Phase 3
Parent
#3 (CW-004), which bundled the monthly filing, the annual summary and the 50 ทวิ certificate. This is the monthly filing alone.
What to build
A payroll officer picks a month and downloads a ภ.ง.ด.1 file in the Revenue Department's text layout, ready to submit. Every Thai employer files this monthly; today the figures are correct in Cwork and have to be re-keyed into whatever is used to file them, which is the error-prone step this system exists to remove.
Rounding is where this goes wrong quietly, so it is tested against the Revenue Department's rules rather than left to whatever the language does by default.
Acceptance criteria
- The export for the seeded demo company matches hand-computed totals, line by line.
- The layout matches the published specification — field widths, ordering, padding.
- Rounding follows the Revenue Department's rules, with tests covering the boundary cases.
- A period that does not reconcile produces the error from #43, not a file.
- The export is audited like any other.
Blocked by
- #43 — reconciliation, permission, download and audit come from there; this ticket is the formatter.
The rules being formatted here have not been reviewed by anyone qualified — see #36.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with #43 to understand the reconciliation, permission, download, and audit boundary, then review the Revenue Department's published text-layout specification and the unresolved rules concern in #36. Done means the seeded demo company's export matches hand-computed totals, layout and boundary-case rounding tests pass, unreconciled periods return the #43 error, and the export is audited.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- backend
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 42/100