- Pass JS objects to postgres jsonb params in callCoreFn (not JSON.stringify)
- Use splitStatements:false on RPC function changesets for Liquibase
- Fix needs_badge default in _worker_normalize when field is omitted
- Add scripts/crud-smoke-test.sh for API CRUD verification
- Fix findExistingWorker return type in main.ts
Co-authored-by: alberto.martinez <alberto.martinez@mrdev.mx>
- Replace db.prepare() in payroll_http with callCoreFn for attendance,
loans, loan receipts, and legacy payroll period routes
- Use respondRpc/respondApiError for standardized HTTP responses
- Add fn_loan_list/get, fn_loan_payment_get, and fn_payroll_period_* RPCs
to 013-rpc-payroll.sql with grants
- Refactor excel storeDocument to fn_worker_document_store (S3 stays in TS)
- Refactor importExcel and upsertWorker to fn_workers_import_batch
Co-authored-by: alberto.martinez <alberto.martinez@mrdev.mx>
Port key payroll operations from api/payroll.ts to plpgsql RPCs with
round_money helper, internal recalc/ensure logic, and core.rpc_* envelope.
Add batch worker import and post-S3 document metadata store RPCs with
Spanish validation messages and panels_core_app grants.
Co-authored-by: alberto.martinez <alberto.martinez@mrdev.mx>