CREATE TABLE "document_sequences" ( "prefix" varchar(8) NOT NULL, "period" varchar(8) NOT NULL, "last_value" integer NOT NULL, CONSTRAINT "document_sequences_prefix_period_pk" PRIMARY KEY("prefix","period") ); --> statement-breakpoint CREATE TABLE "sales_requests" ( "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL, "code" varchar(32) NOT NULL, "date" bigint NOT NULL, "sales_person_id" uuid NOT NULL, "branch_id" uuid NOT NULL, "division_id" uuid NOT NULL, "customer_id" uuid NOT NULL, "address" text NOT NULL, "latitude" double precision, "longitude" double precision, "notes" text, "status" text DEFAULT 'draft' NOT NULL, "created_at" bigint NOT NULL, "updated_at" bigint NOT NULL, "created_by" uuid NOT NULL, "updated_by" uuid NOT NULL ); --> statement-breakpoint CREATE TABLE "sales_request_products" ( "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL, "sales_request_id" uuid NOT NULL, "product_id" uuid NOT NULL, "quantity" numeric(18, 4) NOT NULL, "price" numeric(18, 4) NOT NULL ); --> statement-breakpoint CREATE TABLE "sales_request_images" ( "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL, "sales_request_id" uuid NOT NULL, "url" varchar(2048) NOT NULL, "description" varchar(255) ); --> statement-breakpoint CREATE TABLE "sales_orders" ( "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL, "code" varchar(32) NOT NULL, "sales_request_id" uuid, "date" bigint NOT NULL, "sales_person_id" uuid NOT NULL, "branch_id" uuid NOT NULL, "division_id" uuid NOT NULL, "customer_id" uuid NOT NULL, "address" text NOT NULL, "latitude" double precision, "longitude" double precision, "notes" text, "status" text DEFAULT 'draft' NOT NULL, "created_at" bigint NOT NULL, "updated_at" bigint NOT NULL, "created_by" uuid NOT NULL, "updated_by" uuid NOT NULL ); --> statement-breakpoint CREATE TABLE "sales_order_products" ( "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL, "sales_order_id" uuid NOT NULL, "product_id" uuid NOT NULL, "quantity" numeric(18, 4) NOT NULL, "price" numeric(18, 4) NOT NULL ); --> statement-breakpoint CREATE TABLE "sales_order_images" ( "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL, "sales_order_id" uuid NOT NULL, "url" varchar(2048) NOT NULL, "description" varchar(255) ); --> statement-breakpoint CREATE TABLE "packing_slips" ( "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL, "code" varchar(32) NOT NULL, "sales_order_id" uuid, "sales_order_number" varchar(32), "date" bigint NOT NULL, "customer_id" uuid NOT NULL, "address" text NOT NULL, "latitude" double precision, "longitude" double precision, "notes" text, "status" text DEFAULT 'draft' NOT NULL, "created_at" bigint NOT NULL, "updated_at" bigint NOT NULL, "created_by" uuid NOT NULL, "updated_by" uuid NOT NULL ); --> statement-breakpoint CREATE TABLE "packing_slip_products" ( "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL, "packing_slip_id" uuid NOT NULL, "product_id" uuid NOT NULL, "quantity" numeric(18, 4) NOT NULL, "price" numeric(18, 4) NOT NULL ); --> statement-breakpoint CREATE TABLE "sales_invoices" ( "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL, "code" varchar(32) NOT NULL, "date" bigint NOT NULL, "sales_person_id" uuid NOT NULL, "branch_id" uuid NOT NULL, "division_id" uuid NOT NULL, "customer_id" uuid NOT NULL, "sales_order_id" uuid, "sales_order_code" varchar(32), "packing_slip_id" uuid, "packing_slip_code" varchar(32), "balance" numeric(18, 4) NOT NULL, "notes" text, "status" text DEFAULT 'draft' NOT NULL, "created_at" bigint NOT NULL, "updated_at" bigint NOT NULL, "created_by" uuid NOT NULL, "updated_by" uuid NOT NULL ); --> statement-breakpoint CREATE TABLE "sales_invoice_products" ( "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL, "sales_invoice_id" uuid NOT NULL, "product_id" uuid NOT NULL, "quantity" numeric(18, 4) NOT NULL, "price" numeric(18, 4) NOT NULL ); --> statement-breakpoint CREATE TABLE "sales_payments" ( "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL, "code" varchar(32) NOT NULL, "date" bigint NOT NULL, "notes" text, "status" text DEFAULT 'draft' NOT NULL, "created_at" bigint NOT NULL, "updated_at" bigint NOT NULL, "created_by" uuid NOT NULL, "updated_by" uuid NOT NULL ); --> statement-breakpoint CREATE TABLE "sales_payment_images" ( "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL, "sales_payment_id" uuid NOT NULL, "url" varchar(2048) NOT NULL, "description" varchar(255) ); --> statement-breakpoint CREATE TABLE "sales_payment_invoices" ( "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL, "sales_payment_id" uuid NOT NULL, "sales_invoice_id" uuid NOT NULL, "amount" numeric(18, 4) NOT NULL ); --> statement-breakpoint ALTER TABLE "sales_requests" ADD CONSTRAINT "sales_requests_sales_person_id_employees_id_fk" FOREIGN KEY ("sales_person_id") REFERENCES "public"."employees"("id") ON DELETE restrict ON UPDATE no action;--> statement-breakpoint ALTER TABLE "sales_requests" ADD CONSTRAINT "sales_requests_branch_id_branches_id_fk" FOREIGN KEY ("branch_id") REFERENCES "public"."branches"("id") ON DELETE restrict ON UPDATE no action;--> statement-breakpoint ALTER TABLE "sales_requests" ADD CONSTRAINT "sales_requests_division_id_divisions_id_fk" FOREIGN KEY ("division_id") REFERENCES "public"."divisions"("id") ON DELETE restrict ON UPDATE no action;--> statement-breakpoint ALTER TABLE "sales_requests" ADD CONSTRAINT "sales_requests_customer_id_customers_id_fk" FOREIGN KEY ("customer_id") REFERENCES "public"."customers"("id") ON DELETE restrict ON UPDATE no action;--> statement-breakpoint ALTER TABLE "sales_requests" ADD CONSTRAINT "sales_requests_created_by_users_id_fk" FOREIGN KEY ("created_by") REFERENCES "public"."users"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint ALTER TABLE "sales_requests" ADD CONSTRAINT "sales_requests_updated_by_users_id_fk" FOREIGN KEY ("updated_by") REFERENCES "public"."users"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint ALTER TABLE "sales_request_products" ADD CONSTRAINT "sales_request_products_sales_request_id_sales_requests_id_fk" FOREIGN KEY ("sales_request_id") REFERENCES "public"."sales_requests"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint ALTER TABLE "sales_request_products" ADD CONSTRAINT "sales_request_products_product_id_products_id_fk" FOREIGN KEY ("product_id") REFERENCES "public"."products"("id") ON DELETE restrict ON UPDATE no action;--> statement-breakpoint ALTER TABLE "sales_request_images" ADD CONSTRAINT "sales_request_images_sales_request_id_sales_requests_id_fk" FOREIGN KEY ("sales_request_id") REFERENCES "public"."sales_requests"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint ALTER TABLE "sales_orders" ADD CONSTRAINT "sales_orders_sales_request_id_sales_requests_id_fk" FOREIGN KEY ("sales_request_id") REFERENCES "public"."sales_requests"("id") ON DELETE restrict ON UPDATE no action;--> statement-breakpoint ALTER TABLE "sales_orders" ADD CONSTRAINT "sales_orders_sales_person_id_employees_id_fk" FOREIGN KEY ("sales_person_id") REFERENCES "public"."employees"("id") ON DELETE restrict ON UPDATE no action;--> statement-breakpoint ALTER TABLE "sales_orders" ADD CONSTRAINT "sales_orders_branch_id_branches_id_fk" FOREIGN KEY ("branch_id") REFERENCES "public"."branches"("id") ON DELETE restrict ON UPDATE no action;--> statement-breakpoint ALTER TABLE "sales_orders" ADD CONSTRAINT "sales_orders_division_id_divisions_id_fk" FOREIGN KEY ("division_id") REFERENCES "public"."divisions"("id") ON DELETE restrict ON UPDATE no action;--> statement-breakpoint ALTER TABLE "sales_orders" ADD CONSTRAINT "sales_orders_customer_id_customers_id_fk" FOREIGN KEY ("customer_id") REFERENCES "public"."customers"("id") ON DELETE restrict ON UPDATE no action;--> statement-breakpoint ALTER TABLE "sales_orders" ADD CONSTRAINT "sales_orders_created_by_users_id_fk" FOREIGN KEY ("created_by") REFERENCES "public"."users"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint ALTER TABLE "sales_orders" ADD CONSTRAINT "sales_orders_updated_by_users_id_fk" FOREIGN KEY ("updated_by") REFERENCES "public"."users"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint ALTER TABLE "sales_order_products" ADD CONSTRAINT "sales_order_products_sales_order_id_sales_orders_id_fk" FOREIGN KEY ("sales_order_id") REFERENCES "public"."sales_orders"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint ALTER TABLE "sales_order_products" ADD CONSTRAINT "sales_order_products_product_id_products_id_fk" FOREIGN KEY ("product_id") REFERENCES "public"."products"("id") ON DELETE restrict ON UPDATE no action;--> statement-breakpoint ALTER TABLE "sales_order_images" ADD CONSTRAINT "sales_order_images_sales_order_id_sales_orders_id_fk" FOREIGN KEY ("sales_order_id") REFERENCES "public"."sales_orders"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint ALTER TABLE "packing_slips" ADD CONSTRAINT "packing_slips_sales_order_id_sales_orders_id_fk" FOREIGN KEY ("sales_order_id") REFERENCES "public"."sales_orders"("id") ON DELETE restrict ON UPDATE no action;--> statement-breakpoint ALTER TABLE "packing_slips" ADD CONSTRAINT "packing_slips_customer_id_customers_id_fk" FOREIGN KEY ("customer_id") REFERENCES "public"."customers"("id") ON DELETE restrict ON UPDATE no action;--> statement-breakpoint ALTER TABLE "packing_slips" ADD CONSTRAINT "packing_slips_created_by_users_id_fk" FOREIGN KEY ("created_by") REFERENCES "public"."users"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint ALTER TABLE "packing_slips" ADD CONSTRAINT "packing_slips_updated_by_users_id_fk" FOREIGN KEY ("updated_by") REFERENCES "public"."users"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint ALTER TABLE "packing_slip_products" ADD CONSTRAINT "packing_slip_products_packing_slip_id_packing_slips_id_fk" FOREIGN KEY ("packing_slip_id") REFERENCES "public"."packing_slips"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint ALTER TABLE "packing_slip_products" ADD CONSTRAINT "packing_slip_products_product_id_products_id_fk" FOREIGN KEY ("product_id") REFERENCES "public"."products"("id") ON DELETE restrict ON UPDATE no action;--> statement-breakpoint ALTER TABLE "sales_invoices" ADD CONSTRAINT "sales_invoices_sales_person_id_employees_id_fk" FOREIGN KEY ("sales_person_id") REFERENCES "public"."employees"("id") ON DELETE restrict ON UPDATE no action;--> statement-breakpoint ALTER TABLE "sales_invoices" ADD CONSTRAINT "sales_invoices_branch_id_branches_id_fk" FOREIGN KEY ("branch_id") REFERENCES "public"."branches"("id") ON DELETE restrict ON UPDATE no action;--> statement-breakpoint ALTER TABLE "sales_invoices" ADD CONSTRAINT "sales_invoices_division_id_divisions_id_fk" FOREIGN KEY ("division_id") REFERENCES "public"."divisions"("id") ON DELETE restrict ON UPDATE no action;--> statement-breakpoint ALTER TABLE "sales_invoices" ADD CONSTRAINT "sales_invoices_customer_id_customers_id_fk" FOREIGN KEY ("customer_id") REFERENCES "public"."customers"("id") ON DELETE restrict ON UPDATE no action;--> statement-breakpoint ALTER TABLE "sales_invoices" ADD CONSTRAINT "sales_invoices_sales_order_id_sales_orders_id_fk" FOREIGN KEY ("sales_order_id") REFERENCES "public"."sales_orders"("id") ON DELETE restrict ON UPDATE no action;--> statement-breakpoint ALTER TABLE "sales_invoices" ADD CONSTRAINT "sales_invoices_packing_slip_id_packing_slips_id_fk" FOREIGN KEY ("packing_slip_id") REFERENCES "public"."packing_slips"("id") ON DELETE restrict ON UPDATE no action;--> statement-breakpoint ALTER TABLE "sales_invoices" ADD CONSTRAINT "sales_invoices_created_by_users_id_fk" FOREIGN KEY ("created_by") REFERENCES "public"."users"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint ALTER TABLE "sales_invoices" ADD CONSTRAINT "sales_invoices_updated_by_users_id_fk" FOREIGN KEY ("updated_by") REFERENCES "public"."users"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint ALTER TABLE "sales_invoice_products" ADD CONSTRAINT "sales_invoice_products_sales_invoice_id_sales_invoices_id_fk" FOREIGN KEY ("sales_invoice_id") REFERENCES "public"."sales_invoices"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint ALTER TABLE "sales_invoice_products" ADD CONSTRAINT "sales_invoice_products_product_id_products_id_fk" FOREIGN KEY ("product_id") REFERENCES "public"."products"("id") ON DELETE restrict ON UPDATE no action;--> statement-breakpoint ALTER TABLE "sales_payments" ADD CONSTRAINT "sales_payments_created_by_users_id_fk" FOREIGN KEY ("created_by") REFERENCES "public"."users"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint ALTER TABLE "sales_payments" ADD CONSTRAINT "sales_payments_updated_by_users_id_fk" FOREIGN KEY ("updated_by") REFERENCES "public"."users"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint ALTER TABLE "sales_payment_images" ADD CONSTRAINT "sales_payment_images_sales_payment_id_sales_payments_id_fk" FOREIGN KEY ("sales_payment_id") REFERENCES "public"."sales_payments"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint ALTER TABLE "sales_payment_invoices" ADD CONSTRAINT "sales_payment_invoices_sales_payment_id_sales_payments_id_fk" FOREIGN KEY ("sales_payment_id") REFERENCES "public"."sales_payments"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint ALTER TABLE "sales_payment_invoices" ADD CONSTRAINT "sales_payment_invoices_sales_invoice_id_sales_invoices_id_fk" FOREIGN KEY ("sales_invoice_id") REFERENCES "public"."sales_invoices"("id") ON DELETE restrict ON UPDATE no action;--> statement-breakpoint CREATE UNIQUE INDEX "sales_requests_code_unique" ON "sales_requests" USING btree ("code"); --> statement-breakpoint CREATE UNIQUE INDEX "sales_orders_code_unique" ON "sales_orders" USING btree ("code"); --> statement-breakpoint CREATE UNIQUE INDEX "packing_slips_code_unique" ON "packing_slips" USING btree ("code"); --> statement-breakpoint CREATE UNIQUE INDEX "sales_invoices_code_unique" ON "sales_invoices" USING btree ("code"); --> statement-breakpoint CREATE UNIQUE INDEX "sales_payments_code_unique" ON "sales_payments" USING btree ("code"); --> statement-breakpoint INSERT INTO "privilege_keys" ("code", "label", "sort_order") VALUES ('SALES.REQUEST', 'Sales requests', 8), ('SALES.ORDER', 'Sales orders', 9), ('SALES.PACKING_SLIP', 'Packing slips', 10), ('SALES.INVOICE', 'Sales invoices', 11), ('SALES.PAYMENT', 'Sales payments', 12); --> statement-breakpoint ALTER TABLE "packing_slips" ADD COLUMN "sales_person_id" uuid;--> statement-breakpoint ALTER TABLE "packing_slips" ADD COLUMN "branch_id" uuid;--> statement-breakpoint ALTER TABLE "packing_slips" ADD COLUMN "division_id" uuid;--> statement-breakpoint ALTER TABLE "sales_invoices" ADD COLUMN "address" text;--> statement-breakpoint ALTER TABLE "sales_invoices" ADD COLUMN "latitude" double precision;--> statement-breakpoint ALTER TABLE "sales_invoices" ADD COLUMN "longitude" double precision;--> statement-breakpoint ALTER TABLE "sales_payments" ADD COLUMN "sales_person_id" uuid;--> statement-breakpoint ALTER TABLE "sales_payments" ADD COLUMN "branch_id" uuid;--> statement-breakpoint ALTER TABLE "sales_payments" ADD COLUMN "division_id" uuid;--> statement-breakpoint ALTER TABLE "sales_payments" ADD COLUMN "customer_id" uuid;--> statement-breakpoint ALTER TABLE "sales_payments" ADD COLUMN "address" text;--> statement-breakpoint ALTER TABLE "sales_payments" ADD COLUMN "latitude" double precision;--> statement-breakpoint ALTER TABLE "sales_payments" ADD COLUMN "longitude" double precision;--> statement-breakpoint CREATE TABLE "packing_slip_images" ( "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL, "packing_slip_id" uuid NOT NULL, "url" varchar(2048) NOT NULL, "description" varchar(255) ); --> statement-breakpoint CREATE TABLE "sales_invoice_images" ( "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL, "sales_invoice_id" uuid NOT NULL, "url" varchar(2048) NOT NULL, "description" varchar(255) ); --> statement-breakpoint CREATE TABLE "sales_payment_products" ( "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL, "sales_payment_id" uuid NOT NULL, "product_id" uuid NOT NULL, "quantity" numeric(18, 4) NOT NULL, "price" numeric(18, 4) NOT NULL ); --> statement-breakpoint ALTER TABLE "packing_slip_images" ADD CONSTRAINT "packing_slip_images_packing_slip_id_packing_slips_id_fk" FOREIGN KEY ("packing_slip_id") REFERENCES "public"."packing_slips"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint ALTER TABLE "sales_invoice_images" ADD CONSTRAINT "sales_invoice_images_sales_invoice_id_sales_invoices_id_fk" FOREIGN KEY ("sales_invoice_id") REFERENCES "public"."sales_invoices"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint ALTER TABLE "sales_payment_products" ADD CONSTRAINT "sales_payment_products_sales_payment_id_sales_payments_id_fk" FOREIGN KEY ("sales_payment_id") REFERENCES "public"."sales_payments"("id") ON DELETE cascade ON UPDATE no action;