use strict;
use Carp;
use DateTime;
-use Encode qw(decode);
+use Encode qw(encode);
use Scalar::Util qw(looks_like_number);
use SL::DB::Datev;
use SL::DB::Chart;
use SL::Helper::DateTime;
use SL::Locale::String qw(t8);
+use SL::Util qw(trim);
use Rose::Object::MakeMethods::Generic (
scalar => [ qw(datev_lines from to locked warnings) ],
},
{
kivi_datev_name => 'not yet implemented',
- sv_header_name => t8('Base Transaction Value'),
+ csv_header_name => t8('Base Transaction Value'),
},
{
kivi_datev_name => 'not yet implemented',
max_length => 12,
type => 'Text',
default => '',
- input_check => sub { my ($text) = @_; check_encoding($text); },
+ input_check => sub { return 1 unless $::instance_conf->get_datev_export_format eq 'cp1252';
+ my ($text) = @_; check_encoding($text); },
+ valid_check => sub { return 1 if $::instance_conf->get_datev_export_format eq 'cp1252';
+ my ($text) = @_; check_encoding($text); },
formatter => sub { my ($input) = @_; return substr($input, 0, 12) },
},
{
- kivi_datev_name => 'not yet implemented',
+ kivi_datev_name => 'belegfeld2',
csv_header_name => t8('Invoice Field 2'),
max_length => 12,
type => 'Text',
default => '',
- valid_check => sub { my ($check) = @_; return ($check =~ m/[ -~]{1,12}/) },
+ input_check => sub { my ($check) = @_; return 1 unless $check; return (ref (DateTime->from_kivitendo($check)) eq 'DateTime') },
+ formatter => sub { my ($input) = @_; return '' unless $input; return trim(DateTime->from_kivitendo($input)->strftime('%e%m%y')) },
+ valid_check => sub { my ($check) = @_; return 1 unless $check; return ($check =~ m/^[0-9]{5,6}$/) },
},
{
kivi_datev_name => 'not yet implemented',
type => 'Value',
},
{
- kivi_datev_name => 'buchungsbes',
+ kivi_datev_name => 'buchungstext',
csv_header_name => t8('Posting Text'),
max_length => 60,
type => 'Text',
default => '',
- input_check => sub { my ($text) = @_; return 1 unless $text; check_encoding($text); },
- formatter => sub { my ($input) = @_; return substr($input, 0, 60) },
+ input_check => sub { return 1 unless $::instance_conf->get_datev_export_format eq 'cp1252';
+ my ($text) = @_; check_encoding($text); },
+ valid_check => sub { return 1 if $::instance_conf->get_datev_export_format eq 'cp1252';
+ my ($text) = @_; check_encoding($text); },
}, # pos 14
{
kivi_datev_name => 'not yet implemented',
input_check => sub {
my ($ustid) = @_;
return 1 if ('' eq $ustid);
- $ustid =~ s{[\s.]+}{}g;
+ $ustid =~ s{\s+}{}g;
return ($ustid =~ m/^CH|^[A-Z]{2}\w{5,13}$/);
},
- formatter => sub { my ($input) = @_; $input =~ s/[\s.]+//g; return $input },
+ formatter => sub { my ($input) = @_; $input =~ s/\s//g; return $input },
valid_check => sub {
my ($ustid) = @_;
return 1 if ('' eq $ustid);
my ($test) = @_;
return undef unless $test;
if (eval {
- decode('Windows-1252', $test, Encode::FB_CROAK|Encode::LEAVE_SRC);
+ encode('Windows-1252', $test, Encode::FB_CROAK|Encode::LEAVE_SRC);
1
}) {
return 1;
my $lines = $datev_csv->lines;
die if @{ $datev_csv->warnings };
somethin_with($lines);
-