Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

datasynth-standards

The datasynth-standards crate provides comprehensive support for major accounting and auditing standards frameworks including IFRS, US GAAP, French GAAP (PCG), German GAAP (HGB), ISA, SOX, and PCAOB.

Overview

This crate contains domain models and business logic for:

  • Accounting Standards: Revenue recognition, lease accounting, fair value measurement, impairment testing
  • Audit Standards: ISA requirements, analytical procedures, confirmations, audit opinions
  • Regulatory Frameworks: SOX 302/404 compliance, PCAOB standards

Modules

framework

Core accounting framework selection and settings.

#![allow(unused)]
fn main() {
use datasynth_standards::framework::{AccountingFramework, FrameworkSettings};

// Select framework
let framework = AccountingFramework::UsGaap;
assert!(framework.allows_lifo());
assert!(!framework.allows_impairment_reversal());

// German GAAP specifics
let hgb = AccountingFramework::GermanGaap;
assert!(!hgb.allows_lifo());
assert!(hgb.allows_impairment_reversal());       // Mandatory under §253(5)
assert!(hgb.requires_pending_loss_provisions());  // HGB-specific
assert!(hgb.allows_low_value_asset_expensing());  // GWG ≤ 800 EUR

// Framework-specific settings
let settings = FrameworkSettings::us_gaap();
assert!(settings.validate().is_ok());
}

accounting

Accounting standards models:

ModuleStandardsKey Types
revenueASC 606 / IFRS 15CustomerContract, PerformanceObligation, VariableConsideration
leasesASC 842 / IFRS 16Lease, ROUAsset, LeaseLiability, LeaseAmortizationEntry
fair_valueASC 820 / IFRS 13FairValueMeasurement, FairValueHierarchyLevel
impairmentASC 360 / IAS 36ImpairmentTest, RecoverableAmountMethod
differencesDual ReportingFrameworkDifferenceRecord

audit

Audit standards models:

ModuleStandardsKey Types
isa_referenceISA 200-720IsaStandard, IsaRequirement, IsaProcedureMapping
analyticalISA 520AnalyticalProcedure, VarianceInvestigation
confirmationISA 505ExternalConfirmation, ConfirmationResponse
opinionISA 700/705/706/701AuditOpinion, KeyAuditMatter, OpinionModification
audit_trailTraceabilityAuditTrail, TrailGap
pcaobPCAOB ASPcaobStandard, PcaobIsaMapping

regulatory

Regulatory compliance models:

ModuleStandardsKey Types
soxSOX 302/404Sox302Certification, Sox404Assessment, DeficiencyMatrix, MaterialWeakness

Usage Examples

Revenue Recognition

#![allow(unused)]
fn main() {
use datasynth_standards::accounting::revenue::{
    CustomerContract, PerformanceObligation, ObligationType, SatisfactionPattern,
};
use datasynth_standards::framework::AccountingFramework;
use rust_decimal_macros::dec;

// Create a customer contract under US GAAP
let mut contract = CustomerContract::new(
    "C001".to_string(),
    "CUST001".to_string(),
    dec!(100000),
    AccountingFramework::UsGaap,
);

// Add performance obligations
let po = PerformanceObligation::new(
    "PO001".to_string(),
    ObligationType::Good,
    SatisfactionPattern::PointInTime,
    dec!(60000),
);
contract.add_performance_obligation(po);
}

Lease Accounting

#![allow(unused)]
fn main() {
use datasynth_standards::accounting::leases::{Lease, LeaseAssetClass, LeaseClassification};
use datasynth_standards::framework::AccountingFramework;
use chrono::NaiveDate;
use rust_decimal_macros::dec;

// Create a lease
let lease = Lease::new(
    "L001".to_string(),
    LeaseAssetClass::RealEstate,
    NaiveDate::from_ymd_opt(2024, 1, 1).unwrap(),
    60,                    // 5-year term
    dec!(10000),          // Monthly payment
    0.05,                  // Discount rate
    AccountingFramework::UsGaap,
);

// Classify under US GAAP bright-line tests
let classification = lease.classify_us_gaap(
    72,                    // Asset useful life (months)
    dec!(600000),         // Fair value
    dec!(550000),         // Present value of payments
);
}

ISA Standards

#![allow(unused)]
fn main() {
use datasynth_standards::audit::isa_reference::{
    IsaStandard, IsaRequirement, IsaRequirementType,
};

// Reference an ISA standard
let standard = IsaStandard::Isa315;
assert_eq!(standard.number(), "315");
assert!(standard.title().contains("Risk"));

// Create a requirement
let requirement = IsaRequirement::new(
    IsaStandard::Isa500,
    "12".to_string(),
    IsaRequirementType::Requirement,
    "Design and perform audit procedures".to_string(),
);
}

SOX Compliance

#![allow(unused)]
fn main() {
use datasynth_standards::regulatory::sox::{
    Sox404Assessment, DeficiencyMatrix, DeficiencyLikelihood, DeficiencyMagnitude,
};
use uuid::Uuid;

// Create a SOX 404 assessment
let assessment = Sox404Assessment::new(
    Uuid::new_v4(),
    2024,
    true, // ICFR effective
);

// Classify a deficiency
let deficiency = DeficiencyMatrix::new(
    DeficiencyLikelihood::Probable,
    DeficiencyMagnitude::Material,
);
assert!(deficiency.is_material_weakness());
}

Framework Validation

The crate validates framework-specific rules:

#![allow(unused)]
fn main() {
use datasynth_standards::framework::{AccountingFramework, FrameworkSettings};

// LIFO is not permitted under IFRS
let mut settings = FrameworkSettings::ifrs();
settings.use_lifo_inventory = true;
assert!(settings.validate().is_err());

// PPE revaluation is not permitted under US GAAP
let mut settings = FrameworkSettings::us_gaap();
settings.use_ppe_revaluation = true;
assert!(settings.validate().is_err());

// German GAAP: LIFO also prohibited
let mut settings = FrameworkSettings::german_gaap();
settings.use_lifo_inventory = true;
assert!(settings.validate().is_err());
}

Dependencies

[dependencies]
datasynth-standards = "0.2.3"

Feature Flags

Currently, no optional features are defined. All functionality is included by default.

See Also