diff options
author | ivan <ivan> | 2010-05-21 00:09:40 +0000 |
---|---|---|
committer | ivan <ivan> | 2010-05-21 00:09:40 +0000 |
commit | 276c1e6f4efb7ba5568bee9189298bc1a757d34d (patch) | |
tree | 9639bb992d85aae630ce8a7b42a5466d9ddbafcf /FS/FS | |
parent | f1cd7f98b487e74aa60b6c41d3377cc60f7ac25a (diff) |
agent virt inventory, RT#7010
Diffstat (limited to 'FS/FS')
-rw-r--r-- | FS/FS/inventory_class.pm | 14 | ||||
-rw-r--r-- | FS/FS/svc_Common.pm | 9 |
2 files changed, 18 insertions, 5 deletions
diff --git a/FS/FS/inventory_class.pm b/FS/FS/inventory_class.pm index 508889b..3d7f049 100644 --- a/FS/FS/inventory_class.pm +++ b/FS/FS/inventory_class.pm @@ -121,10 +121,16 @@ sub num_avail { sub num_sql { my( $self, $sql ) = @_; $sql = "AND $sql" if length($sql); - my $statement = - "SELECT COUNT(*) FROM inventory_item WHERE classnum = ? $sql"; - my $sth = dbh->prepare($statement) or die dbh->errstr. " preparing $statement"; - $sth->execute($self->classnum) or die $sth->errstr. " executing $statement"; + + my $agentnums_sql = $FS::CurrentUser::CurrentUser->agentnums_sql( + 'null' => 1, + 'table' => 'inventory_item', + ); + + my $st = "SELECT COUNT(*) FROM inventory_item ". + " WHERE classnum = ? AND $agentnums_sql $sql"; + my $sth = dbh->prepare($st) or die dbh->errstr. " preparing $st"; + $sth->execute($self->classnum) or die $sth->errstr. " executing $st"; $sth->fetchrow_arrayref->[0]; } diff --git a/FS/FS/svc_Common.pm b/FS/FS/svc_Common.pm index fd2745d..71290f4 100644 --- a/FS/FS/svc_Common.pm +++ b/FS/FS/svc_Common.pm @@ -735,10 +735,17 @@ sub set_auto_inventory { $hash{'item'} = $self->getfield($field); } + my $agentnums_sql = $FS::CurrentUser::CurrentUser->agentnums_sql( + 'null' => 1, + 'table' => 'inventory_item', + ); + my $inventory_item = qsearchs({ 'table' => 'inventory_item', 'hashref' => \%hash, - 'extra_sql' => 'LIMIT 1 FOR UPDATE', + 'extra_sql' => "AND $agentnums_sql", + 'order_by' => 'ORDER BY ( agentnum IS NULL ) '. #agent inventory first + ' LIMIT 1 FOR UPDATE', }); unless ( $inventory_item ) { |