+
+sub groups_with_subgroups {
+ my ($group, $subgroup) = @_;
+
+ my $groups_with_subgroups = get_report_groups();
+ my @g_sg;
+ my @sorted_keys = sort {
+ $groups_with_subgroups->{$a}->{name} cmp $groups_with_subgroups->{$b}->{name}
+ } keys %$groups_with_subgroups;
+ foreach my $g_id (@sorted_keys) {
+ my $v = $groups_with_subgroups->{$g_id};
+ my @subgroups;
+ if (my $sg = $v->{subgroups}) {
+ foreach my $sg_id (sort { $sg->{$a} cmp $sg->{$b} } keys %$sg) {
+ push @subgroups, {
+ id => $sg_id,
+ name => $sg->{$sg_id},
+ selected => ($group && $g_id eq $group && $subgroup && $sg_id eq $subgroup ),
+ };
+ }
+ }
+ push @g_sg, {
+ id => $g_id,
+ name => $v->{name},
+ selected => ($group && $g_id eq $group),
+ subgroups => \@subgroups,
+ };
+ }
+ return \@g_sg;
+}
+
+sub create_non_existing_group_and_subgroup {
+ my ($input, $group, $subgroup) = @_;
+
+ if (defined $group and $group ne '') {
+ my $report_groups = C4::Reports::Guided::get_report_groups;
+ if (not exists $report_groups->{$group}) {
+ my $groupdesc = $input->param('groupdesc') // $group;
+ C4::Koha::AddAuthorisedValue('REPORT_GROUP', $group, $groupdesc);
+ }
+ if (defined $subgroup and $subgroup ne '') {
+ if (not exists $report_groups->{$group}->{subgroups}->{$subgroup}) {
+ my $subgroupdesc = $input->param('subgroupdesc') // $subgroup;
+ C4::Koha::AddAuthorisedValue('REPORT_SUBGROUP', $subgroup, $subgroupdesc, $group);
+ }
+ }
+ }
+}