48 lines
1.3 KiB
TypeScript
48 lines
1.3 KiB
TypeScript
import {
|
|
TaxCode as CwTaxCode,
|
|
TaxCodeLevel as CwTaxCodeLevel,
|
|
} from "../../generated/prisma/client";
|
|
import { TaxCode as ApiTaxCode } from "../../../api/generated/prisma/client";
|
|
import { Translation } from "./types";
|
|
import { skipRow } from "./types";
|
|
|
|
type CwTaxCodeWithLevels = CwTaxCode & {
|
|
levels: CwTaxCodeLevel[];
|
|
};
|
|
|
|
export const taxCodeTranslation: Translation<
|
|
CwTaxCodeWithLevels,
|
|
ApiTaxCode
|
|
> = {
|
|
values: [
|
|
{ from: "taxCodeRecId", to: "id" },
|
|
{
|
|
from: "taxCodeId",
|
|
to: "code",
|
|
process: (value) => value ?? skipRow("taxCodeId is null"),
|
|
},
|
|
{
|
|
from: "codeCaption",
|
|
to: "codeCaption",
|
|
process: (value, _, row) =>
|
|
value ?? (row.taxCodeId as string | null) ?? "",
|
|
},
|
|
{ from: "description", to: "description" },
|
|
{
|
|
from: "taxCodeRecId",
|
|
to: "rate",
|
|
process: (_, __, row) => {
|
|
const level = (row as unknown as CwTaxCodeWithLevels).levels.find(
|
|
(l) => l.taxXref !== null
|
|
);
|
|
return level ? Number(level.taxRate) : null;
|
|
},
|
|
},
|
|
{ from: "defaultFlag", to: "defaultFlag" },
|
|
{ from: "enteredBy", to: "createdBy" },
|
|
{ from: "updatedBy", to: "updatedBy" },
|
|
{ from: "dateEnteredUtc", to: "createdAt" },
|
|
{ from: "lastUpdatedUtc", to: "updatedAt" },
|
|
],
|
|
};
|