<%doc> Produces a report of Assets <%args> $report_type => undef $sort => 'type' <%init> my $DEBUG = 0; my (@headers, @rows, @assets) = (); my %t; my $grandtotal = 0; if ( $report_type eq 'type_product' || $report_type eq 'detailed' ){ my $dbh = Netdot::Model->db_Main; my $assets = $dbh->selectall_arrayref(" SELECT asset.id, asset.serial_number, asset.inventory_number, asset.reserved_for, product.id, product.name, producttype.name FROM asset, product, producttype WHERE asset.product_id=product.id AND product.type=producttype.id"); my $installed = Asset->get_installed_hash(); foreach my $row ( @$assets ){ my ($id, $sn, $inv, $res, $pid, $pname, $ptype) = @$row; $t{$ptype}{total}++; $t{$ptype}{prod}{$pname}{total}++; $t{$ptype}{prod}{$pname}{id} = $pid; $t{$ptype}{prod}{$pname}{assets}{$sn}{id} = $id; $t{$ptype}{prod}{$pname}{assets}{$sn}{installed} = (exists($installed->{$id}))? 1 : 0; $t{$ptype}{prod}{$pname}{assets}{$sn}{inv} = $inv; $t{$ptype}{prod}{$pname}{assets}{$sn}{res} = $res; $grandtotal++; } if ( $DEBUG ){ use Data::Dumper; print '
';
	print Dumper(%t);
	print Dumper($installed);
	print '
'; } }
Asset Inventory

By
<%perl> if ( $report_type eq 'type_product' ){ @headers = ( 'Type', 'Model', 'Count' ); my @row = (); push( @row, "Total Assets:" ); push( @row, " " ); push( @row, $grandtotal ); push( @rows, \@row ); foreach my $ptype ( sort keys %t ){ my @row = (); push( @row, "$ptype" ); push( @row, " " ); push( @row, '' . $t{$ptype}{total} . '' ); push( @rows, \@row ); foreach my $pname ( sort keys %{ $t{$ptype}{prod} } ){ my @row = (); push( @row, " " ); my $pid = $t{$ptype}{prod}{$pname}{id}; push( @row, "$pname" ); push( @row, $t{$ptype}{prod}{$pname}{total} ); push( @rows, \@row ); } } }elsif ( $report_type eq 'detailed' ){ my %sortpos; my $i = 0; foreach my $header ('Type', 'Model', 'S/N', 'Inventory', 'Installed?', 'Reserved For'){ $sortpos{$header} = $i++; push @headers, "$header"; } foreach my $ptype ( sort keys %t ){ foreach my $pname ( keys %{ $t{$ptype}{prod} } ){ foreach my $sn ( keys %{ $t{$ptype}{prod}{$pname}{assets} } ){ my @row = (); push( @row, $ptype ); push( @row, $pname ); my $id = $t{$ptype}{prod}{$pname}{assets}{$sn}{id}; push( @row, "$sn" ); push( @row, $t{$ptype}{prod}{$pname}{assets}{$sn}{inv} ); push( @row, ($t{$ptype}{prod}{$pname}{assets}{$sn}{installed})? 'yes' : 'no'); push( @row, $t{$ptype}{prod}{$pname}{assets}{$sn}{res} ); push( @rows, \@row ); } } } # Sort the thing my $pos = $sortpos{$sort}; @rows = sort { $a->[$pos] cmp $b->[$pos] } @rows; } $m->comp('/generic/data_table.mhtml', field_headers=>\@headers, data=>\@rows);