feat: booking template library with system templates and cross-company sharing (#235)
* feat: implement viewer role permissions for bank transaction imports and connections * feat: add booking_template_library table with 30 system templates Three-level scoping (system/team/company), RLS policies for read/write/delete, and pre-seeded templates for EU reverse charge, tax account, private transfers, salary, representation, year-end, VAT netting, and bank/finance scenarios. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat: add template library types, helpers, and tests - BookingTemplateLibrary/Line/Category types in types/index.ts - applyTemplate() converts template lines + amount into form lines - Category labels, scope helpers for UI display - 8 unit tests for amount calculation, VAT, rounding, and scope detection Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat: add booking template CRUD, export, and import API routes - GET/POST/DELETE /api/settings/booking-templates (list, create, soft-delete) - PUT /api/settings/booking-templates/[id] (update non-system templates) - GET /api/settings/booking-templates/export (JSON download) - POST /api/settings/booking-templates/import (bulk import from JSON) All routes enforce auth, write permissions, and Zod validation. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat: add template picker UI and settings management panel - BookingTemplatePicker: dialog with search, category/entity-type filter, line preview, and amount input — integrated into JournalEntryForm - BookingTemplatesPanel: settings page with grouped templates (system/team/company), create dialog, export/import, soft-delete - Settings templates page now shows both booking and counterparty templates Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Update supabase/migrations/20260413160000_booking_template_library.sql Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
This commit is contained in:
co-authored by
Claude Opus 4.6
greptile-apps[bot]
parent
cd376e1cad
commit
bf36ebfd88
@@ -1059,6 +1059,45 @@ export interface CategorizationTemplate {
|
||||
updated_at: string
|
||||
}
|
||||
|
||||
// Booking template library categories
|
||||
export type BookingTemplateCategory =
|
||||
| 'eu_trade'
|
||||
| 'tax_account'
|
||||
| 'private_transfer'
|
||||
| 'salary'
|
||||
| 'representation'
|
||||
| 'year_end'
|
||||
| 'vat'
|
||||
| 'financial'
|
||||
| 'other'
|
||||
|
||||
// Booking template library line
|
||||
export interface BookingTemplateLibraryLine {
|
||||
account: string
|
||||
label: string
|
||||
side: 'debit' | 'credit'
|
||||
type: 'business' | 'vat' | 'settlement'
|
||||
ratio?: number
|
||||
vat_rate?: number
|
||||
}
|
||||
|
||||
// Booking template library entry (system, team, or company-scoped)
|
||||
export interface BookingTemplateLibrary {
|
||||
id: string
|
||||
company_id: string | null
|
||||
team_id: string | null
|
||||
created_by: string | null
|
||||
name: string
|
||||
description: string
|
||||
category: BookingTemplateCategory
|
||||
entity_type: 'all' | EntityType
|
||||
lines: BookingTemplateLibraryLine[]
|
||||
is_system: boolean
|
||||
is_active: boolean
|
||||
created_at: string
|
||||
updated_at: string
|
||||
}
|
||||
|
||||
// Account Balance (cached)
|
||||
export interface AccountBalance {
|
||||
id: string
|
||||
|
||||
Reference in New Issue
Block a user