mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-20 14:50:32 +00:00
refactor: tenant proxy providers
This commit is contained in:
@@ -3,12 +3,13 @@ import { Inject, Injectable } from '@nestjs/common';
|
||||
import { Knex } from 'knex';
|
||||
import { IVendorCreditAppliedBill } from '../types/VendorCreditApplyBills.types';
|
||||
import { Bill } from '@/modules/Bills/models/Bill';
|
||||
import { TenantModelProxy } from '@/modules/System/models/TenantBaseModel';
|
||||
|
||||
@Injectable()
|
||||
export class ApplyVendorCreditSyncBillsService {
|
||||
constructor(
|
||||
@Inject(Bill.name)
|
||||
private readonly billModel: typeof Bill,
|
||||
private readonly billModel: TenantModelProxy<typeof Bill>,
|
||||
) {}
|
||||
|
||||
/**
|
||||
@@ -23,7 +24,7 @@ export class ApplyVendorCreditSyncBillsService {
|
||||
await Bluebird.each(
|
||||
vendorCreditAppliedBills,
|
||||
(vendorCreditAppliedBill: IVendorCreditAppliedBill) => {
|
||||
return this.billModel
|
||||
return this.billModel()
|
||||
.query(trx)
|
||||
.where('id', vendorCreditAppliedBill.billId)
|
||||
.increment('creditedAmount', vendorCreditAppliedBill.amount);
|
||||
@@ -40,7 +41,7 @@ export class ApplyVendorCreditSyncBillsService {
|
||||
vendorCreditAppliedBill: IVendorCreditAppliedBill,
|
||||
trx?: Knex.Transaction,
|
||||
) => {
|
||||
await this.billModel
|
||||
await this.billModel()
|
||||
.query(trx)
|
||||
.findById(vendorCreditAppliedBill.billId)
|
||||
.decrement('creditedAmount', vendorCreditAppliedBill.amount);
|
||||
|
||||
@@ -1,15 +1,16 @@
|
||||
import { Inject, Injectable } from '@nestjs/common';
|
||||
import { Knex } from 'knex';
|
||||
import { VendorCredit } from '@/modules/VendorCredit/models/VendorCredit';
|
||||
import { TenantModelProxy } from '@/modules/System/models/TenantBaseModel';
|
||||
|
||||
@Injectable()
|
||||
export class ApplyVendorCreditSyncInvoicedService {
|
||||
/**
|
||||
* @param {typeof VendorCredit} vendorCreditModel - The vendor credit model.
|
||||
* @param {TenantModelProxy<typeof VendorCredit>} vendorCreditModel - The vendor credit model.
|
||||
*/
|
||||
constructor(
|
||||
@Inject(VendorCredit.name)
|
||||
private readonly vendorCreditModel: typeof VendorCredit,
|
||||
private readonly vendorCreditModel: TenantModelProxy<typeof VendorCredit>,
|
||||
) {}
|
||||
|
||||
/**
|
||||
@@ -21,9 +22,10 @@ export class ApplyVendorCreditSyncInvoicedService {
|
||||
public incrementVendorCreditInvoicedAmount = async (
|
||||
vendorCreditId: number,
|
||||
amount: number,
|
||||
trx?: Knex.Transaction
|
||||
trx?: Knex.Transaction,
|
||||
) => {
|
||||
await this.vendorCreditModel.query(trx)
|
||||
await this.vendorCreditModel()
|
||||
.query(trx)
|
||||
.findById(vendorCreditId)
|
||||
.increment('invoicedAmount', amount);
|
||||
};
|
||||
@@ -37,9 +39,10 @@ export class ApplyVendorCreditSyncInvoicedService {
|
||||
public decrementVendorCreditInvoicedAmount = async (
|
||||
vendorCreditId: number,
|
||||
amount: number,
|
||||
trx?: Knex.Transaction
|
||||
trx?: Knex.Transaction,
|
||||
) => {
|
||||
await this.vendorCreditModel.query(trx)
|
||||
await this.vendorCreditModel()
|
||||
.query(trx)
|
||||
.findById(vendorCreditId)
|
||||
.decrement('invoicedAmount', amount);
|
||||
};
|
||||
|
||||
@@ -16,6 +16,7 @@ import { Bill } from '@/modules/Bills/models/Bill';
|
||||
import { ServiceError } from '@/modules/Items/ServiceError';
|
||||
import { events } from '@/common/events/events';
|
||||
import { VendorCreditDTOTransformService } from '@/modules/VendorCredit/commands/VendorCreditDTOTransform.service';
|
||||
import { TenantModelProxy } from '@/modules/System/models/TenantBaseModel';
|
||||
|
||||
@Injectable()
|
||||
export class ApplyVendorCreditToBillsService {
|
||||
@@ -23,8 +24,8 @@ export class ApplyVendorCreditToBillsService {
|
||||
* @param {UnitOfWork} uow - The unit of work service.
|
||||
* @param {EventEmitter2} eventPublisher - The event emitter service.
|
||||
* @param {BillPaymentValidators} billPaymentValidators - The bill payment validators service.
|
||||
* @param {typeof VendorCreditAppliedBill} vendorCreditAppliedBillModel - The vendor credit applied bill model.
|
||||
* @param {typeof VendorCredit} vendorCreditModel - The vendor credit model.
|
||||
* @param {TenantModelProxy<typeof VendorCreditAppliedBill>} vendorCreditAppliedBillModel - The vendor credit applied bill model.
|
||||
* @param {TenantModelProxy<typeof VendorCredit>} vendorCreditModel - The vendor credit model.
|
||||
*/
|
||||
constructor(
|
||||
private readonly uow: UnitOfWork,
|
||||
@@ -33,10 +34,12 @@ export class ApplyVendorCreditToBillsService {
|
||||
private readonly vendorCreditDTOTransform: VendorCreditDTOTransformService,
|
||||
|
||||
@Inject(VendorCreditAppliedBill.name)
|
||||
private readonly vendorCreditAppliedBillModel: typeof VendorCreditAppliedBill,
|
||||
private readonly vendorCreditAppliedBillModel: TenantModelProxy<
|
||||
typeof VendorCreditAppliedBill
|
||||
>,
|
||||
|
||||
@Inject(VendorCredit.name)
|
||||
private readonly vendorCreditModel: typeof VendorCredit,
|
||||
private readonly vendorCreditModel: TenantModelProxy<typeof VendorCredit>,
|
||||
) {}
|
||||
|
||||
/**
|
||||
@@ -49,7 +52,7 @@ export class ApplyVendorCreditToBillsService {
|
||||
applyCreditToBillsDTO: IVendorCreditApplyToInvoicesDTO,
|
||||
): Promise<void> => {
|
||||
// Retrieves the vendor credit or throw not found service error.
|
||||
const vendorCredit = await this.vendorCreditModel
|
||||
const vendorCredit = await this.vendorCreditModel()
|
||||
.query()
|
||||
.findById(vendorCreditId)
|
||||
.throwIfNotFound();
|
||||
@@ -80,7 +83,7 @@ export class ApplyVendorCreditToBillsService {
|
||||
// Saves vendor credit applied to bills under unit-of-work envirement.
|
||||
return this.uow.withTransaction(async (trx: Knex.Transaction) => {
|
||||
// Inserts vendor credit applied to bills graph to the storage layer.
|
||||
const vendorCreditAppliedBills = await this.vendorCreditAppliedBillModel
|
||||
const vendorCreditAppliedBills = await this.vendorCreditAppliedBillModel()
|
||||
.query(trx)
|
||||
.insertGraph(vendorCreditAppliedModel.entries);
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@ import { IVendorCreditApplyToBillDeletedPayload } from '../types/VendorCreditApp
|
||||
import { VendorCredit } from '@/modules/VendorCredit/models/VendorCredit';
|
||||
import { ERRORS } from '../VendorCreditsApplyBills.constants';
|
||||
import { VendorCreditAppliedBill } from '../models/VendorCreditAppliedBill';
|
||||
import { TenantModelProxy } from '@/modules/System/models/TenantBaseModel';
|
||||
|
||||
@Injectable()
|
||||
export class DeleteApplyVendorCreditToBillService {
|
||||
@@ -19,12 +20,14 @@ export class DeleteApplyVendorCreditToBillService {
|
||||
constructor(
|
||||
private readonly uow: UnitOfWork,
|
||||
private readonly eventPublisher: EventEmitter2,
|
||||
|
||||
|
||||
@Inject(VendorCreditAppliedBill.name)
|
||||
private readonly vendorCreditAppliedBillModel: typeof VendorCreditAppliedBill,
|
||||
private readonly vendorCreditAppliedBillModel: TenantModelProxy<
|
||||
typeof VendorCreditAppliedBill
|
||||
>,
|
||||
|
||||
@Inject(VendorCredit.name)
|
||||
private readonly vendorCreditModel: typeof VendorCredit,
|
||||
private readonly vendorCreditModel: TenantModelProxy<typeof VendorCredit>,
|
||||
) {}
|
||||
|
||||
/**
|
||||
@@ -33,7 +36,7 @@ export class DeleteApplyVendorCreditToBillService {
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
public async deleteApplyVendorCreditToBills(appliedCreditToBillId: number) {
|
||||
const oldCreditAppliedToBill = await this.vendorCreditAppliedBillModel
|
||||
const oldCreditAppliedToBill = await this.vendorCreditAppliedBillModel()
|
||||
.query()
|
||||
.findById(appliedCreditToBillId);
|
||||
|
||||
@@ -41,7 +44,7 @@ export class DeleteApplyVendorCreditToBillService {
|
||||
throw new ServiceError(ERRORS.VENDOR_CREDIT_APPLY_TO_BILLS_NOT_FOUND);
|
||||
}
|
||||
// Retrieve the vendor credit or throw not found service error.
|
||||
const vendorCredit = await this.vendorCreditModel
|
||||
const vendorCredit = await this.vendorCreditModel()
|
||||
.query()
|
||||
.findById(oldCreditAppliedToBill.vendorCreditId)
|
||||
.throwIfNotFound();
|
||||
@@ -49,7 +52,7 @@ export class DeleteApplyVendorCreditToBillService {
|
||||
// Deletes vendor credit apply under unit-of-work environment.
|
||||
return this.uow.withTransaction(async (trx) => {
|
||||
// Delete vendor credit applied to bill transaction.
|
||||
await this.vendorCreditAppliedBillModel
|
||||
await this.vendorCreditAppliedBillModel()
|
||||
.query(trx)
|
||||
.findById(appliedCreditToBillId)
|
||||
.delete();
|
||||
|
||||
@@ -3,6 +3,7 @@ import { VendorCreditAppliedBillTransformer } from './VendorCreditAppliedBillTra
|
||||
import { TransformerInjectable } from '@/modules/Transformer/TransformerInjectable.service';
|
||||
import { VendorCreditAppliedBill } from '@/modules/VendorCreditsApplyBills/models/VendorCreditAppliedBill';
|
||||
import { VendorCredit } from '@/modules/VendorCredit/models/VendorCredit';
|
||||
import { TenantModelProxy } from '@/modules/System/models/TenantBaseModel';
|
||||
|
||||
@Injectable()
|
||||
export class GetAppliedBillsToVendorCreditService {
|
||||
@@ -10,10 +11,12 @@ export class GetAppliedBillsToVendorCreditService {
|
||||
private readonly transformer: TransformerInjectable,
|
||||
|
||||
@Inject(VendorCreditAppliedBill.name)
|
||||
private readonly vendorCreditAppliedBillModel: typeof VendorCreditAppliedBill,
|
||||
private readonly vendorCreditAppliedBillModel: TenantModelProxy<
|
||||
typeof VendorCreditAppliedBill
|
||||
>,
|
||||
|
||||
@Inject(VendorCredit.name)
|
||||
private readonly vendorCreditModel: typeof VendorCredit,
|
||||
private readonly vendorCreditModel: TenantModelProxy<typeof VendorCredit>,
|
||||
) {}
|
||||
|
||||
/**
|
||||
@@ -22,12 +25,12 @@ export class GetAppliedBillsToVendorCreditService {
|
||||
* @returns
|
||||
*/
|
||||
public getAppliedBills = async (vendorCreditId: number) => {
|
||||
const vendorCredit = await this.vendorCreditModel
|
||||
const vendorCredit = await this.vendorCreditModel()
|
||||
.query()
|
||||
.findById(vendorCreditId)
|
||||
.throwIfNotFound();
|
||||
|
||||
const appliedToBills = await this.vendorCreditAppliedBillModel
|
||||
const appliedToBills = await this.vendorCreditAppliedBillModel()
|
||||
.query()
|
||||
.where('vendorCreditId', vendorCreditId)
|
||||
.withGraphFetched('bill')
|
||||
|
||||
@@ -3,9 +3,10 @@ import { VendorCreditToApplyBillTransformer } from './VendorCreditToApplyBillTra
|
||||
import { VendorCredit } from '@/modules/VendorCredit/models/VendorCredit';
|
||||
import { Bill } from '@/modules/Bills/models/Bill';
|
||||
import { TransformerInjectable } from '@/modules/Transformer/TransformerInjectable.service';
|
||||
import { TenantModelProxy } from '@/modules/System/models/TenantBaseModel';
|
||||
|
||||
@Injectable()
|
||||
export class GetVendorCreditToApplyBills {
|
||||
export class GetVendorCreditToApplyBills {
|
||||
/**
|
||||
* @param {TransformerService} transformerService - The transformer service.
|
||||
* @param {typeof Bill} billModel - The bill model.
|
||||
@@ -13,10 +14,11 @@ export class GetVendorCreditToApplyBills {
|
||||
*/
|
||||
constructor(
|
||||
private readonly transformerService: TransformerInjectable,
|
||||
@Inject(Bill.name) private readonly billModel: typeof Bill,
|
||||
@Inject(Bill.name)
|
||||
private readonly billModel: TenantModelProxy<typeof Bill>,
|
||||
|
||||
@Inject(VendorCredit.name)
|
||||
private readonly vendorCreditModel: typeof VendorCredit,
|
||||
private readonly vendorCreditModel: TenantModelProxy<typeof VendorCredit>,
|
||||
) {}
|
||||
|
||||
/**
|
||||
@@ -26,13 +28,13 @@ export class GetVendorCreditToApplyBills {
|
||||
*/
|
||||
public async getCreditToApplyBills(vendorCreditId: number) {
|
||||
// Retrieve vendor credit or throw not found service error.
|
||||
const vendorCredit = await this.vendorCreditModel
|
||||
const vendorCredit = await this.vendorCreditModel()
|
||||
.query()
|
||||
.findById(vendorCreditId)
|
||||
.throwIfNotFound();
|
||||
|
||||
// Retrieve open bills associated to the given vendor.
|
||||
const openBills = await this.billModel
|
||||
const openBills = await this.billModel()
|
||||
.query()
|
||||
.where('vendor_id', vendorCredit.vendorId)
|
||||
.modify('dueBills')
|
||||
|
||||
Reference in New Issue
Block a user