Skip to main content

RevenueRecognitionGenerator

Struct RevenueRecognitionGenerator 

Source
pub struct RevenueRecognitionGenerator { /* private fields */ }
Expand description

Generator for revenue recognition contracts following ASC 606 / IFRS 15.

Produces realistic CustomerContract instances with performance obligations, variable consideration, and progress tracking suitable for financial data generation and audit testing scenarios.

Implementations§

Source§

impl RevenueRecognitionGenerator

Source

pub fn new(seed: u64) -> Self

Create a new generator with default configuration.

§Arguments
  • seed - Seed for deterministic generation.
Source

pub fn with_config(seed: u64, _config: &RevenueRecognitionConfig) -> Self

Create a new generator with a custom configuration seed.

This constructor exists for API symmetry with other generators; the actual per-generation configuration is passed to Self::generate.

§Arguments
  • seed - Seed for deterministic generation.
  • _config - Revenue recognition configuration (used at generate time).
Source

pub fn generate( &mut self, company_code: &str, customer_ids: &[String], period_start: NaiveDate, period_end: NaiveDate, currency: &str, config: &RevenueRecognitionConfig, framework: AccountingFramework, ) -> Vec<CustomerContract>

Generate a set of customer contracts for the given period.

Produces config.contract_count contracts, each containing one or more performance obligations with allocated transaction prices and progress tracking appropriate for the specified accounting framework.

§Arguments
  • company_code - The company code to associate contracts with.
  • customer_ids - Pool of customer identifiers to draw from.
  • period_start - Start of the generation period.
  • period_end - End of the generation period.
  • currency - ISO currency code (e.g., “USD”).
  • config - Revenue recognition configuration parameters.
  • framework - Accounting framework (US GAAP, IFRS, or Dual).
§Returns

A vector of CustomerContract instances with fully allocated performance obligations.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V