mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-17 13:20:31 +00:00
refactor: migrate to nestjs
This commit is contained in:
@@ -0,0 +1,111 @@
|
||||
import { SaleInvoice } from '../../models/SaleInvoice';
|
||||
import { ILedger } from '@/modules/Ledger/types/Ledger.types';
|
||||
import { ILedgerEntry } from '@/modules/Ledger/types/Ledger.types';
|
||||
import { AccountNormal } from '@/interfaces/Account';
|
||||
import { Ledger } from '@/modules/Ledger/Ledger';
|
||||
|
||||
export class SaleInvoiceWriteoffGL {
|
||||
private saleInvoiceModel: SaleInvoice;
|
||||
private ARAccountId: number;
|
||||
|
||||
/**
|
||||
* Sets the sale invoice model.
|
||||
* @param {SaleInvoice} saleInvoiceModel -
|
||||
*/
|
||||
constructor(saleInvoiceModel: SaleInvoice) {
|
||||
this.saleInvoiceModel = saleInvoiceModel;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the A/R account ID.
|
||||
* @param {number} ARAccountId -
|
||||
*/
|
||||
setARAccountId(ARAccountId: number) {
|
||||
this.ARAccountId = ARAccountId;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the invoice write-off common GL entry.
|
||||
* @param {ISaleInvoice} saleInvoice
|
||||
*/
|
||||
private get invoiceWriteoffGLCommonEntry() {
|
||||
return {
|
||||
date: this.saleInvoiceModel.invoiceDate,
|
||||
|
||||
currencyCode: this.saleInvoiceModel.currencyCode,
|
||||
exchangeRate: this.saleInvoiceModel.exchangeRate,
|
||||
|
||||
transactionId: this.saleInvoiceModel.id,
|
||||
transactionType: 'InvoiceWriteOff',
|
||||
transactionNumber: this.saleInvoiceModel.invoiceNo,
|
||||
|
||||
referenceNo: this.saleInvoiceModel.referenceNo,
|
||||
branchId: this.saleInvoiceModel.branchId,
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the invoice write-off receiveable GL entry.
|
||||
* @param {number} ARAccountId
|
||||
* @param {ISaleInvoice} saleInvoice
|
||||
* @returns {ILedgerEntry}
|
||||
*/
|
||||
private get invoiceWriteoffGLReceivableEntry(): ILedgerEntry {
|
||||
const commontEntry = this.invoiceWriteoffGLCommonEntry;
|
||||
|
||||
return {
|
||||
...commontEntry,
|
||||
credit: this.saleInvoiceModel.localWrittenoffAmount,
|
||||
accountId: this.ARAccountId,
|
||||
contactId: this.saleInvoiceModel.customerId,
|
||||
debit: 0,
|
||||
index: 1,
|
||||
indexGroup: 300,
|
||||
accountNormal:
|
||||
this.saleInvoiceModel.writtenoffExpenseAccount.accountNormal,
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the invoice write-off expense GL entry.
|
||||
* @param {ISaleInvoice} saleInvoice
|
||||
* @returns {ILedgerEntry}
|
||||
*/
|
||||
private get invoiceWriteoffGLExpenseEntry(): ILedgerEntry {
|
||||
const commontEntry = this.invoiceWriteoffGLCommonEntry;
|
||||
|
||||
return {
|
||||
...commontEntry,
|
||||
debit: this.saleInvoiceModel.writtenoffAmount,
|
||||
accountId: this.saleInvoiceModel.writtenoffExpenseAccountId,
|
||||
credit: 0,
|
||||
index: 2,
|
||||
indexGroup: 300,
|
||||
accountNormal: AccountNormal.DEBIT,
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the invoice write-off GL entries.
|
||||
* @returns {ILedgerEntry[]}
|
||||
*/
|
||||
public getInvoiceWriteoffGLEntries(): ILedgerEntry[] {
|
||||
const creditEntry = this.invoiceWriteoffGLExpenseEntry;
|
||||
const debitEntry = this.invoiceWriteoffGLReceivableEntry;
|
||||
|
||||
return [debitEntry, creditEntry];
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the invoice write-off ledger.
|
||||
* @param {number} ARAccountId
|
||||
* @param {ISaleInvoice} saleInvoice
|
||||
* @returns {Ledger}
|
||||
*/
|
||||
public getInvoiceWriteoffLedger(): ILedger {
|
||||
const entries = this.getInvoiceWriteoffGLEntries();
|
||||
|
||||
return new Ledger(entries);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user