CW-048 · ประกันสังคม monthly filing (สปส. 1-10)
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
What to build
A payroll officer picks a month and downloads a สปส. 1-10 file ready to submit to the Social Security Office. Payroll already computes both halves of the contribution under มาตรา 33 and stores them on every payslip as ssoEmployee and ssoEmployer; there is currently no way to get them out.
This runs alongside the withholding-tax chain rather than after it — it shares the export seam and nothing else.
Acceptance criteria
- The export for the seeded demo company matches hand-computed employee and employer totals.
- The layout matches the Social Security Office's published specification.
- The contribution ceiling is applied per employee per month, with tests at the boundary.
- An employee with no social security number is reported as an error naming them, rather than silently omitted or exported blank.
- A period that does not reconcile produces the error from #43, not a file.
Blocked by
- #43 — reconciliation, permission, download and audit come from there.
Not blocked by the ภ.ง.ด.1 chain; these can be worked in parallel. 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
No files or entry points are named. Start by tracing the existing payroll export seam and the payslip fields ssoEmployee and ssoEmployer, then read #43 and the Social Security Office specification. Done means producing a compliant file, enforcing the ceiling and missing-number error, and refusing unreconciled periods.
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
- 48/100