return $standard_dbh;
}
+sub date_closed {
+ $main::lxdebug->enter_sub();
+
+ my ($self, $date, $myconfig) = @_;
+ my $dbh = $self->dbconnect($myconfig);
+
+ my $query = "SELECT 1 FROM defaults WHERE ? < closedto";
+ my $sth = prepare_execute_query($self, $dbh, $query, $date);
+ my ($closed) = $sth->fetchrow_array;
+
+ $main::lxdebug->leave_sub();
+
+ return $closed;
+}
+
sub update_balance {
$main::lxdebug->enter_sub();
AM->closedto(\%myconfig, \%$form);
- if ($form->{revtrans}) {
- $checked{Y} = "checked";
- } else {
- $checked{N} = "checked";
- }
-
$form->header;
print qq|
<tr>
<td>
<table>
- <tr>
- <td>|
- . $locale->text('Enforce transaction reversal for all dates') . qq|</th>
- <td><input name=revtrans class=radio type=radio value="1" $checked{Y}> |
- . $locale->text('Yes')
- . qq| <input name=revtrans class=radio type=radio value="0" $checked{N}> |
- . $locale->text('No')
- . qq|</td>
- </tr>
<tr>
<th>| . $locale->text('Close Books up to') . qq|</th>
<td><input name=closedto size=11 title="$myconfig{dateformat}" value=$form->{closedto}></td>
AM->closebooks(\%myconfig, \%$form);
- if ($form->{revtrans}) {
+ if ($form->{closedto}) {
$form->redirect(
- $locale->text('Transaction reversal enforced for all dates'));
+ $locale->text('Books closed up to') . " "
+ . $locale->date(\%myconfig, $form->{closedto}, 1));
} else {
- if ($form->{closedto}) {
- $form->redirect(
- $locale->text('Transaction reversal enforced up to') . " "
- . $locale->date(\%myconfig, $form->{closedto}, 1));
- } else {
- $form->redirect($locale->text('Books are open'));
- }
+ $form->redirect($locale->text('Books are open'));
}
$lxdebug->leave_sub();
$form->isblank("datepaid_$i", $locale->text('Payment date missing!'));
$form->error($locale->text('Cannot post payment for a closed period!'))
- if ($datepaid <= $closedto);
+ if ($form->date_closed($form->{"datepaid_$i"}, \%myconfig));
if ($form->{currency} ne $form->{defaultcurrency}) {
$form->{"exchangerate_$i"} = $form->{exchangerate}
$closedto = $form->datetonum($form->{closedto}, \%myconfig);
$transdate = $form->datetonum($form->{transdate}, \%myconfig);
- $form->error($locale->text('Cannot post transaction for a closed period!')) if ($transdate <= $closedto);
+ $form->error($locale->text('Cannot post transaction for a closed period!')) if ($form->date_closed($form->{"transdate"}, \%myconfig));
my $zero_amount_posting = 1;
for $i (1 .. $form->{rowcount}) {
$form->isblank("datepaid_$i", $locale->text('Payment date missing!'));
$form->error($locale->text('Cannot post payment for a closed period!'))
- if ($datepaid <= $closedto);
+ if ($form->date_closed($form->{"datepaid_$i"}, \%myconfig));
if ($form->{currency} ne $form->{defaultcurrency}) {
$form->{"exchangerate_$i"} = $form->{exchangerate}
$form->isblank("datepaid_$i", $locale->text('Payment date missing!'));
-# $form->error($locale->text('Cannot post payment for a closed period!')) if ($datepaid <= $closedto);
+ $form->error($locale->text('Cannot post payment for a closed period!')) if ($form->date_closed($form->{"datepaid_$i"}, \%myconfig));
if ($form->{currency} ne $form->{defaultcurrency}) {
# $form->{"exchangerate_$i"} = $form->{exchangerate} if ($invdate == $datepaid);
my $closedto = $form->datetonum($form->{closedto}, \%myconfig);
my $transdate = $form->datetonum($form->{transdate}, \%myconfig);
- $form->error($locale->text('Cannot post transaction for a closed period!')) if ($transdate <= $closedto);
+ $form->error($locale->text('Cannot post transaction for a closed period!')) if ($form->date_closed($form->{"transdate"}, \%myconfig));
$form->error($locale->text('Zero amount posting!'))
unless grep $_*1, map $form->parse_amount(\%myconfig, $form->{"amount_$_"}), 1..$form->{rowcount};
$form->isblank("datepaid_$i", $locale->text('Payment date missing!'));
$form->error($locale->text('Cannot post payment for a closed period!'))
- if ($datepaid <= $closedto);
+ if ($form->date_closed($form->{"datepaid_$i"}, \%myconfig));
if ($form->{currency} ne $form->{defaultcurrency}) {
$form->{"exchangerate_$i"} = $form->{exchangerate} if ($transdate == $datepaid);
# this is just for the wise guys
$form->error($locale->text('Cannot post transaction for a closed period!'))
- if ($transdate <= $closedto);
+ if ($form->date_closed($form->{"transdate"}, \%myconfig));
if ($form->round_amount($debit, 2) != $form->round_amount($credit, 2)) {
$form->error($locale->text('Out of balance transaction!'));
}
$form->isblank("datepaid_$i", $locale->text('Payment date missing!'));
$form->error($locale->text('Cannot post payment for a closed period!'))
- if ($datepaid <= $closedto);
+ if ($form->date_closed($form->{"datepaid_$i"}, \%myconfig));
if ($form->{currency} ne $form->{defaultcurrency}) {
$form->{"exchangerate_$i"} = $form->{exchangerate}
$invdate = $form->datetonum($form->{invdate}, \%myconfig);
$form->error($locale->text('Cannot post invoice for a closed period!'))
- if ($invdate <= $closedto);
+ if ($form->date_closed($form->{"datepaid_$i"}, \%myconfig));
$form->isblank("exchangerate", $locale->text('Exchangerate missing!'))
if ($form->{currency} ne $form->{defaultcurrency});
$form->isblank("datepaid_$i", $locale->text('Payment date missing!'));
$form->error($locale->text('Cannot post payment for a closed period!'))
- if ($datepaid <= $closedto);
+ if ($form->date_closed($form->{"datepaid_$i"}, \%myconfig));
if ($form->{currency} ne $form->{defaultcurrency}) {
$form->{"exchangerate_$i"} = $form->{exchangerate}
$form->isblank("datepaid_$i", $locale->text('Payment date missing!'));
$form->error($locale->text('Cannot post payment for a closed period!'))
- if ($datepaid <= $closedto);
+ if ($form->date_closed($form->{"datepaid_$i"}, \%myconfig));
if ($form->{currency} ne $form->{defaultcurrency}) {
$form->{"exchangerate_$i"} = $form->{exchangerate}
$form->{defaultcurrency} = $form->get_default_currency(\%myconfig);
$form->isblank("invdate", $locale->text('Invoice Date missing!'));
$form->isblank("customer", $locale->text('Customer missing!'));
+ $form->error($locale->text('Cannot post invoice for a closed period!'))
+ if ($form->date_closed($form->{"invdate"}, \%myconfig));
$form->{invnumber} =~ s/^\s*//g;
$form->{invnumber} =~ s/\s*$//g;
$form->isblank("datepaid_$i", $locale->text('Payment date missing!'));
$form->error($locale->text('Cannot post payment for a closed period!'))
- if ($datepaid <= $closedto);
+ if ($form->date_closed($form->{"datepaid_$i"}, \%myconfig));
if ($form->{currency} ne $form->{defaultcurrency}) {
$form->{"exchangerate_$i"} = $form->{exchangerate}
'Body' => 'Text',
'Body:' => 'Text:',
'Books are open' => 'Die Bücher sind geöffnet.',
+ 'Books closed up to' => 'Bücher abgeschlossen bis zum',
'Boolean variables: If the default value is non-empty then the checkbox will be checked by default and unchecked otherwise.' => 'Ja/Nein-Variablen: Wenn der Standardwert nicht leer ist, so wird die Checkbox standardmäßig angehakt.',
'Both' => 'Beide',
'Bottom' => 'Unten',
'Edit units' => 'Einheiten bearbeiten',
'Employee' => 'Bearbeiter',
'Empty transaction!' => 'Buchung ist leer!',
- 'Enforce transaction reversal for all dates' => 'Gegenbuchungen für jeden Zeitraum aktualisieren',
'Enter a description for this new draft.' => 'Geben Sie eine Beschreibung für diesen Entwurf ein.',
'Enter longdescription' => 'Langtext eingeben',
'Enter up to 3 letters separated by a colon (i.e CAD:USD:EUR) for your native and foreign currencies' => 'Geben Sie Ihre und weitere Währungen mit bis zu drei Buchstaben pro Währung und Währungen durch Doppelpunkte getrennt ein (z.B. EUR:USD:CAD)',
'Transaction description' => 'Vorgangsbezeichnung',
'Transaction has already been cancelled!' => 'Diese Buchung wurde bereits storniert.',
'Transaction posted!' => 'Buchung verbucht!',
- 'Transaction reversal enforced for all dates' => 'Fehleintragungen müssen für jeden Zeitraum mit einer Kontraeintragung ausgebessert werden',
- 'Transaction reversal enforced up to' => 'Fehleintragungen können bis zu dem angegebenen Zeitraum nur mit einer Kontraeintragung ausgebessert werden!',
'Transactions, AR transactions, AP transactions' => 'Dialogbuchen, Debitorenrechnungen, Kreditorenrechnungen',
'Transfer' => 'Umlagern',
'Transfer Quantity' => 'Umlagermenge',
'Binding to the LDAP server as "#1" failed. Please check config/authentication.pl.' => 'Die Anmeldung am LDAP-Server als "#1" schlug fehl. Bitte überprüfen Sie die Angaben in config/authentication.pl.',
'Bins saved.' => 'Lagerplätze gespeichert.',
'Books are open' => 'Die Bücher sind geöffnet.',
+ 'Books closed up to' => 'Bücher abgeschlossen bis zum',
'Buchungsgruppe' => 'Buchungsgruppe',
'Buchungsgruppen' => 'Buchungsgruppen',
'Business deleted!' => 'Firma gelöscht.',
'Edit Price Factor' => 'Preisfaktor bearbeiten',
'Edit Printer' => 'Drucker bearbeiten',
'Edit Warehouse' => 'Lager bearbeiten',
- 'Enforce transaction reversal for all dates' => 'Gegenbuchungen für jeden Zeitraum aktualisieren',
'Enter longdescription' => 'Langtext eingeben',
'Equity' => 'Passiva',
'Error in database control file \'%s\': %s' => 'Fehler in Datenbankupgradekontrolldatei \'%s\': %s',
'The units have been saved.' => 'Die Einheiten wurden gespeichert.',
'The warehouse could not be deleted because it has already been used.' => 'Das Lager konnte nicht gelöscht werden, da es bereits in Benutzung war.',
'To (email)' => 'An',
- 'Transaction reversal enforced for all dates' => 'Fehleintragungen müssen für jeden Zeitraum mit einer Kontraeintragung ausgebessert werden',
- 'Transaction reversal enforced up to' => 'Fehleintragungen können bis zu dem angegebenen Zeitraum nur mit einer Kontraeintragung ausgebessert werden!',
'Transactions, AR transactions, AP transactions' => 'Dialogbuchen, Debitorenrechnungen, Kreditorenrechnungen',
'Translation (%s)' => 'Übersetzung (%s)',
'Trying to call a sub without a name' => 'Es wurde versucht, eine Unterfunktion ohne Namen aufzurufen.',
'AP' => 'Einkauf',
'AR' => 'Verkauf',
'Account' => 'Konto',
+ 'Accrual' => 'Bilanzierung',
'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
'All reports' => 'Alle Berichte (Kontenübersicht, Summen- u. Saldenliste, GuV, BWA, Bilanz, Projektbuchungen)',
'Apr' => 'Apr',
'Bcc' => 'Bcc',
'Bin List' => 'Lagerliste',
'Binding to the LDAP server as "#1" failed. Please check config/authentication.pl.' => 'Die Anmeldung am LDAP-Server als "#1" schlug fehl. Bitte überprüfen Sie die Angaben in config/authentication.pl.',
+ 'Bis' => 'bis',
'CANCELED' => 'Storniert',
'CSV export -- options' => 'CSV-Export -- Optionen',
'Cc' => 'Cc',
'Create and edit vendor invoices' => 'Eingangsrechnungen erfassen und bearbeiten',
'Credit' => 'Haben',
'Credit Note' => 'Gutschrift',
+ 'Customized Report' => 'Vorgewählte Zeiträume',
'DATEV Export' => 'DATEV-Export',
'DELETED' => 'Gelöscht',
'DUNNING STARTED' => 'Mahnprozess gestartet',
'Debit' => 'Soll',
'Dec' => 'Dez',
'December' => 'Dezember',
+ 'Decimalplaces' => 'Dezimalstellen',
'Delivery Order' => 'Lieferschein',
'Department' => 'Abteilung',
'Dependency loop detected:' => 'Schleife in den Abhängigkeiten entdeckt:',
'Description' => 'Beschreibung',
'Directory' => 'Verzeichnis',
'ELSE' => 'Zusatz',
+ 'EUR' => 'E/Ü-Rechnung',
'Error in database control file \'%s\': %s' => 'Fehler in Datenbankupgradekontrolldatei \'%s\': %s',
+ 'Falsches Datumsformat!' => 'Falsches Datumsformat!',
'Feb' => 'Feb',
'February' => 'Februar',
'File' => 'Datei',
+ 'Free report period' => 'Freier Zeitraum',
'From' => 'Von',
'General ledger and cash' => 'Finanzbuchhaltung und Zahlungsverkehr',
- 'Include in Report' => 'In Bericht aufnehmen',
'Invoice' => 'Rechnung',
'Jan' => 'Jan',
'January' => 'Januar',
'May ' => 'Mai',
'May set the BCC field when sending emails' => 'Beim Verschicken von Emails das Feld \'BCC\' setzen',
'Message' => 'Nachricht',
+ 'Method' => 'Verfahren',
'Missing \'description\' field.' => 'Fehlendes Feld \'description\'.',
'Missing \'tag\' field.' => 'Fehlendes Feld \'tag\'.',
'Missing parameter #1 in call to sub #2.' => 'Fehlernder Parameter \'#1\' in Funktionsaufruf \'#2\'.',
+ 'Monthly' => 'monatlich',
'More than one control file with the tag \'%s\' exist.' => 'Es gibt mehr als eine Kontrolldatei mit dem Tag \'%s\'.',
'No or an unknown authenticantion module specified in "config/authentication.pl".' => 'Es wurde kein oder ein unbekanntes Authentifizierungsmodul in "config/authentication.pl" angegeben.',
'Nov' => 'Nov',
'Proforma Invoice' => 'Proformarechnung',
'Project Number' => 'Projektnummer',
'Purchase Order' => 'Lieferantenauftrag',
+ 'Quarter' => 'Quartal',
+ 'Quarterly' => 'quartalsweise',
'Quotation' => 'Angebot',
'RFQ' => 'Anfrage',
'Receipt, payment, reconciliation' => 'Zahlungseingang, Zahlungsausgang, Kontenabgleich',
'Storno Invoice' => 'Stornorechnung',
'Storno Packing List' => 'Stornolieferschein',
'Subject' => 'Betreff',
- 'Subtotal' => 'Zwischensumme',
'The \'tag\' field must only consist of alphanumeric characters or the carachters - _ ( )' => 'Das Feld \'tag\' darf nur aus alphanumerischen Zeichen und den Zeichen - _ ( ) bestehen.',
'The LDAP server "#1:#2" is unreachable. Please check config/authentication.pl.' => 'Der LDAP-Server "#1:#2" ist nicht erreichbar. Bitte überprüfen Sie die Angaben in config/authentication.pl.',
'The config file "config/authentication.pl" contained invalid Perl code:' => 'Die Konfigurationsdatei "config/authentication.pl" enthielt ungütigen Perl-Code:',
'The connection to the template database failed:' => 'Die Verbindung zur Vorlagendatenbank schlug fehl:',
'The creation of the authentication database failed:' => 'Das Anlegen der Authentifizierungsdatenbank schlug fehl:',
'The list has been printed.' => 'Die Liste wurde ausgedruckt.',
- 'To' => 'An',
'To (email)' => 'An',
'Transactions, AR transactions, AP transactions' => 'Dialogbuchen, Debitorenrechnungen, Kreditorenrechnungen',
'Unknown dependency \'%s\'.' => 'Unbekannte Abhängigkeit \'%s\'.',
'View warehouse content' => 'Lagerbestand ansehen',
'Warehouse management' => 'Lagerverwaltung/Bestandsveränderung',
+ 'YYYY' => 'JJJJ',
+ 'Year' => 'Jahr',
+ 'Yearly' => 'jährlich',
'You do not have the permissions to access this function.' => 'Sie verfügen nicht über die notwendigen Rechte, um auf diese Funktion zuzugreifen.',
'[email]' => '[email]',
'bin_list' => 'Lagerliste',
+ 'button' => '?',
'chart_of_accounts' => 'kontenuebersicht',
'config/authentication.pl: Key "DB_config" is missing.' => 'config/authentication.pl: Das Schlüsselwort "DB_config" fehlt.',
'config/authentication.pl: Key "LDAP_config" is missing.' => 'config/authentication.pl: Der Schlüssel "LDAP_config" fehlt.',
'request_quotation' => 'Angebotsanforderung',
'sales_order' => 'Kundenauftrag',
'sales_quotation' => 'Verkaufsangebot',
+ 'wrongformat' => 'Falsches Format',
};
$self->{subs} = {
'erzeugnis_erfassen' => 'add_assembly',
'ware_erfassen' => 'add_part',
'dienstleistung_erfassen' => 'add_service',
+ 'erzeugnisnummer_fehlt!' => 'assembly_number_missing!',
'weiter' => 'continue',
'löschen' => 'delete',
'erzeugnis_bearbeiten' => 'edit_assembly',
'ware_bearbeiten' => 'edit_part',
'dienstleistung_bearbeiten' => 'edit_service',
+ 'bevor_dieses_erzeugnis_als_ungültig_markiert_werden_kann__muß_das_inventar_auf_null_sein!' => 'inventory_quantity_must_be_zero_before_you_can_set_this_assembly_obsolete!',
+ 'bevor_diese_ware_als_ungültig_markiert_werden_kann__muß_das_inventar_null_sein!' => 'inventory_quantity_must_be_zero_before_you_can_set_this_part_obsolete!',
'neue_ware' => 'new_part',
+ 'artikelnummer_fehlt!' => 'part_number_missing!',
+ 'waren' => 'parts',
'speichern' => 'save',
'als_neu_speichern' => 'save_as_new',
+ 'dienstleistungsnummer_fehlt!' => 'service_number_missing!',
+ 'dienstleistungen' => 'services',
'top_100' => 'top100',
'erneuern' => 'update',
'auswählen' => 'choice',
+ 'st.' => 'ea',
'auflisten' => 'list',
};