compassmock/drizzle/0005_concerned_midnight.sql
Nicholai 9c3a19279a
feat(schema): add auth, people, and financial tables (#26)
Add users, organizations, teams, groups, and project
members tables. Extend customers/vendors with netsuite
fields. Add netsuite schema for invoices, bills,
payments, and credit memos. Include all migrations,
seeds, new UI primitives, and config updates.

Co-authored-by: Nicholai <nicholaivogelfilms@gmail.com>
2026-02-04 16:18:39 -07:00

130 lines
4.3 KiB
SQL
Executable File

CREATE TABLE `credit_memos` (
`id` text PRIMARY KEY NOT NULL,
`netsuite_id` text,
`customer_id` text NOT NULL,
`project_id` text,
`memo_number` text,
`status` text DEFAULT 'draft' NOT NULL,
`issue_date` text NOT NULL,
`total` real DEFAULT 0 NOT NULL,
`amount_applied` real DEFAULT 0 NOT NULL,
`amount_remaining` real DEFAULT 0 NOT NULL,
`memo` text,
`line_items` text,
`created_at` text NOT NULL,
`updated_at` text NOT NULL,
FOREIGN KEY (`customer_id`) REFERENCES `customers`(`id`) ON UPDATE no action ON DELETE no action,
FOREIGN KEY (`project_id`) REFERENCES `projects`(`id`) ON UPDATE no action ON DELETE no action
);
--> statement-breakpoint
CREATE TABLE `invoices` (
`id` text PRIMARY KEY NOT NULL,
`netsuite_id` text,
`customer_id` text NOT NULL,
`project_id` text,
`invoice_number` text,
`status` text DEFAULT 'draft' NOT NULL,
`issue_date` text NOT NULL,
`due_date` text,
`subtotal` real DEFAULT 0 NOT NULL,
`tax` real DEFAULT 0 NOT NULL,
`total` real DEFAULT 0 NOT NULL,
`amount_paid` real DEFAULT 0 NOT NULL,
`amount_due` real DEFAULT 0 NOT NULL,
`memo` text,
`line_items` text,
`created_at` text NOT NULL,
`updated_at` text NOT NULL,
FOREIGN KEY (`customer_id`) REFERENCES `customers`(`id`) ON UPDATE no action ON DELETE no action,
FOREIGN KEY (`project_id`) REFERENCES `projects`(`id`) ON UPDATE no action ON DELETE no action
);
--> statement-breakpoint
CREATE TABLE `netsuite_auth` (
`id` text PRIMARY KEY NOT NULL,
`account_id` text NOT NULL,
`access_token_encrypted` text NOT NULL,
`refresh_token_encrypted` text NOT NULL,
`expires_in` integer NOT NULL,
`token_type` text NOT NULL,
`issued_at` integer NOT NULL,
`created_at` text NOT NULL,
`updated_at` text NOT NULL
);
--> statement-breakpoint
CREATE TABLE `netsuite_sync_log` (
`id` text PRIMARY KEY NOT NULL,
`sync_type` text NOT NULL,
`record_type` text NOT NULL,
`direction` text NOT NULL,
`status` text NOT NULL,
`records_processed` integer DEFAULT 0 NOT NULL,
`records_failed` integer DEFAULT 0 NOT NULL,
`error_summary` text,
`started_at` text NOT NULL,
`completed_at` text,
`created_at` text NOT NULL
);
--> statement-breakpoint
CREATE TABLE `netsuite_sync_metadata` (
`id` text PRIMARY KEY NOT NULL,
`local_table` text NOT NULL,
`local_record_id` text NOT NULL,
`netsuite_record_type` text NOT NULL,
`netsuite_internal_id` text,
`last_synced_at` text,
`last_modified_local` text,
`last_modified_remote` text,
`sync_status` text DEFAULT 'synced' NOT NULL,
`conflict_data` text,
`error_message` text,
`retry_count` integer DEFAULT 0 NOT NULL,
`created_at` text NOT NULL,
`updated_at` text NOT NULL
);
--> statement-breakpoint
CREATE TABLE `payments` (
`id` text PRIMARY KEY NOT NULL,
`netsuite_id` text,
`customer_id` text,
`vendor_id` text,
`project_id` text,
`payment_type` text NOT NULL,
`amount` real NOT NULL,
`payment_date` text NOT NULL,
`payment_method` text,
`reference_number` text,
`memo` text,
`created_at` text NOT NULL,
`updated_at` text NOT NULL,
FOREIGN KEY (`customer_id`) REFERENCES `customers`(`id`) ON UPDATE no action ON DELETE no action,
FOREIGN KEY (`vendor_id`) REFERENCES `vendors`(`id`) ON UPDATE no action ON DELETE no action,
FOREIGN KEY (`project_id`) REFERENCES `projects`(`id`) ON UPDATE no action ON DELETE no action
);
--> statement-breakpoint
CREATE TABLE `vendor_bills` (
`id` text PRIMARY KEY NOT NULL,
`netsuite_id` text,
`vendor_id` text NOT NULL,
`project_id` text,
`bill_number` text,
`status` text DEFAULT 'pending' NOT NULL,
`bill_date` text NOT NULL,
`due_date` text,
`subtotal` real DEFAULT 0 NOT NULL,
`tax` real DEFAULT 0 NOT NULL,
`total` real DEFAULT 0 NOT NULL,
`amount_paid` real DEFAULT 0 NOT NULL,
`amount_due` real DEFAULT 0 NOT NULL,
`memo` text,
`line_items` text,
`created_at` text NOT NULL,
`updated_at` text NOT NULL,
FOREIGN KEY (`vendor_id`) REFERENCES `vendors`(`id`) ON UPDATE no action ON DELETE no action,
FOREIGN KEY (`project_id`) REFERENCES `projects`(`id`) ON UPDATE no action ON DELETE no action
);
--> statement-breakpoint
ALTER TABLE `customers` ADD `netsuite_id` text;--> statement-breakpoint
ALTER TABLE `customers` ADD `updated_at` text;--> statement-breakpoint
ALTER TABLE `projects` ADD `netsuite_job_id` text;--> statement-breakpoint
ALTER TABLE `vendors` ADD `netsuite_id` text;--> statement-breakpoint
ALTER TABLE `vendors` ADD `updated_at` text;