-- Add unit_id to payment_plans ALTER TABLE public.payment_plans ADD COLUMN IF NOT EXISTS unit_id UUID REFERENCES public.units(id); -- Create installments table to track individual payments CREATE TABLE public.payment_plan_installments ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), payment_plan_id UUID NOT NULL REFERENCES public.payment_plans(id) ON DELETE CASCADE, installment_number INT NOT NULL, due_date DATE NOT NULL, amount_due NUMERIC NOT NULL DEFAULT 0, amount_paid NUMERIC NOT NULL DEFAULT 0, paid_date DATE, status TEXT NOT NULL DEFAULT 'pending', notes TEXT, created_at TIMESTAMPTZ NOT NULL DEFAULT now(), updated_at TIMESTAMPTZ NOT NULL DEFAULT now() ); ALTER TABLE public.payment_plan_installments ENABLE ROW LEVEL SECURITY; CREATE POLICY "Staff can manage installments" ON public.payment_plan_installments FOR ALL TO authenticated USING ( has_role(auth.uid(), 'admin'::app_role) OR has_role(auth.uid(), 'manager'::app_role) OR has_role(auth.uid(), 'employee'::app_role) ) WITH CHECK ( has_role(auth.uid(), 'admin'::app_role) OR has_role(auth.uid(), 'manager'::app_role) OR has_role(auth.uid(), 'employee'::app_role) );