From b8cdac6e6af4545b0173a8d8645c2edfebc9fcab Mon Sep 17 00:00:00 2001 From: ian Date: Wed, 14 Apr 2004 15:47:18 +0000 Subject: [PATCH] fixes --- farnell/circuit.partlist | 2 +- farnell/farnell-find | 27 +++++++++++++++++++++++---- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/farnell/circuit.partlist b/farnell/circuit.partlist index d8afab4..785075f 100644 --- a/farnell/circuit.partlist +++ b/farnell/circuit.partlist @@ -43,7 +43,7 @@ ICSP PD std 22k 2 std 220k 1 74hct04 2/6 - 74f07 1 + 74f07 1/6 1n4148 1 per PIC bat86 2 diff --git a/farnell/farnell-find b/farnell/farnell-find index 040d884..6b72090 100755 --- a/farnell/farnell-find +++ b/farnell/farnell-find @@ -68,13 +68,16 @@ our(%iteminstances); 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) = @_; @@ -167,6 +170,16 @@ sub read_spec () { } } +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); @@ -220,7 +233,12 @@ sub analyse_spec () { } $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) { @@ -229,7 +247,7 @@ sub analyse_spec () { $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}; @@ -290,8 +308,9 @@ sub addqty ($$$$) { " $q1denom to $q2denom"; return $q1; } - return sprintf("%d%s%s", + return sprintf("%d%s%s%s", ($q1numer+$q2numer), + length $q1denom ? '/' : '', $q1denom, ($q1exact && $q2exact ? '=' : '')); } -- 2.30.2