Rev 331 | Rev 333 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 331 | Rev 332 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | #!/usr/bin/perl -w
|
1 | #!/usr/bin/perl -w
|
2 | use strict; |
2 | use strict; |
3 | # $Id: inventory.pl 331 2008-12-29 20:05:13Z agaran $
|
3 | # $Id: inventory.pl 332 2008-12-29 20:40:58Z agaran $
|
4 | # Thu, 13 Nov 2008 21:06:23 +0100
|
4 | # Thu, 13 Nov 2008 21:06:23 +0100
|
5 | # Maciej 'agaran' Pijanka <agaran@pld-linux.org>
|
5 | # Maciej 'agaran' Pijanka <agaran@pld-linux.org>
|
6 | # for OpenARM SBC Project
|
6 | # for OpenARM SBC Project
|
7 | # license: gpl v3
|
7 | # license: gpl v3
|
8 | 8 | ||
Line 36... | Line 36... | ||
36 | # ==================================================
|
36 | # ==================================================
|
37 | 37 | ||
38 | my %Inv_By_PartNo; |
38 | my %Inv_By_PartNo; |
39 | my @Inv; |
39 | my @Inv; |
40 | my %BomData; |
40 | my %BomData; |
- | 41 | my %Files; |
|
41 | 42 | ||
42 | sub err_printf($@) { |
43 | sub err_printf($@) { |
43 | my ($format, @args) = @_; |
44 | my ($format, @args) = @_; |
44 | 45 | ||
45 | printf STDERR "-E- ".$format."\n", @args; |
46 | printf STDERR "-E- ".$format."\n", @args; |
Line 287... | Line 288... | ||
287 | 288 | ||
288 | sub parse_bom ($) { |
289 | sub parse_bom ($) { |
289 | my ($filepath) = @_; |
290 | my ($filepath) = @_; |
290 | 291 | ||
291 | open(IN, $filepath) or return 1; |
292 | open(IN, $filepath) or return 1; |
- | 293 | my $fkey = substr(basename($filepath),0,length(basename($filepath))-4); |
|
292 | 294 | ||
293 | #wrn_printf("GotARg: %s", shortdir($filepath));
|
295 | #wrn_printf("GotARg: %s", shortdir($filepath));
|
294 | 296 | ||
295 | my @Fields; |
297 | my @Fields; |
296 | 298 | ||
Line 370... | Line 372... | ||
370 | err_printf("Different footprints for same device between sheets, script cannot ". |
372 | err_printf("Different footprints for same device between sheets, script cannot ". |
371 | "work around this, will use first one, but expect that output file might ". |
373 | "work around this, will use first one, but expect that output file might ". |
372 | "have errors."); |
374 | "have errors."); |
373 | }
|
375 | }
|
374 | }
|
376 | }
|
375 | push @{$BomData{$id}{Files}}, substr(basename($filepath),0,length(basename($filepath))-4); |
377 | push @{$BomData{$id}{Files}}, $fkey; |
- | 378 | push @{$Files{$fkey}{$id}{RefDes}}, @{$data{$id}{RefDes}}; |
|
376 | 379 | ||
377 | # printf "%-20s %.4f %s\n", $Inv[$id]{Manufacturer_Partno}, $cnt, $icost, join (', ', @{$data{$id}{RefDes}});
|
380 | # printf "%-20s %.4f %s\n", $Inv[$id]{Manufacturer_Partno}, $cnt, $icost, join (', ', @{$data{$id}{RefDes}});
|
378 | # %BomData{ById}{$id}{RefDes}
|
381 | # %BomData{ById}{$id}{RefDes}
|
379 | }
|
382 | }
|
380 | }
|
383 | }
|
Line 542... | Line 545... | ||
542 | # $bomtable->add(' '.$n.' ', $Inv[$id]{Description}.' ', $Inv[$id]{Manufacturer_Partno}.' ', $Inv[$id]{Manufacturer}.' ',
|
545 | # $bomtable->add(' '.$n.' ', $Inv[$id]{Description}.' ', $Inv[$id]{Manufacturer_Partno}.' ', $Inv[$id]{Manufacturer}.' ',
|
543 | # $Inv[$id]{Ordercode}.' ', ' '.$quant.' ', sprintf("%.3f ",$Inv[$id]{Price}), sprintf("%.3f ",$icost));
|
546 | # $Inv[$id]{Ordercode}.' ', ' '.$quant.' ', sprintf("%.3f ",$Inv[$id]{Price}), sprintf("%.3f ",$icost));
|
544 | $bomtable->add($bn++, $Inv[$id]{Description}, $Inv[$id]{Manufacturer_Partno}, $Inv[$id]{Manufacturer}, |
547 | $bomtable->add($bn++, $Inv[$id]{Description}, $Inv[$id]{Manufacturer_Partno}, $Inv[$id]{Manufacturer}, |
545 | $Inv[$id]{Ordercode},$quant, sprintf("%.3f",$Inv[$id]{Price}), sprintf("%.3f",$icost)); |
548 | $Inv[$id]{Ordercode},$quant, sprintf("%.3f",$Inv[$id]{Price}), sprintf("%.3f",$icost)); |
546 | 549 | ||
547 | $parttable->add($pn++, $Inv[$id]{Description}, $Inv[$id]{Manufacturer_Partno}, $BomData{$id}{Footprint}, |
550 | # $parttable->add($pn++, $Inv[$id]{Description}, $Inv[$id]{Manufacturer_Partno}, $BomData{$id}{Footprint},
|
548 | strbreak(join (', ', sort @{$BomData{$id}{RefDes}}),43), join("\n",@{$BomData{$id}{Files}})); |
551 | # strbreak(join (', ', sort @{$BomData{$id}{RefDes}}),43), join("\n",@{$BomData{$id}{Files}}));
|
549 | }
|
552 | }
|
550 | 553 | ||
- | 554 | ||
551 | printf $out "file generated at %s\n\n", scalar localtime(time()); |
555 | printf $out "file generated at %s\n\n", scalar localtime(time()); |
552 | 556 | ||
553 | print $out $bomtable->rule('-','+'); |
557 | print $out $bomtable->rule('-','+'); |
554 | print $out $bomtable->title(); |
558 | print $out $bomtable->title(); |
555 | print $out $bomtable->rule('-','+'); |
559 | print $out $bomtable->rule('-','+'); |
556 | print $out $bomtable->body(); |
560 | print $out $bomtable->body(); |
557 | print $out $bomtable->rule('-','+'); |
561 | print $out $bomtable->rule('-','+'); |
558 | 562 | ||
559 | printf $out "\nTotal cost: %.3f\n\n\n", $cost; |
563 | printf $out "\nTotal cost: %.3f\n\n\n", $cost; |
560 | 564 | ||
- | 565 | ||
- | 566 | foreach my $fkey (sort keys %Files) { |
|
- | 567 | my $rowblock = 0; |
|
- | 568 | $pn = 1; |
|
- | 569 | foreach my $id ( sort {my $p = $Inv[$a]{Manufacturer} cmp $Inv[$b]{Manufacturer}; if ($p == 0) { |
|
- | 570 | return $Inv[$a]{Description} cmp $Inv[$b]{Description}}; return $p; } keys %{$Files{$fkey}}) { |
|
- | 571 | ||
- | 572 | $parttable->add($pn++, $Inv[$id]{Description}, $Inv[$id]{Manufacturer_Partno}, $BomData{$id}{Footprint}, |
|
- | 573 | strbreak(join (', ', sort @{$Files{$fkey}{$id}{RefDes}}),43), $fkey); |
|
- | 574 | ||
- | 575 | ||
- | 576 | }
|
|
- | 577 | $parttable->add('--','=========','==========','==========','==========','=========='); |
|
- | 578 | }
|
|
- | 579 | ||
561 | print $out $parttable->rule('-','+'); |
580 | print $out $parttable->rule('-','+'); |
562 | print $out $parttable->title(); |
581 | print $out $parttable->title(); |
563 | print $out $parttable->rule('-','+'); |
582 | print $out $parttable->rule('-','+'); |
564 | print $out $parttable->body(); |
583 | print $out $parttable->body(); |
565 | print $out $parttable->rule('-','+'); |
584 | print $out $parttable->rule('-','+'); |