Files
bigcapital/packages/server/src/interfaces/CreditNote.ts
2024-05-26 21:59:39 +02:00

259 lines
5.6 KiB
TypeScript

import { Knex } from 'knex';
import { IDynamicListFilter, IItemEntry, IVendorCredit } from '@/interfaces';
import { ILedgerEntry } from './Ledger';
import { AttachmentLinkDTO } from './Attachments';
export interface ICreditNoteEntryNewDTO {
index: number;
itemId: number;
rate: number;
quantity: number;
discount: number;
description: string;
warehouseId?: number;
}
export interface ICreditNoteNewDTO {
customerId: number;
exchangeRate?: number;
creditNoteDate: Date;
creditNoteNumber: string;
note: string;
open: boolean;
entries: ICreditNoteEntryNewDTO[];
branchId?: number;
warehouseId?: number;
attachments?: AttachmentLinkDTO[]
}
export interface ICreditNoteEditDTO {
customerId: number;
exchangeRate?: number;
creditNoteDate: Date;
creditNoteNumber: string;
note: string;
open: boolean;
entries: ICreditNoteEntryNewDTO[];
branchId?: number;
warehouseId?: number;
attachments?: AttachmentLinkDTO[]
}
export interface ICreditNoteEntry extends IItemEntry {}
export interface ICreditNote {
id?: number;
customerId: number;
amount: number;
refundedAmount: number;
currencyCode: string;
exchangeRate: number;
creditNoteDate: Date;
creditNoteNumber: string;
referenceNo?: string;
note?: string;
openedAt: Date | null;
entries: ICreditNoteEntry[];
isOpen: boolean;
isClosed: boolean;
isDraft: boolean;
isPublished: boolean;
creditsRemaining: number;
localAmount?: number;
branchId?: number;
warehouseId: number;
createdAt?: Date,
}
export enum CreditNoteAction {
Create = 'Create',
Edit = 'Edit',
Delete = 'Delete',
View = 'View',
Refund = 'Refund',
}
export interface ICreditNoteDeletingPayload {
tenantId: number;
oldCreditNote: ICreditNote;
trx: Knex.Transaction;
}
export interface ICreditNoteDeletedPayload {
tenantId: number;
oldCreditNote: ICreditNote;
creditNoteId: number;
trx: Knex.Transaction;
}
export interface ICreditNoteEditingPayload {
trx: Knex.Transaction;
oldCreditNote: ICreditNote;
creditNoteEditDTO: ICreditNoteEditDTO;
tenantId: number;
}
export interface ICreditNoteEditedPayload {
trx: Knex.Transaction;
oldCreditNote: ICreditNote;
creditNoteId: number;
creditNote: ICreditNote;
creditNoteEditDTO: ICreditNoteEditDTO;
tenantId: number;
}
export interface ICreditNoteCreatedPayload {
tenantId: number;
creditNoteDTO: ICreditNoteNewDTO;
creditNote: ICreditNote;
creditNoteId: number;
trx: Knex.Transaction;
}
export interface ICreditNoteCreatingPayload {
tenantId: number;
creditNoteDTO: ICreditNoteNewDTO;
trx: Knex.Transaction;
}
export interface ICreditNoteOpeningPayload {
tenantId: number;
creditNoteId: number;
oldCreditNote: ICreditNote;
trx: Knex.Transaction;
}
export interface ICreditNoteOpenedPayload {
tenantId: number;
creditNote: ICreditNote;
creditNoteId: number;
oldCreditNote: ICreditNote;
trx: Knex.Transaction;
}
export interface ICreditNotesQueryDTO {}
export interface ICreditNotesQueryDTO extends IDynamicListFilter {
page: number;
pageSize: number;
searchKeyword?: string;
}
export interface ICreditNoteRefundDTO {
fromAccountId: number;
amount: number;
exchangeRate?: number;
referenceNo: string;
description: string;
date: Date;
branchId?: number;
}
export interface ICreditNoteApplyInvoiceDTO {
entries: { invoiceId: number; amount: number }[];
}
export interface IRefundCreditNote {
id?: number | null;
date: Date;
referenceNo: string;
amount: number;
currencyCode: string;
exchangeRate: number;
fromAccountId: number;
description: string;
creditNoteId: number;
createdAt?: Date | null;
userId?: number;
branchId?: number;
creditNote?: ICreditNote;
}
export interface IRefundCreditNotePOJO {
formattedAmount: string;
}
export interface IRefundCreditNoteDeletedPayload {
trx: Knex.Transaction;
refundCreditId: number;
oldRefundCredit: IRefundCreditNote;
tenantId: number;
}
export interface IRefundCreditNoteDeletingPayload {
trx: Knex.Transaction;
refundCreditId: number;
oldRefundCredit: IRefundCreditNote;
tenantId: number;
}
export interface IRefundCreditNoteCreatingPayload {
trx: Knex.Transaction;
creditNote: ICreditNote;
tenantId: number;
newCreditNoteDTO: ICreditNoteRefundDTO;
}
export interface IRefundCreditNoteCreatedPayload {
trx: Knex.Transaction;
refundCreditNote: IRefundCreditNote;
creditNote: ICreditNote;
tenantId: number;
}
export interface IRefundCreditNoteOpenedPayload {
tenantId: number;
creditNoteId: number;
oldCreditNote: ICreditNote;
trx: Knex.Transaction;
}
export interface IApplyCreditToInvoiceEntryDTO {
amount: number;
invoiceId: number;
}
export interface IApplyCreditToInvoicesDTO {
entries: IApplyCreditToInvoiceEntryDTO[];
}
export interface IApplyCreditToInvoicesCreatedPayload {
trx: Knex.Transaction;
creditNote: ICreditNote;
tenantId: number;
creditNoteAppliedInvoices: ICreditNoteAppliedToInvoice[];
}
export interface IApplyCreditToInvoicesDeletedPayload {
trx: Knex.Transaction;
creditNote: ICreditNote;
creditNoteAppliedToInvoice: ICreditNoteAppliedToInvoice;
tenantId: number;
}
export interface ICreditNoteAppliedToInvoice {
invoiceId: number;
amount: number;
creditNoteId: number;
}
export interface ICreditNoteAppliedToInvoiceModel {
amount: number;
entries: ICreditNoteAppliedToInvoice[];
}
export type ICreditNoteGLCommonEntry = Pick<
ILedgerEntry,
| 'date'
| 'userId'
| 'currencyCode'
| 'exchangeRate'
| 'transactionType'
| 'transactionId'
| 'transactionNumber'
| 'referenceNumber'
| 'createdAt'
| 'indexGroup'
| 'credit'
| 'debit'
| 'branchId'
>;