The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
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;