my %search = ();
$search{'plan'} = $opt_p if $opt_p;
$search{'comment'} = $opt_m if $opt_m;
-$search{'classnum'} = { op=>'NOT IN', value=>"($opt_C)" } if $opt_C;
-foreach my $part_pkg ( qsearch('part_pkg',\%search) ) {
+my $extra_sql = '';
+$extra_sql = ( keys(%search) ? 'AND' : 'WHERE' ).
+ " classnum NOT IN ($opt_C)"
+ if $opt_C;
+
+foreach my $part_pkg ( qsearch({ 'table' => 'part_pkg',
+ 'hashref' => \%search,
+ 'extra_sql' => $extra_sql,
+ })
+ )
+{
next if ! $part_pkg->freq && $opt_r;
if ( $opt_o ) {
my $part_pkg_option = qsearchs('part_pkg_option', \%hash);
+ unless ( defined $opt_v ) {
+ my $error = $part_pkg_option && $part_pkg_option->delete;
+ die $error if $error;
+ next;
+ }
+
if ( $part_pkg_option ) {
next if $part_pkg_option->optionvalue eq $opt_v;
$part_pkg_option->optionvalue($opt_v);
Change options:
--o: part_pkg_option optionname
+-o: part_pkg_option optionname (use without -v to unset)
-v: part_pkg_option optionvalue