mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-16 21:00:31 +00:00
Merge pull request #721 from bigcapitalhq/track-move-events
feat: track more services events
This commit is contained in:
@@ -9,6 +9,7 @@ export const SALE_ESTIMATE_CREATED = 'Sale estimate created';
|
||||
export const SALE_ESTIMATE_EDITED = 'Sale estimate edited';
|
||||
export const SALE_ESTIMATE_DELETED = 'Sale estimate deleted';
|
||||
export const SALE_ESTIMATE_PDF_VIEWED = 'Sale estimate PDF viewed';
|
||||
export const SALE_ESTIMATE_VIEWED = 'Sale estimate viewed';
|
||||
|
||||
export const PAYMENT_RECEIVED_CREATED = 'Payment received created';
|
||||
export const PAYMENT_RECEIVED_EDITED = 'payment received edited';
|
||||
@@ -47,6 +48,8 @@ export const AUTH_RESET_PASSWORD = 'Auth reset password';
|
||||
export const SUBSCRIPTION_CANCELLED = 'Subscription cancelled';
|
||||
export const SUBSCRIPTION_RESUMED = 'Subscription resumed';
|
||||
export const SUBSCRIPTION_PLAN_CHANGED = 'Subscription plan changed';
|
||||
export const SUBSCRIPTION_PAYMENT_SUCCEED = 'Subscription payment succeed';
|
||||
export const SUBSCRIPTION_PAYMENT_FAILED = 'Subscription payment failed';
|
||||
|
||||
export const CUSTOMER_CREATED = 'Customer created';
|
||||
export const CUSTOMER_EDITED = 'Customer edited';
|
||||
@@ -100,3 +103,21 @@ export const SALE_GROUP = 'Sale';
|
||||
export const PAYMENT_GROUP = 'Payment';
|
||||
export const BILL_GROUP = 'Bill';
|
||||
export const EXPENSE_GROUP = 'Expense';
|
||||
|
||||
// # Reports
|
||||
export const BALANCE_SHEET_VIEWED = 'Balance sheet viewed';
|
||||
export const TRIAL_BALANCE_SHEET_VIEWED = 'Trial balance sheet viewed';
|
||||
export const PROFIT_LOSS_SHEET_VIEWED = 'Profit loss sheet viewed';
|
||||
export const CASHFLOW_STATEMENT_VIEWED = 'Cashflow statement viewed';
|
||||
export const GENERAL_LEDGER_VIEWED = 'General ledger viewed';
|
||||
export const JOURNAL_VIEWED = 'Journal viewed';
|
||||
export const RECEIVABLE_AGING_VIEWED = 'Receivable aging viewed';
|
||||
export const PAYABLE_AGING_VIEWED = 'Payable aging viewed';
|
||||
export const CUSTOMER_BALANCE_SUMMARY_VIEWED =
|
||||
'Customer balance summary viewed';
|
||||
export const VENDOR_BALANCE_SUMMARY_VIEWED = 'Vendor balance summary viewed';
|
||||
export const INVENTORY_VALUATION_VIEWED = 'Inventory valuation viewed';
|
||||
export const CUSTOMER_TRANSACTIONS_VIEWED = 'Customer transactions viewed';
|
||||
export const VENDOR_TRANSACTIONS_VIEWED = 'Vendor transactions viewed';
|
||||
export const SALES_BY_ITEM_VIEWED = 'Sales by item viewed';
|
||||
export const PURCHASES_BY_ITEM_VIEWED = 'Purchases by item viewed';
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import { Service, Inject } from 'typedi';
|
||||
import I18nService from '@/services/I18n/I18nService';
|
||||
import HasTenancyService from '@/services/Tenancy/TenancyService';
|
||||
import { AccountTransformer } from './AccountTransform';
|
||||
import { TransformerInjectable } from '@/lib/Transformer/TransformerInjectable';
|
||||
@@ -11,9 +10,6 @@ export class GetAccount {
|
||||
@Inject()
|
||||
private tenancy: HasTenancyService;
|
||||
|
||||
@Inject()
|
||||
private i18nService: I18nService;
|
||||
|
||||
@Inject()
|
||||
private transformer: TransformerInjectable;
|
||||
|
||||
@@ -44,10 +40,8 @@ export class GetAccount {
|
||||
new AccountTransformer(),
|
||||
{ accountsGraph }
|
||||
);
|
||||
const eventPayload = {
|
||||
tenantId,
|
||||
accountId,
|
||||
};
|
||||
const eventPayload = { tenantId, accountId };
|
||||
|
||||
// Triggers `onAccountViewed` event.
|
||||
await this.eventPublisher.emitAsync(events.accounts.onViewed, eventPayload);
|
||||
|
||||
|
||||
@@ -122,6 +122,7 @@ export default class NewCashflowTransactionService {
|
||||
* @param {number} tenantId -
|
||||
* @param {ICashflowOwnerContributionDTO} ownerContributionDTO
|
||||
* @param {number} userId - User id.
|
||||
* @returns {Promise<ICashflowTransaction>}
|
||||
*/
|
||||
public newCashflowTransaction = async (
|
||||
tenantId: number,
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import Knex from 'knex';
|
||||
import { IRefundCreditNote } from '@/interfaces';
|
||||
import HasTenancyService from '@/services/Tenancy/TenancyService';
|
||||
import { Knex } from 'knex';
|
||||
import { Inject, Service } from 'typedi';
|
||||
import HasTenancyService from '@/services/Tenancy/TenancyService';
|
||||
|
||||
@Service()
|
||||
export default class RefundSyncCreditNoteBalance {
|
||||
|
||||
@@ -0,0 +1,240 @@
|
||||
import { Inject, Service } from 'typedi';
|
||||
import { EventSubscriber } from '@/lib/EventPublisher/EventPublisher';
|
||||
import { ReportsEvents } from '@/constants/event-tracker';
|
||||
import { PosthogService } from '../PostHog';
|
||||
import events from '@/subscribers/events';
|
||||
import {
|
||||
BALANCE_SHEET_VIEWED,
|
||||
TRIAL_BALANCE_SHEET_VIEWED,
|
||||
PROFIT_LOSS_SHEET_VIEWED,
|
||||
CASHFLOW_STATEMENT_VIEWED,
|
||||
GENERAL_LEDGER_VIEWED,
|
||||
JOURNAL_VIEWED,
|
||||
RECEIVABLE_AGING_VIEWED,
|
||||
PAYABLE_AGING_VIEWED,
|
||||
CUSTOMER_BALANCE_SUMMARY_VIEWED,
|
||||
VENDOR_BALANCE_SUMMARY_VIEWED,
|
||||
INVENTORY_VALUATION_VIEWED,
|
||||
CUSTOMER_TRANSACTIONS_VIEWED,
|
||||
VENDOR_TRANSACTIONS_VIEWED,
|
||||
SALES_BY_ITEM_VIEWED,
|
||||
PURCHASES_BY_ITEM_VIEWED,
|
||||
} from '@/constants/event-tracker';
|
||||
|
||||
@Service()
|
||||
export class ReportsEventsTracker extends EventSubscriber {
|
||||
@Inject()
|
||||
private posthog: PosthogService;
|
||||
|
||||
/**
|
||||
* Constructor method.
|
||||
*/
|
||||
public attach(bus) {
|
||||
bus.subscribe(
|
||||
events.reports.onBalanceSheetViewed,
|
||||
this.handleTrackBalanceSheetViewedEvent
|
||||
);
|
||||
bus.subscribe(
|
||||
events.reports.onTrialBalanceSheetView,
|
||||
this.handleTrackTrialBalanceSheetViewedEvent
|
||||
);
|
||||
bus.subscribe(
|
||||
events.reports.onProfitLossSheetViewed,
|
||||
this.handleTrackProfitLossSheetViewedEvent
|
||||
);
|
||||
bus.subscribe(
|
||||
events.reports.onCashflowStatementViewed,
|
||||
this.handleTrackCashflowStatementViewedEvent
|
||||
);
|
||||
bus.subscribe(
|
||||
events.reports.onGeneralLedgerViewed,
|
||||
this.handleTrackGeneralLedgerViewedEvent
|
||||
);
|
||||
bus.subscribe(
|
||||
events.reports.onJournalViewed,
|
||||
this.handleTrackJournalViewedEvent
|
||||
);
|
||||
bus.subscribe(
|
||||
events.reports.onReceivableAgingViewed,
|
||||
this.handleTrackReceivableAgingViewedEvent
|
||||
);
|
||||
bus.subscribe(
|
||||
events.reports.onPayableAgingViewed,
|
||||
this.handleTrackPayableAgingViewedEvent
|
||||
);
|
||||
bus.subscribe(
|
||||
events.reports.onCustomerBalanceSummaryViewed,
|
||||
this.handleTrackCustomerBalanceSummaryViewedEvent
|
||||
);
|
||||
bus.subscribe(
|
||||
events.reports.onVendorBalanceSummaryViewed,
|
||||
this.handleTrackVendorBalanceSummaryViewedEvent
|
||||
);
|
||||
bus.subscribe(
|
||||
events.reports.onInventoryValuationViewed,
|
||||
this.handleTrackInventoryValuationViewedEvent
|
||||
);
|
||||
bus.subscribe(
|
||||
events.reports.onCustomerTransactionsViewed,
|
||||
this.handleTrackCustomerTransactionsViewedEvent
|
||||
);
|
||||
bus.subscribe(
|
||||
events.reports.onVendorTransactionsViewed,
|
||||
this.handleTrackVendorTransactionsViewedEvent
|
||||
);
|
||||
bus.subscribe(
|
||||
events.reports.onSalesByItemViewed,
|
||||
this.handleTrackSalesByItemViewedEvent
|
||||
);
|
||||
bus.subscribe(
|
||||
events.reports.onPurchasesByItemViewed,
|
||||
this.handleTrackPurchasesByItemViewedEvent
|
||||
);
|
||||
}
|
||||
|
||||
private handleTrackBalanceSheetViewedEvent = ({
|
||||
tenantId,
|
||||
}: ReportsEvents) => {
|
||||
this.posthog.trackEvent({
|
||||
distinctId: `tenant-${tenantId}`,
|
||||
event: BALANCE_SHEET_VIEWED,
|
||||
properties: {},
|
||||
});
|
||||
};
|
||||
|
||||
private handleTrackTrialBalanceSheetViewedEvent = ({
|
||||
tenantId,
|
||||
}: ReportsEvents) => {
|
||||
this.posthog.trackEvent({
|
||||
distinctId: `tenant-${tenantId}`,
|
||||
event: TRIAL_BALANCE_SHEET_VIEWED,
|
||||
properties: {},
|
||||
});
|
||||
};
|
||||
|
||||
private handleTrackProfitLossSheetViewedEvent = ({
|
||||
tenantId,
|
||||
}: ReportsEvents) => {
|
||||
this.posthog.trackEvent({
|
||||
distinctId: `tenant-${tenantId}`,
|
||||
event: PROFIT_LOSS_SHEET_VIEWED,
|
||||
properties: {},
|
||||
});
|
||||
};
|
||||
|
||||
private handleTrackCashflowStatementViewedEvent = ({
|
||||
tenantId,
|
||||
}: ReportsEvents) => {
|
||||
this.posthog.trackEvent({
|
||||
distinctId: `tenant-${tenantId}`,
|
||||
event: CASHFLOW_STATEMENT_VIEWED,
|
||||
properties: {},
|
||||
});
|
||||
};
|
||||
|
||||
private handleTrackGeneralLedgerViewedEvent = ({
|
||||
tenantId,
|
||||
}: ReportsEvents) => {
|
||||
this.posthog.trackEvent({
|
||||
distinctId: `tenant-${tenantId}`,
|
||||
event: GENERAL_LEDGER_VIEWED,
|
||||
properties: {},
|
||||
});
|
||||
};
|
||||
|
||||
private handleTrackJournalViewedEvent = ({ tenantId }: ReportsEvents) => {
|
||||
this.posthog.trackEvent({
|
||||
distinctId: `tenant-${tenantId}`,
|
||||
event: JOURNAL_VIEWED,
|
||||
properties: {},
|
||||
});
|
||||
};
|
||||
|
||||
private handleTrackReceivableAgingViewedEvent = ({
|
||||
tenantId,
|
||||
}: ReportsEvents) => {
|
||||
this.posthog.trackEvent({
|
||||
distinctId: `tenant-${tenantId}`,
|
||||
event: RECEIVABLE_AGING_VIEWED,
|
||||
properties: {},
|
||||
});
|
||||
};
|
||||
|
||||
private handleTrackPayableAgingViewedEvent = ({
|
||||
tenantId,
|
||||
}: ReportsEvents) => {
|
||||
this.posthog.trackEvent({
|
||||
distinctId: `tenant-${tenantId}`,
|
||||
event: PAYABLE_AGING_VIEWED,
|
||||
properties: {},
|
||||
});
|
||||
};
|
||||
|
||||
private handleTrackCustomerBalanceSummaryViewedEvent = ({
|
||||
tenantId,
|
||||
}: ReportsEvents) => {
|
||||
this.posthog.trackEvent({
|
||||
distinctId: `tenant-${tenantId}`,
|
||||
event: CUSTOMER_BALANCE_SUMMARY_VIEWED,
|
||||
properties: {},
|
||||
});
|
||||
};
|
||||
|
||||
private handleTrackVendorBalanceSummaryViewedEvent = ({
|
||||
tenantId,
|
||||
}: ReportsEvents) => {
|
||||
this.posthog.trackEvent({
|
||||
distinctId: `tenant-${tenantId}`,
|
||||
event: VENDOR_BALANCE_SUMMARY_VIEWED,
|
||||
properties: {},
|
||||
});
|
||||
};
|
||||
|
||||
private handleTrackInventoryValuationViewedEvent = ({
|
||||
tenantId,
|
||||
}: ReportsEvents) => {
|
||||
this.posthog.trackEvent({
|
||||
distinctId: `tenant-${tenantId}`,
|
||||
event: INVENTORY_VALUATION_VIEWED,
|
||||
properties: {},
|
||||
});
|
||||
};
|
||||
|
||||
private handleTrackCustomerTransactionsViewedEvent = ({
|
||||
tenantId,
|
||||
}: ReportsEvents) => {
|
||||
this.posthog.trackEvent({
|
||||
distinctId: `tenant-${tenantId}`,
|
||||
event: CUSTOMER_TRANSACTIONS_VIEWED,
|
||||
properties: {},
|
||||
});
|
||||
};
|
||||
|
||||
private handleTrackVendorTransactionsViewedEvent = ({
|
||||
tenantId,
|
||||
}: ReportsEvents) => {
|
||||
this.posthog.trackEvent({
|
||||
distinctId: `tenant-${tenantId}`,
|
||||
event: VENDOR_TRANSACTIONS_VIEWED,
|
||||
properties: {},
|
||||
});
|
||||
};
|
||||
|
||||
private handleTrackSalesByItemViewedEvent = ({ tenantId }: ReportsEvents) => {
|
||||
this.posthog.trackEvent({
|
||||
distinctId: `tenant-${tenantId}`,
|
||||
event: SALES_BY_ITEM_VIEWED,
|
||||
properties: {},
|
||||
});
|
||||
};
|
||||
|
||||
private handleTrackPurchasesByItemViewedEvent = ({
|
||||
tenantId,
|
||||
}: ReportsEvents) => {
|
||||
this.posthog.trackEvent({
|
||||
distinctId: `tenant-${tenantId}`,
|
||||
event: PURCHASES_BY_ITEM_VIEWED,
|
||||
properties: {},
|
||||
});
|
||||
};
|
||||
}
|
||||
@@ -12,6 +12,7 @@ import {
|
||||
SALE_ESTIMATE_EDITED,
|
||||
SALE_ESTIMATE_DELETED,
|
||||
SALE_ESTIMATE_PDF_VIEWED,
|
||||
SALE_ESTIMATE_VIEWED,
|
||||
} from '@/constants/event-tracker';
|
||||
|
||||
@Service()
|
||||
@@ -39,6 +40,10 @@ export class SaleEstimateEventsTracker extends EventSubscriber {
|
||||
events.saleEstimate.onPdfViewed,
|
||||
this.handleTrackPdfViewedEstimateEvent
|
||||
);
|
||||
bus.subscribe(
|
||||
events.saleEstimate.onViewed,
|
||||
this.handleTrackViewedEstimateEvent
|
||||
);
|
||||
}
|
||||
|
||||
private handleTrackEstimateCreatedEvent = ({
|
||||
@@ -80,4 +85,12 @@ export class SaleEstimateEventsTracker extends EventSubscriber {
|
||||
properties: {},
|
||||
});
|
||||
};
|
||||
|
||||
private handleTrackViewedEstimateEvent = ({ tenantId }) => {
|
||||
this.posthog.trackEvent({
|
||||
distinctId: `tenant-${tenantId}`,
|
||||
event: SALE_ESTIMATE_VIEWED,
|
||||
properties: {},
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
@@ -4,6 +4,8 @@ import { ITransactionsLockingPartialUnlocked } from '@/interfaces';
|
||||
import { PosthogService } from '../PostHog';
|
||||
import {
|
||||
SUBSCRIPTION_CANCELLED,
|
||||
SUBSCRIPTION_PAYMENT_FAILED,
|
||||
SUBSCRIPTION_PAYMENT_SUCCEED,
|
||||
SUBSCRIPTION_PLAN_CHANGED,
|
||||
SUBSCRIPTION_RESUMED,
|
||||
} from '@/constants/event-tracker';
|
||||
@@ -27,6 +29,14 @@ export class TransactionsLockingEventsTracker extends EventSubscriber {
|
||||
events.subscription.onSubscriptionPlanChanged,
|
||||
this.handleSubscriptionPlanChangedEvent
|
||||
);
|
||||
bus.subscribe(
|
||||
events.subscription.onSubscriptionPaymentSucceed,
|
||||
this.handleSubscriptionPaymentFailedEvent
|
||||
);
|
||||
bus.subscribe(
|
||||
events.subscription.onSubscriptionPaymentFailed,
|
||||
this.handleSubscriptionPaymentSucceed
|
||||
);
|
||||
}
|
||||
|
||||
private handleSubscriptionResumedEvent = ({ tenantId }) => {
|
||||
@@ -52,4 +62,20 @@ export class TransactionsLockingEventsTracker extends EventSubscriber {
|
||||
properties: {},
|
||||
});
|
||||
};
|
||||
|
||||
private handleSubscriptionPaymentFailedEvent = ({ tenantId }) => {
|
||||
this.posthog.trackEvent({
|
||||
distinctId: `tenant-${tenantId}`,
|
||||
event: SUBSCRIPTION_PAYMENT_FAILED,
|
||||
properties: {},
|
||||
});
|
||||
};
|
||||
|
||||
private handleSubscriptionPaymentSucceed = ({ tenantId }) => {
|
||||
this.posthog.trackEvent({
|
||||
distinctId: `tenant-${tenantId}`,
|
||||
event: SUBSCRIPTION_PAYMENT_SUCCEED,
|
||||
properties: {},
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@ import { PdfTemplateEventsTracker } from './PdfTemplateEventsTracker';
|
||||
import { PaymentMethodEventsTracker } from './PaymentMethodEventsTracker';
|
||||
import { PaymentLinkEventsTracker } from './PaymentLinkEventsTracker';
|
||||
import { StripeIntegrationEventsTracker } from './StripeIntegrationEventsTracker';
|
||||
import { ReportsEventsTracker } from './ReportsEventsTracker';
|
||||
|
||||
export const EventsTrackerListeners = [
|
||||
SaleInvoiceEventsTracker,
|
||||
@@ -36,4 +37,5 @@ export const EventsTrackerListeners = [
|
||||
PaymentMethodEventsTracker,
|
||||
PaymentLinkEventsTracker,
|
||||
StripeIntegrationEventsTracker,
|
||||
ReportsEventsTracker,
|
||||
];
|
||||
|
||||
@@ -6,6 +6,8 @@ import TenancyService from '@/services/Tenancy/TenancyService';
|
||||
import APAgingSummarySheet from './APAgingSummarySheet';
|
||||
import { Tenant } from '@/system/models';
|
||||
import { APAgingSummaryMeta } from './APAgingSummaryMeta';
|
||||
import { EventPublisher } from '@/lib/EventPublisher/EventPublisher';
|
||||
import events from '@/subscribers/events';
|
||||
|
||||
@Service()
|
||||
export class APAgingSummaryService {
|
||||
@@ -15,6 +17,9 @@ export class APAgingSummaryService {
|
||||
@Inject()
|
||||
private APAgingSummaryMeta: APAgingSummaryMeta;
|
||||
|
||||
@Inject()
|
||||
private eventPublisher: EventPublisher;
|
||||
|
||||
/**
|
||||
* Default report query.
|
||||
*/
|
||||
@@ -96,6 +101,12 @@ export class APAgingSummaryService {
|
||||
// Retrieve the aging summary report meta.
|
||||
const meta = await this.APAgingSummaryMeta.meta(tenantId, filter);
|
||||
|
||||
// Triggers `onPayableAgingViewed` event.
|
||||
await this.eventPublisher.emitAsync(events.reports.onPayableAgingViewed, {
|
||||
tenantId,
|
||||
query,
|
||||
});
|
||||
|
||||
return {
|
||||
data,
|
||||
columns,
|
||||
|
||||
@@ -6,6 +6,8 @@ import TenancyService from '@/services/Tenancy/TenancyService';
|
||||
import ARAgingSummarySheet from './ARAgingSummarySheet';
|
||||
import { Tenant } from '@/system/models';
|
||||
import { ARAgingSummaryMeta } from './ARAgingSummaryMeta';
|
||||
import { EventPublisher } from '@/lib/EventPublisher/EventPublisher';
|
||||
import events from '@/subscribers/events';
|
||||
|
||||
@Service()
|
||||
export default class ARAgingSummaryService {
|
||||
@@ -15,6 +17,9 @@ export default class ARAgingSummaryService {
|
||||
@Inject()
|
||||
private ARAgingSummaryMeta: ARAgingSummaryMeta;
|
||||
|
||||
@Inject()
|
||||
private eventPublisher: EventPublisher;
|
||||
|
||||
/**
|
||||
* Default report query.
|
||||
*/
|
||||
@@ -91,6 +96,15 @@ export default class ARAgingSummaryService {
|
||||
// Retrieve the aging summary report meta.
|
||||
const meta = await this.ARAgingSummaryMeta.meta(tenantId, filter);
|
||||
|
||||
// Triggers `onReceivableAgingViewed` event.
|
||||
await this.eventPublisher.emitAsync(
|
||||
events.reports.onReceivableAgingViewed,
|
||||
{
|
||||
tenantId,
|
||||
query,
|
||||
}
|
||||
);
|
||||
|
||||
return {
|
||||
data,
|
||||
columns,
|
||||
|
||||
@@ -10,6 +10,8 @@ import BalanceSheetStatement from './BalanceSheet';
|
||||
import { Tenant } from '@/system/models';
|
||||
import BalanceSheetRepository from './BalanceSheetRepository';
|
||||
import { BalanceSheetMetaInjectable } from './BalanceSheetMeta';
|
||||
import { EventPublisher } from '@/lib/EventPublisher/EventPublisher';
|
||||
import events from '@/subscribers/events';
|
||||
|
||||
@Service()
|
||||
export default class BalanceSheetStatementService
|
||||
@@ -21,6 +23,9 @@ export default class BalanceSheetStatementService
|
||||
@Inject()
|
||||
private balanceSheetMeta: BalanceSheetMetaInjectable;
|
||||
|
||||
@Inject()
|
||||
private eventPublisher: EventPublisher;
|
||||
|
||||
/**
|
||||
* Defaults balance sheet filter query.
|
||||
* @return {IBalanceSheetQuery}
|
||||
@@ -98,6 +103,10 @@ export default class BalanceSheetStatementService
|
||||
// Balance sheet meta.
|
||||
const meta = await this.balanceSheetMeta.meta(tenantId, filter);
|
||||
|
||||
// Triggers `onBalanceSheetViewed` event.
|
||||
await this.eventPublisher.emitAsync(events.reports.onBalanceSheetViewed, {
|
||||
query,
|
||||
});
|
||||
return {
|
||||
query: filter,
|
||||
data,
|
||||
|
||||
@@ -13,6 +13,8 @@ import Ledger from '@/services/Accounting/Ledger';
|
||||
import CustomerBalanceSummaryRepository from './CustomerBalanceSummaryRepository';
|
||||
import { Tenant } from '@/system/models';
|
||||
import { CustomerBalanceSummaryMeta } from './CustomerBalanceSummaryMeta';
|
||||
import { EventPublisher } from '@/lib/EventPublisher/EventPublisher';
|
||||
import events from '@/subscribers/events';
|
||||
|
||||
@Service()
|
||||
export class CustomerBalanceSummaryService
|
||||
@@ -24,6 +26,9 @@ export class CustomerBalanceSummaryService
|
||||
@Inject()
|
||||
private customerBalanceSummaryMeta: CustomerBalanceSummaryMeta;
|
||||
|
||||
@Inject()
|
||||
private eventPublisher: EventPublisher;
|
||||
|
||||
/**
|
||||
* Defaults balance sheet filter query.
|
||||
* @return {ICustomerBalanceSummaryQuery}
|
||||
@@ -104,6 +109,15 @@ export class CustomerBalanceSummaryService
|
||||
// Retrieve the customer balance summary meta.
|
||||
const meta = await this.customerBalanceSummaryMeta.meta(tenantId, filter);
|
||||
|
||||
// Triggers `onCustomerBalanceSummaryViewed` event.
|
||||
await this.eventPublisher.emitAsync(
|
||||
events.reports.onCustomerBalanceSummaryViewed,
|
||||
{
|
||||
tenant,
|
||||
query,
|
||||
}
|
||||
);
|
||||
|
||||
return {
|
||||
data: report.reportData(),
|
||||
query: filter,
|
||||
|
||||
@@ -5,6 +5,8 @@ import TenancyService from '@/services/Tenancy/TenancyService';
|
||||
import GeneralLedgerSheet from '@/services/FinancialStatements/GeneralLedger/GeneralLedger';
|
||||
import { GeneralLedgerMeta } from './GeneralLedgerMeta';
|
||||
import { GeneralLedgerRepository } from './GeneralLedgerRepository';
|
||||
import { EventPublisher } from '@/lib/EventPublisher/EventPublisher';
|
||||
import events from '@/subscribers/events';
|
||||
|
||||
@Service()
|
||||
export class GeneralLedgerService {
|
||||
@@ -14,6 +16,9 @@ export class GeneralLedgerService {
|
||||
@Inject()
|
||||
private generalLedgerMeta: GeneralLedgerMeta;
|
||||
|
||||
@Inject()
|
||||
private eventPublisher: EventPublisher;
|
||||
|
||||
/**
|
||||
* Defaults general ledger report filter query.
|
||||
* @return {IBalanceSheetQuery}
|
||||
@@ -72,6 +77,11 @@ export class GeneralLedgerService {
|
||||
// Retrieve general ledger report metadata.
|
||||
const meta = await this.generalLedgerMeta.meta(tenantId, filter);
|
||||
|
||||
// Triggers `onGeneralLedgerViewed` event.
|
||||
await this.eventPublisher.emitAsync(events.reports.onGeneralLedgerViewed, {
|
||||
tenantId,
|
||||
});
|
||||
|
||||
return {
|
||||
data: reportData,
|
||||
query: filter,
|
||||
|
||||
@@ -11,6 +11,8 @@ import { InventoryValuationSheet } from './InventoryValuationSheet';
|
||||
import InventoryService from '@/services/Inventory/Inventory';
|
||||
import { Tenant } from '@/system/models';
|
||||
import { InventoryValuationMetaInjectable } from './InventoryValuationSheetMeta';
|
||||
import { EventPublisher } from '@/lib/EventPublisher/EventPublisher';
|
||||
import events from '@/subscribers/events';
|
||||
|
||||
@Service()
|
||||
export class InventoryValuationSheetService {
|
||||
@@ -26,6 +28,9 @@ export class InventoryValuationSheetService {
|
||||
@Inject()
|
||||
private inventoryValuationMeta: InventoryValuationMetaInjectable;
|
||||
|
||||
@Inject()
|
||||
private eventPublisher: EventPublisher;
|
||||
|
||||
/**
|
||||
* Defaults balance sheet filter query.
|
||||
* @return {IBalanceSheetQuery}
|
||||
@@ -116,6 +121,15 @@ export class InventoryValuationSheetService {
|
||||
// Retrieves the inventorty valuation meta.
|
||||
const meta = await this.inventoryValuationMeta.meta(tenantId, filter);
|
||||
|
||||
// Triggers `onInventoryValuationViewed` event.
|
||||
await this.eventPublisher.emitAsync(
|
||||
events.reports.onInventoryValuationViewed,
|
||||
{
|
||||
tenantId,
|
||||
query,
|
||||
}
|
||||
);
|
||||
|
||||
return {
|
||||
data: inventoryValuationData,
|
||||
query: filter,
|
||||
|
||||
@@ -7,6 +7,8 @@ import Journal from '@/services/Accounting/JournalPoster';
|
||||
import { Tenant } from '@/system/models';
|
||||
import { transformToMap } from 'utils';
|
||||
import { JournalSheetMeta } from './JournalSheetMeta';
|
||||
import { EventPublisher } from '@/lib/EventPublisher/EventPublisher';
|
||||
import events from '@/subscribers/events';
|
||||
|
||||
@Service()
|
||||
export class JournalSheetService {
|
||||
@@ -16,6 +18,9 @@ export class JournalSheetService {
|
||||
@Inject()
|
||||
private journalSheetMeta: JournalSheetMeta;
|
||||
|
||||
@Inject()
|
||||
private eventPublisher: EventPublisher;
|
||||
|
||||
/**
|
||||
* Default journal sheet filter queyr.
|
||||
*/
|
||||
@@ -101,6 +106,12 @@ export class JournalSheetService {
|
||||
// Retrieve the journal sheet meta.
|
||||
const meta = await this.journalSheetMeta.meta(tenantId, filter);
|
||||
|
||||
// Triggers `onJournalViewed` event.
|
||||
await this.eventPublisher.emitAsync(events.reports.onJournalViewed, {
|
||||
tenantId,
|
||||
query,
|
||||
});
|
||||
|
||||
return {
|
||||
data: journalSheetData,
|
||||
query: filter,
|
||||
|
||||
@@ -10,6 +10,8 @@ import { Tenant } from '@/system/models';
|
||||
import { mergeQueryWithDefaults } from './utils';
|
||||
import { ProfitLossSheetRepository } from './ProfitLossSheetRepository';
|
||||
import { ProfitLossSheetMeta } from './ProfitLossSheetMeta';
|
||||
import { EventPublisher } from '@/lib/EventPublisher/EventPublisher';
|
||||
import events from '@/subscribers/events';
|
||||
|
||||
// Profit/Loss sheet service.
|
||||
@Service()
|
||||
@@ -20,6 +22,9 @@ export default class ProfitLossSheetService {
|
||||
@Inject()
|
||||
private profitLossSheetMeta: ProfitLossSheetMeta;
|
||||
|
||||
@Inject()
|
||||
private eventPublisher: EventPublisher;
|
||||
|
||||
/**
|
||||
* Retrieve profit/loss sheet statement.
|
||||
* @param {number} tenantId
|
||||
@@ -62,6 +67,15 @@ export default class ProfitLossSheetService {
|
||||
// Retrieve the profit/loss sheet meta.
|
||||
const meta = await this.profitLossSheetMeta.meta(tenantId, filter);
|
||||
|
||||
// Triggers `onProfitLossSheetViewed` event.
|
||||
await this.eventPublisher.emitAsync(
|
||||
events.reports.onProfitLossSheetViewed,
|
||||
{
|
||||
tenantId,
|
||||
query,
|
||||
}
|
||||
);
|
||||
|
||||
return {
|
||||
query: filter,
|
||||
data,
|
||||
|
||||
@@ -8,6 +8,8 @@ import {
|
||||
IPurchasesByItemsSheet,
|
||||
} from '@/interfaces/PurchasesByItemsSheet';
|
||||
import { PurchasesByItemsMeta } from './PurchasesByItemsMeta';
|
||||
import { EventPublisher } from '@/lib/EventPublisher/EventPublisher';
|
||||
import events from '@/subscribers/events';
|
||||
|
||||
@Service()
|
||||
export class PurchasesByItemsService {
|
||||
@@ -17,6 +19,9 @@ export class PurchasesByItemsService {
|
||||
@Inject()
|
||||
private purchasesByItemsMeta: PurchasesByItemsMeta;
|
||||
|
||||
@Inject()
|
||||
private eventPublisher: EventPublisher;
|
||||
|
||||
/**
|
||||
* Defaults purchases by items filter query.
|
||||
* @return {IPurchasesByItemsReportQuery}
|
||||
@@ -92,6 +97,15 @@ export class PurchasesByItemsService {
|
||||
// Retrieve the purchases by items meta.
|
||||
const meta = await this.purchasesByItemsMeta.meta(tenantId, query);
|
||||
|
||||
// Triggers `onPurchasesByItemViewed` event.
|
||||
await this.eventPublisher.emitAsync(
|
||||
events.reports.onPurchasesByItemViewed,
|
||||
{
|
||||
tenantId,
|
||||
query,
|
||||
}
|
||||
);
|
||||
|
||||
return {
|
||||
data: purchasesByItemsData,
|
||||
query: filter,
|
||||
|
||||
@@ -5,6 +5,8 @@ import TenancyService from '@/services/Tenancy/TenancyService';
|
||||
import SalesByItems from './SalesByItems';
|
||||
import { Tenant } from '@/system/models';
|
||||
import { SalesByItemsMeta } from './SalesByItemsMeta';
|
||||
import { EventPublisher } from '@/lib/EventPublisher/EventPublisher';
|
||||
import events from '@/subscribers/events';
|
||||
|
||||
@Service()
|
||||
export class SalesByItemsReportService {
|
||||
@@ -14,6 +16,9 @@ export class SalesByItemsReportService {
|
||||
@Inject()
|
||||
private salesByItemsMeta: SalesByItemsMeta;
|
||||
|
||||
@Inject()
|
||||
private eventPublisher: EventPublisher;
|
||||
|
||||
/**
|
||||
* Defaults balance sheet filter query.
|
||||
* @return {IBalanceSheetQuery}
|
||||
@@ -89,6 +94,12 @@ export class SalesByItemsReportService {
|
||||
// Retrieve the sales by items meta.
|
||||
const meta = await this.salesByItemsMeta.meta(tenantId, query);
|
||||
|
||||
// Triggers `onSalesByItemViewed` event.
|
||||
await this.eventPublisher.emitAsync(events.reports.onSalesByItemViewed, {
|
||||
tenantId,
|
||||
query,
|
||||
});
|
||||
|
||||
return {
|
||||
data: salesByItemsData,
|
||||
query: filter,
|
||||
|
||||
@@ -13,6 +13,8 @@ import Ledger from '@/services/Accounting/Ledger';
|
||||
import TransactionsByCustomersRepository from './TransactionsByCustomersRepository';
|
||||
import { Tenant } from '@/system/models';
|
||||
import { TransactionsByCustomersMeta } from './TransactionsByCustomersMeta';
|
||||
import { EventPublisher } from '@/lib/EventPublisher/EventPublisher';
|
||||
import events from '@/subscribers/events';
|
||||
|
||||
export class TransactionsByCustomersSheet
|
||||
implements ITransactionsByCustomersService
|
||||
@@ -26,6 +28,9 @@ export class TransactionsByCustomersSheet
|
||||
@Inject()
|
||||
private transactionsByCustomersMeta: TransactionsByCustomersMeta;
|
||||
|
||||
@Inject()
|
||||
private eventPublisher: EventPublisher;
|
||||
|
||||
/**
|
||||
* Defaults balance sheet filter query.
|
||||
* @return {ICustomerBalanceSummaryQuery}
|
||||
@@ -166,6 +171,15 @@ export class TransactionsByCustomersSheet
|
||||
|
||||
const meta = await this.transactionsByCustomersMeta.meta(tenantId, filter);
|
||||
|
||||
// Triggers `onCustomerTransactionsViewed` event.
|
||||
await this.eventPublisher.emitAsync(
|
||||
events.reports.onCustomerTransactionsViewed,
|
||||
{
|
||||
tenantId,
|
||||
query,
|
||||
}
|
||||
);
|
||||
|
||||
return {
|
||||
data: reportInstance.reportData(),
|
||||
query: filter,
|
||||
|
||||
@@ -13,6 +13,8 @@ import Ledger from '@/services/Accounting/Ledger';
|
||||
import TransactionsByVendorRepository from './TransactionsByVendorRepository';
|
||||
import { Tenant } from '@/system/models';
|
||||
import { TransactionsByVendorMeta } from './TransactionsByVendorMeta';
|
||||
import { EventPublisher } from '@/lib/EventPublisher/EventPublisher';
|
||||
import events from '@/subscribers/events';
|
||||
|
||||
export class TransactionsByVendorsInjectable
|
||||
implements ITransactionsByVendorsService
|
||||
@@ -26,6 +28,9 @@ export class TransactionsByVendorsInjectable
|
||||
@Inject()
|
||||
private transactionsByVendorMeta: TransactionsByVendorMeta;
|
||||
|
||||
@Inject()
|
||||
private eventPublisher: EventPublisher;
|
||||
|
||||
/**
|
||||
* Defaults balance sheet filter query.
|
||||
* @return {IVendorBalanceSummaryQuery}
|
||||
@@ -171,6 +176,15 @@ export class TransactionsByVendorsInjectable
|
||||
);
|
||||
const meta = await this.transactionsByVendorMeta.meta(tenantId, filter);
|
||||
|
||||
// Triggers `onVendorTransactionsViewed` event.
|
||||
await this.eventPublisher.emitAsync(
|
||||
events.reports.onVendorTransactionsViewed,
|
||||
{
|
||||
tenantId,
|
||||
query,
|
||||
}
|
||||
);
|
||||
|
||||
return {
|
||||
data: reportInstance.reportData(),
|
||||
query: filter,
|
||||
|
||||
@@ -7,6 +7,8 @@ import FinancialSheet from '../FinancialSheet';
|
||||
import { Tenant } from '@/system/models';
|
||||
import { TrialBalanceSheetRepository } from './TrialBalanceSheetRepository';
|
||||
import { TrialBalanceSheetMeta } from './TrialBalanceSheetMeta';
|
||||
import { EventPublisher } from '@/lib/EventPublisher/EventPublisher';
|
||||
import events from '@/subscribers/events';
|
||||
|
||||
@Service()
|
||||
export default class TrialBalanceSheetService extends FinancialSheet {
|
||||
@@ -16,6 +18,9 @@ export default class TrialBalanceSheetService extends FinancialSheet {
|
||||
@Inject()
|
||||
private trialBalanceSheetMetaService: TrialBalanceSheetMeta;
|
||||
|
||||
@Inject()
|
||||
private eventPublisher: EventPublisher;
|
||||
|
||||
/**
|
||||
* Defaults trial balance sheet filter query.
|
||||
* @return {IBalanceSheetQuery}
|
||||
@@ -81,6 +86,15 @@ export default class TrialBalanceSheetService extends FinancialSheet {
|
||||
// Trial balance sheet meta.
|
||||
const meta = await this.trialBalanceSheetMetaService.meta(tenantId, filter);
|
||||
|
||||
// Triggers `onTrialBalanceSheetViewed` event.
|
||||
await this.eventPublisher.emitAsync(
|
||||
events.reports.onTrialBalanceSheetView,
|
||||
{
|
||||
tenantId,
|
||||
query,
|
||||
}
|
||||
);
|
||||
|
||||
return {
|
||||
data: trialBalanceSheetData,
|
||||
query: filter,
|
||||
|
||||
@@ -15,6 +15,8 @@ import { Tenant } from '@/system/models';
|
||||
import { JournalSheetMeta } from '../JournalSheet/JournalSheetMeta';
|
||||
|
||||
import { VendorBalanceSummaryMeta } from './VendorBalanceSummaryMeta';
|
||||
import { EventPublisher } from '@/lib/EventPublisher/EventPublisher';
|
||||
import events from '@/subscribers/events';
|
||||
|
||||
export class VendorBalanceSummaryService
|
||||
implements IVendorBalanceSummaryService
|
||||
@@ -28,6 +30,9 @@ export class VendorBalanceSummaryService
|
||||
@Inject()
|
||||
private vendorBalanceSummaryMeta: VendorBalanceSummaryMeta;
|
||||
|
||||
@Inject()
|
||||
private eventPublisher: EventPublisher;
|
||||
|
||||
/**
|
||||
* Defaults balance sheet filter query.
|
||||
* @return {IVendorBalanceSummaryQuery}
|
||||
@@ -49,7 +54,7 @@ export class VendorBalanceSummaryService
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* Retrieve the vendors ledger entrjes.
|
||||
* @param {number} tenantId -
|
||||
* @param {Date|string} date -
|
||||
@@ -107,10 +112,19 @@ export class VendorBalanceSummaryService
|
||||
// Retrieve the vendor balance summary meta.
|
||||
const meta = await this.vendorBalanceSummaryMeta.meta(tenantId, filter);
|
||||
|
||||
// Triggers `onVendorBalanceSummaryViewed` event.
|
||||
await this.eventPublisher.emitAsync(
|
||||
events.reports.onVendorBalanceSummaryViewed,
|
||||
{
|
||||
tenantId,
|
||||
query,
|
||||
}
|
||||
);
|
||||
|
||||
return {
|
||||
data: reportInstance.reportData(),
|
||||
query: filter,
|
||||
meta
|
||||
meta,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -39,8 +39,8 @@ export class ItemsApplication {
|
||||
|
||||
/**
|
||||
* Creates a new item (service/product).
|
||||
* @param {number} tenantId
|
||||
* @param {IItemCreateDTO} itemDTO
|
||||
* @param {number} tenantId
|
||||
* @param {IItemCreateDTO} itemDTO
|
||||
* @returns {Promise<IItem>}
|
||||
*/
|
||||
public async createItem(
|
||||
@@ -52,8 +52,8 @@ export class ItemsApplication {
|
||||
|
||||
/**
|
||||
* Retrieves the given item.
|
||||
* @param {number} tenantId
|
||||
* @param {number} itemId
|
||||
* @param {number} tenantId
|
||||
* @param {number} itemId
|
||||
* @returns {Promise<IItem>}
|
||||
*/
|
||||
public getItem(tenantId: number, itemId: number): Promise<IItem> {
|
||||
@@ -62,9 +62,9 @@ export class ItemsApplication {
|
||||
|
||||
/**
|
||||
* Edits the given item (service/product).
|
||||
* @param {number} tenantId
|
||||
* @param {number} itemId
|
||||
* @param {IItemEditDTO} itemDTO
|
||||
* @param {number} tenantId
|
||||
* @param {number} itemId
|
||||
* @param {IItemEditDTO} itemDTO
|
||||
* @returns {Promise<IItem>}
|
||||
*/
|
||||
public editItem(tenantId: number, itemId: number, itemDTO: IItemEditDTO) {
|
||||
@@ -73,8 +73,8 @@ export class ItemsApplication {
|
||||
|
||||
/**
|
||||
* Deletes the given item (service/product).
|
||||
* @param {number} tenantId
|
||||
* @param {number} itemId
|
||||
* @param {number} tenantId
|
||||
* @param {number} itemId
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
public deleteItem(tenantId: number, itemId: number) {
|
||||
|
||||
@@ -3,6 +3,8 @@ import HasTenancyService from '@/services/Tenancy/TenancyService';
|
||||
import { TransformerInjectable } from '@/lib/Transformer/TransformerInjectable';
|
||||
import { SaleEstimateTransfromer } from './SaleEstimateTransformer';
|
||||
import { SaleEstimateValidators } from './SaleEstimateValidators';
|
||||
import { EventPublisher } from '@/lib/EventPublisher/EventPublisher';
|
||||
import events from '@/subscribers/events';
|
||||
|
||||
@Service()
|
||||
export class GetSaleEstimate {
|
||||
@@ -15,6 +17,9 @@ export class GetSaleEstimate {
|
||||
@Inject()
|
||||
private validators: SaleEstimateValidators;
|
||||
|
||||
@Inject()
|
||||
private eventPublisher: EventPublisher;
|
||||
|
||||
/**
|
||||
* Retrieve the estimate details with associated entries.
|
||||
* @async
|
||||
@@ -35,10 +40,18 @@ export class GetSaleEstimate {
|
||||
this.validators.validateEstimateExistance(estimate);
|
||||
|
||||
// Transformes sale estimate model to POJO.
|
||||
return this.transformer.transform(
|
||||
const transformed = await this.transformer.transform(
|
||||
tenantId,
|
||||
estimate,
|
||||
new SaleEstimateTransfromer()
|
||||
);
|
||||
const eventPayload = { tenantId, saleEstimateId: estimateId };
|
||||
|
||||
// Triggers `onSaleEstimateViewed` event.
|
||||
await this.eventPublisher.emitAsync(
|
||||
events.saleEstimate.onViewed,
|
||||
eventPayload
|
||||
);
|
||||
return transformed;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -180,6 +180,7 @@ export default {
|
||||
* Sales estimates service.
|
||||
*/
|
||||
saleEstimate: {
|
||||
onViewed: 'onSaleEstimateViewed',
|
||||
onPdfViewed: 'onSaleEstimatePdfViewed',
|
||||
|
||||
onCreating: 'onSaleEstimateCreating',
|
||||
@@ -751,4 +752,23 @@ export default {
|
||||
onCheckoutSessionCompleted: 'onStripeCheckoutSessionCompleted',
|
||||
onAccountUpdated: 'onStripeAccountUpdated',
|
||||
},
|
||||
|
||||
// Reports
|
||||
reports: {
|
||||
onBalanceSheetViewed: 'onBalanceSheetViewed',
|
||||
onTrialBalanceSheetView: 'onTrialBalanceSheetViewed',
|
||||
onProfitLossSheetViewed: 'onProfitLossSheetViewed',
|
||||
onCashflowStatementViewed: 'onCashflowStatementViewed',
|
||||
onGeneralLedgerViewed: 'onGeneralLedgerViewed',
|
||||
onJournalViewed: 'onJounralViewed',
|
||||
onReceivableAgingViewed: 'onReceivableAgingViewed',
|
||||
onPayableAgingViewed: 'onPayableAgingViewed',
|
||||
onCustomerBalanceSummaryViewed: 'onInventoryValuationViewed',
|
||||
onVendorBalanceSummaryViewed: 'onVendorBalanceSummaryViewed',
|
||||
onInventoryValuationViewed: 'onCustomerBalanceSummaryViewed',
|
||||
onCustomerTransactionsViewed: 'onCustomerTransactionsViewed',
|
||||
onVendorTransactionsViewed: 'onVendorTransactionsViewed',
|
||||
onSalesByItemViewed: 'onSalesByItemViewed',
|
||||
onPurchasesByItemViewed: 'onPurchasesByItemViewed',
|
||||
},
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user