feat: apply credit note to invoice module

This commit is contained in:
Ahmed Bouhuolia
2025-05-04 01:32:08 +02:00
parent 1d53063e09
commit 4f6ad2b293
28 changed files with 633 additions and 707 deletions

View File

@@ -0,0 +1,3 @@
interface ReportsEvents {
tenantId: number;
}

View File

@@ -18,6 +18,7 @@ import { PaymentMethodEventsTracker } from './events/PaymentMethodEventsTracker'
import { PaymentLinkEventsTracker } from './events/PaymentLinkEventsTracker';
import { StripeIntegrationEventsTracker } from './events/StripeIntegrationEventsTracker';
import { PostHogModule } from './postHog.module';
import { ReportsEventsTracker } from './events/ReportsEventsTracker';
@Module({
imports: [PostHogModule],
@@ -40,7 +41,7 @@ import { PostHogModule } from './postHog.module';
PaymentMethodEventsTracker,
PaymentLinkEventsTracker,
StripeIntegrationEventsTracker,
// ReportsEventsTracker,
ReportsEventsTracker,
],
})
export class EventTrackerModule {}

View File

@@ -1,240 +1,161 @@
// import { Inject, Service } from 'typedi';
// import { EventSubscriber } from '@/lib/EventPublisher/EventPublisher';
// import { ReportsEvents } from '@/constants/event-tracker';
// import { PosthogService } from '../EventTracker.service';
// 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';
import { Inject, Injectable } from '@nestjs/common';
import { OnEvent } from '@nestjs/event-emitter';
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 '../event-tracker';
import { events } from '@/common/events/events';
import { POSTHOG_PROVIDER } from '../PostHog.constants';
// @Service()
// export class ReportsEventsTracker extends EventSubscriber {
// @Inject()
// private posthog: PosthogService;
@Injectable()
export class ReportsEventsTracker {
constructor(@Inject(POSTHOG_PROVIDER) private readonly posthog: any) {}
// /**
// * 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
// );
// }
@OnEvent(events.reports.onBalanceSheetViewed)
handleTrackBalanceSheetViewedEvent({ tenantId }: ReportsEvents) {
this.posthog.trackEvent({
distinctId: `tenant-${tenantId}`,
event: BALANCE_SHEET_VIEWED,
properties: {},
});
}
// private handleTrackBalanceSheetViewedEvent(
// { tenantId }: ReportsEvents
// ) {
// this.posthog.trackEvent({
// distinctId: `tenant-${tenantId}`,
// event: BALANCE_SHEET_VIEWED,
// properties: {},
// });
// }
@OnEvent(events.reports.onTrialBalanceSheetView)
handleTrackTrialBalanceSheetViewedEvent({ tenantId }: ReportsEvents) {
this.posthog.trackEvent({
distinctId: `tenant-${tenantId}`,
event: TRIAL_BALANCE_SHEET_VIEWED,
properties: {},
});
}
// private handleTrackTrialBalanceSheetViewedEvent(
// { tenantId }: ReportsEvents
// ) {
// this.posthog.trackEvent({
// distinctId: `tenant-${tenantId}`,
// event: TRIAL_BALANCE_SHEET_VIEWED,
// properties: {},
// });
// }
@OnEvent(events.reports.onProfitLossSheetViewed)
handleTrackProfitLossSheetViewedEvent({ tenantId }: ReportsEvents) {
this.posthog.trackEvent({
distinctId: `tenant-${tenantId}`,
event: PROFIT_LOSS_SHEET_VIEWED,
properties: {},
});
}
// private handleTrackProfitLossSheetViewedEvent(
// { tenantId }: ReportsEvents
// ) {
// this.posthog.trackEvent({
// distinctId: `tenant-${tenantId}`,
// event: PROFIT_LOSS_SHEET_VIEWED,
// properties: {},
// });
// }
@OnEvent(events.reports.onCashflowStatementViewed)
handleTrackCashflowStatementViewedEvent({ tenantId }: ReportsEvents) {
this.posthog.trackEvent({
distinctId: `tenant-${tenantId}`,
event: CASHFLOW_STATEMENT_VIEWED,
properties: {},
});
}
// private handleTrackCashflowStatementViewedEvent(
// { tenantId }: ReportsEvents
// ) {
// this.posthog.trackEvent({
// distinctId: `tenant-${tenantId}`,
// event: CASHFLOW_STATEMENT_VIEWED,
// properties: {},
// });
// }
@OnEvent(events.reports.onGeneralLedgerViewed)
handleTrackGeneralLedgerViewedEvent({ tenantId }: ReportsEvents) {
this.posthog.trackEvent({
distinctId: `tenant-${tenantId}`,
event: GENERAL_LEDGER_VIEWED,
properties: {},
});
}
// private handleTrackGeneralLedgerViewedEvent(
// { tenantId }: ReportsEvents
// ) {
// this.posthog.trackEvent({
// distinctId: `tenant-${tenantId}`,
// event: GENERAL_LEDGER_VIEWED,
// properties: {},
// });
// }
@OnEvent(events.reports.onJournalViewed)
handleTrackJournalViewedEvent({ tenantId }: ReportsEvents) {
this.posthog.trackEvent({
distinctId: `tenant-${tenantId}`,
event: JOURNAL_VIEWED,
properties: {},
});
}
// private handleTrackJournalViewedEvent({ tenantId }: ReportsEvents) {
// this.posthog.trackEvent({
// distinctId: `tenant-${tenantId}`,
// event: JOURNAL_VIEWED,
// properties: {},
// });
// }
@OnEvent(events.reports.onReceivableAgingViewed)
handleTrackReceivableAgingViewedEvent({ tenantId }: ReportsEvents) {
this.posthog.trackEvent({
distinctId: `tenant-${tenantId}`,
event: RECEIVABLE_AGING_VIEWED,
properties: {},
});
}
// private handleTrackReceivableAgingViewedEvent(
// { tenantId }: ReportsEvents
// ) {
// this.posthog.trackEvent({
// distinctId: `tenant-${tenantId}`,
// event: RECEIVABLE_AGING_VIEWED,
// properties: {},
// });
// }
@OnEvent(events.reports.onPayableAgingViewed)
handleTrackPayableAgingViewedEvent({ tenantId }: ReportsEvents) {
this.posthog.trackEvent({
distinctId: `tenant-${tenantId}`,
event: PAYABLE_AGING_VIEWED,
properties: {},
});
}
// private handleTrackPayableAgingViewedEvent(
// { tenantId }: ReportsEvents
// ) {
// this.posthog.trackEvent({
// distinctId: `tenant-${tenantId}`,
// event: PAYABLE_AGING_VIEWED,
// properties: {},
// });
// }
@OnEvent(events.reports.onCustomerBalanceSummaryViewed)
handleTrackCustomerBalanceSummaryViewedEvent({ tenantId }: ReportsEvents) {
this.posthog.trackEvent({
distinctId: `tenant-${tenantId}`,
event: CUSTOMER_BALANCE_SUMMARY_VIEWED,
properties: {},
});
}
// private handleTrackCustomerBalanceSummaryViewedEvent(
// { tenantId }: ReportsEvents
// ) {
// this.posthog.trackEvent({
// distinctId: `tenant-${tenantId}`,
// event: CUSTOMER_BALANCE_SUMMARY_VIEWED,
// properties: {},
// });
// }
@OnEvent(events.reports.onVendorBalanceSummaryViewed)
handleTrackVendorBalanceSummaryViewedEvent({ tenantId }: ReportsEvents) {
this.posthog.trackEvent({
distinctId: `tenant-${tenantId}`,
event: VENDOR_BALANCE_SUMMARY_VIEWED,
properties: {},
});
}
// private handleTrackVendorBalanceSummaryViewedEvent(
// { tenantId }: ReportsEvents
// ) {
// this.posthog.trackEvent({
// distinctId: `tenant-${tenantId}`,
// event: VENDOR_BALANCE_SUMMARY_VIEWED,
// properties: {},
// });
// }
@OnEvent(events.reports.onInventoryValuationViewed)
handleTrackInventoryValuationViewedEvent({ tenantId }: ReportsEvents) {
this.posthog.trackEvent({
distinctId: `tenant-${tenantId}`,
event: INVENTORY_VALUATION_VIEWED,
properties: {},
});
}
// private handleTrackInventoryValuationViewedEvent(
// { tenantId }: ReportsEvents
// ) {
// this.posthog.trackEvent({
// distinctId: `tenant-${tenantId}`,
// event: INVENTORY_VALUATION_VIEWED,
// properties: {},
// });
// }
@OnEvent(events.reports.onCustomerTransactionsViewed)
handleTrackCustomerTransactionsViewedEvent({ tenantId }: ReportsEvents) {
this.posthog.trackEvent({
distinctId: `tenant-${tenantId}`,
event: CUSTOMER_TRANSACTIONS_VIEWED,
properties: {},
});
}
// private handleTrackCustomerTransactionsViewedEvent(
// { tenantId }: ReportsEvents
// ) {
// this.posthog.trackEvent({
// distinctId: `tenant-${tenantId}`,
// event: CUSTOMER_TRANSACTIONS_VIEWED,
// properties: {},
// });
// }
@OnEvent(events.reports.onVendorTransactionsViewed)
handleTrackVendorTransactionsViewedEvent({ tenantId }: ReportsEvents) {
this.posthog.trackEvent({
distinctId: `tenant-${tenantId}`,
event: VENDOR_TRANSACTIONS_VIEWED,
properties: {},
});
}
// private handleTrackVendorTransactionsViewedEvent(
// { tenantId }: ReportsEvents
// ) {
// this.posthog.trackEvent({
// distinctId: `tenant-${tenantId}`,
// event: VENDOR_TRANSACTIONS_VIEWED,
// properties: {},
// });
// }
@OnEvent(events.reports.onSalesByItemViewed)
handleTrackSalesByItemViewedEvent({ tenantId }: ReportsEvents) {
this.posthog.trackEvent({
distinctId: `tenant-${tenantId}`,
event: SALES_BY_ITEM_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: {},
// });
// }
// }
@OnEvent(events.reports.onPurchasesByItemViewed)
handleTrackPurchasesByItemViewedEvent({ tenantId }: ReportsEvents) {
this.posthog.trackEvent({
distinctId: `tenant-${tenantId}`,
event: PURCHASES_BY_ITEM_VIEWED,
properties: {},
});
}
}