Rev 326 | Rev 328 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 326 | Rev 327 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | #!/usr/bin/perl -w
|
1 | #!/usr/bin/perl -w
|
2 | use strict; |
2 | use strict; |
3 | # $Id: inventory.pl 326 2008-12-29 17:18:46Z agaran $
|
3 | # $Id: inventory.pl 327 2008-12-29 17:53:35Z 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 427... | Line 427... | ||
427 | file_lookup($Config{docdir}, 0, qr/\/information.txt$/, \&parse_ifile); |
427 | file_lookup($Config{docdir}, 0, qr/\/information.txt$/, \&parse_ifile); |
428 | 428 | ||
429 | # process BOM files
|
429 | # process BOM files
|
430 | file_lookup($Config{bomdir}, 0, qr/\.bom$/, \&parse_bom); |
430 | file_lookup($Config{bomdir}, 0, qr/\.bom$/, \&parse_bom); |
431 | 431 | ||
432 | my $n = 0; |
432 | my $n = 1; |
433 | my $cost = 0.0; |
433 | my $cost = 0.0; |
434 | 434 | ||
435 | 435 | ||
436 | my $out = new IO::File $Config{outdir}.'/output.txt', 'w'; |
436 | my $out = new IO::File $Config{outdir}.'/output.txt', 'w'; |
437 | 437 | ||
438 | open (PARTMAP, '>output.map') || die 'cant open output.map: $!'; |
438 | open (PARTMAP, '>output.map') || die 'cant open output.map: $!'; |
439 | 439 | ||
440 | printf PARTMAP "%-35s| refdes\n\n", 'part'; |
440 | printf PARTMAP "%-35s| refdes\n\n", 'part'; |
441 | 441 | ||
442 | my $bomtable = Text::Table->new( |
442 | my $bomtable = Text::Table->new( |
443 | { title => '|', is_sep => 1 }, |
443 | { title => '| ', is_sep => 1 }, |
444 | { title => 'item', align => 'right', align_title => 'center' }, |
444 | { title => 'id', align => 'right', align_title => 'center' }, |
445 | { title => '|', is_sep => 1 }, |
445 | { title => ' | ', is_sep => 1 }, |
446 | { title => 'description', align => 'left', align_title => 'center' }, |
446 | { title => 'description', align => 'left', align_title => 'center' }, |
447 | { title => '|', is_sep => 1 }, |
447 | { title => ' | ', is_sep => 1 }, |
448 | { title => 'manufacturer partno', align => 'left', align_title => 'center' }, |
448 | { title => 'manufacturer partno', align => 'left', align_title => 'center' }, |
449 | { title => '|', is_sep => 1 }, |
449 | { title => ' | ', is_sep => 1 }, |
450 | { title => 'manufacturer', align => 'left', align_title => 'center' }, |
450 | { title => 'manufacturer', align => 'left', align_title => 'center' }, |
451 | { title => '|', is_sep => 1 }, |
451 | { title => ' | ', is_sep => 1 }, |
452 | { title => 'order code', align => 'left', align_title => 'center' }, |
452 | { title => 'order code', align => 'left', align_title => 'center' }, |
453 | { title => '|', is_sep => 1 }, |
453 | { title => ' | ', is_sep => 1 }, |
454 | { title => 'quantity', align => 'right', align_title => 'center' }, |
454 | { title => 'quantity', align => 'right', align_title => 'center' }, |
455 | { title => '|', is_sep => 1 }, |
455 | { title => ' | ', is_sep => 1 }, |
456 | { title => 'unit price', align => 'auto', align_title => 'center' }, |
456 | { title => "price\nper pcs", align => 'right', align_title => 'center' }, |
457 | { title => '|', is_sep => 1 }, |
457 | { title => ' | ', is_sep => 1 }, |
458 | { title => 'total price', align => 'auto', align_title => 'center' }, |
458 | { title => "cost", align => 'right', align_title => 'center' }, |
459 | { title => '|', is_sep => 1 }, |
459 | { title => ' |', is_sep => 1 }, |
460 | ); |
460 | ); |
461 | 461 | ||
462 | foreach my $id ( sort {my $p = $Inv[$a]{Manufacturer} cmp $Inv[$b]{Manufacturer}; if ($p == 0) { |
462 | foreach my $id ( sort {my $p = $Inv[$a]{Manufacturer} cmp $Inv[$b]{Manufacturer}; if ($p == 0) { |
463 | # return $Inv[$a]{Manufacturer_Partno} cmp $Inv[$b]{Manufacturer_Partno}}; return $p; } keys %BomData) {
|
463 | # return $Inv[$a]{Manufacturer_Partno} cmp $Inv[$b]{Manufacturer_Partno}}; return $p; } keys %BomData) {
|
464 | return $Inv[$a]{Description} cmp $Inv[$b]{Description}}; return $p; } keys %BomData) { |
464 | return $Inv[$a]{Description} cmp $Inv[$b]{Description}}; return $p; } keys %BomData) { |
Line 473... | Line 473... | ||
473 | my $icost = $quant * $Inv[$id]{Price}; |
473 | my $icost = $quant * $Inv[$id]{Price}; |
474 | 474 | ||
475 | printf PARTMAP "%-35s|%s\n", shortstring($Inv[$id]{Description},35), join (', ', sort @{$BomData{$id}{RefDes}}); |
475 | printf PARTMAP "%-35s|%s\n", shortstring($Inv[$id]{Description},35), join (', ', sort @{$BomData{$id}{RefDes}}); |
476 | $cost += $icost; |
476 | $cost += $icost; |
477 | # %BomData{ById}{$id}{RefDes}
|
477 | # %BomData{ById}{$id}{RefDes}
|
- | 478 | # $bomtable->add(' '.$n.' ', $Inv[$id]{Description}.' ', $Inv[$id]{Manufacturer_Partno}.' ', $Inv[$id]{Manufacturer}.' ',
|
|
- | 479 | # $Inv[$id]{Ordercode}.' ', ' '.$quant.' ', sprintf("%.3f ",$Inv[$id]{Price}), sprintf("%.3f ",$icost));
|
|
478 | $bomtable->add($n, $Inv[$id]{Description}, $Inv[$id]{Manufacturer_Partno}, $Inv[$id]{Manufacturer},$Inv[$id]{Ordercode}, |
480 | $bomtable->add($n, $Inv[$id]{Description}, $Inv[$id]{Manufacturer_Partno}, $Inv[$id]{Manufacturer}, |
479 | $quant, $Inv[$id]{Price}, $icost); |
481 | $Inv[$id]{Ordercode},$quant, sprintf("%.3f",$Inv[$id]{Price}), sprintf("%.3f",$icost)); |
480 | $n ++; |
482 | $n ++; |
481 | }
|
483 | }
|
482 | 484 | ||
483 | printf $out "file generated at %s\n\n", scalar localtime(time()); |
485 | printf $out "file generated at %s\n\n", scalar localtime(time()); |
484 | 486 |