+sub GetLetterTemplates {
+ my ( $params ) = @_;
+
+ my $module = $params->{module};
+ my $code = $params->{code};
+ my $branchcode = $params->{branchcode} // '';
+ my $dbh = C4::Context->dbh;
+ my $letters = $dbh->selectall_hashref(
+ q|
+ SELECT module, code, branchcode, name, is_html, title, content, message_transport_type
+ FROM letter
+ WHERE module = ?
+ AND code = ?
+ and branchcode = ?
+ |
+ , 'message_transport_type'
+ , undef
+ , $module, $code, $branchcode
+ );
+
+ return $letters;
+}
+
+=head2 GetLettersAvailableForALibrary
+
+ my $letters = GetLettersAvailableForALibrary(
+ {
+ branchcode => 'CPL', # '' for default
+ module => 'circulation',
+ }
+ );
+
+ Return an arrayref of letters, sorted by name.
+ If a specific letter exist for the given branchcode, it will be retrieve.
+ Otherwise the default letter will be.
+
+=cut
+
+sub GetLettersAvailableForALibrary {
+ my ($filters) = @_;
+ my $branchcode = $filters->{branchcode};
+ my $module = $filters->{module};
+
+ croak "module should be provided" unless $module;
+
+ my $dbh = C4::Context->dbh;
+ my $default_letters = $dbh->selectall_arrayref(
+ q|
+ SELECT module, code, branchcode, name
+ FROM letter
+ WHERE 1
+ |
+ . q| AND branchcode = ''|
+ . ( $module ? q| AND module = ?| : q|| )
+ . q| ORDER BY name|, { Slice => {} }
+ , ( $module ? $module : () )
+ );
+
+ my $specific_letters;
+ if ($branchcode) {
+ $specific_letters = $dbh->selectall_arrayref(
+ q|
+ SELECT module, code, branchcode, name
+ FROM letter
+ WHERE 1
+ |
+ . q| AND branchcode = ?|
+ . ( $module ? q| AND module = ?| : q|| )
+ . q| ORDER BY name|, { Slice => {} }
+ , $branchcode
+ , ( $module ? $module : () )
+ );
+ }