#!/usr/bin/perl

use strict;
use XML::XPath;
use XML::XPath::XMLParser;

my $xml;
my $parser;
my $doc;
my @node_list;
my $itemNumber;
my $qty;
my $description;
my $nodes;
my $i;
my $item_node;

my @inventory = (
    "12345R", "Pencil  (Red)", 0.29,
    "12345B", "Pencil (Black)", 0.29,
    "13579Y", "Notebook (Yellow)", 1.50,
    "13579R", "Notebook (Red)", 1.50,
    "13579B", "Notebook (Blue)", 1.50,
    "13579G", "Notebook (Green)", 1.50,
    "13579W", "Notebook (White)", 1.50,
);

open OUTFILE, ">/tmp/xforms";
while (<STDIN>)
{
    $xml .= $_;
}

$doc = XML::XPath->new(xml => $xml);

@node_list =
    $doc->findnodes('/Order/OrderLine/Item');
$item_node = $node_list[0];

@node_list = $doc->findnodes('SellersItemIdentification/ID', $item_node);
$itemNumber = $doc->getNodeText($node_list[0]);

for ($i=0; ($i < scalar @inventory) && ($itemNumber ne $inventory[$i]);
    $i += 3)
{
    # loop does it all
}

if ($i != scalar @inventory)
{
    print OUTFILE "About to set description to $inventory[$i+1]\n";
    @node_list = $doc->findnodes( "/Order/OrderLine/Quantity" );
    $qty = $doc->getNodeText( $node_list[0] );
    
    $doc->setNodeText( "/Order/OrderLine/Item/Description", $inventory[$i+1] );
    
    $doc->setNodeText( "/Order/OrderLine/Item/BasePrice/PriceAmount",
        $inventory[$i+2] );

    print OUTFILE "base price: $inventory[$i+2], qty $qty\n";
    $doc->setNodeText( "/Order/LineExtensionTotalAmount",
        $inventory[$i+2] * $qty );
}
else
{
    @node_list = $doc->findnodes( "Description", $item_node );
    my $temp = $doc->getNodeText( $node_list[0] );
    $doc->setNodeText( "/Order/OrderLine/Item/Description", "No item $itemNumber" );
}

print "Content-type: text/xml\n\n";
@node_list = $doc->findnodes( "/Order" );
print $node_list[0]->toString;
print OUTFILE $node_list[0]->toString;