1 package SL::SEPA::XML::Transaction;
7 use List::Util qw(first);
8 use POSIX qw(strftime);
26 $self->{sepa} = $params{sepa};
29 my $missing_parameter = first { !$params{$_} } qw(src_iban src_bic dst_iban dst_bic recipient reference amount end_to_end_id);
30 croak "Missing parameter: $missing_parameter" if ($missing_parameter);
32 $params{end_to_end_id} ||= 'NOTPROVIDED';
33 $params{execution_date} ||= strftime "%Y-%m-%d", localtime;
35 croak "Execution date format wrong for '$params{execution_date}': not YYYY-MM-DD." if ($params{execution_date} !~ /^\d{4}-\d{2}-\d{2}$/);
37 map { $self->{$_} = decode('UTF-8', $self->{sepa}->{iconv}->convert($params{$_})) } keys %params;
38 map { $self->{$_} =~ s/\s+//g } qw(src_iban src_bic dst_iban dst_bic);
39 map { $self->{$_} = $self->{sepa}->_replace_special_chars($self->{$_}) } qw(recipient reference end_to_end_id);
47 return undef if (!defined $self->{$key});
49 my $str = $max_len ? substr($self->{$key}, 0, $max_len) : $self->{$key};
51 return encode('UTF-8', $str);