feature/pos-core #4
Reference in New Issue
Block a user
Delete Branch "feature/pos-core"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Phase 3a backend API for point-of-sale. Includes: Schema (packages/backend/src/db/schema/pos.ts): - pgEnums: transaction_type, transaction_status, payment_method, discount_type, discount_applies_to, drawer_status - Tables: transaction, transaction_line_item, discount, discount_audit, drawer_session - Transaction links to accounts, repair_tickets, repair_batches - Line items link to products and inventory_units Tax system: - tax_rate + service_tax_rate columns on location - tax_category enum (goods/service/exempt) on product - Tax resolves per line item: goods→tax_rate, service→service_tax_rate, exempt→0. Repair line items map: part→goods, labor→service - GET /tax/lookup/:zip stubbed for future API integration (TAX_API_KEY) Services (export const pattern, matching existing codebase): - TransactionService: create, addLineItem, removeLineItem, applyDiscount, recalculateTotals, complete (decrements inventory), void, getReceipt - DiscountService: CRUD + listAll for dropdowns - DrawerService: open/close with expected balance + over/short calc - TaxService: getRateForLocation (by tax category), calculateTax Routes: - POST/GET /transactions, GET /transactions/:id, GET /transactions/:id/receipt - POST /transactions/:id/line-items, DELETE /transactions/:id/line-items/:id - POST /transactions/:id/discounts, /complete, /void - POST /drawer/open, POST /drawer/:id/close, GET /drawer/current, GET /drawer - CRUD /discounts + GET /discounts/all - GET /products/lookup/upc/:upc (barcode scanner support) All routes gated by pos.view/pos.edit/pos.admin + withModule('pos'). POS module already seeded in migration 0026. Still needed: bun install, drizzle-kit generate + migrate, tests, lint. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>