X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=httemplate%2Fsearch%2Fh_inventory_item.html;h=b5cac9ecc79ec2fe95e73203f5a3a41aaf802335;hp=38e5b95e7966c7f41360bde618819edc06de25a8;hb=f822e27a1e00594332ffa487a1c284234c5580a6;hpb=7581a6dd497780979eeebeb4d70b76477c23441e diff --git a/httemplate/search/h_inventory_item.html b/httemplate/search/h_inventory_item.html index 38e5b95e7..b5cac9ecc 100644 --- a/httemplate/search/h_inventory_item.html +++ b/httemplate/search/h_inventory_item.html @@ -21,10 +21,11 @@ <%init> use Date::Parse 'str2time'; use Date::Format 'time2str'; -#use Data::Dumper::HTML 'dumper_html'; +use Data::Dumper 'Dumper'; -my ($classnum, $month, $year, $sdate, $edate); +my ($agentnum, $classnum, $month, $year, $sdate, $edate); $classnum = $cgi->param('classnum'); # may be empty +$agentnum = $cgi->param('agentnum'); # may also be empty my $classname = ''; if($classnum) { my $class = qsearchs('inventory_class', { classnum => $classnum }); @@ -48,28 +49,38 @@ my @labels = ( 'Quantity Received', 'Quantity Sold', 'Quantity Returned', - 'Closing Balance', ); + +if($agentnum) { + push @labels, 'Transfer In', 'Transfer Out'; +} +push @labels, 'Closing Balance'; + +my %agent = ('agentnum' => $agentnum) if $agentnum; +my %class = ('classnum' => $classnum) if $classnum; + my @rows = ( map {[ (0) x $numdays ]} @labels); +local($FS::Record::qsearch_qualify_columns) = 0; my $opening_balance = scalar( qsearch('h_inventory_item', { 'svcnum' => '', - ($classnum ? ('classnum' => $classnum) : () ) }, + %agent, + %class }, FS::h_inventory_item->sql_h_search($sdate) ) ) || 0; foreach my $day (0..$numdays-1) { $rows[0][$day] = ($day == 0) ? $opening_balance : - $rows[4][$day-1]; + $rows[-1][$day-1]; my %history; foreach my $action (qw(insert replace_new replace_old)) { $history{$action} = [ qsearch({ 'table' => 'h_inventory_item', - 'hashref' => { $classnum ? ('classnum' => $classnum) : (), - 'history_action' => $action }, + 'hashref' => { 'history_action' => $action, + %class }, 'order_by' => 'ORDER BY itemnum, history_date', 'extra_sql' => ' AND history_date >= '.($sdate + 86400*$day). @@ -78,7 +89,8 @@ foreach my $day (0..$numdays-1) { ]; } # Incoming items: simple, just count the inserts - $rows[1][$day] = scalar(@{ $history{'insert'} }); + $rows[1][$day] = scalar(grep {!$agentnum or $_->agentnum == $agentnum} + @{ $history{'insert'} }); # Other item changes: trickier. # Notice the order_by parameter above. @@ -90,21 +102,34 @@ foreach my $day (0..$numdays-1) { my $h_old = shift @{ $history{'replace_old'} }; die "history error" if !defined($h_old) or $h_old->itemnum != $h_new->itemnum; - if(!$h_old->svcnum and $h_new->svcnum) { - # item was put into service. - $rows[2][$day]++; + if(!$agentnum or $h_new->agentnum == $agentnum) { + if(!$h_old->svcnum and $h_new->svcnum) { + # item was put into service. + $rows[2][$day]++; + } + elsif($h_old->svcnum and !$h_new->svcnum) { + # item was taken out of service. + $rows[3][$day]++; + } + } + if($agentnum and $h_old->agentnum != $agentnum and $h_new->agentnum == $agentnum) { + # item was transferred from another agent + $rows[4][$day]++; } - elsif($h_old->svcnum and !$h_new->svcnum) { - # item was taken out of service. - $rows[3][$day]++; + elsif($agentnum and $h_old->agentnum == $agentnum and $h_new->agentnum != $agentnum) { + # item was transferred to another agent + $rows[5][$day]++; } # Add other cases here. } # Closing balance - $rows[4][$day] = $rows[0][$day] - + $rows[1][$day] - - $rows[2][$day] - + $rows[3][$day]; + $rows[-1][$day] = $rows[0][$day] + + $rows[1][$day] + - $rows[2][$day] + + $rows[3][$day]; + if($agentnum) { + $rows[-1][$day] += $rows[4][$day] - $rows[5][$day]; + } }