use C4::Branch; # GetBranches
use Koha::DateUtils;
use Koha::Database;
+use Koha::IssuingRule;
+use Koha::IssuingRules;
+use Koha::Libraries;
my $input = CGI->new;
my $dbh = C4::Context->dbh;
});
my $type=$input->param('type');
-my $branch = $input->param('branch') || ( C4::Branch::onlymine() ? ( C4::Branch::mybranch() || '*' ) : '*' );
+
+my $branch = $input->param('branch');
+unless ( $branch ) {
+ if ( C4::Context->preference('DefaultToLoggedInLibraryCircRules') ) {
+ $branch = Koha::Libraries->search->count() == 1 ? undef : C4::Branch::mybranch();
+ }
+ else {
+ $branch = C4::Branch::onlymine() ? ( C4::Branch::mybranch() || '*' ) : '*';
+ }
+}
+$branch = '*' if $branch eq 'NO_LIBRARY_SET';
+
my $op = $input->param('op') || q{};
my $language = C4::Languages::getlanguage();
my $rentaldiscount = $input->param('rentaldiscount');
my $opacitemholds = $input->param('opacitemholds') || 0;
my $overduefinescap = $input->param('overduefinescap') || undef;
- $debug and warn "Adding $br, $bor, $itemtype, $fine, $maxissueqty, $maxonsiteissueqty";
-
- my $schema = Koha::Database->new()->schema();
- my $rs = $schema->resultset('Issuingrule');
+ my $cap_fine_to_replacement_price = $input->param('cap_fine_to_replacement_price') eq 'on';
+ $debug and warn "Adding $br, $bor, $itemtype, $fine, $maxissueqty, $maxonsiteissueqty, $cap_fine_to_replacement_price";
my $params = {
- branchcode => $br,
- categorycode => $bor,
- itemtype => $itemtype,
- fine => $fine,
- finedays => $finedays,
- maxsuspensiondays => $maxsuspensiondays,
- firstremind => $firstremind,
- chargeperiod => $chargeperiod,
- chargeperiod_charge_at => $chargeperiod_charge_at,
- maxissueqty => $maxissueqty,
- maxonsiteissueqty => $maxonsiteissueqty,
- renewalsallowed => $renewalsallowed,
- renewalperiod => $renewalperiod,
- norenewalbefore => $norenewalbefore,
- auto_renew => $auto_renew,
- reservesallowed => $reservesallowed,
- issuelength => $issuelength,
- lengthunit => $lengthunit,
- hardduedate => $hardduedate,
- hardduedatecompare => $hardduedatecompare,
- rentaldiscount => $rentaldiscount,
- onshelfholds => $onshelfholds,
- opacitemholds => $opacitemholds,
- overduefinescap => $overduefinescap,
+ branchcode => $br,
+ categorycode => $bor,
+ itemtype => $itemtype,
+ fine => $fine,
+ finedays => $finedays,
+ maxsuspensiondays => $maxsuspensiondays,
+ firstremind => $firstremind,
+ chargeperiod => $chargeperiod,
+ chargeperiod_charge_at => $chargeperiod_charge_at,
+ maxissueqty => $maxissueqty,
+ maxonsiteissueqty => $maxonsiteissueqty,
+ renewalsallowed => $renewalsallowed,
+ renewalperiod => $renewalperiod,
+ norenewalbefore => $norenewalbefore,
+ auto_renew => $auto_renew,
+ reservesallowed => $reservesallowed,
+ issuelength => $issuelength,
+ lengthunit => $lengthunit,
+ hardduedate => $hardduedate,
+ hardduedatecompare => $hardduedatecompare,
+ rentaldiscount => $rentaldiscount,
+ onshelfholds => $onshelfholds,
+ opacitemholds => $opacitemholds,
+ overduefinescap => $overduefinescap,
+ cap_fine_to_replacement_price => $cap_fine_to_replacement_price,
};
- $rs->update_or_create($params);
+ my $issuingrule = Koha::IssuingRules->find({categorycode => $bor, itemtype => $itemtype, branchcode => $br});
+ if ($issuingrule) {
+ $issuingrule->set($params)->store();
+ } else {
+ Koha::IssuingRule->new()->set($params)->store();
+ }
}
elsif ($op eq "set-branch-defaults") {
while (my $row = $sth2->fetchrow_hashref) {
$row->{'current_branch'} ||= $row->{'branchcode'};
- $row->{'humanitemtype'} ||= $row->{'itemtype'};
- $row->{'default_humanitemtype'} = 1 if $row->{'humanitemtype'} eq '*';
+ $row->{translated_description} ||= $row->{translated_description};
+ $row->{default_translated_description} = 1 if $row->{humanitemtype} eq '*';
$row->{'humancategorycode'} ||= $row->{'categorycode'};
$row->{'default_humancategorycode'} = 1 if $row->{'humancategorycode'} eq '*';
$row->{'fine'} = sprintf('%.2f', $row->{'fine'});
my $sth_branch_item;
if ($branch eq "*") {
$sth_branch_item = $dbh->prepare("
- SELECT default_branch_item_rules.*, itemtypes.description AS humanitemtype
+ SELECT default_branch_item_rules.*,
+ COALESCE( localization.translation, itemtypes.description ) AS translated_description
FROM default_branch_item_rules
JOIN itemtypes USING (itemtype)
+ LEFT JOIN localization ON itemtypes.itemtype = localization.code
+ AND localization.entity = 'itemtypes'
+ AND localization.lang = ?
");
- $sth_branch_item->execute();
+ $sth_branch_item->execute($language);
} else {
$sth_branch_item = $dbh->prepare("
- SELECT branch_item_rules.*, itemtypes.description AS humanitemtype
+ SELECT branch_item_rules.*,
+ COALESCE( localization.translation, itemtypes.description ) AS translated_description
FROM branch_item_rules
JOIN itemtypes USING (itemtype)
+ LEFT JOIN localization ON itemtypes.itemtype = localization.code
+ AND localization.entity = 'itemtypes'
+ AND localization.lang = ?
WHERE branch_item_rules.branchcode = ?
");
- $sth_branch_item->execute($branch);
+ $sth_branch_item->execute($language, $branch);
}
my @branch_item_rules = ();
while (my $row = $sth_branch_item->fetchrow_hashref) {
push @branch_item_rules, $row;
}
-my @sorted_branch_item_rules = sort { $a->{'humanitemtype'} cmp $b->{'humanitemtype'} } @branch_item_rules;
+my @sorted_branch_item_rules = sort { $a->{translated_description} cmp $b->{translated_description} } @branch_item_rules;
# note undef holdallowed so that template can deal with them
foreach my $entry (@sorted_branch_item_rules) {
sub by_itemtype {
my ($a, $b) = @_;
- if ($a->{'default_humanitemtype'}) {
- return ($b->{'default_humanitemtype'} ? 0 : 1);
- } elsif ($b->{'default_humanitemtype'}) {
+ if ($a->{default_translated_description}) {
+ return ($b->{'default_translated_description'} ? 0 : 1);
+ } elsif ($b->{'default_translated_description'}) {
return -1;
} else {
- return $a->{'humanitemtype'} cmp $b->{'humanitemtype'};
+ return $a->{'translated_description'} cmp $b->{'translated_description'};
}
}