Amazon-MWS
view release on metacpan - search on metacpan
view release on metacpan or search on metacpan
lib/Amazon/MWS/Uploader.pm view on Meta::CPAN
}));
# and abort the job as well
$self->_exe_query($self->sqla
->update('amazon_mws_jobs',
{
aborted => 1,
status => "Job aborted by cancel_feed",
},
{
amws_job_id => $feed_record->{amws_job_id},
shop_id => $self->_unique_shop_id,
}));
# and set the belonging products to redo
$self->_exe_query($self->sqla
->update('amazon_mws_products',
{
status => 'redo',
},
{
amws_job_id => $feed_record->{amws_job_id},
shop_id => $self->_unique_shop_id,
}));
}
else {
warn "No $feed found in pending list, trying to cancel anyway\n";
}
return $self->client->CancelFeedSubmissions(IdList => [ $feed ]);
}
sub _error_logger {
my ($self, $error_or_warning, $error_code, $message) = @_;
my $mode = 'warn';
my $modes = $self->skus_warnings_modes;
my $out_message = "$error_or_warning: $message ($error_code)\n";
# hardcode 8008 as print
$modes->{8008} = 'print';
if (exists $modes->{$error_code}) {
$mode = $modes->{$error_code};
}
if ($mode eq 'print') {
print $out_message;
}
elsif ($mode eq 'warn') {
warn $out_message;
}
elsif ($mode eq 'skip') {
# do nothing
}
else {
warn "Invalid mode $mode for $out_message";
}
}
=head2 update_amw_order_status($amazon_order_number)
Check the order status on Amazon and update the row in the
amazon_mws_orders table.
=cut
sub update_amw_order_status {
my ($self, $order) = @_;
# first, check if it exists
return unless $order;
my $sth = $self->_exe_query($self->sqla->select('amazon_mws_orders',
'*',
{
amazon_order_id => $order,
shop_id => $self->_unique_shop_id,
}));
my $order_ref = $sth->fetchrow_hashref;
die "Multiple rows found for $order!" if $sth->fetchrow_hashref;
print Dumper($order_ref);
my $res = $self->client->GetOrder(AmazonOrderId => [$order]);
my $amazon_order;
if ($res && $res->{Orders}->{Order} && @{$res->{Orders}->{Order}}) {
if (@{$res->{Orders}->{Order}} > 1) {
warn "Multiple results for order $order: " . Dumper($res);
}
$amazon_order = $res->{Orders}->{Order}->[0];
}
else {
warn "Order $order not found on amazon!"
}
print Dumper($amazon_order);
my $obj = Amazon::MWS::XML::Order->new(order => $amazon_order);
my $status = $obj->order_status;
$self->_exe_query($self->sqla->update('amazon_mws_orders',
{ status => $status },
{
amazon_order_id => $order,
shop_id => $self->_unique_shop_id,
}));
return $status;
}
=head2 get_products_with_error_code(@error_codes)
Return a list of hashref with the rows from C<amazon_mws_products> for
the current shop and the error code passed as argument. If no error
codes are passed, fetch all the products in error.
=head2 get_products_with_warnings
Returns a list of hashref, with C<sku> and C<warnings> as keys, for
each product in the shop which has the warnings set to something.
=cut
sub get_products_with_error_code {
my ($self, @errcodes) = @_;
my $where = { '>' => 0 };
if (@errcodes) {
$where = { -in => \@errcodes };
}
my $sth = $self->_exe_query($self->sqla
->select('amazon_mws_products', '*',
{
status => { '!=' => 'deleted' },
shop_id => $self->_unique_shop_id,
error_code => $where,
view all matches for this distributionview release on metacpan - search on metacpan
( run in 1.176 second using v1.00-cache-2.02-grep-82fe00e-cpan-1310916c57ae )