Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 69b298a0

Von G. Richardson vor mehr als 7 Jahren hinzugefügt

  • ID 69b298a0f814b3e21d85d3958d198f15001ed6f1
  • Vorgänger a3a6ec06
  • Nachfolger d76eb69e

DATEV-Export: Personenkontenoption nur anzeigen wenn Konten passen

Die Option "als Personenkonten exportieren" wird nur angezeigt, wenn
alle Kunden- und Lieferantennummern in das DATEV-Kontonummerschema
passen. Anhaken muß man die Checkbox allerdings trotzdem noch.

Besser wäre eine zentrale Konfiguration "DATEV-Export mit Personenkonten
exportieren" die dann auch beim Speichern/Anlegen von Konten immer
prüft, ob das Kontenschema eingehalten wird.

Unterschiede anzeigen:

SL/DATEV.pm
return { download_token => $self->download_token, filenames => $params{filename} };
}
sub check_vcnumbers_are_valid_pk_numbers {
my ($self) = @_;
my $length_of_accounts = length(SL::DB::Manager::Chart->get_first(where => [charttype => 'A'])->accno) // 4;
my $pk_length = $length_of_accounts + 1;
my $query = <<"SQL";
SELECT customernumber AS vcnumber FROM customer WHERE customernumber !~ '^[[:digit:]]{$pk_length}\$'
UNION
SELECT vendornumber AS vcnumber FROM vendor WHERE vendornumber !~ '^[[:digit:]]{$pk_length}\$'
LIMIT 1;
SQL
my ($has_non_pk_accounts) = selectrow_query($::form, SL::DB->client->dbh, $query);
return defined $has_non_pk_accounts ? 0 : 1;
}
sub DESTROY {
clean_temporary_directories();
}
......
Usage: _csv_buchungsexport_to_file($self, data => $self->csv_buchungsexport);
=item check_vcnumbers_are_valid_pk_numbers
Returns 1 if all vcnumbers are suitable for the DATEV export, 0 if not.
Finds the default length of charts (e.g. 4), adds 1 for the pk chart length
(e.g. 5), and checks the database for any customers or vendors whose customer-
or vendornumber doesn't consist of only numbers with exactly that length. E.g.
for a chart length of four "10001" would be ok, but not "10001b" or "1000".
All vcnumbers are checked, obsolete customers or vendors aren't exempt.
There is also no check for the typical customer range 10000-69999 and the
typical vendor range 70000-99999.
=back
bin/mozilla/datev.pl
$::form->header;
$::form->{ALL_DEPARTMENTS} = SL::DB::Manager::Department->get_all_sorted;
$::form->{show_pk_option} = SL::DATEV->new->check_vcnumbers_are_valid_pk_numbers;
print $::form->parse_html_template('datev/export_bewegungsdaten');
$::lxdebug->leave_sub;
templates/webpages/datev/export_bewegungsdaten.html
<td><hr size=3 noshade></td>
</tr>
[% END %]
[% IF show_pk_option %]
<tr>
<td>
<table>
......
<tr>
<td><hr size=3 noshade></td>
</tr>
[% END %]
</table>
<input type=hidden name=beraternr value="[% beraternr %]">

Auch abrufbar als: Unified diff