our(%itemdesc);
# $itemdesc{$item}[]= $desc;
+our(%iteminfo);
+# $iteminfo{$item}= by_item(...);
+
our($partword1_re)= '\S*[^ \t0-9-]\S*';
our($partword_re)= '\S*[^ \t0-9/=]\S*';
our($part_re)= "$partword1_re(?: $partword_re)*";
our($item_re)= '\d{3}\-\d{3,7}';
our(%stockmap)= ('In Stock' => 'Y',
- 'Awaiting Stock' => 'A');
+ 'Awaiting Delivery' => 'A');
sub by_item ($) {
my ($itemcode) = @_;
}
}
+sub itemsortmap ($) {
+ my ($item) = @_;
+ my ($bi, $title);
+ $bi= $iteminfo{$item};
+ return "? $item" if !defined $bi;
+ $title= $bi->{Description};
+ $title .= "\n".$1 if $title =~ s/^(\[[^][]+\]) //;
+ return $title;
+}
+
sub analyse_spec () {
my ($part,$pd,$try,@rhs,$sp,$circuit,$iteratable,$count,$pe,$use);
my ($item,$qty,$ii,$bi,$toorder,$price,$total,$notechar,$desc,$ql,$qr);
}
$total= 0;
my ($desclen)= 43;
- foreach $item (sort keys %iteminstances) {
+ foreach $item (keys %iteminstances) {
+ $bi= by_item($item);
+ $iteminfo{$item}= $bi;
+ }
+ foreach $item (sort { itemsortmap($a) cmp itemsortmap($b); }
+ keys %iteminstances) {
undef $qty;
foreach $ii (@{ $iteminstances{$item} }) {
if (!defined $qty) {
$qty= addqty($qty, $ii->{Qty}, $ii->{Mult}, $item);
}
}
- $bi= by_item($item);
+ $bi= $iteminfo{$item};
next unless $bi;
($toorder,$notechar)= calcorder($qty, $bi);
$price= $toorder * $bi->{Price};
" $q1denom to $q2denom";
return $q1;
}
- return sprintf("%d%s%s",
+ return sprintf("%d%s%s%s",
($q1numer+$q2numer),
+ length $q1denom ? '/' : '',
$q1denom,
($q1exact && $q2exact ? '=' : ''));
}