use serde::{Deserialize, Serialize};
use chrono::{DateTime, Utc};
use super::types::*;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AccountCreatedEvent {
pub id: AccountId,
pub data: AccountDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AccountUpdatedEvent {
pub id: AccountId,
pub data: AccountDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AccountDeletedEvent {
pub id: AccountId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AccountingPostCreatedEvent {
pub id: AccountingPostId,
pub data: AccountingPostDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AccountingPostUpdatedEvent {
pub id: AccountingPostId,
pub data: AccountingPostDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AccountingPostDeletedEvent {
pub id: AccountingPostId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CostCenterCreatedEvent {
pub id: CostCenterId,
pub data: CostCenterDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CostCenterUpdatedEvent {
pub id: CostCenterId,
pub data: CostCenterDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CostCenterDeletedEvent {
pub id: CostCenterId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct EmvQrConfigCreatedEvent {
pub id: EmvQrConfigId,
pub data: EmvQrConfigDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct EmvQrConfigUpdatedEvent {
pub id: EmvQrConfigId,
pub data: EmvQrConfigDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct EmvQrConfigDeletedEvent {
pub id: EmvQrConfigId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BankCheckSequenceCreatedEvent {
pub id: BankCheckSequenceId,
pub data: BankCheckSequenceDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BankCheckSequenceUpdatedEvent {
pub id: BankCheckSequenceId,
pub data: BankCheckSequenceDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BankCheckSequenceDeletedEvent {
pub id: BankCheckSequenceId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PrintedCheckCreatedEvent {
pub id: PrintedCheckId,
pub data: PrintedCheckDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PrintedCheckUpdatedEvent {
pub id: PrintedCheckId,
pub data: PrintedCheckDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PrintedCheckDeletedEvent {
pub id: PrintedCheckId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TaxTagRepairRunCreatedEvent {
pub id: TaxTagRepairRunId,
pub data: TaxTagRepairRunDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TaxTagRepairRunUpdatedEvent {
pub id: TaxTagRepairRunId,
pub data: TaxTagRepairRunDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TaxTagRepairRunDeletedEvent {
pub id: TaxTagRepairRunId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FinancialStatementCreatedEvent {
pub id: FinancialStatementId,
pub data: FinancialStatementDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FinancialStatementUpdatedEvent {
pub id: FinancialStatementId,
pub data: FinancialStatementDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FinancialStatementDeletedEvent {
pub id: FinancialStatementId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FiscalPeriodCreatedEvent {
pub id: FiscalPeriodId,
pub data: FiscalPeriodDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FiscalPeriodUpdatedEvent {
pub id: FiscalPeriodId,
pub data: FiscalPeriodDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FiscalPeriodDeletedEvent {
pub id: FiscalPeriodId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct JournalCreatedEvent {
pub id: JournalId,
pub data: JournalDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct JournalUpdatedEvent {
pub id: JournalId,
pub data: JournalDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct JournalDeletedEvent {
pub id: JournalId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct JournalLineCreatedEvent {
pub id: JournalLineId,
pub data: JournalLineDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct JournalLineUpdatedEvent {
pub id: JournalLineId,
pub data: JournalLineDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct JournalLineDeletedEvent {
pub id: JournalLineId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct LedgerCreatedEvent {
pub id: LedgerId,
pub data: LedgerDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct LedgerUpdatedEvent {
pub id: LedgerId,
pub data: LedgerDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct LedgerDeletedEvent {
pub id: LedgerId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ReconciliationCreatedEvent {
pub id: ReconciliationId,
pub data: ReconciliationDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ReconciliationUpdatedEvent {
pub id: ReconciliationId,
pub data: ReconciliationDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ReconciliationDeletedEvent {
pub id: ReconciliationId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ReconciliationItemCreatedEvent {
pub id: ReconciliationItemId,
pub data: ReconciliationItemDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ReconciliationItemUpdatedEvent {
pub id: ReconciliationItemId,
pub data: ReconciliationItemDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ReconciliationItemDeletedEvent {
pub id: ReconciliationItemId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FullReconcileCreatedEvent {
pub id: FullReconcileId,
pub data: FullReconcileDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FullReconcileUpdatedEvent {
pub id: FullReconcileId,
pub data: FullReconcileDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FullReconcileDeletedEvent {
pub id: FullReconcileId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PartialReconcileCreatedEvent {
pub id: PartialReconcileId,
pub data: PartialReconcileDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PartialReconcileUpdatedEvent {
pub id: PartialReconcileId,
pub data: PartialReconcileDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PartialReconcileDeletedEvent {
pub id: PartialReconcileId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum AccountingEvent {
AccountCreated(AccountCreatedEvent),
AccountUpdated(AccountUpdatedEvent),
AccountDeleted(AccountDeletedEvent),
AccountingPostCreated(AccountingPostCreatedEvent),
AccountingPostUpdated(AccountingPostUpdatedEvent),
AccountingPostDeleted(AccountingPostDeletedEvent),
CostCenterCreated(CostCenterCreatedEvent),
CostCenterUpdated(CostCenterUpdatedEvent),
CostCenterDeleted(CostCenterDeletedEvent),
EmvQrConfigCreated(EmvQrConfigCreatedEvent),
EmvQrConfigUpdated(EmvQrConfigUpdatedEvent),
EmvQrConfigDeleted(EmvQrConfigDeletedEvent),
BankCheckSequenceCreated(BankCheckSequenceCreatedEvent),
BankCheckSequenceUpdated(BankCheckSequenceUpdatedEvent),
BankCheckSequenceDeleted(BankCheckSequenceDeletedEvent),
PrintedCheckCreated(PrintedCheckCreatedEvent),
PrintedCheckUpdated(PrintedCheckUpdatedEvent),
PrintedCheckDeleted(PrintedCheckDeletedEvent),
TaxTagRepairRunCreated(TaxTagRepairRunCreatedEvent),
TaxTagRepairRunUpdated(TaxTagRepairRunUpdatedEvent),
TaxTagRepairRunDeleted(TaxTagRepairRunDeletedEvent),
FinancialStatementCreated(FinancialStatementCreatedEvent),
FinancialStatementUpdated(FinancialStatementUpdatedEvent),
FinancialStatementDeleted(FinancialStatementDeletedEvent),
FiscalPeriodCreated(FiscalPeriodCreatedEvent),
FiscalPeriodUpdated(FiscalPeriodUpdatedEvent),
FiscalPeriodDeleted(FiscalPeriodDeletedEvent),
JournalCreated(JournalCreatedEvent),
JournalUpdated(JournalUpdatedEvent),
JournalDeleted(JournalDeletedEvent),
JournalLineCreated(JournalLineCreatedEvent),
JournalLineUpdated(JournalLineUpdatedEvent),
JournalLineDeleted(JournalLineDeletedEvent),
LedgerCreated(LedgerCreatedEvent),
LedgerUpdated(LedgerUpdatedEvent),
LedgerDeleted(LedgerDeletedEvent),
ReconciliationCreated(ReconciliationCreatedEvent),
ReconciliationUpdated(ReconciliationUpdatedEvent),
ReconciliationDeleted(ReconciliationDeletedEvent),
ReconciliationItemCreated(ReconciliationItemCreatedEvent),
ReconciliationItemUpdated(ReconciliationItemUpdatedEvent),
ReconciliationItemDeleted(ReconciliationItemDeletedEvent),
FullReconcileCreated(FullReconcileCreatedEvent),
FullReconcileUpdated(FullReconcileUpdatedEvent),
FullReconcileDeleted(FullReconcileDeletedEvent),
PartialReconcileCreated(PartialReconcileCreatedEvent),
PartialReconcileUpdated(PartialReconcileUpdatedEvent),
PartialReconcileDeleted(PartialReconcileDeletedEvent),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AccountingEventMetadata {
pub module: &'static str,
pub version: &'static str,
}
impl Default for AccountingEventMetadata {
fn default() -> Self {
Self {
module: "accounting",
version: "1.0",
}
}
}