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, 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());

// 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());
}

Dependencies

[dependencies]
datasynth-standards = "0.2.3"

Feature Flags

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

See Also