Add lookup tables, payment methods, tax exemptions, and processor link APIs
Replace unit_status and item_condition pgEnums with company-scoped lookup tables that support custom values. Add account_payment_method table, tax_exemption table with approve/revoke workflow, and CRUD routes for processor links. Validate inventory unit status/condition against lookup tables at service layer.
This commit is contained in:
@@ -14,6 +14,7 @@ import {
|
||||
buildSearchCondition,
|
||||
paginatedResponse,
|
||||
} from '../utils/pagination.js'
|
||||
import { UnitStatusService, ItemConditionService } from './lookup.service.js'
|
||||
|
||||
export const ProductService = {
|
||||
async create(db: PostgresJsDatabase, companyId: string, input: ProductCreateInput) {
|
||||
@@ -116,6 +117,15 @@ export const ProductService = {
|
||||
|
||||
export const InventoryUnitService = {
|
||||
async create(db: PostgresJsDatabase, companyId: string, input: InventoryUnitCreateInput) {
|
||||
if (input.condition) {
|
||||
const valid = await ItemConditionService.validateSlug(db, companyId, input.condition)
|
||||
if (!valid) throw new Error(`Invalid condition: "${input.condition}"`)
|
||||
}
|
||||
if (input.status) {
|
||||
const valid = await UnitStatusService.validateSlug(db, companyId, input.status)
|
||||
if (!valid) throw new Error(`Invalid status: "${input.status}"`)
|
||||
}
|
||||
|
||||
const [unit] = await db
|
||||
.insert(inventoryUnits)
|
||||
.values({
|
||||
@@ -178,6 +188,15 @@ export const InventoryUnitService = {
|
||||
id: string,
|
||||
input: InventoryUnitUpdateInput,
|
||||
) {
|
||||
if (input.condition) {
|
||||
const valid = await ItemConditionService.validateSlug(db, companyId, input.condition)
|
||||
if (!valid) throw new Error(`Invalid condition: "${input.condition}"`)
|
||||
}
|
||||
if (input.status) {
|
||||
const valid = await UnitStatusService.validateSlug(db, companyId, input.status)
|
||||
if (!valid) throw new Error(`Invalid status: "${input.status}"`)
|
||||
}
|
||||
|
||||
const updates: Record<string, unknown> = { ...input }
|
||||
if (input.purchaseCost !== undefined) updates.purchaseCost = input.purchaseCost.toString()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user