@accounter/server
Version:
65 lines (60 loc) • 1.78 kB
text/typescript
import type {
ExpenseDocumentType,
DocumentType as GreenInvoiceDocumentType,
} from '@accounter/green-invoice-graphql';
import { DocumentType } from '@shared/gql-types';
export function normalizeDocumentType(
rawType?: GreenInvoiceDocumentType | ExpenseDocumentType | number | null,
): DocumentType {
if (!rawType) {
return DocumentType.Unprocessed;
}
if (typeof rawType === 'string' && rawType.startsWith('_')) {
const int = parseInt(rawType.replace('_', ''));
if (Number.isInteger(int)) {
rawType = int;
}
}
switch (rawType) {
case 20:
// חשבון / אישור תשלום
return DocumentType.Invoice;
case 300:
// חשבונית עסקה
return DocumentType.Proforma;
case 305:
// חשבונית מס
return DocumentType.Invoice;
case 320:
// חשבונית מס\קבלה
return DocumentType.InvoiceReceipt;
case 330:
// חשבונית זיכוי
return DocumentType.CreditInvoice;
case 400:
// קבלה
return DocumentType.Receipt;
case 405:
// קבלה על תרומה
return DocumentType.Unprocessed;
default:
console.log(`Got a new document type from Green Invoice: ${rawType}`);
return DocumentType.Unprocessed;
}
}
export function getGreenInvoiceDocumentType(documentType: DocumentType): GreenInvoiceDocumentType {
switch (documentType) {
case DocumentType.Invoice:
return '_305';
case DocumentType.Proforma:
return '_300';
case DocumentType.InvoiceReceipt:
return '_320';
case DocumentType.CreditInvoice:
return '_330';
case DocumentType.Receipt:
return '_400';
default:
throw new Error(`Unsupported document type: ${documentType}`);
}
}