Skip to content

Commit 35bee2d

Browse files
committed
Refactor code structure for improved readability and maintainability
1 parent 4d9b28e commit 35bee2d

9 files changed

Lines changed: 2105 additions & 20 deletions

File tree

.devcontainer/devcontainer.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"image":"mcr.microsoft.com/devcontainers/universal:2"}
Lines changed: 338 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,338 @@
1+
DO $$ BEGIN
2+
CREATE TYPE "public"."certificate_status" AS ENUM('active', 'revoked', 'expired');
3+
EXCEPTION
4+
WHEN duplicate_object THEN null;
5+
END $$;
6+
--> statement-breakpoint
7+
DO $$ BEGIN
8+
CREATE TYPE "public"."client_request_status" AS ENUM('pending', 'completed', 'expired');
9+
EXCEPTION
10+
WHEN duplicate_object THEN null;
11+
END $$;
12+
--> statement-breakpoint
13+
DO $$ BEGIN
14+
CREATE TYPE "public"."invoice_status" AS ENUM('draft', 'stamped', 'canceled');
15+
EXCEPTION
16+
WHEN duplicate_object THEN null;
17+
END $$;
18+
--> statement-breakpoint
19+
DO $$ BEGIN
20+
CREATE TYPE "public"."payment_status" AS ENUM('draft', 'stamped', 'canceled');
21+
EXCEPTION
22+
WHEN duplicate_object THEN null;
23+
END $$;
24+
--> statement-breakpoint
25+
DO $$ BEGIN
26+
CREATE TYPE "public"."subscription_status" AS ENUM('active', 'canceled', 'past_due', 'unpaid');
27+
EXCEPTION
28+
WHEN duplicate_object THEN null;
29+
END $$;
30+
--> statement-breakpoint
31+
DO $$ BEGIN
32+
CREATE TYPE "public"."user_role" AS ENUM('admin', 'company', 'accountant', 'client');
33+
EXCEPTION
34+
WHEN duplicate_object THEN null;
35+
END $$;
36+
--> statement-breakpoint
37+
CREATE TABLE IF NOT EXISTS "bank_accounts" (
38+
"id" serial PRIMARY KEY NOT NULL,
39+
"user_id" varchar(256) NOT NULL,
40+
"bank_rfc" varchar(13) NOT NULL,
41+
"bank_name" text NOT NULL,
42+
"short_name" text NOT NULL,
43+
"account_number" varchar(50) NOT NULL,
44+
"created_at" timestamp DEFAULT now() NOT NULL,
45+
"is_active" boolean DEFAULT true NOT NULL,
46+
"is_default" boolean DEFAULT false NOT NULL
47+
);
48+
--> statement-breakpoint
49+
CREATE TABLE IF NOT EXISTS "client_bank_accounts" (
50+
"id" serial PRIMARY KEY NOT NULL,
51+
"user_id" varchar(256) NOT NULL,
52+
"client_id" integer NOT NULL,
53+
"bank_rfc" varchar(13) NOT NULL,
54+
"bank_name" text NOT NULL,
55+
"account_number" varchar(50) NOT NULL,
56+
"is_active" boolean DEFAULT true NOT NULL,
57+
"is_default" boolean DEFAULT false NOT NULL,
58+
"created_at" timestamp DEFAULT now() NOT NULL
59+
);
60+
--> statement-breakpoint
61+
CREATE TABLE IF NOT EXISTS "client_requests" (
62+
"id" serial PRIMARY KEY NOT NULL,
63+
"user_id" varchar(256) NOT NULL,
64+
"tenant_id" varchar(18),
65+
"token" varchar(64) NOT NULL,
66+
"client_email" varchar(256),
67+
"status" "client_request_status" DEFAULT 'pending' NOT NULL,
68+
"client_data" text,
69+
"expires_at" timestamp NOT NULL,
70+
"completed_at" timestamp,
71+
"created_at" timestamp DEFAULT now() NOT NULL,
72+
"updated_at" timestamp DEFAULT now() NOT NULL,
73+
CONSTRAINT "client_requests_token_unique" UNIQUE("token")
74+
);
75+
--> statement-breakpoint
76+
CREATE TABLE IF NOT EXISTS "clients" (
77+
"id" serial PRIMARY KEY NOT NULL,
78+
"user_id" varchar(256) NOT NULL,
79+
"name" text NOT NULL,
80+
"rfc" varchar(13) NOT NULL,
81+
"email" varchar(256) NOT NULL,
82+
"zip" varchar(5) NOT NULL,
83+
"tax_regime" varchar(10) NOT NULL,
84+
"created_at" timestamp DEFAULT now() NOT NULL,
85+
"country" text,
86+
"state" text,
87+
"municipality" text,
88+
"city" text,
89+
"neighborhood" text,
90+
"street" text,
91+
"exterior_number" varchar(50),
92+
"interior_number" varchar(50),
93+
"phone" varchar(20),
94+
"payment_method" varchar(3),
95+
"payment_form" varchar(3),
96+
"uso_cfdi" varchar(4),
97+
"reference" text
98+
);
99+
--> statement-breakpoint
100+
CREATE TABLE IF NOT EXISTS "companies" (
101+
"id" serial PRIMARY KEY NOT NULL,
102+
"user_id" varchar(256) NOT NULL,
103+
"company_name" text NOT NULL,
104+
"rfc" varchar(13) NOT NULL,
105+
"tax_regime" varchar(10) NOT NULL,
106+
"created_at" timestamp DEFAULT now() NOT NULL,
107+
"updated_at" timestamp DEFAULT now() NOT NULL,
108+
"street" text,
109+
"exterior_number" varchar(50),
110+
"interior_number" varchar(50),
111+
"neighborhood" text,
112+
"municipality" text,
113+
"state" text,
114+
"city" text,
115+
"zip" varchar(5),
116+
"phone" varchar(20),
117+
"phone2" varchar(20),
118+
"fax" varchar(20),
119+
"contador_email" varchar(256),
120+
"web" varchar(256),
121+
"commercial_message" text,
122+
"logo_url" varchar(256),
123+
"default_email_message" text,
124+
"template_cfdi_33" varchar(50),
125+
"template_cfdi_40" varchar(50),
126+
"template_rep" varchar(50),
127+
"custom_domain" varchar(256),
128+
"brand_primary_color" varchar(7) DEFAULT '#5B47DB',
129+
"brand_secondary_color" varchar(7) DEFAULT '#E8E5FA',
130+
"brand_accent_color" varchar(7) DEFAULT '#B19EEF',
131+
"brand_text_color" varchar(7) DEFAULT '#1F2937',
132+
"brand_background_color" varchar(7) DEFAULT '#F1F1F1',
133+
"form_welcome_message" text,
134+
"form_footer_message" text,
135+
"pac_provider" varchar(50),
136+
"pac_environment" varchar(20) DEFAULT 'test',
137+
"pac_username" varchar(256),
138+
"pac_password" text,
139+
"pac_api_key" text,
140+
"pac_api_url" varchar(512),
141+
"pac_webhook_url" varchar(512),
142+
"pac_is_active" boolean DEFAULT false,
143+
"pac_last_test" timestamp,
144+
"pac_last_error" text,
145+
CONSTRAINT "companies_user_id_unique" UNIQUE("user_id")
146+
);
147+
--> statement-breakpoint
148+
CREATE TABLE IF NOT EXISTS "csd_certificates" (
149+
"id" serial PRIMARY KEY NOT NULL,
150+
"user_id" varchar(256) NOT NULL,
151+
"certificate_number" varchar(64) NOT NULL,
152+
"rfc" varchar(13) NOT NULL,
153+
"valid_from" timestamp NOT NULL,
154+
"valid_to" timestamp NOT NULL,
155+
"status" "certificate_status" DEFAULT 'active' NOT NULL,
156+
"is_active" boolean DEFAULT true NOT NULL,
157+
"private_key" text NOT NULL,
158+
"certificate" text NOT NULL,
159+
"created_at" timestamp DEFAULT now() NOT NULL,
160+
CONSTRAINT "csd_certificates_certificate_number_unique" UNIQUE("certificate_number")
161+
);
162+
--> statement-breakpoint
163+
CREATE TABLE IF NOT EXISTS "invoice_items" (
164+
"id" serial PRIMARY KEY NOT NULL,
165+
"invoice_id" integer NOT NULL,
166+
"user_id" varchar(256) NOT NULL,
167+
"description" text NOT NULL,
168+
"sat_key" varchar(8) NOT NULL,
169+
"unit_key" varchar(3) NOT NULL,
170+
"unit_price" numeric(10, 2) NOT NULL,
171+
"quantity" integer NOT NULL,
172+
"discount" numeric(10, 2) DEFAULT '0' NOT NULL,
173+
"amount" numeric(10, 2) NOT NULL,
174+
"objeto_impuesto" varchar(2) DEFAULT '02' NOT NULL,
175+
"iva_rate" numeric(10, 6) DEFAULT '0.160000' NOT NULL,
176+
"ieps_rate" numeric(10, 6) DEFAULT '0.000000' NOT NULL,
177+
"isr_retention_rate" numeric(10, 6) DEFAULT '0.000000' NOT NULL,
178+
"iva_retention_rate" numeric(10, 6) DEFAULT '0.000000' NOT NULL
179+
);
180+
--> statement-breakpoint
181+
CREATE TABLE IF NOT EXISTS "invoices" (
182+
"id" serial PRIMARY KEY NOT NULL,
183+
"user_id" varchar(256) NOT NULL,
184+
"client_id" integer NOT NULL,
185+
"serie" varchar(10) NOT NULL,
186+
"folio" integer NOT NULL,
187+
"uso_cfdi" varchar(4) NOT NULL,
188+
"forma_pago" varchar(3) NOT NULL,
189+
"metodo_pago" varchar(3) NOT NULL,
190+
"condiciones_pago" text,
191+
"subtotal" numeric(10, 2) NOT NULL,
192+
"discounts" numeric(10, 2) DEFAULT '0' NOT NULL,
193+
"iva" numeric(10, 2) NOT NULL,
194+
"retenciones" numeric(10, 2) DEFAULT '0' NOT NULL,
195+
"total" numeric(10, 2) NOT NULL,
196+
"status" "invoice_status" DEFAULT 'draft' NOT NULL,
197+
"tipo_comprobante" varchar(1) DEFAULT 'I' NOT NULL,
198+
"relation_type" varchar(2),
199+
"related_cfdis" text,
200+
"pdf_url" text,
201+
"xml_url" text,
202+
"pdf_path" text,
203+
"xml_path" text,
204+
"created_at" timestamp DEFAULT now() NOT NULL,
205+
"updated_at" timestamp DEFAULT now() NOT NULL,
206+
"uuid" varchar(36),
207+
"stamp_date" timestamp
208+
);
209+
--> statement-breakpoint
210+
CREATE TABLE IF NOT EXISTS "payment_documents" (
211+
"id" serial PRIMARY KEY NOT NULL,
212+
"payment_id" integer NOT NULL,
213+
"user_id" varchar(256) NOT NULL,
214+
"invoice_id" integer NOT NULL,
215+
"uuid" varchar(36) NOT NULL,
216+
"serie" varchar(10) NOT NULL,
217+
"folio" varchar(50) NOT NULL,
218+
"currency" varchar(3) NOT NULL,
219+
"exchange_rate" numeric(10, 6) DEFAULT '1' NOT NULL,
220+
"payment_method" varchar(3) NOT NULL,
221+
"partiality_number" integer NOT NULL,
222+
"previous_balance" numeric(10, 2) NOT NULL,
223+
"amount_paid" numeric(10, 2) NOT NULL,
224+
"outstanding_balance" numeric(10, 2) NOT NULL
225+
);
226+
--> statement-breakpoint
227+
CREATE TABLE IF NOT EXISTS "payments" (
228+
"id" serial PRIMARY KEY NOT NULL,
229+
"user_id" varchar(256) NOT NULL,
230+
"client_id" integer NOT NULL,
231+
"serie" varchar(10) NOT NULL,
232+
"folio" integer NOT NULL,
233+
"payment_date" timestamp NOT NULL,
234+
"payment_form" varchar(3) NOT NULL,
235+
"currency" varchar(3) DEFAULT 'MXN' NOT NULL,
236+
"total_amount" numeric(10, 2) NOT NULL,
237+
"status" "payment_status" DEFAULT 'draft' NOT NULL,
238+
"pdf_url" text,
239+
"xml_url" text,
240+
"pdf_path" text,
241+
"xml_path" text,
242+
"uuid" varchar(36),
243+
"stamp_date" timestamp,
244+
"operation_number" varchar(100),
245+
"relation_type" varchar(2),
246+
"related_cfdis" text,
247+
"created_at" timestamp DEFAULT now() NOT NULL,
248+
"updated_at" timestamp DEFAULT now() NOT NULL
249+
);
250+
--> statement-breakpoint
251+
CREATE TABLE IF NOT EXISTS "products" (
252+
"id" serial PRIMARY KEY NOT NULL,
253+
"user_id" varchar(256) NOT NULL,
254+
"code" varchar(50),
255+
"description" text NOT NULL,
256+
"sat_key" varchar(8) NOT NULL,
257+
"unit_key" varchar(3) NOT NULL,
258+
"unit_price" numeric(10, 2) NOT NULL,
259+
"objeto_impuesto" varchar(2) NOT NULL,
260+
"image_url" varchar(512),
261+
"created_at" timestamp DEFAULT now() NOT NULL
262+
);
263+
--> statement-breakpoint
264+
CREATE TABLE IF NOT EXISTS "series" (
265+
"id" serial PRIMARY KEY NOT NULL,
266+
"user_id" varchar(256) NOT NULL,
267+
"serie" varchar(10) NOT NULL,
268+
"folio" integer NOT NULL,
269+
"document_type" varchar(50) NOT NULL,
270+
"created_at" timestamp DEFAULT now() NOT NULL
271+
);
272+
--> statement-breakpoint
273+
CREATE TABLE IF NOT EXISTS "subscriptions" (
274+
"id" serial PRIMARY KEY NOT NULL,
275+
"user_id" varchar(256) NOT NULL,
276+
"plan_name" text NOT NULL,
277+
"status" "subscription_status" NOT NULL,
278+
"payment_provider" text,
279+
"provider_subscription_id" text,
280+
"current_period_start" timestamp NOT NULL,
281+
"current_period_end" timestamp NOT NULL,
282+
"created_at" timestamp DEFAULT now() NOT NULL,
283+
"updated_at" timestamp DEFAULT now() NOT NULL,
284+
CONSTRAINT "subscriptions_user_id_unique" UNIQUE("user_id"),
285+
CONSTRAINT "subscriptions_provider_subscription_id_unique" UNIQUE("provider_subscription_id")
286+
);
287+
--> statement-breakpoint
288+
CREATE TABLE IF NOT EXISTS "users" (
289+
"id" serial PRIMARY KEY NOT NULL,
290+
"user_id" varchar(256) NOT NULL,
291+
"email" varchar(256) NOT NULL,
292+
"role" "user_role" DEFAULT 'company' NOT NULL,
293+
"tenant_id" varchar(18),
294+
"owner_id" varchar(256),
295+
"display_name" varchar(256),
296+
"is_active" boolean DEFAULT true NOT NULL,
297+
"created_at" timestamp DEFAULT now() NOT NULL,
298+
"updated_at" timestamp DEFAULT now() NOT NULL,
299+
CONSTRAINT "users_user_id_unique" UNIQUE("user_id"),
300+
CONSTRAINT "users_email_unique" UNIQUE("email"),
301+
CONSTRAINT "users_tenant_id_unique" UNIQUE("tenant_id")
302+
);
303+
--> statement-breakpoint
304+
DO $$ BEGIN
305+
ALTER TABLE "client_bank_accounts" ADD CONSTRAINT "client_bank_accounts_client_id_clients_id_fk" FOREIGN KEY ("client_id") REFERENCES "public"."clients"("id") ON DELETE cascade ON UPDATE no action;
306+
EXCEPTION
307+
WHEN duplicate_object THEN null;
308+
END $$;
309+
--> statement-breakpoint
310+
DO $$ BEGIN
311+
ALTER TABLE "invoice_items" ADD CONSTRAINT "invoice_items_invoice_id_invoices_id_fk" FOREIGN KEY ("invoice_id") REFERENCES "public"."invoices"("id") ON DELETE cascade ON UPDATE no action;
312+
EXCEPTION
313+
WHEN duplicate_object THEN null;
314+
END $$;
315+
--> statement-breakpoint
316+
DO $$ BEGIN
317+
ALTER TABLE "invoices" ADD CONSTRAINT "invoices_client_id_clients_id_fk" FOREIGN KEY ("client_id") REFERENCES "public"."clients"("id") ON DELETE no action ON UPDATE no action;
318+
EXCEPTION
319+
WHEN duplicate_object THEN null;
320+
END $$;
321+
--> statement-breakpoint
322+
DO $$ BEGIN
323+
ALTER TABLE "payment_documents" ADD CONSTRAINT "payment_documents_payment_id_payments_id_fk" FOREIGN KEY ("payment_id") REFERENCES "public"."payments"("id") ON DELETE cascade ON UPDATE no action;
324+
EXCEPTION
325+
WHEN duplicate_object THEN null;
326+
END $$;
327+
--> statement-breakpoint
328+
DO $$ BEGIN
329+
ALTER TABLE "payment_documents" ADD CONSTRAINT "payment_documents_invoice_id_invoices_id_fk" FOREIGN KEY ("invoice_id") REFERENCES "public"."invoices"("id") ON DELETE no action ON UPDATE no action;
330+
EXCEPTION
331+
WHEN duplicate_object THEN null;
332+
END $$;
333+
--> statement-breakpoint
334+
DO $$ BEGIN
335+
ALTER TABLE "payments" ADD CONSTRAINT "payments_client_id_clients_id_fk" FOREIGN KEY ("client_id") REFERENCES "public"."clients"("id") ON DELETE no action ON UPDATE no action;
336+
EXCEPTION
337+
WHEN duplicate_object THEN null;
338+
END $$;

0 commit comments

Comments
 (0)