# then will prompt and read a line from tty.
# ./farnell-find [<options>] bom <file> ...
# Processes input files and produces BOM parts list.
+# ./farnell-find [<options>] order-bom <file> ...
+# Processes input files and adds BOM parts to cart.
#
# Options:
# -S<sort>
my ($i, $url, $item, $qty, @submit, $request, $response);
my ($page_output);
local ($_);
+ need_jsessionid();
$url= "$urlbase/jsp/op/shoppingbasket.jsp;jsessionid=$jsessionid";
get_useragent();
$response= $useragent->get($url);
$ii->{Use});
}
-sub analyse_spec () {
+sub analyse_spec ($) {
+ my ($op) = @_;
my ($part,$pd,$try,@rhs,$sp,$circuit,$iteratable,$count,$pe,$use);
my ($item,$totalqty,$ii,$bi,$toorder,$price,$total,$notechar,$desc);
my ($avail,%avail,$desclen,$why,$suppress,%suppress,$pi);
- my ($iteminstance);
+ my ($iteminstance,@orderlist);
$desclen= 42;
foreach $part (sort keys %partdef) {
$item= $partdef{$part};
$show{$item}{Info}= '';
$total += $price;
$show{$item}{Price}= $price;
+ $show{$item}{ToOrder}= $toorder;
foreach $desc (@{ $itemdesc{$item} }) {
$show{$item}{Info} .=
sprintf("%*s %s\n",
$show{$item}{Info} .= iteminstanceprint($ii);
}
}
+ if ($op eq 'order-bom') {
+ dump_warnerrs();
+ }
foreach $item (sort { itemsortmap($a) cmp itemsortmap($b); }
keys %show) {
- print $show{$item}{Head}, $show{$item}{Info}, "\n"
- or die $!;
+ if ($op eq 'order-bom') {
+ push @orderlist, $item, $show{$item}{ToOrder};
+ } else {
+ print $show{$item}{Head}, $show{$item}{Info}, "\n"
+ or die $!;
+ }
+ }
+ if ($op eq 'order-bom') {
+ cart_add(@orderlist);
+ die;
}
printf("%*s %11s %-*s %6.2f\n",
(5+1), 'TOTAL',
return $1;
}
+sub need_jsessionid () {
+ local ($_);
+ my ($newjsid);
+ return if defined $jsessionid;
+ open TTY, "+< /dev/tty" or die $!;
+ select((select(TTY), $|=1)[0]);
+ print TTY "URL or jsessionid: " or die $!;
+ $_= <TTY>; TTY->error and die $!;
+ length or die;
+ $newjsid= is_jsessionid($_);
+ defined $newjsid or die;
+ $jsessionid= $newjsid;
+}
+
sub main () {
my ($op);
my ($item, $a);
}
die $! if STDIN->error;
}
- if (!defined $jsessionid) {
- open TTY, "+< /dev/tty" or die $!;
- select((select(TTY), $|=1)[0]);
- print TTY "URL or jsessionid: " or die $!;
- $_= <TTY>; TTY->error and die $!;
- length or die;
- $newjsid= is_jsessionid($_);
- defined $newjsid or die;
- $jsessionid= $newjsid;
- }
cart_add(@orderlist);
- } elsif ($op eq 'bom') {
+ } elsif ($op eq 'bom' || $op eq 'order-bom') {
my ($filename);
foreach $filename (@ARGV) {
read_spec($filename);
}
- analyse_spec();
+ analyse_spec($op);
exit !!@fault;
} else {
die;