mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-16 12:50:38 +00:00
add server to monorepo.
This commit is contained in:
@@ -0,0 +1,104 @@
|
||||
import { Service } from 'typedi';
|
||||
import { ISaleInvoice, AccountNormal, ILedgerEntry, ILedger } from '@/interfaces';
|
||||
import Ledger from '@/services/Accounting/Ledger';
|
||||
|
||||
@Service()
|
||||
export class SaleInvoiceWriteoffGLEntries {
|
||||
/**
|
||||
* Retrieves the invoice write-off common GL entry.
|
||||
* @param {ISaleInvoice} saleInvoice
|
||||
*/
|
||||
private getInvoiceWriteoffGLCommonEntry = (saleInvoice: ISaleInvoice) => {
|
||||
return {
|
||||
date: saleInvoice.invoiceDate,
|
||||
|
||||
currencyCode: saleInvoice.currencyCode,
|
||||
exchangeRate: saleInvoice.exchangeRate,
|
||||
|
||||
transactionId: saleInvoice.id,
|
||||
transactionType: 'InvoiceWriteOff',
|
||||
transactionNumber: saleInvoice.invoiceNo,
|
||||
|
||||
referenceNo: saleInvoice.referenceNo,
|
||||
branchId: saleInvoice.branchId,
|
||||
};
|
||||
};
|
||||
|
||||
/**
|
||||
* Retrieves the invoice write-off receiveable GL entry.
|
||||
* @param {number} ARAccountId
|
||||
* @param {ISaleInvoice} saleInvoice
|
||||
* @returns {ILedgerEntry}
|
||||
*/
|
||||
private getInvoiceWriteoffGLReceivableEntry = (
|
||||
ARAccountId: number,
|
||||
saleInvoice: ISaleInvoice
|
||||
): ILedgerEntry => {
|
||||
const commontEntry = this.getInvoiceWriteoffGLCommonEntry(saleInvoice);
|
||||
|
||||
return {
|
||||
...commontEntry,
|
||||
credit: saleInvoice.localWrittenoffAmount,
|
||||
accountId: ARAccountId,
|
||||
contactId: saleInvoice.customerId,
|
||||
debit: 0,
|
||||
index: 1,
|
||||
indexGroup: 300,
|
||||
accountNormal: saleInvoice.writtenoffExpenseAccount.accountNormal,
|
||||
};
|
||||
};
|
||||
|
||||
/**
|
||||
* Retrieves the invoice write-off expense GL entry.
|
||||
* @param {ISaleInvoice} saleInvoice
|
||||
* @returns {ILedgerEntry}
|
||||
*/
|
||||
private getInvoiceWriteoffGLExpenseEntry = (
|
||||
saleInvoice: ISaleInvoice
|
||||
): ILedgerEntry => {
|
||||
const commontEntry = this.getInvoiceWriteoffGLCommonEntry(saleInvoice);
|
||||
|
||||
return {
|
||||
...commontEntry,
|
||||
debit: saleInvoice.localWrittenoffAmount,
|
||||
accountId: saleInvoice.writtenoffExpenseAccountId,
|
||||
credit: 0,
|
||||
index: 2,
|
||||
indexGroup: 300,
|
||||
accountNormal: AccountNormal.DEBIT,
|
||||
};
|
||||
};
|
||||
|
||||
/**
|
||||
* Retrieves the invoice write-off GL entries.
|
||||
* @param {number} ARAccountId
|
||||
* @param {ISaleInvoice} saleInvoice
|
||||
* @returns {ILedgerEntry[]}
|
||||
*/
|
||||
public getInvoiceWriteoffGLEntries = (
|
||||
ARAccountId: number,
|
||||
saleInvoice: ISaleInvoice
|
||||
): ILedgerEntry[] => {
|
||||
const creditEntry = this.getInvoiceWriteoffGLExpenseEntry(saleInvoice);
|
||||
const debitEntry = this.getInvoiceWriteoffGLReceivableEntry(
|
||||
ARAccountId,
|
||||
saleInvoice
|
||||
);
|
||||
return [debitEntry, creditEntry];
|
||||
};
|
||||
|
||||
/**
|
||||
* Retrieves the invoice write-off ledger.
|
||||
* @param {number} ARAccountId
|
||||
* @param {ISaleInvoice} saleInvoice
|
||||
* @returns {Ledger}
|
||||
*/
|
||||
public getInvoiceWriteoffLedger = (
|
||||
ARAccountId: number,
|
||||
saleInvoice: ISaleInvoice
|
||||
): ILedger => {
|
||||
const entries = this.getInvoiceWriteoffGLEntries(ARAccountId, saleInvoice);
|
||||
|
||||
return new Ledger(entries);
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user