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.

        print 'US Dollars: ', $item->price;
        print 'Japanese Yen: ', $item->price->convert('JPY');

DESCRIPTION
    This module inflates/deflates designated columns into Data::Currency
    objects.

METHODS
  currency_code
    Arguments: $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
    Arguments: $name

    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
    Arguments: $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
    Arguments: $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

AUTHOR
        Christopher H. Laco
        CPAN ID: CLACO
        claco@chrislaco.com
        http://today.icantfocus.com/blog/

