# $Id: /local/CPAN/Mango/lib/Mango/Schema/Order.pm 1644 2008-06-02T01:46:53.055259Z claco  $
package Mango::Schema::Order;
use strict;
use warnings;

BEGIN {
    use base qw/DBIx::Class/;
    use DateTime ();
}

__PACKAGE__->load_components(
    qw/
      +Handel::Components::DefaultValues
      +Handel::Components::Constraints
      +Handel::Components::Validation
      InflateColumn::DateTime
      Core
      /
);
__PACKAGE__->table('orders');
__PACKAGE__->source_name('Orders');
__PACKAGE__->add_columns(
    id => {
        data_type         => 'INT',
        is_auto_increment => 1,
        is_nullable       => 0,
        extras            => { unsigned => 1 }
    },
    user_id => {
        data_type      => 'INT',
        is_nullable    => 0,
        is_foreign_key => 1,
        extras         => { unsigned => 1 }
    },
    type => {
        data_type     => 'TINYINT',
        size          => 3,
        is_nullable   => 0,
        default_value => 0,
        extras        => { unsigned => 1 }
    },
    number => {
        data_type     => 'VARCHAR',
        size          => 20,
        is_nullable   => 1,
        default_value => undef
    },
    comments => {
        data_type     => 'VARCHAR',
        size          => 100,
        is_nullable   => 1,
        default_value => undef
    },
    shipmethod => {
        data_type     => 'VARCHAR',
        size          => 20,
        is_nullable   => 1,
        default_value => undef
    },
    shipping => {
        data_type     => 'DECIMAL',
        size          => [ 9, 2 ],
        is_nullable   => 0,
        default_value => '0.00'
    },
    handling => {
        data_type     => 'DECIMAL',
        size          => [ 9, 2 ],
        is_nullable   => 0,
        default_value => '0.00'
    },
    tax => {
        data_type     => 'DECIMAL',
        size          => [ 9, 2 ],
        is_nullable   => 0,
        default_value => '0.00'
    },
    subtotal => {
        data_type     => 'DECIMAL',
        size          => [ 9, 2 ],
        is_nullable   => 0,
        default_value => '0.00'
    },
    total => {
        data_type     => 'DECIMAL',
        size          => [ 9, 2 ],
        is_nullable   => 0,
        default_value => '0.00'
    },
    billtofirstname => {
        data_type     => 'VARCHAR',
        size          => 25,
        is_nullable   => 1,
        default_value => undef
    },
    billtolastname => {
        data_type     => 'VARCHAR',
        size          => 25,
        is_nullable   => 1,
        default_value => undef
    },
    billtoaddress1 => {
        data_type     => 'VARCHAR',
        size          => 50,
        is_nullable   => 1,
        default_value => undef
    },
    billtoaddress2 => {
        data_type     => 'VARCHAR',
        size          => 50,
        is_nullable   => 1,
        default_value => undef
    },
    billtoaddress3 => {
        data_type     => 'VARCHAR',
        size          => 50,
        is_nullable   => 1,
        default_value => undef
    },
    billtocity => {
        data_type     => 'VARCHAR',
        size          => 50,
        is_nullable   => 1,
        default_value => undef
    },
    billtostate => {
        data_type     => 'VARCHAR',
        size          => 50,
        is_nullable   => 1,
        default_value => undef
    },
    billtozip => {
        data_type     => 'VARCHAR',
        size          => 10,
        is_nullable   => 1,
        default_value => undef
    },
    billtocountry => {
        data_type     => 'VARCHAR',
        size          => 25,
        is_nullable   => 1,
        default_value => undef
    },
    billtodayphone => {
        data_type     => 'VARCHAR',
        size          => 25,
        is_nullable   => 1,
        default_value => undef
    },
    billtonightphone => {
        data_type     => 'VARCHAR',
        size          => 25,
        is_nullable   => 1,
        default_value => undef
    },
    billtofax => {
        data_type     => 'VARCHAR',
        size          => 25,
        is_nullable   => 1,
        default_value => undef
    },
    billtoemail => {
        data_type     => 'VARCHAR',
        size          => 50,
        is_nullable   => 1,
        default_value => undef
    },
    shiptosameasbillto => {
        data_type     => 'VARCHAR',
        size          => 3,
        is_nullable   => 0,
        default_value => 1
    },
    shiptofirstname => {
        data_type     => 'VARCHAR',
        size          => 25,
        is_nullable   => 1,
        default_value => undef
    },
    shiptolastname => {
        data_type     => 'VARCHAR',
        size          => 25,
        is_nullable   => 1,
        default_value => undef
    },
    shiptoaddress1 => {
        data_type     => 'VARCHAR',
        size          => 50,
        is_nullable   => 1,
        default_value => undef
    },
    shiptoaddress2 => {
        data_type     => 'VARCHAR',
        size          => 50,
        is_nullable   => 1,
        default_value => undef
    },
    shiptoaddress3 => {
        data_type     => 'VARCHAR',
        size          => 50,
        is_nullable   => 1,
        default_value => undef
    },
    shiptocity => {
        data_type     => 'VARCHAR',
        size          => 50,
        is_nullable   => 1,
        default_value => undef
    },
    shiptostate => {
        data_type     => 'VARCHAR',
        size          => 50,
        is_nullable   => 1,
        default_value => undef
    },
    shiptozip => {
        data_type     => 'VARCHAR',
        size          => 10,
        is_nullable   => 1,
        default_value => undef
    },
    shiptocountry => {
        data_type     => 'VARCHAR',
        size          => 25,
        is_nullable   => 1,
        default_value => undef
    },
    shiptodayphone => {
        data_type     => 'VARCHAR',
        size          => 25,
        is_nullable   => 1,
        default_value => undef
    },
    shiptonightphone => {
        data_type     => 'VARCHAR',
        size          => 25,
        is_nullable   => 1,
        default_value => undef
    },
    shiptofax => {
        data_type     => 'VARCHAR',
        size          => 25,
        is_nullable   => 1,
        default_value => undef
    },
    shiptoemail => {
        data_type     => 'VARCHAR',
        size          => 50,
        is_nullable   => 1,
        default_value => undef
    },
    created => {
        data_type     => 'DATETIME',
        is_nullable   => 1,
        default_value => undef,
        extra         => { timezone => 'UTC' }
    },
    updated => {
        data_type     => 'DATETIME',
        is_nullable   => 1,
        default_value => undef,
        extra         => { timezone => 'UTC' }
    },
);
__PACKAGE__->set_primary_key('id');
__PACKAGE__->has_many(
    items => 'Mango::Schema::Order::Item',
    { 'foreign.order_id' => 'self.id' }
);
__PACKAGE__->default_values(
    {
        created => sub { DateTime->now },
        updated => sub { DateTime->now }
    }
);

