our($part_re)= "$partword1_re(?: $partword_re)*";
our($item_re)= '\d{3}\-\d{3,7}';
+our(%stockmap)= ('In Stock' => 'Y',
+ 'Awaiting Stock' => 'A');
+
sub by_item ($) {
my ($itemcode) = @_;
# looks up $itemcode (ddd-d...) at Farnell and returns
$chr->{Description}= "[$partno] $chr->{Description}";
};
$chr->{Avail}= snarf('Stock Availability');
- $chr->{Avail} =~ s/^Awaiting Delivery$/Awaiting/;
$chr->{MinOrder}= snarf('Minimum Order');
$chr->{Multiple}= snarf('Order Multiple');
$price= snarf('Unit Price', "\n\<!--.*--\\>");
sub analyse_spec () {
my ($part,$pd,$try,@rhs,$sp,$circuit,$iteratable,$count,$pe,$use);
- my ($item,$qty,$ii,$bi,$toorder,$price,$total,$notechar,$desc);
+ my ($item,$qty,$ii,$bi,$toorder,$price,$total,$notechar,$desc,$ql,$qr);
+ my ($avail,%avail);
foreach $part (keys %partdef) {
$item= $partdef{$part};
next if exists $itemdesc{$item};
}
}
$total= 0;
+ my ($desclen)= 43;
foreach $item (sort keys %iteminstances) {
undef $qty;
foreach $ii (@{ $iteminstances{$item} }) {
next unless $bi;
($toorder,$notechar)= calcorder($qty, $bi);
$price= $toorder * $bi->{Price};
- printf("%5d%1s %-11s %-.35s %6.2f %6.2f %s\n",
+ $avail= $bi->{Avail};
+ $avail{$avail}= 1;
+ $avail= ' '.$stockmap{$avail} if exists $stockmap{$avail};
+ printf("%5d%1s %-11s %-.${desclen}s %6.2f %6.2f %s\n",
$toorder, $notechar, $item, $bi->{Description},
- $bi->{Price}, $price, $bi->{Avail})
+ $bi->{Price}, $price, $avail)
or die $!;
$total += $price;
foreach $desc (@{ $itemdesc{$item} }) {
or die $!;
}
foreach $ii (@{ $iteminstances{$item} }) {
- printf("%*s %11s %s\n",
+ $ql= $ii->{Qty}; $qr= '';
+ if ($ql =~ s/\D.*$//) { $qr= $&; }
+ printf("%*s %5s%-2s %s\n",
(5+1+5),'',
-# $ii->{Qty} eq '1' ? '' : $ii->{Qty},
- $ii->{Qty},
+ $ql,$qr,
$ii->{Use})
or die $!;
}
+ printf "\n" or die $!;
}
- printf("%*s %6.2f\n", (5+1+1+11+1+35+1+6),'', $total) or die $!;
+ printf("%*s %11s %-*s %6.2f\n",
+ (5+1), 'TOTAL',
+ '',
+ ($desclen+1+6), join(' / ', sort keys %avail),
+ $total)
+ or die $!;
+ print "\n" or die $!;
dump_warnerrs();
+ print '-'x70, "\n" or die $!;
}
sub addqty ($$$$) {