mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-15 20:30:33 +00:00
117 lines
2.8 KiB
TypeScript
117 lines
2.8 KiB
TypeScript
import { Injectable } from '@nestjs/common';
|
|
import { AccountNormal } from '@/interfaces/Account';
|
|
import { ILedgerEntry } from '@/modules/Ledger/types/Ledger.types';
|
|
import { Ledger } from '@/modules/Ledger/Ledger';
|
|
import { Vendor } from './models/Vendor';
|
|
|
|
@Injectable()
|
|
export class VendorGLEntries {
|
|
/**
|
|
* Retrieves the opening balance GL common entry.
|
|
* @param {Vendor} vendor -
|
|
*/
|
|
private getOpeningBalanceGLCommonEntry = (vendor: Vendor) => {
|
|
return {
|
|
exchangeRate: vendor.openingBalanceExchangeRate,
|
|
currencyCode: vendor.currencyCode,
|
|
|
|
transactionType: 'VendorOpeningBalance',
|
|
transactionId: vendor.id,
|
|
|
|
date: vendor.openingBalanceAt,
|
|
contactId: vendor.id,
|
|
|
|
credit: 0,
|
|
debit: 0,
|
|
|
|
branchId: vendor.openingBalanceBranchId,
|
|
};
|
|
};
|
|
|
|
/**
|
|
* Retrieves the opening balance GL debit entry.
|
|
* @param {number} costAccountId -
|
|
* @param {Vendor} vendor
|
|
* @returns {ILedgerEntry}
|
|
*/
|
|
private getOpeningBalanceGLDebitEntry = (
|
|
costAccountId: number,
|
|
vendor: Vendor
|
|
): ILedgerEntry => {
|
|
const commonEntry = this.getOpeningBalanceGLCommonEntry(vendor);
|
|
|
|
return {
|
|
...commonEntry,
|
|
accountId: costAccountId,
|
|
accountNormal: AccountNormal.DEBIT,
|
|
debit: vendor.localOpeningBalance,
|
|
credit: 0,
|
|
index: 2,
|
|
};
|
|
};
|
|
|
|
/**
|
|
* Retrieves the opening balance GL credit entry.
|
|
* @param {number} APAccountId
|
|
* @param {Vendor} vendor
|
|
* @returns {ILedgerEntry}
|
|
*/
|
|
private getOpeningBalanceGLCreditEntry = (
|
|
APAccountId: number,
|
|
vendor: Vendor
|
|
): ILedgerEntry => {
|
|
const commonEntry = this.getOpeningBalanceGLCommonEntry(vendor);
|
|
|
|
return {
|
|
...commonEntry,
|
|
accountId: APAccountId,
|
|
accountNormal: AccountNormal.CREDIT,
|
|
credit: vendor.localOpeningBalance,
|
|
index: 1,
|
|
};
|
|
};
|
|
|
|
/**
|
|
* Retrieves the opening balance GL entries.
|
|
* @param {number} APAccountId
|
|
* @param {number} costAccountId -
|
|
* @param {Vendor} vendor
|
|
* @returns {ILedgerEntry[]}
|
|
*/
|
|
public getOpeningBalanceGLEntries = (
|
|
APAccountId: number,
|
|
costAccountId: number,
|
|
vendor: Vendor
|
|
): ILedgerEntry[] => {
|
|
const debitEntry = this.getOpeningBalanceGLDebitEntry(
|
|
costAccountId,
|
|
vendor
|
|
);
|
|
const creditEntry = this.getOpeningBalanceGLCreditEntry(
|
|
APAccountId,
|
|
vendor
|
|
);
|
|
return [debitEntry, creditEntry];
|
|
};
|
|
|
|
/**
|
|
* Retrieves the opening balance ledger.
|
|
* @param {number} APAccountId
|
|
* @param {number} costAccountId -
|
|
* @param {Vendor} vendor
|
|
* @returns {Ledger}
|
|
*/
|
|
public getOpeningBalanceLedger = (
|
|
APAccountId: number,
|
|
costAccountId: number,
|
|
vendor: Vendor
|
|
) => {
|
|
const entries = this.getOpeningBalanceGLEntries(
|
|
APAccountId,
|
|
costAccountId,
|
|
vendor
|
|
);
|
|
return new Ledger(entries);
|
|
};
|
|
}
|