1;
__END__

=head1 NAME

Mango::Schema::Order - DBIC schema class for orders

=head1 SYNOPSIS

    use Mango::Schema;
    my $schema = Mango::Schema->connect;
    my $orders = $schema->resultset('Orders')->search;

=head1 DESCRIPTION

Mango::Schema::Order is loaded by Mango::Schema to read/write order data.

=head1 COLUMNS

=head2 id

Contains the primary key for each order record.

    id => {
        data_type         => 'INT',
        is_auto_increment => 1,
        is_nullable       => 0,
        extras            => {unsigned => 1}
    },

=head2 user_id

Contains the foreign key to the user this order belongs to.

    user_id => {
        data_type      => 'INT',
        is_nullable    => 1,
        is_foreign_key => 1,
        default_value  => undef,
        extras         => {unsigned => 1}
    },

=head2 type

Contains the type for this order. The current values are ORDER_TYPE_TEMP and
ORDER_TYPE_SAVED from Handel::Constants.

    type => {
        data_type     => 'tinyint',
        size          => 3,
        is_nullable   => 0,
        default_value => 0
    },

=head2 number

The order number for this order.

    number => {
        data_type     => 'varchar',
        size          => 20,
        is_nullable   => 1,
        default_value => undef
    },

=head2 created

The date this order record was created.

    created => {
        data_type     => 'datetime',
        is_nullable   => 1,
        default_value => undef
    },

=head2 updated

The date this order record was last updated.

    updated => {
        data_type     => 'datetime',
        is_nullable   => 1,
        default_value => undef
    },

=head2 comments

Any user comments for this order.

    comments => {
        data_type     => 'varchar',
        size          => 100,
        is_nullable   => 1,
        default_value => undef
    },

=head2 shipmethod

The shipping method for this order.

    shipmethod => {
        data_type     => 'varchar',
        size          => 20,
        is_nullable   => 1,
        default_value => undef
    },

=head2 shipping

The shipping cost for this order.

    shipping => {
        data_type      => 'decimal',
        size           => [9,2],
        is_nullable    => 0,
        default_value  => '0.00'
    },

=head2 handling

The handling charge for this order.

    handling => {
        data_type      => 'decimal',
        size           => [9,2],
        is_nullable    => 0,
        default_value  => '0.00'
    },

=head2 tax

The tax amount for this order.

    tax => {
        data_type      => 'decimal',
        size           => [9,2],
        is_nullable    => 0,
        default_value  => '0.00'
    },

=head2 subtotal

The subtotal of all the items on this order.

    subtotal => {
        data_type      => 'decimal',
        size           => [9,2],
        is_nullable    => 0,
        default_value  => '0.00'
    },

=head2 total

The total cost of the current order.

    total => {
        data_type      => 'decimal',
        size           => [9,2],
        is_nullable    => 0,
        default_value  => '0.00'
    },

=head2 billtofirstname

The first name for the billing address for this order.

    billtofirstname => {
        data_type     => 'varchar',
        size          => 25,
        is_nullable   => 1,
        default_value => undef
    },

=head2 billtolastname

The last name for the billing address for this order.

    billtolastname => {
        data_type     => 'varchar',
        size          => 25,
        is_nullable   => 1,
        default_value => undef
    },

