package Google::Checkout::XML::CommandXmlWriter;
#--
#-- Writes a generic command XML.
#--
use strict;
use warnings;
use Google::Checkout::XML::Constants;
use Google::Checkout::General::Util qw/make_xml_safe/;
use Google::Checkout::XML::Writer;
our @ISA = qw/Google::Checkout::XML::Writer/;
sub new
{
my ($class, %args) = @_;
delete $args{root};
my $self = $class->SUPER::new(%args);
my $xml_schema = '';
my $currency_supported = '';
if ($args{gco}->reader()) {
my $reader = $args{gco}->reader();
$xml_schema = $reader->get(Google::Checkout::XML::Constants::XML_SCHEMA);
$currency_supported = $reader->get(Google::Checkout::XML::Constants::CURRENCY_SUPPORTED);
} else {
$xml_schema = $args{gco}->{__xml_schema};
$currency_supported = $args{gco}->{__currency_supported};
}
$self->add_element(name => $args{command}->get_name,
attr => [xmlns => $xml_schema,
Google::Checkout::XML::Constants::ORDER_NUMBER,
$args{command}->get_order_number]);
if ($args{command}->get_amount)
{
$self->add_element(close => 1,
name => Google::Checkout::XML::Constants::AMOUNT,
data => $args{command}->get_amount,
attr => [Google::Checkout::XML::Constants::ITEM_CURRENCY,
$currency_supported]);
}
if ($args{command}->get_reason)
{
$self->add_element(close => 1,
name => Google::Checkout::XML::Constants::REASON,
data => $args{command}->get_reason);
}
return bless $self => $class;
}
1;