Merge remote-tracking branch 'origin/main' into fixing-extensions-bug
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
-- Invoice Inbox: table for incoming supplier invoices (email + upload)
|
||||
-- Supports AI extraction, supplier matching, and confirm-to-create workflow
|
||||
|
||||
CREATE TABLE public.invoice_inbox_items (
|
||||
id uuid DEFAULT gen_random_uuid() PRIMARY KEY,
|
||||
user_id uuid NOT NULL REFERENCES auth.users(id) ON DELETE CASCADE,
|
||||
status text NOT NULL DEFAULT 'pending'
|
||||
CHECK (status IN ('pending','processing','ready','confirmed','rejected','error')),
|
||||
source text NOT NULL DEFAULT 'upload'
|
||||
CHECK (source IN ('email','upload')),
|
||||
email_from text,
|
||||
email_subject text,
|
||||
email_received_at timestamptz,
|
||||
document_id uuid REFERENCES public.document_attachments(id) ON DELETE SET NULL,
|
||||
extracted_data jsonb,
|
||||
confidence numeric,
|
||||
matched_supplier_id uuid REFERENCES public.suppliers(id) ON DELETE SET NULL,
|
||||
created_supplier_invoice_id uuid REFERENCES public.supplier_invoices(id) ON DELETE SET NULL,
|
||||
error_message text,
|
||||
created_at timestamptz NOT NULL DEFAULT now(),
|
||||
updated_at timestamptz NOT NULL DEFAULT now()
|
||||
);
|
||||
|
||||
-- RLS
|
||||
ALTER TABLE public.invoice_inbox_items ENABLE ROW LEVEL SECURITY;
|
||||
|
||||
CREATE POLICY "invoice_inbox_items_select"
|
||||
ON public.invoice_inbox_items FOR SELECT
|
||||
USING (auth.uid() = user_id);
|
||||
|
||||
CREATE POLICY "invoice_inbox_items_insert"
|
||||
ON public.invoice_inbox_items FOR INSERT
|
||||
WITH CHECK (auth.uid() = user_id);
|
||||
|
||||
CREATE POLICY "invoice_inbox_items_update"
|
||||
ON public.invoice_inbox_items FOR UPDATE
|
||||
USING (auth.uid() = user_id);
|
||||
|
||||
CREATE POLICY "invoice_inbox_items_delete"
|
||||
ON public.invoice_inbox_items FOR DELETE
|
||||
USING (auth.uid() = user_id);
|
||||
|
||||
-- Indexes
|
||||
CREATE INDEX idx_invoice_inbox_items_user_id
|
||||
ON public.invoice_inbox_items(user_id);
|
||||
|
||||
CREATE INDEX idx_invoice_inbox_items_user_status
|
||||
ON public.invoice_inbox_items(user_id, status);
|
||||
|
||||
CREATE INDEX idx_invoice_inbox_items_user_created
|
||||
ON public.invoice_inbox_items(user_id, created_at DESC);
|
||||
|
||||
-- updated_at trigger
|
||||
CREATE TRIGGER invoice_inbox_items_updated_at
|
||||
BEFORE UPDATE ON public.invoice_inbox_items
|
||||
FOR EACH ROW EXECUTE FUNCTION public.update_updated_at_column();
|
||||
Reference in New Issue
Block a user