diff --git a/src/collections/invoices.ts b/src/collections/invoices.ts index 9d9cc26..fdaf804 100644 --- a/src/collections/invoices.ts +++ b/src/collections/invoices.ts @@ -69,7 +69,7 @@ export function createInvoicesCollection( description: 'Customer name', readOnly: customerCollectionSlug && customerInfoExtractor ? true : false, }, - required: true, + required: !customerCollectionSlug || !customerInfoExtractor, }, { name: 'email', @@ -78,7 +78,7 @@ export function createInvoicesCollection( description: 'Customer email address', readOnly: customerCollectionSlug && customerInfoExtractor ? true : false, }, - required: true, + required: !customerCollectionSlug || !customerInfoExtractor, }, { name: 'phone', @@ -123,7 +123,7 @@ export function createInvoicesCollection( description: 'Address line 1', readOnly: customerCollectionSlug && customerInfoExtractor ? true : false, }, - required: true, + required: !customerCollectionSlug || !customerInfoExtractor, }, { name: 'line2', @@ -139,7 +139,7 @@ export function createInvoicesCollection( admin: { readOnly: customerCollectionSlug && customerInfoExtractor ? true : false, }, - required: true, + required: !customerCollectionSlug || !customerInfoExtractor, }, { name: 'state', @@ -156,7 +156,7 @@ export function createInvoicesCollection( description: 'Postal or ZIP code', readOnly: customerCollectionSlug && customerInfoExtractor ? true : false, }, - required: true, + required: !customerCollectionSlug || !customerInfoExtractor, }, { name: 'country', @@ -166,7 +166,7 @@ export function createInvoicesCollection( readOnly: customerCollectionSlug && customerInfoExtractor ? true : false, }, maxLength: 2, - required: true, + required: !customerCollectionSlug || !customerInfoExtractor, }, ], }, diff --git a/src/index.ts b/src/index.ts index 372b61e..303a57d 100644 --- a/src/index.ts +++ b/src/index.ts @@ -2,6 +2,7 @@ import type { Config } from 'payload' import type { BillingPluginConfig, CustomerInfoExtractor } from './types' +import { createCustomersCollection } from './collections/customers' import { createInvoicesCollection } from './collections/invoices' import { createPaymentsCollection } from './collections/payments' import { createRefundsCollection } from './collections/refunds' @@ -41,6 +42,7 @@ export const billingPlugin = (pluginConfig: BillingPluginConfig = {}) => (config config.collections.push( createPaymentsCollection(pluginConfig.collections?.payments || 'payments'), + createCustomersCollection(customerSlug), createInvoicesCollection( pluginConfig.collections?.invoices || 'invoices', pluginConfig.collections?.customerRelation !== false ? customerSlug : undefined, @@ -57,18 +59,19 @@ export const billingPlugin = (pluginConfig: BillingPluginConfig = {}) => (config config.endpoints?.push( // Webhook endpoints { - handler: (req) => { + handler: (_req) => { try { const provider = null if (!provider) { return Response.json({ error: 'Provider not found' }, { status: 404 }) } - // TODO: Process webhook event and update database return Response.json({ received: true }) } catch (error) { + // TODO: Use proper logger instead of console + // eslint-disable-next-line no-console console.error('[BILLING] Webhook error:', error) return Response.json({ error: 'Webhook processing failed' }, { status: 400 }) }