=head2 billtoaddress1

The billing address line 1 for this order.

    billtoaddress1 => {
        data_type     => 'varchar',
        size          => 50,
        is_nullable   => 1,
        default_value => undef
    },

=head2 billtoaddress2

The billing address line 2 for this order.

    billtoaddress2 => {
        data_type     => 'varchar',
        size          => 50,
        is_nullable   => 1,
        default_value => undef
    },

=head2 billtoaddress3

The billing address line 3 for this order.

    billtoaddress3 => {
        data_type     => 'varchar',
        size          => 50,
        is_nullable   => 1,
        default_value => undef
    },

=head2 billtocity

The billing address city for this order.

    billtocity => {
        data_type     => 'varchar',
        size          => 50,
        is_nullable   => 1,
        default_value => undef
    },

=head2 billtostate

The billing address state/province for this order.

    billtostate => {
        data_type     => 'varchar',
        size          => 50,
        is_nullable   => 1,
        default_value => undef
    },

=head2 billtozip

The billing address zip/postal code for this order.

    billtozip => {
        data_type     => 'varchar',
        size          => 10,
        is_nullable   => 1,
        default_value => undef
    },

=head2 billtocountry

The billing address country for this order.

    billtocountry => {
        data_type     => 'varchar',
        size          => 25,
        is_nullable   => 1,
        default_value => undef
    },

=head2 billtodayphone

The billing address daytime phone number for this order.

    billtodayphone => {
        data_type     => 'varchar',
        size          => 25,
        is_nullable   => 1,
        default_value => undef
    },

=head2 billtonightphone

The billing address night time phone number for this order.

    billtonightphone => {
        data_type     => 'varchar',
        size          => 25,
        is_nullable   => 1,
        default_value => undef
    },

=head2 billtofax

The billing address fax number for this order.

    billtofax => {
        data_type     => 'varchar',
        size          => 25,
        is_nullable   => 1,
        default_value => undef
    },

=head2 billtoemail

The billing address email address for this order.

    billtoemail => {
        data_type     => 'varchar',
        size          => 50,
        is_nullable   => 1,
        default_value => undef
    },

=head2 shiptosameasbillto

When set to true, the shipping address is the same as the billing address.

    shiptosameasbillto => {
        data_type     => 'tinyint',
        size          => 3,
        is_nullable   => 0,
        default_value => 1
    },

=head2 shiptofirstname

The first name for the shipping address for this order.

    shiptofirstname => {
        data_type     => 'varchar',
        size          => 25,
        is_nullable   => 1,
        default_value => undef
    },

=head2 shiptolastname

The last name for the shipping address for this order.

    shiptolastname => {
        data_type     => 'varchar',
        size          => 25,
        is_nullable   => 1,
        default_value => undef
    },

=head2 shiptoaddress1

The shipping address line 1 for this order.

    shiptoaddress1 => {
        data_type     => 'varchar',
        size          => 50,
        is_nullable   => 1,
        default_value => undef
    },

=head2 shiptoaddress2

The shipping address line 2 for this order.

    shiptoaddress2 => {
        data_type     => 'varchar',
        size          => 50,
        is_nullable   => 1,
        default_value => undef
    },

=head2 shiptoaddress3

The shipping address line 3 for this order.

    shiptoaddress3 => {
        data_type     => 'varchar',
        size          => 50,
        is_nullable   => 1,
        default_value => undef
    },

=head2 shiptocity

The shipping address city for this order.

    shiptocity => {
        data_type     => 'varchar',
        size          => 50,
        is_nullable   => 1,
        default_value => undef
    },

=head2 shiptostate

The shipping address state/province for this order.

    shiptostate => {
        data_type     => 'varchar',
        size          => 50,
        is_nullable   => 1,
        default_value => undef
    },

=head2 shiptozip

The shipping address zip/postal code for this order.

    shiptozip => {
        data_type     => 'varchar',
        size          => 10,
        is_nullable   => 1,
        default_value => undef
    },

=head2 shiptocountry

The shipping address country for this order.

    shiptocountry => {
        data_type     => 'varchar',
        size          => 25,
        is_nullable   => 1,
        default_value => undef
    },

=head2 shiptodayphone

The shipping address daytime phone number for this order.

    shiptodayphone => {
        data_type     => 'varchar',
        size          => 25,
        is_nullable   => 1,
        default_value => undef
    },

=head2 shiptonightphone

The shipping address night time phone number for this order.

    shiptonightphone => {
        data_type     => 'varchar',
        size          => 25,
        is_nullable   => 1,
        default_value => undef
    },

=head2 shiptofax

The shipping address fax number for this order.

    shiptofax => {
        data_type     => 'varchar',
        size          => 25,
        is_nullable   => 1,
        default_value => undef
    },

=head2 shiptoemail

The shipping address email address for this order.

    shiptoemail => {
        data_type     => 'varchar',
        size          => 50,
        is_nullable   => 1,
        default_value => undef
    }

=head1 AUTHOR

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