Amazon-MWS
view release on metacpan or search on metacpan
lib/Amazon/MWS/XML/Product.pm view on Meta::CPAN
=item search_terms
An (optional) arrayref of search terms (max 5)
=item features
An (optional) arrayref of strings with features (max 5)
=item condition
Possible values which validates correctly: Club CollectibleAcceptable
CollectibleGood CollectibleLikeNew CollectibleVeryGood New Refurbished
UsedAcceptable UsedGood UsedLikeNew UsedVeryGood
Defaults to C<New>
=item condition_note
An arbitrary string shorter than 2000 characters with comments about
the condition.
lib/Amazon/MWS/XML/Product.pm view on Meta::CPAN
has inventory => (is => 'rw',
default => sub { '0' },
isa => Int);
has ship_in_days => (is => 'ro',
isa => Int,
default => sub { '2' });
has price => (is => 'ro',
required => 1,
isa => \&_validate_price);
sub _validate_price {
my ($price) = @_;
die "$price is not a number" unless is_Num($price);
die "$price is negative" if $price < 0;
}
has sale_price => (is => 'ro',
isa => \&_validate_price);
has sale_start => (is => 'ro',
isa => sub {
die "Not a datetime"
unless $_[0]->isa('DateTime');
});
has sale_end => (is => 'ro',
isa => sub {
die "Not a datetime"
lib/Amazon/MWS/XML/ShippedOrder.pm view on Meta::CPAN
use DateTime;
use DateTime::Format::ISO8601;
use Moo;
=head1 NAME
Amazon::MWS::XML::ShippedOrder
=head1 DESCRIPTION
Class to validate and generate a shipping confirmation feed. While
L<Amazon::MWS::XML::Order> is meant to be used to parse the response,
this is meant to produce the XML, generating a structure suitable to
satisfy the Amazon XSD.
=head1 SYNOPSIS
my $shipped = Amazon::MWS::XML::ShippedOrder->new(....); # see below the accessors
print Dumper($shipped->as_shipping_confirmation_hashref);
=head1 CONSTRUCTOR ARGUMENTS/ACCESSORS
lib/Amazon/MWS/XML/ShippedOrder.pm view on Meta::CPAN
my $dt = $_[0];
die "Not a DateTime object"
unless ref($dt) && $dt->isa('DateTime');
},
default => sub { DateTime->now(time_zone => 'Europe/Berlin')},
);
has carrier => (is => 'ro', required => 1);
has shipping_method => (is => 'ro');
has shipping_tracking_number => (is => 'ro');
has items => (is => 'ro',
isa => \&_validate_items,
required => 1,
);
sub _validate_items {
my $items = $_[0];
die "items should be an hashref"
unless ($items and ref($items) eq 'ARRAY');
foreach my $item (@$items) {
die "An item passed is not an hashref"
unless ($item and ref($item) eq 'HASH');
die "An item is missing amazon_order_item_code or merchant_order_item_code"
unless
$item->{amazon_order_item_code} || $item->{merchant_order_item_code};
lib/Amazon/MWS/XML/ShippedOrder.pm view on Meta::CPAN
foreach my $item (@{ $self->items }) {
my %item_struct;
# precedence to amazon order item
if ($item->{amazon_order_item_code}) {
$item_struct{AmazonOrderItemCode} = $item->{amazon_order_item_code};
}
elsif ($item->{merchant_order_item_code}) {
$item_struct{MerchantOrderItemID} = $item->{merchant_order_item_code};
}
else {
die "This shouldn't happen, item was validated";
}
if ($item->{merchant_fulfillment_item_id}) {
$item_struct{MerchantFulfillmentItemID} = $item->{merchant_fulfillment_item_id};
}
# more items and partial shipping
if ($item->{quantity}) {
$item_struct{Quantity} = $item->{quantity};
}
push @items, \%item_struct;
}
t/shipping-confirmation.t view on Meta::CPAN
# amazon_order_item_code => '4444',
merchant_order_item_code => '5555',
merchant_fulfillment_item_id => '6666',
quantity => 3,
}
],
);
my $shipped_order = Amazon::MWS::XML::ShippedOrder->new(%shipped);
ok($shipped_order, "constructor validates");
is_deeply($shipped_order->as_shipping_confirmation_hashref,
{
MerchantOrderID => 8888888,
MerchantFulfillmentID => '666666',
FulfillmentDate => '2014-11-14T11:11:00+01:00',
FulfillmentData => {
CarrierCode => 'UPS',
ShippingMethod => 'Second Day',
ShipperTrackingNumber => '123412341234',
t/shipping-confirmation.t view on Meta::CPAN
access_key_id => '12341234',
secret_key => '123412341234',
marketplace_id => '123412341234',
endpoint => 'https://mws-eu.amazonservices.com',
feed_dir => $feed_dir,
schema_dir => $schema_dir,
);
ok($uploader, "Uploader ok");
my $feed = $uploader->shipping_confirmation_feed($shipped_order);
ok($feed, "Can create the feed and validates against the schema"); # and diag $feed;
# test against the example provided in the documentation
my $expected = <<'XML';
<?xml version="1.0" encoding="UTF-8"?>
<AmazonEnvelope>
<Header>
<DocumentVersion>1.1</DocumentVersion>
<MerchantIdentifier>My Store</MerchantIdentifier>
( run in 0.481 second using v1.01-cache-2.11-cpan-a5abf4f5562 )