Subversion Repositories OpenARM Single-board Computer

Rev

Rev 333 | Rev 335 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 333 Rev 334
Line 1... Line 1...
1
#!/usr/bin/perl -w
1
#!/usr/bin/perl -w
2
use strict;
2
use strict;
3
# $Id: inventory.pl 333 2008-12-29 21:17:29Z agaran $
3
# $Id: inventory.pl 334 2008-12-29 21:36:34Z 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 125... Line 125...
125
        return $value;
125
        return $value;
126
}
126
}
127
127
128
sub strbreak($$) {
128
sub strbreak($$) {
129
        my ($str,$lim) = @_;
129
        my ($str,$lim) = @_;
130
        my @p = split / /,$str;
130
        my @p = split /\ /,$str;
131
        $str = '';
131
        $str = '';
132
        my $l = 0;
132
        my $l = 0;
133
        while (@p) {
133
        while (@p) {
134
                my $e = shift @p;
134
                my $e = shift @p;
135
                if ($l + length ($e) +1 > $lim) {
135
                if ($l + length ($e) +1 > $lim) {
Line 264... Line 264...
264
        my $id = scalar @Inv;
264
        my $id = scalar @Inv;
265
265
266
        $Inv[$id] = {};
266
        $Inv[$id] = {};
267
267
268
        $Inv[$id]{Datasheet} = delete $data{'datasheet'} if defined $data{'datasheet'};
268
        $Inv[$id]{Datasheet} = delete $data{'datasheet'} if defined $data{'datasheet'};
269
        $Inv[$id]{Manufacturer} = delete $data{'manufacturer'} if defined $data{'manufacturer'};
269
        $Inv[$id]{Manufacturer} = etrim(trim(delete $data{'manufacturer'})) if defined $data{'manufacturer'};
270
        $Inv[$id]{Description} = delete $data{'desc'} if defined $data{'desc'};
270
        $Inv[$id]{Description} = etrim(trim(delete $data{'desc'})) if defined $data{'desc'};
271
        $Inv[$id]{Price} = delete $data{'price'} if defined $data{'price'};
271
        $Inv[$id]{Price} = delete $data{'price'} if defined $data{'price'};
272
        $Inv[$id]{Ordercode} = delete $data{'ordercode'} if defined $data{'ordercode'};
272
        $Inv[$id]{Ordercode} = etrim(trim(delete $data{'ordercode'})) if defined $data{'ordercode'};
273
        $Inv[$id]{Manufacturer_Partno} = delete $data{'manufact_partno'} if defined $data{'manufact_partno'};
273
        $Inv[$id]{Manufacturer_Partno} = etrim(trim(delete $data{'manufact_partno'})) if defined $data{'manufact_partno'};
274
        $Inv[$id]{Supplier} = delete $data{'supplier'} if defined $data{'supplier'};
274
        $Inv[$id]{Supplier} = delete $data{'supplier'} if defined $data{'supplier'};
275
275
276
        unless (defined ($Inv_By_PartNo{$Inv[$id]{Manufacturer_Partno}})) {
276
        unless (defined ($Inv_By_PartNo{$Inv[$id]{Manufacturer_Partno}})) {
277
                $Inv_By_PartNo{$Inv[$id]{Manufacturer_Partno}} = $id;
277
                $Inv_By_PartNo{$Inv[$id]{Manufacturer_Partno}} = $id;
278
        } else {
278
        } else {
Line 333... Line 333...
333
                                next;
333
                                next;
334
                        }
334
                        }
335
                        my $id = $Inv_By_PartNo{$device};
335
                        my $id = $Inv_By_PartNo{$device};
336
                        next if ($Inv[$id]{Manufacturer} =~ /none/i); # skip parts whose manufacturer is none
336
                        next if ($Inv[$id]{Manufacturer} =~ /none/i); # skip parts whose manufacturer is none
337
                        #inf_printf("Found in Inventory at %d %s", $id, $Inv[$id]{Manufacturer_Partno});
337
                        #inf_printf("Found in Inventory at %d %s", $id, $Inv[$id]{Manufacturer_Partno});
338
                        push @{$data{$id}{RefDes}}, $refdes;
338
                        push @{$data{$id}{RefDes}}, etrim(trim($refdes));
339
                        if (!defined $data{$id}{Footprint}) {
339
                        if (!defined $data{$id}{Footprint}) {
340
                                $data{$id}{Footprint} = $footprint;
340
                                $data{$id}{Footprint} = $footprint;
341
                        } else {
341
                        } else {
342
                                if ($data{$id}{Footprint} ne $footprint) {
342
                                if ($data{$id}{Footprint} ne $footprint) {
343
                                        err_printf("Different footprints for same device in within single bom file, script ".
343
                                        err_printf("Different footprints for same device in within single bom file, script ".
Line 567... Line 567...
567
foreach my $fkey (sort keys %Files) {
567
foreach my $fkey (sort keys %Files) {
568
        my $rowblock = 0;
568
        my $rowblock = 0;
569
        foreach my $id ( sort {my $p = $Inv[$a]{Manufacturer} cmp $Inv[$b]{Manufacturer}; if ($p == 0) {
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}}) {
570
                return $Inv[$a]{Description} cmp $Inv[$b]{Description}}; return $p; }  keys %{$Files{$fkey}}) {
571
571
-
 
572
                my @p = split(/\n/, strbreak(join (', ', sort @{$Files{$fkey}{$id}{RefDes}}),43));
-
 
573
                while (@p) {
572
                $parttable->add($pn++, $Inv[$id]{Description}, $Inv[$id]{Manufacturer_Partno}, $BomData{$id}{Footprint},
574
                        $parttable->add($pn, $Inv[$id]{Description}, $Inv[$id]{Manufacturer_Partno}, $BomData{$id}{Footprint},
573
                        strbreak(join (', ', sort @{$Files{$fkey}{$id}{RefDes}}),43), $fkey);
575
                                etrim(trim(shift @p)), $fkey);
574
576
                }
575
577
-
 
578
                $pn++;
576
        }
579
        }
577
        $parttable->add('--','=========','==========','==========','==========','==========');
580
        $parttable->add('--','=========','==========','==========','==========','==========');
578
}
581
}
579
582
580
print $out $parttable->rule('-','+');
583
print $out $parttable->rule('-','+');