diff options
author | ivan <ivan> | 2006-03-08 10:05:01 +0000 |
---|---|---|
committer | ivan <ivan> | 2006-03-08 10:05:01 +0000 |
commit | 600a0939e7e7e589dae4f4f5bfef3650728940b7 (patch) | |
tree | 4e96278b41fc621fa15d03cf2e48a5a3b5a8b72d /httemplate/search | |
parent | 5809a99d862a6bd0da6742479f18728aae8216a2 (diff) |
Add a new table for inventory with for DIDs/serials/etc., and an additional
new table for inventory category (i.e. to distinguish DIDs, serials, MACs,
etc.)
Diffstat (limited to 'httemplate/search')
-rw-r--r-- | httemplate/search/elements/search.html | 80 | ||||
-rw-r--r-- | httemplate/search/inventory_class.html | 58 | ||||
-rw-r--r-- | httemplate/search/inventory_item.html | 35 |
3 files changed, 169 insertions, 4 deletions
diff --git a/httemplate/search/elements/search.html b/httemplate/search/elements/search.html index d19fb4acd..b14bded10 100644 --- a/httemplate/search/elements/search.html +++ b/httemplate/search/elements/search.html @@ -1,5 +1,73 @@ <% + # options example... + # (everything not commented required is optional) + # + # # basic options, required + # 'title' => 'Page title', + # 'name' => 'items', #name for the records returned + # + # # some HTML callbacks... + # 'menubar' => '', #menubar arrayref + # 'html_init' => '', #after the header/menubar and before the pager + # + # #literal SQL query string or qsearch hashref, required + # 'query' => { + # 'table' => 'tablename', + # #everything else is optional... + # 'hashref' => { 'field' => 'value', + # 'field' => { 'op' => '<', + # 'value' => '54', + # }, + # }, + # 'select' => '*', + # 'addl_from' => '', #'LEFT JOIN othertable USING ( key )', + # 'extra_sql' => '', #'AND otherstuff', #'WHERE onlystuff', + # + # + # }, + # # "select * from tablename"; + # + # #required unless 'query' is an SQL query string (shouldn't be...) + # 'count_query' => 'SELECT COUNT(*) FROM tablename', + # + # 'count_addl' => [], #additional count fields listref of sprintf strings + # # [ $money_char.'%.2f total paid', ], + # + # #listref of column labels, <TH> + # #required unless 'query' is an SQL query string + # # (if not specified the database column names will be used) + # 'header' => [ '#', 'Item' ], + # + # #listref - each item is a literal column name (or method) or coderef + # #if not specified all columns will be shown + # 'fields' => [ + # 'column', + # sub { my $row = shift; $row->column; }, + # ], + # + # #listref of column footers + # 'footer' => [], + # + # #listref - each item is the empty string, or a listref of ... + # 'links' => + # + # + # 'align' => 'lrc.', #one letter for each column, left/right/center/none + # # can also pass a listref with full values: + # # [ 'left', 'right', 'center', '' ] + # + # #listrefs... + # #currently only HTML, maybe eventually Excel too + # 'color' => [], + # 'size' => [], + # 'style' => [], + # + # #redirect if there's only one item... + # # listref of URL base and column name (or method) + # # or a coderef that returns the same + # 'redirect' => + my(%opt) = @_; #warn join(' / ', map { "$_ => $opt{$_}" } keys %opt ). "\n"; @@ -189,7 +257,9 @@ redirect( $url. $rows->[0]->$method() ); } else { ( my $xlsname = $opt{'name'} ) =~ s/\W//g; - $opt{'name'} =~ s/s$// if $total == 1; + #$opt{'name'} =~ s/s$// if $total == 1; + $opt{'name'} =~ s/((s)e)?s$/$2/ if $total == 1; #should use Lingua::bs + # to "depluralize" my @menubar = (); if ( $opt{'menubar'} ) { @@ -197,6 +267,8 @@ } else { @menubar = ( 'Main menu' => $p ); } + + %> <%= include( '/elements/header.html', $opt{'title'}, include( '/elements/menubar.html', @menubar ) @@ -239,7 +311,8 @@ <%= include('/elements/table-grid.html') %> <TR> - <% foreach my $header ( @$header ) { %> + <% + foreach my $header ( @$header ) { %> <TH CLASS="grid" BGCOLOR="#cccccc"><%= $header %></TH> <% } %> </TR> @@ -386,7 +459,6 @@ </TABLE> <% } %> - </BODY> - </HTML> + <%= include( '/elements/footer.html' ) %> <% } %> <% } %> diff --git a/httemplate/search/inventory_class.html b/httemplate/search/inventory_class.html new file mode 100644 index 000000000..1bf1bcbce --- /dev/null +++ b/httemplate/search/inventory_class.html @@ -0,0 +1,58 @@ +<% + +tie my %labels, 'Tie::IxHash', + 'num_avail' => 'Available', # <FONT SIZE="-1"><A HREF="eventually">(upload batch)</A></FONT>', + 'num_used' => 'In use', #'Used', #'Allocated', + 'num_total' => 'Total', +; +my %inv_action_link = ( + 'num_avail' => 'eventually' +); +my %inv_action_label = ( + 'num_avail' => 'upload_batch' +); + +my $link = [ "${p}edit/inventory_class.html?", 'classnum' ]; + +%><%= include( 'elements/search.html', + 'title' => 'Inventory Classes', + 'name' => 'inventory classes', + 'menubar' => [ 'Add a new inventory class' => + $p.'edit/inventory_class.html', + ], + 'query' => { 'table' => 'inventory_class', }, + 'count_query' => 'SELECT COUNT(*) FROM inventory_class', + 'header' => [ '#', 'Inventory class', 'Inventory' ], + 'fields' => [ 'classnum', + 'classname', + sub { + #my $inventory_class = shift; + my $i_c = shift; + + [ map { + [ + { + 'data' => '<B>'. $i_c->$_(). '</B>', + 'align' => 'right', + }, + { + 'data' => $labels{$_}, + 'align' => 'left', + }, + { 'data' => ( exists($inv_action_link{$_}) + ? '<FONT SIZE="-1">(<A HREF="'. $inv_action_link{$_}. '">'. $inv_action_label{$_}. '</A>)</FONT>' + : '' + ), + 'align' => 'left', + }, + ] + } keys %labels + ]; + }, + ], + 'links' => [ $link, + $link, + '', + ], + ) +%> diff --git a/httemplate/search/inventory_item.html b/httemplate/search/inventory_item.html new file mode 100644 index 000000000..ff7f1fadf --- /dev/null +++ b/httemplate/search/inventory_item.html @@ -0,0 +1,35 @@ +<% + +my $classnum = $cgi->param('classnum'); +$classnum =~ /^(\d+)$/ or eidiot "illegal agentnum $agentnum"; +$classnum = $1; +my $inventory_class = qsearchs('inventory_class', { 'classnum' => $classnum } ); + +my $count_query = + "SELECT COUNT(*) FROM inventory_class WHERE classnum = $classnum"; + +%><%= include( 'elements/search.html', + 'title' => $inventory_class->classname. ' Inventory', + + #less lame to use Lingua:: something to pluralize + 'name' => $inventory_class->classname. 's', + + 'query' => { + 'table' => 'inventory_item', + 'hashref' => { 'classnum' => $classnum }, + }, + + 'count_query' => $count_query, + + # XXX proper full service/customer link ala svc_acct + 'header' => [ '#', $inventory_class->classname, 'svcnum' ], + + 'fields' => [ + 'itemnum', + 'item', + 'svcnum', #XXX proper full service customer link ala svc_acct + # "unallocated" ? "available" ? + ], + + ) +%> |