NAME
Mango::Order - Module for maintaining order contents
SYNOPSIS
my $order = $provider->create({
user => $user
});
my $iterator = $order->items;
while (my $item = $iterator->next) {
print $item->sku;
print $item->price;
print $item->total;
};
DESCRIPTION
Mango::Order is a component for maintaining simple order records.
METHODS
add
Adds a new item to the current order and returns an instance of the item class. You can either pass the item data as a hash reference:
my $item = $order->add({
sku => 'SKU1234',
quantity => 1,
price => 1.25
});
or pass an existing item:
$order->add(
$cart->items->first
);
When passing an existing cart/order item to add, all columns in the source item will be copied into the destination item if the column exists in both the destination and source, and the column isn't the primary key or the foreign key of the item relationship.
clear
Deletes all items from the current order.
$order->clear;
count
Returns the number of items in the order object.
my $numitems = $order->count;
delete
Deletes the item matching the supplied filter from the current order.
$order->delete({
sku => 'ABC-123'
});
destroy
Deletes the current item from the provider.
items
Loads the current orders items matching the specified filter and returns a Mango::Iterator in scalar context, or a list of items in list context.
my $iterator = $order->items;
while (my $item = $iterator->next) {
print $item->sku;
};
my @items = $order->items;
The following options are available:
- order_by
-
Order the items by the column(s) and order specified. This option uses the SQL style syntax:
my $items = $order->items(undef, {order_by => 'sku ASC'});
save
Marks the current order type as ORDER_TYPE_SAVED
.
$order->save
reconcile
This method copies the specified carts items into the order only if the item count or the subtotal differ.
id
Returns the id of the current order.
print $order->id;
See "id" in Handel::Schema::Order for more information about this column.
type
Gets/sets the type of the current order. Currently the two types allowed are:
ORDER_TYPE_TEMP
-
The order is temporary and may be purged during any [external] cleanup process after the designated amount of inactivity.
ORDER_TYPE_SAVED
-
The order should be left untouched by any cleanup process and is available to the shopper at any time.
$order->type(ORDER_TYPE_SAVED);
print $order->type;
number
Gets/sets the order number.
$order->number(1015275);
print $order->number;
created
Gets/sets the date/time when the order was created. The date is returned as a stringified DateTime object.
$order->created('2006-04-11T12:34:65');
print $order->created;
updated
Gets/sets the date/time when the order was last updated. The date is returned as a stringified DateTime object.
$order->updated('2006-04-11T12:34:65');
print $order->updated;
comments
Gets/sets the comments for this order.
$order->comments('Handel with care');
print $order->comments;
shipmethod
Gets/sets the shipping method for this order.
$order->shipmethod('UPS 2nd Day');
print $order->shipmethod;
shipping
Gets/sets the shipping cost for the order item. The price is returned as a stringified Mango::Currency object.
$item->shipping(12.95);
print $item->shipping;
print $item->shipping->format;
handling
Gets/sets the handling cost for the order item. The price is returned as a stringified Mango::Currency object.
$item->handling(12.95);
print $item->handling;
print $item->handling->format;
tax
Gets/sets the tax for the order item. The price is returned as a stringified Mango::Currency object.
$item->tax(12.95);
print $item->tax;
print $item->tax->format;
subtotal
Gets/sets the subtotal for the order item. The price is returned as a stringified Mango::Currency object.
$item->subtotal(12.95);
print $item->subtotal;
print $item->subtotal->format;
total
Gets/sets the total for the order item. The price is returned as a stringified Mango::Currency object.
$item->total(12.95);
print $item->total;
print $item->total->format;
billtofirstname
Gets/sets the bill to first name.
$order->billtofirstname('Chistopher');
print $order->billtofirstname;
billtolastname
Gets/sets the bill to last name
$order->billtolastname('Chistopher');
print $order->billtolastname;
billtoaddress1
Gets/sets the bill to address line 1
$order->billtoaddress1('1234 Main Street');
print $order->billtoaddress1;
billtoaddress2
Gets/sets the bill to address line 2
$order->billtoaddress2('Suite 34b');
print $order->billtoaddress2;
billtoaddress3
Gets/sets the bill to address line 3
$order->billtoaddress3('Floor 5');
print $order->billtoaddress3;
billtocity
Gets/sets the bill to city
$order->billtocity('Smallville');
print $order->billtocity;
billtostate
Gets/sets the bill to state/province
$order->billtostate('OH');
print $order->billtostate;
billtozip
Gets/sets the bill to zip/postal code
$order->billtozip('12345-6500');
print $order->billtozip;
billtocountry
Gets/sets the bill to country
$order->billtocountry('US');
print $order->billtocountry;
billtodayphone
Gets/sets the bill to day phone number
$order->billtodayphone('800-867-5309');
print $order->billtodayphone;
billtonightphone
Gets/sets the bill to night phone number
$order->billtonightphone('800-867-5309');
print $order->billtonightphone;
billtofax
Gets/sets the bill to fax number
$order->billtofax('888-132-4335');
print $order->billtofax;
billtoemail
Gets/sets the bill to email address
$order->billtoemail('claco@chrislaco.com');
print $order->billtoemail;
shiptosameasbillto
When true, the ship address is the same as the bill to address.
$order->shiptosameasbillto(1);
print $order->shiptosameasbillto;
shiptofirstname
Gets/sets the ship to first name.
$order->shiptofirstname('Chistopher');
print $order->shiptofirstname;
shiptolastname
Gets/sets the ship to last name
$order->shiptolastname('Chistopher');
print $order->shiptolastname;
shiptoaddress1
Gets/sets the ship to address line 1
$order->shiptoaddress1('1234 Main Street');
print $order->shiptoaddress1;
shiptoaddress2
Gets/sets the ship to address line 2
$order->shiptoaddress2('Suite 34b');
print $order->shiptoaddress2;
shiptoaddress3
Gets/sets the ship to address line 3
$order->shiptoaddress3('Floor 5');
print $order->shiptoaddress3;
shiptocity
Gets/sets the ship to city
$order->shiptocity('Smallville');
print $order->shiptocity;
shiptostate
Gets/sets the ship to state/province
$order->shiptostate('OH');
print $order->shiptostate;
shiptozip
Gets/sets the ship to zip/postal code
$order->shiptozip('12345-6500');
print $order->shiptozip;
shiptocountry
Gets/sets the ship to country
$order->shiptocountry('US');
print $order->shiptocountry;
shiptodayphone
Gets/sets the ship to day phone number
$order->shiptodayphone('800-867-5309');
print $order->shiptodayphone;
shiptonightphone
Gets/sets the ship to night phone number
$order->shiptonightphone('800-867-5309');
print $order->shiptonightphone;
shiptofax
Gets/sets the ship to fax number
$order->shiptofax('888-132-4335');
print $order->shiptofax;
shiptoemail
Gets/sets the ship to email address
$order->shiptoemail('claco@chrislaco.com');
print $order->shiptoemail;
update
Saves any changes made to the current item.
TEMPORARY COLUMNS
The following columns are really just methods to hold sensitive order data that we don't want to actually store in the database.
ccn
Gets/sets the credit cart number.
$order->ccn(4444333322221111);
print $order->ccn;
cctype
Gets/sets the credit cart type.
$order->cctype('MasterCard');
print $order->cctype;
ccm
Gets/sets the credit cart expiration month.
$order->ccm(1);
print $order->ccm;
ccy
Gets/sets the credit cart expiration year.
$order->ccyear(2010);
print $order->ccyear;
ccvn
Gets/sets the credit cart verification number.
$order->cvvn(102);
print $order->cvvn;
ccname
Gets/sets the credit cart holders name as it appears on the card.
$order->ccname('CHRISTOPHER H. LACO');
print $order->ccname;
ccissuenumber
Gets/sets the credit cart issue number.
$order->ccissuenumber(16544);
print $order->ccissuenumber;
ccstartdate
Gets/sets the credit cart start date.
$order->ccstartdate('1/2/2009');
print $order->ccstartdate;
ccenddate
Gets/sets the credit cart end date.
$order->ccenddate('12/31/2011');
print $order->ccenddate;
SEE ALSO
Mango::Order::Item, Mango::Schema::Order
AUTHOR
Christopher H. Laco
CPAN ID: CLACO
claco@chrislaco.com
http://today.icantfocus.com/blog/