backbone-payroll 0.3.47

Payroll: salary structures, payroll runs and computed salary slips over effective-dated statutory tables, plus compensation changes
Documentation
//! Public events for Payroll module
//!
//! Generated by metaphor-schema. Do not edit manually.
//!
//! These events are published by this module for other modules to subscribe to.
//! Events are the primary mechanism for cross-module communication.

use serde::{Deserialize, Serialize};
use chrono::{DateTime, Utc};

use super::types::*;

// ============================================================================
// COMPENSATIONCHANGE EVENTS
// ============================================================================

/// Event published when a CompensationChange is created
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CompensationChangeCreatedEvent {
    pub id: CompensationChangeId,
    pub data: CompensationChangeDto,
    pub occurred_at: DateTime<Utc>,
}

/// Event published when a CompensationChange is updated
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CompensationChangeUpdatedEvent {
    pub id: CompensationChangeId,
    pub data: CompensationChangeDto,
    pub occurred_at: DateTime<Utc>,
}

/// Event published when a CompensationChange is deleted
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CompensationChangeDeletedEvent {
    pub id: CompensationChangeId,
    pub occurred_at: DateTime<Utc>,
}

// ============================================================================
// PAYROLLENTRY EVENTS
// ============================================================================

/// Event published when a PayrollEntry is created
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PayrollEntryCreatedEvent {
    pub id: PayrollEntryId,
    pub data: PayrollEntryDto,
    pub occurred_at: DateTime<Utc>,
}

/// Event published when a PayrollEntry is updated
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PayrollEntryUpdatedEvent {
    pub id: PayrollEntryId,
    pub data: PayrollEntryDto,
    pub occurred_at: DateTime<Utc>,
}

/// Event published when a PayrollEntry is deleted
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PayrollEntryDeletedEvent {
    pub id: PayrollEntryId,
    pub occurred_at: DateTime<Utc>,
}

// ============================================================================
// SALARYSLIP EVENTS
// ============================================================================

/// Event published when a SalarySlip is created
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SalarySlipCreatedEvent {
    pub id: SalarySlipId,
    pub data: SalarySlipDto,
    pub occurred_at: DateTime<Utc>,
}

/// Event published when a SalarySlip is updated
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SalarySlipUpdatedEvent {
    pub id: SalarySlipId,
    pub data: SalarySlipDto,
    pub occurred_at: DateTime<Utc>,
}

/// Event published when a SalarySlip is deleted
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SalarySlipDeletedEvent {
    pub id: SalarySlipId,
    pub occurred_at: DateTime<Utc>,
}

// ============================================================================
// SALARYSLIPLINE EVENTS
// ============================================================================

/// Event published when a SalarySlipLine is created
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SalarySlipLineCreatedEvent {
    pub id: SalarySlipLineId,
    pub data: SalarySlipLineDto,
    pub occurred_at: DateTime<Utc>,
}

/// Event published when a SalarySlipLine is updated
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SalarySlipLineUpdatedEvent {
    pub id: SalarySlipLineId,
    pub data: SalarySlipLineDto,
    pub occurred_at: DateTime<Utc>,
}

/// Event published when a SalarySlipLine is deleted
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SalarySlipLineDeletedEvent {
    pub id: SalarySlipLineId,
    pub occurred_at: DateTime<Utc>,
}

// ============================================================================
// SALARYSTRUCTURE EVENTS
// ============================================================================

/// Event published when a SalaryStructure is created
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SalaryStructureCreatedEvent {
    pub id: SalaryStructureId,
    pub data: SalaryStructureDto,
    pub occurred_at: DateTime<Utc>,
}

/// Event published when a SalaryStructure is updated
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SalaryStructureUpdatedEvent {
    pub id: SalaryStructureId,
    pub data: SalaryStructureDto,
    pub occurred_at: DateTime<Utc>,
}

/// Event published when a SalaryStructure is deleted
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SalaryStructureDeletedEvent {
    pub id: SalaryStructureId,
    pub occurred_at: DateTime<Utc>,
}

// ============================================================================
// SALARYCOMPONENT EVENTS
// ============================================================================

/// Event published when a SalaryComponent is created
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SalaryComponentCreatedEvent {
    pub id: SalaryComponentId,
    pub data: SalaryComponentDto,
    pub occurred_at: DateTime<Utc>,
}

/// Event published when a SalaryComponent is updated
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SalaryComponentUpdatedEvent {
    pub id: SalaryComponentId,
    pub data: SalaryComponentDto,
    pub occurred_at: DateTime<Utc>,
}

/// Event published when a SalaryComponent is deleted
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SalaryComponentDeletedEvent {
    pub id: SalaryComponentId,
    pub occurred_at: DateTime<Utc>,
}

// ============================================================================
// MODULE EVENT ENUM
// ============================================================================

/// All events published by Payroll module
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum PayrollEvent {
    CompensationChangeCreated(CompensationChangeCreatedEvent),
    CompensationChangeUpdated(CompensationChangeUpdatedEvent),
    CompensationChangeDeleted(CompensationChangeDeletedEvent),
    PayrollEntryCreated(PayrollEntryCreatedEvent),
    PayrollEntryUpdated(PayrollEntryUpdatedEvent),
    PayrollEntryDeleted(PayrollEntryDeletedEvent),
    SalarySlipCreated(SalarySlipCreatedEvent),
    SalarySlipUpdated(SalarySlipUpdatedEvent),
    SalarySlipDeleted(SalarySlipDeletedEvent),
    SalarySlipLineCreated(SalarySlipLineCreatedEvent),
    SalarySlipLineUpdated(SalarySlipLineUpdatedEvent),
    SalarySlipLineDeleted(SalarySlipLineDeletedEvent),
    SalaryStructureCreated(SalaryStructureCreatedEvent),
    SalaryStructureUpdated(SalaryStructureUpdatedEvent),
    SalaryStructureDeleted(SalaryStructureDeletedEvent),
    SalaryComponentCreated(SalaryComponentCreatedEvent),
    SalaryComponentUpdated(SalaryComponentUpdatedEvent),
    SalaryComponentDeleted(SalaryComponentDeletedEvent),
}

/// Metadata for module events
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PayrollEventMetadata {
    pub module: &'static str,
    pub version: &'static str,
}

impl Default for PayrollEventMetadata {
    fn default() -> Self {
        Self {
            module: "payroll",
            version: "1.0",
        }
    }
}

// ============================================================================
// CUSTOM EVENTS
// ============================================================================

// <<< CUSTOM EVENTS START >>>
// Add custom public events here
// <<< CUSTOM EVENTS END >>>