Add per-quantity TPago payment links for multi-ticket checkout.
Each ticket quantity (1-5) can have its own TPago link so checkout, emails, and admin config use the correct fixed-amount URL.
This commit is contained in:
@@ -259,6 +259,10 @@ async function migrate() {
|
||||
id TEXT PRIMARY KEY,
|
||||
tpago_enabled INTEGER NOT NULL DEFAULT 0,
|
||||
tpago_link TEXT,
|
||||
tpago_link_2 TEXT,
|
||||
tpago_link_3 TEXT,
|
||||
tpago_link_4 TEXT,
|
||||
tpago_link_5 TEXT,
|
||||
tpago_instructions TEXT,
|
||||
tpago_instructions_es TEXT,
|
||||
bank_transfer_enabled INTEGER NOT NULL DEFAULT 0,
|
||||
@@ -283,6 +287,13 @@ async function migrate() {
|
||||
await (db as any).run(sql`ALTER TABLE payment_options ADD COLUMN allow_duplicate_bookings INTEGER NOT NULL DEFAULT 0`);
|
||||
} catch (e) { /* column may already exist */ }
|
||||
|
||||
// Add per-quantity TPago link columns to payment_options if they don't exist
|
||||
for (const col of ['tpago_link_2', 'tpago_link_3', 'tpago_link_4', 'tpago_link_5']) {
|
||||
try {
|
||||
await (db as any).run(sql.raw(`ALTER TABLE payment_options ADD COLUMN ${col} TEXT`));
|
||||
} catch (e) { /* column may already exist */ }
|
||||
}
|
||||
|
||||
// Event payment overrides table
|
||||
await (db as any).run(sql`
|
||||
CREATE TABLE IF NOT EXISTS event_payment_overrides (
|
||||
@@ -290,6 +301,10 @@ async function migrate() {
|
||||
event_id TEXT NOT NULL REFERENCES events(id),
|
||||
tpago_enabled INTEGER,
|
||||
tpago_link TEXT,
|
||||
tpago_link_2 TEXT,
|
||||
tpago_link_3 TEXT,
|
||||
tpago_link_4 TEXT,
|
||||
tpago_link_5 TEXT,
|
||||
tpago_instructions TEXT,
|
||||
tpago_instructions_es TEXT,
|
||||
bank_transfer_enabled INTEGER,
|
||||
@@ -309,6 +324,13 @@ async function migrate() {
|
||||
)
|
||||
`);
|
||||
|
||||
// Add per-quantity TPago link columns to event_payment_overrides if they don't exist
|
||||
for (const col of ['tpago_link_2', 'tpago_link_3', 'tpago_link_4', 'tpago_link_5']) {
|
||||
try {
|
||||
await (db as any).run(sql.raw(`ALTER TABLE event_payment_overrides ADD COLUMN ${col} TEXT`));
|
||||
} catch (e) { /* column may already exist */ }
|
||||
}
|
||||
|
||||
await (db as any).run(sql`
|
||||
CREATE TABLE IF NOT EXISTS contacts (
|
||||
id TEXT PRIMARY KEY,
|
||||
@@ -702,6 +724,10 @@ async function migrate() {
|
||||
id UUID PRIMARY KEY,
|
||||
tpago_enabled INTEGER NOT NULL DEFAULT 0,
|
||||
tpago_link VARCHAR(500),
|
||||
tpago_link_2 VARCHAR(500),
|
||||
tpago_link_3 VARCHAR(500),
|
||||
tpago_link_4 VARCHAR(500),
|
||||
tpago_link_5 VARCHAR(500),
|
||||
tpago_instructions TEXT,
|
||||
tpago_instructions_es TEXT,
|
||||
bank_transfer_enabled INTEGER NOT NULL DEFAULT 0,
|
||||
@@ -726,12 +752,23 @@ async function migrate() {
|
||||
await (db as any).execute(sql`ALTER TABLE payment_options ADD COLUMN allow_duplicate_bookings INTEGER NOT NULL DEFAULT 0`);
|
||||
} catch (e) { /* column may already exist */ }
|
||||
|
||||
// Add per-quantity TPago link columns to payment_options if they don't exist
|
||||
for (const col of ['tpago_link_2', 'tpago_link_3', 'tpago_link_4', 'tpago_link_5']) {
|
||||
try {
|
||||
await (db as any).execute(sql.raw(`ALTER TABLE payment_options ADD COLUMN ${col} VARCHAR(500)`));
|
||||
} catch (e) { /* column may already exist */ }
|
||||
}
|
||||
|
||||
await (db as any).execute(sql`
|
||||
CREATE TABLE IF NOT EXISTS event_payment_overrides (
|
||||
id UUID PRIMARY KEY,
|
||||
event_id UUID NOT NULL REFERENCES events(id),
|
||||
tpago_enabled INTEGER,
|
||||
tpago_link VARCHAR(500),
|
||||
tpago_link_2 VARCHAR(500),
|
||||
tpago_link_3 VARCHAR(500),
|
||||
tpago_link_4 VARCHAR(500),
|
||||
tpago_link_5 VARCHAR(500),
|
||||
tpago_instructions TEXT,
|
||||
tpago_instructions_es TEXT,
|
||||
bank_transfer_enabled INTEGER,
|
||||
@@ -751,6 +788,13 @@ async function migrate() {
|
||||
)
|
||||
`);
|
||||
|
||||
// Add per-quantity TPago link columns to event_payment_overrides if they don't exist
|
||||
for (const col of ['tpago_link_2', 'tpago_link_3', 'tpago_link_4', 'tpago_link_5']) {
|
||||
try {
|
||||
await (db as any).execute(sql.raw(`ALTER TABLE event_payment_overrides ADD COLUMN ${col} VARCHAR(500)`));
|
||||
} catch (e) { /* column may already exist */ }
|
||||
}
|
||||
|
||||
await (db as any).execute(sql`
|
||||
CREATE TABLE IF NOT EXISTS contacts (
|
||||
id UUID PRIMARY KEY,
|
||||
|
||||
@@ -135,6 +135,10 @@ export const sqlitePaymentOptions = sqliteTable('payment_options', {
|
||||
// TPago configuration
|
||||
tpagoEnabled: integer('tpago_enabled', { mode: 'boolean' }).notNull().default(false),
|
||||
tpagoLink: text('tpago_link'),
|
||||
tpagoLink2: text('tpago_link_2'),
|
||||
tpagoLink3: text('tpago_link_3'),
|
||||
tpagoLink4: text('tpago_link_4'),
|
||||
tpagoLink5: text('tpago_link_5'),
|
||||
tpagoInstructions: text('tpago_instructions'),
|
||||
tpagoInstructionsEs: text('tpago_instructions_es'),
|
||||
// Bank Transfer configuration
|
||||
@@ -166,6 +170,10 @@ export const sqliteEventPaymentOverrides = sqliteTable('event_payment_overrides'
|
||||
// Override flags (null means use global)
|
||||
tpagoEnabled: integer('tpago_enabled', { mode: 'boolean' }),
|
||||
tpagoLink: text('tpago_link'),
|
||||
tpagoLink2: text('tpago_link_2'),
|
||||
tpagoLink3: text('tpago_link_3'),
|
||||
tpagoLink4: text('tpago_link_4'),
|
||||
tpagoLink5: text('tpago_link_5'),
|
||||
tpagoInstructions: text('tpago_instructions'),
|
||||
tpagoInstructionsEs: text('tpago_instructions_es'),
|
||||
bankTransferEnabled: integer('bank_transfer_enabled', { mode: 'boolean' }),
|
||||
@@ -467,6 +475,10 @@ export const pgPaymentOptions = pgTable('payment_options', {
|
||||
id: uuid('id').primaryKey(),
|
||||
tpagoEnabled: pgInteger('tpago_enabled').notNull().default(0),
|
||||
tpagoLink: varchar('tpago_link', { length: 500 }),
|
||||
tpagoLink2: varchar('tpago_link_2', { length: 500 }),
|
||||
tpagoLink3: varchar('tpago_link_3', { length: 500 }),
|
||||
tpagoLink4: varchar('tpago_link_4', { length: 500 }),
|
||||
tpagoLink5: varchar('tpago_link_5', { length: 500 }),
|
||||
tpagoInstructions: pgText('tpago_instructions'),
|
||||
tpagoInstructionsEs: pgText('tpago_instructions_es'),
|
||||
bankTransferEnabled: pgInteger('bank_transfer_enabled').notNull().default(0),
|
||||
@@ -492,6 +504,10 @@ export const pgEventPaymentOverrides = pgTable('event_payment_overrides', {
|
||||
eventId: uuid('event_id').notNull().references(() => pgEvents.id),
|
||||
tpagoEnabled: pgInteger('tpago_enabled'),
|
||||
tpagoLink: varchar('tpago_link', { length: 500 }),
|
||||
tpagoLink2: varchar('tpago_link_2', { length: 500 }),
|
||||
tpagoLink3: varchar('tpago_link_3', { length: 500 }),
|
||||
tpagoLink4: varchar('tpago_link_4', { length: 500 }),
|
||||
tpagoLink5: varchar('tpago_link_5', { length: 500 }),
|
||||
tpagoInstructions: pgText('tpago_instructions'),
|
||||
tpagoInstructionsEs: pgText('tpago_instructions_es'),
|
||||
bankTransferEnabled: pgInteger('bank_transfer_enabled'),
|
||||
|
||||
Reference in New Issue
Block a user