mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-22 15:50:32 +00:00
feat: Track reports view events
This commit is contained in:
@@ -103,3 +103,21 @@ export const SALE_GROUP = 'Sale';
|
|||||||
export const PAYMENT_GROUP = 'Payment';
|
export const PAYMENT_GROUP = 'Payment';
|
||||||
export const BILL_GROUP = 'Bill';
|
export const BILL_GROUP = 'Bill';
|
||||||
export const EXPENSE_GROUP = 'Expense';
|
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';
|
||||||
|
|||||||
@@ -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: {},
|
||||||
|
});
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -16,6 +16,7 @@ import { PdfTemplateEventsTracker } from './PdfTemplateEventsTracker';
|
|||||||
import { PaymentMethodEventsTracker } from './PaymentMethodEventsTracker';
|
import { PaymentMethodEventsTracker } from './PaymentMethodEventsTracker';
|
||||||
import { PaymentLinkEventsTracker } from './PaymentLinkEventsTracker';
|
import { PaymentLinkEventsTracker } from './PaymentLinkEventsTracker';
|
||||||
import { StripeIntegrationEventsTracker } from './StripeIntegrationEventsTracker';
|
import { StripeIntegrationEventsTracker } from './StripeIntegrationEventsTracker';
|
||||||
|
import { ReportsEventsTracker } from './ReportsEventsTracker';
|
||||||
|
|
||||||
export const EventsTrackerListeners = [
|
export const EventsTrackerListeners = [
|
||||||
SaleInvoiceEventsTracker,
|
SaleInvoiceEventsTracker,
|
||||||
@@ -36,4 +37,5 @@ export const EventsTrackerListeners = [
|
|||||||
PaymentMethodEventsTracker,
|
PaymentMethodEventsTracker,
|
||||||
PaymentLinkEventsTracker,
|
PaymentLinkEventsTracker,
|
||||||
StripeIntegrationEventsTracker,
|
StripeIntegrationEventsTracker,
|
||||||
|
ReportsEventsTracker,
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -6,6 +6,8 @@ import TenancyService from '@/services/Tenancy/TenancyService';
|
|||||||
import APAgingSummarySheet from './APAgingSummarySheet';
|
import APAgingSummarySheet from './APAgingSummarySheet';
|
||||||
import { Tenant } from '@/system/models';
|
import { Tenant } from '@/system/models';
|
||||||
import { APAgingSummaryMeta } from './APAgingSummaryMeta';
|
import { APAgingSummaryMeta } from './APAgingSummaryMeta';
|
||||||
|
import { EventPublisher } from '@/lib/EventPublisher/EventPublisher';
|
||||||
|
import events from '@/subscribers/events';
|
||||||
|
|
||||||
@Service()
|
@Service()
|
||||||
export class APAgingSummaryService {
|
export class APAgingSummaryService {
|
||||||
@@ -15,6 +17,9 @@ export class APAgingSummaryService {
|
|||||||
@Inject()
|
@Inject()
|
||||||
private APAgingSummaryMeta: APAgingSummaryMeta;
|
private APAgingSummaryMeta: APAgingSummaryMeta;
|
||||||
|
|
||||||
|
@Inject()
|
||||||
|
private eventPublisher: EventPublisher;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Default report query.
|
* Default report query.
|
||||||
*/
|
*/
|
||||||
@@ -96,6 +101,12 @@ export class APAgingSummaryService {
|
|||||||
// Retrieve the aging summary report meta.
|
// Retrieve the aging summary report meta.
|
||||||
const meta = await this.APAgingSummaryMeta.meta(tenantId, filter);
|
const meta = await this.APAgingSummaryMeta.meta(tenantId, filter);
|
||||||
|
|
||||||
|
// Triggers `onPayableAgingViewed` event.
|
||||||
|
await this.eventPublisher.emitAsync(events.reports.onPayableAgingViewed, {
|
||||||
|
tenantId,
|
||||||
|
query,
|
||||||
|
});
|
||||||
|
|
||||||
return {
|
return {
|
||||||
data,
|
data,
|
||||||
columns,
|
columns,
|
||||||
|
|||||||
@@ -6,6 +6,8 @@ import TenancyService from '@/services/Tenancy/TenancyService';
|
|||||||
import ARAgingSummarySheet from './ARAgingSummarySheet';
|
import ARAgingSummarySheet from './ARAgingSummarySheet';
|
||||||
import { Tenant } from '@/system/models';
|
import { Tenant } from '@/system/models';
|
||||||
import { ARAgingSummaryMeta } from './ARAgingSummaryMeta';
|
import { ARAgingSummaryMeta } from './ARAgingSummaryMeta';
|
||||||
|
import { EventPublisher } from '@/lib/EventPublisher/EventPublisher';
|
||||||
|
import events from '@/subscribers/events';
|
||||||
|
|
||||||
@Service()
|
@Service()
|
||||||
export default class ARAgingSummaryService {
|
export default class ARAgingSummaryService {
|
||||||
@@ -15,6 +17,9 @@ export default class ARAgingSummaryService {
|
|||||||
@Inject()
|
@Inject()
|
||||||
private ARAgingSummaryMeta: ARAgingSummaryMeta;
|
private ARAgingSummaryMeta: ARAgingSummaryMeta;
|
||||||
|
|
||||||
|
@Inject()
|
||||||
|
private eventPublisher: EventPublisher;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Default report query.
|
* Default report query.
|
||||||
*/
|
*/
|
||||||
@@ -91,6 +96,15 @@ export default class ARAgingSummaryService {
|
|||||||
// Retrieve the aging summary report meta.
|
// Retrieve the aging summary report meta.
|
||||||
const meta = await this.ARAgingSummaryMeta.meta(tenantId, filter);
|
const meta = await this.ARAgingSummaryMeta.meta(tenantId, filter);
|
||||||
|
|
||||||
|
// Triggers `onReceivableAgingViewed` event.
|
||||||
|
await this.eventPublisher.emitAsync(
|
||||||
|
events.reports.onReceivableAgingViewed,
|
||||||
|
{
|
||||||
|
tenantId,
|
||||||
|
query,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
data,
|
data,
|
||||||
columns,
|
columns,
|
||||||
|
|||||||
@@ -10,6 +10,8 @@ import BalanceSheetStatement from './BalanceSheet';
|
|||||||
import { Tenant } from '@/system/models';
|
import { Tenant } from '@/system/models';
|
||||||
import BalanceSheetRepository from './BalanceSheetRepository';
|
import BalanceSheetRepository from './BalanceSheetRepository';
|
||||||
import { BalanceSheetMetaInjectable } from './BalanceSheetMeta';
|
import { BalanceSheetMetaInjectable } from './BalanceSheetMeta';
|
||||||
|
import { EventPublisher } from '@/lib/EventPublisher/EventPublisher';
|
||||||
|
import events from '@/subscribers/events';
|
||||||
|
|
||||||
@Service()
|
@Service()
|
||||||
export default class BalanceSheetStatementService
|
export default class BalanceSheetStatementService
|
||||||
@@ -21,6 +23,9 @@ export default class BalanceSheetStatementService
|
|||||||
@Inject()
|
@Inject()
|
||||||
private balanceSheetMeta: BalanceSheetMetaInjectable;
|
private balanceSheetMeta: BalanceSheetMetaInjectable;
|
||||||
|
|
||||||
|
@Inject()
|
||||||
|
private eventPublisher: EventPublisher;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Defaults balance sheet filter query.
|
* Defaults balance sheet filter query.
|
||||||
* @return {IBalanceSheetQuery}
|
* @return {IBalanceSheetQuery}
|
||||||
@@ -98,6 +103,10 @@ export default class BalanceSheetStatementService
|
|||||||
// Balance sheet meta.
|
// Balance sheet meta.
|
||||||
const meta = await this.balanceSheetMeta.meta(tenantId, filter);
|
const meta = await this.balanceSheetMeta.meta(tenantId, filter);
|
||||||
|
|
||||||
|
// Triggers `onBalanceSheetViewed` event.
|
||||||
|
await this.eventPublisher.emitAsync(events.reports.onBalanceSheetViewed, {
|
||||||
|
query,
|
||||||
|
});
|
||||||
return {
|
return {
|
||||||
query: filter,
|
query: filter,
|
||||||
data,
|
data,
|
||||||
|
|||||||
@@ -13,6 +13,8 @@ import Ledger from '@/services/Accounting/Ledger';
|
|||||||
import CustomerBalanceSummaryRepository from './CustomerBalanceSummaryRepository';
|
import CustomerBalanceSummaryRepository from './CustomerBalanceSummaryRepository';
|
||||||
import { Tenant } from '@/system/models';
|
import { Tenant } from '@/system/models';
|
||||||
import { CustomerBalanceSummaryMeta } from './CustomerBalanceSummaryMeta';
|
import { CustomerBalanceSummaryMeta } from './CustomerBalanceSummaryMeta';
|
||||||
|
import { EventPublisher } from '@/lib/EventPublisher/EventPublisher';
|
||||||
|
import events from '@/subscribers/events';
|
||||||
|
|
||||||
@Service()
|
@Service()
|
||||||
export class CustomerBalanceSummaryService
|
export class CustomerBalanceSummaryService
|
||||||
@@ -24,6 +26,9 @@ export class CustomerBalanceSummaryService
|
|||||||
@Inject()
|
@Inject()
|
||||||
private customerBalanceSummaryMeta: CustomerBalanceSummaryMeta;
|
private customerBalanceSummaryMeta: CustomerBalanceSummaryMeta;
|
||||||
|
|
||||||
|
@Inject()
|
||||||
|
private eventPublisher: EventPublisher;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Defaults balance sheet filter query.
|
* Defaults balance sheet filter query.
|
||||||
* @return {ICustomerBalanceSummaryQuery}
|
* @return {ICustomerBalanceSummaryQuery}
|
||||||
@@ -104,6 +109,15 @@ export class CustomerBalanceSummaryService
|
|||||||
// Retrieve the customer balance summary meta.
|
// Retrieve the customer balance summary meta.
|
||||||
const meta = await this.customerBalanceSummaryMeta.meta(tenantId, filter);
|
const meta = await this.customerBalanceSummaryMeta.meta(tenantId, filter);
|
||||||
|
|
||||||
|
// Triggers `onCustomerBalanceSummaryViewed` event.
|
||||||
|
await this.eventPublisher.emitAsync(
|
||||||
|
events.reports.onCustomerBalanceSummaryViewed,
|
||||||
|
{
|
||||||
|
tenant,
|
||||||
|
query,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
data: report.reportData(),
|
data: report.reportData(),
|
||||||
query: filter,
|
query: filter,
|
||||||
|
|||||||
@@ -5,6 +5,8 @@ import TenancyService from '@/services/Tenancy/TenancyService';
|
|||||||
import GeneralLedgerSheet from '@/services/FinancialStatements/GeneralLedger/GeneralLedger';
|
import GeneralLedgerSheet from '@/services/FinancialStatements/GeneralLedger/GeneralLedger';
|
||||||
import { GeneralLedgerMeta } from './GeneralLedgerMeta';
|
import { GeneralLedgerMeta } from './GeneralLedgerMeta';
|
||||||
import { GeneralLedgerRepository } from './GeneralLedgerRepository';
|
import { GeneralLedgerRepository } from './GeneralLedgerRepository';
|
||||||
|
import { EventPublisher } from '@/lib/EventPublisher/EventPublisher';
|
||||||
|
import events from '@/subscribers/events';
|
||||||
|
|
||||||
@Service()
|
@Service()
|
||||||
export class GeneralLedgerService {
|
export class GeneralLedgerService {
|
||||||
@@ -14,6 +16,9 @@ export class GeneralLedgerService {
|
|||||||
@Inject()
|
@Inject()
|
||||||
private generalLedgerMeta: GeneralLedgerMeta;
|
private generalLedgerMeta: GeneralLedgerMeta;
|
||||||
|
|
||||||
|
@Inject()
|
||||||
|
private eventPublisher: EventPublisher;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Defaults general ledger report filter query.
|
* Defaults general ledger report filter query.
|
||||||
* @return {IBalanceSheetQuery}
|
* @return {IBalanceSheetQuery}
|
||||||
@@ -72,6 +77,11 @@ export class GeneralLedgerService {
|
|||||||
// Retrieve general ledger report metadata.
|
// Retrieve general ledger report metadata.
|
||||||
const meta = await this.generalLedgerMeta.meta(tenantId, filter);
|
const meta = await this.generalLedgerMeta.meta(tenantId, filter);
|
||||||
|
|
||||||
|
// Triggers `onGeneralLedgerViewed` event.
|
||||||
|
await this.eventPublisher.emitAsync(events.reports.onGeneralLedgerViewed, {
|
||||||
|
tenantId,
|
||||||
|
});
|
||||||
|
|
||||||
return {
|
return {
|
||||||
data: reportData,
|
data: reportData,
|
||||||
query: filter,
|
query: filter,
|
||||||
|
|||||||
@@ -11,6 +11,8 @@ import { InventoryValuationSheet } from './InventoryValuationSheet';
|
|||||||
import InventoryService from '@/services/Inventory/Inventory';
|
import InventoryService from '@/services/Inventory/Inventory';
|
||||||
import { Tenant } from '@/system/models';
|
import { Tenant } from '@/system/models';
|
||||||
import { InventoryValuationMetaInjectable } from './InventoryValuationSheetMeta';
|
import { InventoryValuationMetaInjectable } from './InventoryValuationSheetMeta';
|
||||||
|
import { EventPublisher } from '@/lib/EventPublisher/EventPublisher';
|
||||||
|
import events from '@/subscribers/events';
|
||||||
|
|
||||||
@Service()
|
@Service()
|
||||||
export class InventoryValuationSheetService {
|
export class InventoryValuationSheetService {
|
||||||
@@ -26,6 +28,9 @@ export class InventoryValuationSheetService {
|
|||||||
@Inject()
|
@Inject()
|
||||||
private inventoryValuationMeta: InventoryValuationMetaInjectable;
|
private inventoryValuationMeta: InventoryValuationMetaInjectable;
|
||||||
|
|
||||||
|
@Inject()
|
||||||
|
private eventPublisher: EventPublisher;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Defaults balance sheet filter query.
|
* Defaults balance sheet filter query.
|
||||||
* @return {IBalanceSheetQuery}
|
* @return {IBalanceSheetQuery}
|
||||||
@@ -116,6 +121,15 @@ export class InventoryValuationSheetService {
|
|||||||
// Retrieves the inventorty valuation meta.
|
// Retrieves the inventorty valuation meta.
|
||||||
const meta = await this.inventoryValuationMeta.meta(tenantId, filter);
|
const meta = await this.inventoryValuationMeta.meta(tenantId, filter);
|
||||||
|
|
||||||
|
// Triggers `onInventoryValuationViewed` event.
|
||||||
|
await this.eventPublisher.emitAsync(
|
||||||
|
events.reports.onInventoryValuationViewed,
|
||||||
|
{
|
||||||
|
tenantId,
|
||||||
|
query,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
data: inventoryValuationData,
|
data: inventoryValuationData,
|
||||||
query: filter,
|
query: filter,
|
||||||
|
|||||||
@@ -7,6 +7,8 @@ import Journal from '@/services/Accounting/JournalPoster';
|
|||||||
import { Tenant } from '@/system/models';
|
import { Tenant } from '@/system/models';
|
||||||
import { transformToMap } from 'utils';
|
import { transformToMap } from 'utils';
|
||||||
import { JournalSheetMeta } from './JournalSheetMeta';
|
import { JournalSheetMeta } from './JournalSheetMeta';
|
||||||
|
import { EventPublisher } from '@/lib/EventPublisher/EventPublisher';
|
||||||
|
import events from '@/subscribers/events';
|
||||||
|
|
||||||
@Service()
|
@Service()
|
||||||
export class JournalSheetService {
|
export class JournalSheetService {
|
||||||
@@ -16,6 +18,9 @@ export class JournalSheetService {
|
|||||||
@Inject()
|
@Inject()
|
||||||
private journalSheetMeta: JournalSheetMeta;
|
private journalSheetMeta: JournalSheetMeta;
|
||||||
|
|
||||||
|
@Inject()
|
||||||
|
private eventPublisher: EventPublisher;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Default journal sheet filter queyr.
|
* Default journal sheet filter queyr.
|
||||||
*/
|
*/
|
||||||
@@ -101,6 +106,12 @@ export class JournalSheetService {
|
|||||||
// Retrieve the journal sheet meta.
|
// Retrieve the journal sheet meta.
|
||||||
const meta = await this.journalSheetMeta.meta(tenantId, filter);
|
const meta = await this.journalSheetMeta.meta(tenantId, filter);
|
||||||
|
|
||||||
|
// Triggers `onJournalViewed` event.
|
||||||
|
await this.eventPublisher.emitAsync(events.reports.onJournalViewed, {
|
||||||
|
tenantId,
|
||||||
|
query,
|
||||||
|
});
|
||||||
|
|
||||||
return {
|
return {
|
||||||
data: journalSheetData,
|
data: journalSheetData,
|
||||||
query: filter,
|
query: filter,
|
||||||
|
|||||||
@@ -10,6 +10,8 @@ import { Tenant } from '@/system/models';
|
|||||||
import { mergeQueryWithDefaults } from './utils';
|
import { mergeQueryWithDefaults } from './utils';
|
||||||
import { ProfitLossSheetRepository } from './ProfitLossSheetRepository';
|
import { ProfitLossSheetRepository } from './ProfitLossSheetRepository';
|
||||||
import { ProfitLossSheetMeta } from './ProfitLossSheetMeta';
|
import { ProfitLossSheetMeta } from './ProfitLossSheetMeta';
|
||||||
|
import { EventPublisher } from '@/lib/EventPublisher/EventPublisher';
|
||||||
|
import events from '@/subscribers/events';
|
||||||
|
|
||||||
// Profit/Loss sheet service.
|
// Profit/Loss sheet service.
|
||||||
@Service()
|
@Service()
|
||||||
@@ -20,6 +22,9 @@ export default class ProfitLossSheetService {
|
|||||||
@Inject()
|
@Inject()
|
||||||
private profitLossSheetMeta: ProfitLossSheetMeta;
|
private profitLossSheetMeta: ProfitLossSheetMeta;
|
||||||
|
|
||||||
|
@Inject()
|
||||||
|
private eventPublisher: EventPublisher;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieve profit/loss sheet statement.
|
* Retrieve profit/loss sheet statement.
|
||||||
* @param {number} tenantId
|
* @param {number} tenantId
|
||||||
@@ -62,6 +67,15 @@ export default class ProfitLossSheetService {
|
|||||||
// Retrieve the profit/loss sheet meta.
|
// Retrieve the profit/loss sheet meta.
|
||||||
const meta = await this.profitLossSheetMeta.meta(tenantId, filter);
|
const meta = await this.profitLossSheetMeta.meta(tenantId, filter);
|
||||||
|
|
||||||
|
// Triggers `onProfitLossSheetViewed` event.
|
||||||
|
await this.eventPublisher.emitAsync(
|
||||||
|
events.reports.onProfitLossSheetViewed,
|
||||||
|
{
|
||||||
|
tenantId,
|
||||||
|
query,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
query: filter,
|
query: filter,
|
||||||
data,
|
data,
|
||||||
|
|||||||
@@ -8,6 +8,8 @@ import {
|
|||||||
IPurchasesByItemsSheet,
|
IPurchasesByItemsSheet,
|
||||||
} from '@/interfaces/PurchasesByItemsSheet';
|
} from '@/interfaces/PurchasesByItemsSheet';
|
||||||
import { PurchasesByItemsMeta } from './PurchasesByItemsMeta';
|
import { PurchasesByItemsMeta } from './PurchasesByItemsMeta';
|
||||||
|
import { EventPublisher } from '@/lib/EventPublisher/EventPublisher';
|
||||||
|
import events from '@/subscribers/events';
|
||||||
|
|
||||||
@Service()
|
@Service()
|
||||||
export class PurchasesByItemsService {
|
export class PurchasesByItemsService {
|
||||||
@@ -17,6 +19,9 @@ export class PurchasesByItemsService {
|
|||||||
@Inject()
|
@Inject()
|
||||||
private purchasesByItemsMeta: PurchasesByItemsMeta;
|
private purchasesByItemsMeta: PurchasesByItemsMeta;
|
||||||
|
|
||||||
|
@Inject()
|
||||||
|
private eventPublisher: EventPublisher;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Defaults purchases by items filter query.
|
* Defaults purchases by items filter query.
|
||||||
* @return {IPurchasesByItemsReportQuery}
|
* @return {IPurchasesByItemsReportQuery}
|
||||||
@@ -92,6 +97,15 @@ export class PurchasesByItemsService {
|
|||||||
// Retrieve the purchases by items meta.
|
// Retrieve the purchases by items meta.
|
||||||
const meta = await this.purchasesByItemsMeta.meta(tenantId, query);
|
const meta = await this.purchasesByItemsMeta.meta(tenantId, query);
|
||||||
|
|
||||||
|
// Triggers `onPurchasesByItemViewed` event.
|
||||||
|
await this.eventPublisher.emitAsync(
|
||||||
|
events.reports.onPurchasesByItemViewed,
|
||||||
|
{
|
||||||
|
tenantId,
|
||||||
|
query,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
data: purchasesByItemsData,
|
data: purchasesByItemsData,
|
||||||
query: filter,
|
query: filter,
|
||||||
|
|||||||
@@ -5,6 +5,8 @@ import TenancyService from '@/services/Tenancy/TenancyService';
|
|||||||
import SalesByItems from './SalesByItems';
|
import SalesByItems from './SalesByItems';
|
||||||
import { Tenant } from '@/system/models';
|
import { Tenant } from '@/system/models';
|
||||||
import { SalesByItemsMeta } from './SalesByItemsMeta';
|
import { SalesByItemsMeta } from './SalesByItemsMeta';
|
||||||
|
import { EventPublisher } from '@/lib/EventPublisher/EventPublisher';
|
||||||
|
import events from '@/subscribers/events';
|
||||||
|
|
||||||
@Service()
|
@Service()
|
||||||
export class SalesByItemsReportService {
|
export class SalesByItemsReportService {
|
||||||
@@ -14,6 +16,9 @@ export class SalesByItemsReportService {
|
|||||||
@Inject()
|
@Inject()
|
||||||
private salesByItemsMeta: SalesByItemsMeta;
|
private salesByItemsMeta: SalesByItemsMeta;
|
||||||
|
|
||||||
|
@Inject()
|
||||||
|
private eventPublisher: EventPublisher;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Defaults balance sheet filter query.
|
* Defaults balance sheet filter query.
|
||||||
* @return {IBalanceSheetQuery}
|
* @return {IBalanceSheetQuery}
|
||||||
@@ -89,6 +94,12 @@ export class SalesByItemsReportService {
|
|||||||
// Retrieve the sales by items meta.
|
// Retrieve the sales by items meta.
|
||||||
const meta = await this.salesByItemsMeta.meta(tenantId, query);
|
const meta = await this.salesByItemsMeta.meta(tenantId, query);
|
||||||
|
|
||||||
|
// Triggers `onSalesByItemViewed` event.
|
||||||
|
await this.eventPublisher.emitAsync(events.reports.onSalesByItemViewed, {
|
||||||
|
tenantId,
|
||||||
|
query,
|
||||||
|
});
|
||||||
|
|
||||||
return {
|
return {
|
||||||
data: salesByItemsData,
|
data: salesByItemsData,
|
||||||
query: filter,
|
query: filter,
|
||||||
|
|||||||
@@ -13,6 +13,8 @@ import Ledger from '@/services/Accounting/Ledger';
|
|||||||
import TransactionsByCustomersRepository from './TransactionsByCustomersRepository';
|
import TransactionsByCustomersRepository from './TransactionsByCustomersRepository';
|
||||||
import { Tenant } from '@/system/models';
|
import { Tenant } from '@/system/models';
|
||||||
import { TransactionsByCustomersMeta } from './TransactionsByCustomersMeta';
|
import { TransactionsByCustomersMeta } from './TransactionsByCustomersMeta';
|
||||||
|
import { EventPublisher } from '@/lib/EventPublisher/EventPublisher';
|
||||||
|
import events from '@/subscribers/events';
|
||||||
|
|
||||||
export class TransactionsByCustomersSheet
|
export class TransactionsByCustomersSheet
|
||||||
implements ITransactionsByCustomersService
|
implements ITransactionsByCustomersService
|
||||||
@@ -26,6 +28,9 @@ export class TransactionsByCustomersSheet
|
|||||||
@Inject()
|
@Inject()
|
||||||
private transactionsByCustomersMeta: TransactionsByCustomersMeta;
|
private transactionsByCustomersMeta: TransactionsByCustomersMeta;
|
||||||
|
|
||||||
|
@Inject()
|
||||||
|
private eventPublisher: EventPublisher;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Defaults balance sheet filter query.
|
* Defaults balance sheet filter query.
|
||||||
* @return {ICustomerBalanceSummaryQuery}
|
* @return {ICustomerBalanceSummaryQuery}
|
||||||
@@ -166,6 +171,15 @@ export class TransactionsByCustomersSheet
|
|||||||
|
|
||||||
const meta = await this.transactionsByCustomersMeta.meta(tenantId, filter);
|
const meta = await this.transactionsByCustomersMeta.meta(tenantId, filter);
|
||||||
|
|
||||||
|
// Triggers `onCustomerTransactionsViewed` event.
|
||||||
|
await this.eventPublisher.emitAsync(
|
||||||
|
events.reports.onCustomerTransactionsViewed,
|
||||||
|
{
|
||||||
|
tenantId,
|
||||||
|
query,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
data: reportInstance.reportData(),
|
data: reportInstance.reportData(),
|
||||||
query: filter,
|
query: filter,
|
||||||
|
|||||||
@@ -13,6 +13,8 @@ import Ledger from '@/services/Accounting/Ledger';
|
|||||||
import TransactionsByVendorRepository from './TransactionsByVendorRepository';
|
import TransactionsByVendorRepository from './TransactionsByVendorRepository';
|
||||||
import { Tenant } from '@/system/models';
|
import { Tenant } from '@/system/models';
|
||||||
import { TransactionsByVendorMeta } from './TransactionsByVendorMeta';
|
import { TransactionsByVendorMeta } from './TransactionsByVendorMeta';
|
||||||
|
import { EventPublisher } from '@/lib/EventPublisher/EventPublisher';
|
||||||
|
import events from '@/subscribers/events';
|
||||||
|
|
||||||
export class TransactionsByVendorsInjectable
|
export class TransactionsByVendorsInjectable
|
||||||
implements ITransactionsByVendorsService
|
implements ITransactionsByVendorsService
|
||||||
@@ -26,6 +28,9 @@ export class TransactionsByVendorsInjectable
|
|||||||
@Inject()
|
@Inject()
|
||||||
private transactionsByVendorMeta: TransactionsByVendorMeta;
|
private transactionsByVendorMeta: TransactionsByVendorMeta;
|
||||||
|
|
||||||
|
@Inject()
|
||||||
|
private eventPublisher: EventPublisher;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Defaults balance sheet filter query.
|
* Defaults balance sheet filter query.
|
||||||
* @return {IVendorBalanceSummaryQuery}
|
* @return {IVendorBalanceSummaryQuery}
|
||||||
@@ -171,6 +176,15 @@ export class TransactionsByVendorsInjectable
|
|||||||
);
|
);
|
||||||
const meta = await this.transactionsByVendorMeta.meta(tenantId, filter);
|
const meta = await this.transactionsByVendorMeta.meta(tenantId, filter);
|
||||||
|
|
||||||
|
// Triggers `onVendorTransactionsViewed` event.
|
||||||
|
await this.eventPublisher.emitAsync(
|
||||||
|
events.reports.onVendorTransactionsViewed,
|
||||||
|
{
|
||||||
|
tenantId,
|
||||||
|
query,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
data: reportInstance.reportData(),
|
data: reportInstance.reportData(),
|
||||||
query: filter,
|
query: filter,
|
||||||
|
|||||||
@@ -7,6 +7,8 @@ import FinancialSheet from '../FinancialSheet';
|
|||||||
import { Tenant } from '@/system/models';
|
import { Tenant } from '@/system/models';
|
||||||
import { TrialBalanceSheetRepository } from './TrialBalanceSheetRepository';
|
import { TrialBalanceSheetRepository } from './TrialBalanceSheetRepository';
|
||||||
import { TrialBalanceSheetMeta } from './TrialBalanceSheetMeta';
|
import { TrialBalanceSheetMeta } from './TrialBalanceSheetMeta';
|
||||||
|
import { EventPublisher } from '@/lib/EventPublisher/EventPublisher';
|
||||||
|
import events from '@/subscribers/events';
|
||||||
|
|
||||||
@Service()
|
@Service()
|
||||||
export default class TrialBalanceSheetService extends FinancialSheet {
|
export default class TrialBalanceSheetService extends FinancialSheet {
|
||||||
@@ -16,6 +18,9 @@ export default class TrialBalanceSheetService extends FinancialSheet {
|
|||||||
@Inject()
|
@Inject()
|
||||||
private trialBalanceSheetMetaService: TrialBalanceSheetMeta;
|
private trialBalanceSheetMetaService: TrialBalanceSheetMeta;
|
||||||
|
|
||||||
|
@Inject()
|
||||||
|
private eventPublisher: EventPublisher;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Defaults trial balance sheet filter query.
|
* Defaults trial balance sheet filter query.
|
||||||
* @return {IBalanceSheetQuery}
|
* @return {IBalanceSheetQuery}
|
||||||
@@ -81,6 +86,15 @@ export default class TrialBalanceSheetService extends FinancialSheet {
|
|||||||
// Trial balance sheet meta.
|
// Trial balance sheet meta.
|
||||||
const meta = await this.trialBalanceSheetMetaService.meta(tenantId, filter);
|
const meta = await this.trialBalanceSheetMetaService.meta(tenantId, filter);
|
||||||
|
|
||||||
|
// Triggers `onTrialBalanceSheetViewed` event.
|
||||||
|
await this.eventPublisher.emitAsync(
|
||||||
|
events.reports.onTrialBalanceSheetView,
|
||||||
|
{
|
||||||
|
tenantId,
|
||||||
|
query,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
data: trialBalanceSheetData,
|
data: trialBalanceSheetData,
|
||||||
query: filter,
|
query: filter,
|
||||||
|
|||||||
@@ -15,6 +15,8 @@ import { Tenant } from '@/system/models';
|
|||||||
import { JournalSheetMeta } from '../JournalSheet/JournalSheetMeta';
|
import { JournalSheetMeta } from '../JournalSheet/JournalSheetMeta';
|
||||||
|
|
||||||
import { VendorBalanceSummaryMeta } from './VendorBalanceSummaryMeta';
|
import { VendorBalanceSummaryMeta } from './VendorBalanceSummaryMeta';
|
||||||
|
import { EventPublisher } from '@/lib/EventPublisher/EventPublisher';
|
||||||
|
import events from '@/subscribers/events';
|
||||||
|
|
||||||
export class VendorBalanceSummaryService
|
export class VendorBalanceSummaryService
|
||||||
implements IVendorBalanceSummaryService
|
implements IVendorBalanceSummaryService
|
||||||
@@ -28,6 +30,9 @@ export class VendorBalanceSummaryService
|
|||||||
@Inject()
|
@Inject()
|
||||||
private vendorBalanceSummaryMeta: VendorBalanceSummaryMeta;
|
private vendorBalanceSummaryMeta: VendorBalanceSummaryMeta;
|
||||||
|
|
||||||
|
@Inject()
|
||||||
|
private eventPublisher: EventPublisher;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Defaults balance sheet filter query.
|
* Defaults balance sheet filter query.
|
||||||
* @return {IVendorBalanceSummaryQuery}
|
* @return {IVendorBalanceSummaryQuery}
|
||||||
@@ -107,10 +112,19 @@ export class VendorBalanceSummaryService
|
|||||||
// Retrieve the vendor balance summary meta.
|
// Retrieve the vendor balance summary meta.
|
||||||
const meta = await this.vendorBalanceSummaryMeta.meta(tenantId, filter);
|
const meta = await this.vendorBalanceSummaryMeta.meta(tenantId, filter);
|
||||||
|
|
||||||
|
// Triggers `onVendorBalanceSummaryViewed` event.
|
||||||
|
await this.eventPublisher.emitAsync(
|
||||||
|
events.reports.onVendorBalanceSummaryViewed,
|
||||||
|
{
|
||||||
|
tenantId,
|
||||||
|
query,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
data: reportInstance.reportData(),
|
data: reportInstance.reportData(),
|
||||||
query: filter,
|
query: filter,
|
||||||
meta
|
meta,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -752,4 +752,23 @@ export default {
|
|||||||
onCheckoutSessionCompleted: 'onStripeCheckoutSessionCompleted',
|
onCheckoutSessionCompleted: 'onStripeCheckoutSessionCompleted',
|
||||||
onAccountUpdated: 'onStripeAccountUpdated',
|
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