@accounter/client
Version:
Accounter client application
50 lines (43 loc) • 1.5 kB
text/typescript
import {
DocumentType,
type CreditInvoice,
type Invoice,
type InvoiceReceipt,
type Proforma,
type Receipt,
} from '../gql/graphql.js';
export function isDocumentInvoice(doc: unknown): doc is Partial<Invoice> {
return (doc as Invoice)?.__typename === 'Invoice';
}
export function isDocumentReceipt(doc: unknown): doc is Partial<Receipt> {
return (doc as Receipt)?.__typename === 'Receipt';
}
export function isDocumentInvoiceReceipt(doc: unknown): doc is Partial<InvoiceReceipt> {
return (doc as InvoiceReceipt)?.__typename === 'InvoiceReceipt';
}
export function isDocumentCreditInvoice(doc: unknown): doc is Partial<CreditInvoice> {
return (doc as CreditInvoice)?.__typename === 'CreditInvoice';
}
export function isDocumentProforma(doc: unknown): doc is Partial<Proforma> {
return (doc as Proforma)?.__typename === 'Proforma';
}
export function getDocumentNameFromType(documentType: DocumentType): string {
switch (documentType) {
case DocumentType.Invoice:
return 'Tax Invoice';
case DocumentType.Proforma:
return 'Proforma Invoice';
case DocumentType.InvoiceReceipt:
return 'Invoice / Receipt';
case DocumentType.CreditInvoice:
return 'Credit Note';
case DocumentType.Receipt:
return 'Receipt';
case DocumentType.Other:
return 'Other Document';
case DocumentType.Unprocessed:
return 'Unprocessed Document';
default:
throw new Error(`Unsupported document type: ${documentType}`);
}
}