Files
payload/test/plugin-stripe/collections/Customers.ts
2023-12-14 11:56:33 -05:00

113 lines
2.7 KiB
TypeScript

import type { CollectionConfig } from '../../../packages/payload/src/collections/config/types'
import { LinkToDoc } from '../../../packages/plugin-stripe/src/ui/LinkToDoc'
import { customersSlug } from '../shared'
export const Customers: CollectionConfig = {
slug: customersSlug,
timestamps: true,
admin: {
useAsTitle: 'email',
defaultColumns: ['email', 'name'],
},
auth: {
useAPIKey: true,
},
fields: [
{
name: 'name',
label: 'Name',
type: 'text',
},
{
name: 'subscriptions',
label: 'Subscriptions',
type: 'array',
admin: {
description:
'All subscriptions are managed in Stripe and will be reflected here. Use the link in the sidebar to go directly to this customer in Stripe to begin managing their subscriptions.',
},
fields: [
{
name: 'link',
label: 'Link',
type: 'ui',
admin: {
components: {
Field: (args) =>
LinkToDoc({
...args,
isTestKey: process.env.PAYLOAD_PUBLIC_IS_STRIPE_TEST_KEY === 'true',
stripeResourceType: 'subscriptions',
nameOfIDField: `${args.path}.stripeSubscriptionID`,
}),
},
},
},
{
name: 'stripeSubscriptionID',
label: 'Stripe ID',
type: 'text',
admin: {
readOnly: true,
},
},
{
name: 'stripeProductID',
label: 'Product ID',
type: 'text',
admin: {
readOnly: true,
},
},
{
name: 'product',
type: 'relationship',
relationTo: 'products',
admin: {
readOnly: true,
},
},
{
name: 'status',
label: 'Status',
type: 'select',
admin: {
readOnly: true,
},
options: [
{
label: 'Active',
value: 'active',
},
{
label: 'Canceled',
value: 'canceled',
},
{
label: 'Incomplete',
value: 'incomplete',
},
{
label: 'Incomplete Expired',
value: 'incomplete_expired',
},
{
label: 'Past Due',
value: 'past_due',
},
{
label: 'Trialing',
value: 'trialing',
},
{
label: 'Unpaid',
value: 'unpaid',
},
],
},
],
},
],
}