Files
bigcapital/packages/server/src/interfaces/BillPayment.ts
2024-07-24 18:57:51 +02:00

133 lines
2.8 KiB
TypeScript

import { Knex } from 'knex';
import { IBill } from './Bill';
import { AttachmentLinkDTO } from './Attachments';
export interface IBillPaymentEntry {
id?: number;
billPaymentId: number;
billId: number;
paymentAmount: number;
bill?: IBill;
}
export interface IBillPayment {
id?: number;
vendorId: number;
amount: number;
currencyCode: string;
reference: string;
paymentAccountId: number;
paymentNumber: string;
paymentDate: Date;
exchangeRate: number | null;
userId: number;
entries: IBillPaymentEntry[];
statement: string;
createdAt: Date;
updatedAt: Date;
localAmount?: number;
branchId?: number;
prepardExpensesAccountId?: number;
isPrepardExpense: boolean;
}
export interface IBillPaymentEntryDTO {
billId: number;
paymentAmount: number;
}
export interface IBillPaymentDTO {
vendorId: number;
paymentAccountId: number;
paymentNumber?: string;
paymentDate: Date;
exchangeRate?: number;
statement: string;
reference: string;
entries: IBillPaymentEntryDTO[];
branchId?: number;
attachments?: AttachmentLinkDTO[];
}
export interface IBillReceivePageEntry {
billId: number;
entryType: string;
billNo: string;
dueAmount: number;
amount: number;
totalPaymentAmount: number;
paymentAmount: number;
currencyCode: string;
date: Date | string;
}
export interface IBillPaymentsService {
validateVendorHasNoPayments(tenantId: number, vendorId): Promise<void>;
}
export interface IBillPaymentEventCreatedPayload {
tenantId: number;
billPayment: IBillPayment;
billPaymentDTO: IBillPaymentDTO;
billPaymentId: number;
trx: Knex.Transaction;
}
export interface IBillPaymentCreatingPayload {
tenantId: number;
billPaymentDTO: IBillPaymentDTO;
trx: Knex.Transaction;
}
export interface IBillPaymentEditingPayload {
tenantId: number;
billPaymentDTO: IBillPaymentDTO;
oldBillPayment: IBillPayment;
trx: Knex.Transaction;
}
export interface IBillPaymentEventEditedPayload {
tenantId: number;
billPaymentId: number;
billPayment: IBillPayment;
oldBillPayment: IBillPayment;
billPaymentDTO: IBillPaymentDTO;
trx: Knex.Transaction;
}
export interface IBillPaymentEventDeletedPayload {
tenantId: number;
billPaymentId: number;
oldBillPayment: IBillPayment;
trx: Knex.Transaction;
}
export interface IBillPaymentDeletingPayload {
tenantId: number;
oldBillPayment: IBillPayment;
trx: Knex.Transaction;
}
export interface IBillPaymentPublishingPayload {
tenantId: number;
oldBillPayment: IBillPayment;
trx: Knex.Transaction;
}
export enum IPaymentMadeAction {
Create = 'Create',
Edit = 'Edit',
Delete = 'Delete',
View = 'View',
}
export interface IPaymentPrepardExpensesAppliedEventPayload {
tenantId: number;
billPaymentId: number;
billId: number;
appliedAmount: number;
trx?: Knex.Transaction;
}