NAME
DBIx::Class::InflateColumn::Currency - Auto-create Data::Currency objects from columns.
SYNOPSIS
Load this component and then declare one or more columns as currency columns.
package
Item;
__PACKAGE__->load_components(
qw/InflateColumn::Currency/
);
__PACKAGE__->add_columns(
price
=> {
data_type
=>
'decimal'
,
size
=> [9,2],
is_nullable
=> 0,
default_value
=>
'0.00'
,
is_currency
=> 1
}
);
Then you can treat the specified column as a Data::Currency object.
'US Dollars: '
,
$item
->price;
'Japanese Yen: '
,
$item
->price->convert(
'JPY'
);
DESCRIPTION
This module inflates/deflates designated columns into Data::Currency objects.
METHODS
currency_code
Gets/sets the default currency code used when inflating currency columns.
__PACKAGE__->currency_code(
'USD'
);
You can also set this on a per column basis:
__PACKAGE__->add_columns(
price
=> {
data_type
=>
'decimal'
,
size
=> [9,2],
is_nullable
=> 0,
default_value
=>
'0.00'
,
is_currency
=> 1,
currency_code
=>
'USD'
}
);
currency_code_column
Gets/sets the name of the column where the current rows currency code is stored.
__PACKAGE__->currency_code_column(
'my_code_column'
);
When set, the currency object will inherit its code from the value in this column. If the column is undefined/empty, currency_code
will be used instead.
You can also set this on a per column basis:
__PACKAGE__->add_columns(
price
=> {
data_type
=>
'decimal'
,
size
=> [9,2],
is_nullable
=> 0,
default_value
=>
'0.00'
,
is_currency
=> 1,
currency_code_column
=>
'some_other_column'
}
);
currency_format
Gets/Sets the format to be used when displaying the currency as a string.
__PACKAGE__->currency_format(
'FMT_COMMON'
);
You can also set this on a per column basis:
__PACKAGE__->add_columns(
price
=> {
data_type
=>
'decimal'
,
size
=> [9,2],
is_nullable
=> 0,
default_value
=>
'0.00'
,
is_currency
=> 1,
currency_format
=>
'FMT_STANDARD'
}
);
See Locale::Currency::Format for the available formatting options.
currency_class
Gets/sets the currency class that the columns should be inflated into. The default class is Data::Currency.
__PACKAGE__->currency_class(
'MyCurrencySubclass'
);
You can also set this on a per column basis:
__PACKAGE__->add_columns(
price
=> {
data_type
=>
'decimal'
,
size
=> [9,2],
is_nullable
=> 0,
default_value
=>
'0.00'
,
is_currency
=> 1,
currency_class
=>
'SomeOtherCurrencyClass'
}
);
register_column
Chains with the "register_column" in DBIx::Class::Row method, and sets up currency columns appropriately. This would not normally be directly called by end users.
SEE ALSO
Data::Currency, Locale::Currency, Locale::Currency::Format, Finance::Currency::Convert::WebserviceX