import { SettingMenu } from '@components/admin/SettingMenu.js'; import Spinner from '@components/admin/Spinner.js'; import { Form } from '@components/common/form/Form.js'; import { SelectField } from '@components/common/form/SelectField.js'; import { Button } from '@components/common/ui/Button.js'; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@components/common/ui/Card.js'; import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogTrigger } from '@components/common/ui/Dialog.js'; import React from 'react'; import { useQuery } from 'urql'; import { TaxClasses } from './components/TaxClasses.js'; import { TaxClassForm } from './components/TaxClassForm.js'; const CountriesQuery = ` query Country($countries: [String]) { countries (countries: $countries) { value: code label: name provinces { value: code label: name } } } `; const TaxClassesQuery = ` query TaxClasses { taxClasses { items { taxClassId uuid name rates { taxRateId uuid name rate isCompound country province postcode priority updateApi deleteApi } addRateApi } } } `; interface TaxSettingProps { createTaxClassApi: string; saveSettingApi: string; setting: { defaultProductTaxClassId?: number; defaultShippingTaxClassId?: number; baseCalculationAddress?: string; }; } export default function TaxSetting({ createTaxClassApi, saveSettingApi, setting }: TaxSettingProps) { const [dialogOpen, setDialogOpen] = React.useState(false); const [countriesQueryData] = useQuery({ query: CountriesQuery }); const [taxClassesQueryData, reexecuteQuery] = useQuery({ query: TaxClassesQuery }); if (countriesQueryData.fetching || taxClassesQueryData.fetching) { return (
); } return (
Tax calculation configuration Configure the tax classes that will be available to your customers at checkout.
({ value: taxClass.taxClassId, label: taxClass.name }) ) || [] )} helperText="This is the tax class applied to shipping costs." />
Tax classes Manage tax classes and tax rates for different regions.
Create New Tax Class setDialogOpen(false)} getTaxClasses={reexecuteQuery} />
); } export const layout = { areaId: 'content', sortOrder: 10 }; export const query = ` query Query { createTaxClassApi: url(routeId: "createTaxClass") saveSettingApi: url(routeId: "saveSetting") setting { defaultProductTaxClassId defaultShippingTaxClassId baseCalculationAddress } } `;