@@ -0,0 +1,127 @@
|
||||
// SPDX-License-Identifier: LicenseRef-ConusAI-Template-1.0
|
||||
import { SelectField, TextField } from "@conusai-kit/ui/patterns"
|
||||
import { FieldLegend, FieldSet } from "@conusai-kit/ui/primitives"
|
||||
import type { InvoiceTerms, SeriesView } from "../contract/index.js"
|
||||
import type { Labels } from "./labels.js"
|
||||
export function DraftFields({
|
||||
labels,
|
||||
data,
|
||||
series,
|
||||
count,
|
||||
}: {
|
||||
labels: Labels
|
||||
data?: InvoiceTerms
|
||||
series: SeriesView[]
|
||||
count: number
|
||||
}) {
|
||||
return (
|
||||
<>
|
||||
<SelectField
|
||||
name="series"
|
||||
label={labels.series}
|
||||
required
|
||||
defaultValue={data?.series_id}
|
||||
options={series
|
||||
.filter((row) => row.active && row.kind === (data?.type_code === "381" ? "credit_note" : "invoice"))
|
||||
.map((row) => ({ value: row.seriesId, label: row.code }))}
|
||||
/>
|
||||
<TextField name="currency" label={labels.currency} required maxLength={3} defaultValue={data?.currency} />
|
||||
<TextField name="issueDate" type="date" label={labels.issueDate} required defaultValue={data?.issue_date} />
|
||||
<TextField name="dueDate" type="date" label={labels.dueDate} defaultValue={data?.due_date ?? undefined} />
|
||||
<TextField name="buyerReference" label={labels.buyerReference} required defaultValue={data?.buyer_reference} />
|
||||
{(["seller", "buyer"] as const).map((side) => (
|
||||
<FieldSet key={side}>
|
||||
<FieldLegend>{labels[side]}</FieldLegend>
|
||||
<TextField
|
||||
name={`${side}.reference`}
|
||||
label={labels.partyRef}
|
||||
required
|
||||
defaultValue={data?.[side].reference}
|
||||
/>
|
||||
<TextField name={`${side}.name`} label={labels.name} required defaultValue={data?.[side].name} />
|
||||
<SelectField
|
||||
name={`${side}.vatScheme`}
|
||||
label={labels.vatScheme}
|
||||
defaultValue={data?.[side].vat_identifier?.scheme ?? "vat"}
|
||||
options={[
|
||||
{ value: "vat", label: labels.vatDefault },
|
||||
{ value: "9937", label: labels.vatLithuanian },
|
||||
]}
|
||||
/>
|
||||
<TextField
|
||||
name={`${side}.vatValue`}
|
||||
label={labels.vatIdentifier}
|
||||
defaultValue={data?.[side].vat_identifier?.value ?? undefined}
|
||||
/>
|
||||
<TextField
|
||||
name={`${side}.country`}
|
||||
label={labels.country}
|
||||
required
|
||||
maxLength={2}
|
||||
defaultValue={data?.[side].address.country}
|
||||
/>
|
||||
<TextField
|
||||
name={`${side}.street`}
|
||||
label={labels.street}
|
||||
defaultValue={data?.[side].address.street ?? undefined}
|
||||
/>
|
||||
<TextField name={`${side}.city`} label={labels.city} defaultValue={data?.[side].address.city ?? undefined} />
|
||||
<TextField
|
||||
name={`${side}.postcode`}
|
||||
label={labels.postcode}
|
||||
defaultValue={data?.[side].address.postal_code ?? undefined}
|
||||
/>
|
||||
<TextField
|
||||
name={`${side}.scheme`}
|
||||
label={labels.endpointScheme}
|
||||
required
|
||||
defaultValue={data?.[side].endpoint.scheme}
|
||||
/>
|
||||
<TextField
|
||||
name={`${side}.endpoint`}
|
||||
label={labels.endpoint}
|
||||
required
|
||||
defaultValue={data?.[side].endpoint.value}
|
||||
/>
|
||||
</FieldSet>
|
||||
))}
|
||||
{Array.from({ length: count }, (_, i) => (
|
||||
<FieldSet key={`line-${i}`}>
|
||||
<FieldLegend>
|
||||
{labels.item} {i + 1}
|
||||
</FieldLegend>
|
||||
<TextField name={`line.${i}.name`} label={labels.item} required defaultValue={data?.lines[i]?.item_name} />
|
||||
<TextField
|
||||
name={`line.${i}.quantity`}
|
||||
label={labels.quantity}
|
||||
required
|
||||
defaultValue={data?.lines[i]?.quantity}
|
||||
/>
|
||||
<TextField name={`line.${i}.unit`} label={labels.unit} required defaultValue={data?.lines[i]?.unit} />
|
||||
<TextField
|
||||
name={`line.${i}.price`}
|
||||
label={labels.price}
|
||||
required
|
||||
defaultValue={data?.lines[i]?.net_price.amount}
|
||||
/>
|
||||
<TextField
|
||||
name={`line.${i}.category`}
|
||||
label={labels.vatCategory}
|
||||
required
|
||||
defaultValue={data?.lines[i]?.vat_category}
|
||||
/>
|
||||
<TextField
|
||||
name={`line.${i}.rate`}
|
||||
label={labels.vatRate}
|
||||
defaultValue={data?.lines[i]?.vat_rate ?? undefined}
|
||||
/>
|
||||
<TextField
|
||||
name={`line.${i}.exemption`}
|
||||
label={labels.exemption}
|
||||
defaultValue={data?.lines[i]?.exemption_reason ?? undefined}
|
||||
/>
|
||||
</FieldSet>
|
||||
))}
|
||||
</>
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user