Nach der Rechnungsnummer im Verwendungszweck zusätzlich Kunden- oder Lieferantennummer angeben.
Optional konfigurierbar in der Mandatenkonfiguration und übersetzbar für alle verfügbaren Sprachen.
sales_purchase_order_ship_missing_column => { type => 'boolean', default => 'false' },
sdonumber => { type => 'text' },
sepa_creditor_id => { type => 'text' },
+ sepa_reference_add_vc_vc_id => { type => 'boolean', default => 'false' },
servicenumber => { type => 'text' },
show_bestbefore => { type => 'boolean', default => 'false' },
show_longdescription_select_item => { type => 'boolean', default => 'false' },
my $dbh = $params{dbh} || $form->get_standard_dbh($myconfig);
my $arap = $params{vc} eq 'customer' ? 'ar' : 'ap';
my $vc = $params{vc} eq 'customer' ? 'customer' : 'vendor';
+ my $vc_vc_id = $params{vc} eq 'customer' ? 'c_vendor_id' : 'v_customer_id';
my $mandate = $params{vc} eq 'customer' ? " AND COALESCE(vc.mandator_id, '') <> '' AND vc.mandate_date_of_signature IS NOT NULL " : '';
(${arap}.amount - (${arap}.amount * pt.percent_skonto)) as amount_less_skonto,
(${arap}.amount * pt.percent_skonto) as skonto_amount,
vc.name AS vcname, vc.language_id, ${arap}.duedate as duedate, ${arap}.direct_debit,
+ vc.${vc_vc_id} as vc_vc_id,
COALESCE(vc.iban, '') <> '' AND COALESCE(vc.bic, '') <> '' ${mandate} AS vc_bank_info_ok,
my $translation_list = GenericTranslations->list(translation_type => 'sepa_remittance_info_pfx');
my %translations = map { ( ($_->{language_id} || 'default') => $_->{translation} ) } @{ $translation_list };
+ my $translation_list_vc = GenericTranslations->list(translation_type => 'sepa_remittance_vc_no_pfx');
+ my %translations_vc = map { ( ($_->{language_id} || 'default') => $_->{translation} ) } @{ $translation_list_vc };
+
unshift @{ $form->{LANGUAGES} }, { 'id' => 'default', };
foreach my $language (@{ $form->{LANGUAGES} }) {
- $language->{translation} = $translations{$language->{id}};
+ $language->{translation} = $translations{$language->{id}};
+ $language->{translation_vc} = $translations_vc{$language->{id}};
}
$form->{title} = $locale->text('Edit SEPA strings');
'translation_id' => undef,
'language_id' => $language->{id},
'translation' => $form->{"translation__" . ($language->{id} || 'default')},);
+ GenericTranslations->save('translation_type' => 'sepa_remittance_vc_no_pfx',
+ 'translation_id' => undef,
+ 'language_id' => $language->{id},
+ 'translation' => $form->{"translation__" . ($language->{id} || 'default') . "__vc" },);
}
$form->{message} = $locale->text('The SEPA strings have been saved.');
my $form = $main::form;
my $locale = $main::locale;
my $vc = $form->{vc} eq 'customer' ? 'customer' : 'vendor';
+ my $vc_no = $form->{vc} eq 'customer' ? $::locale->text('VN') : $::locale->text('CN');
$form->{title} = $vc eq 'customer' ? $::locale->text('Prepare bank collection via SEPA XML') : $locale->text('Prepare bank transfer via SEPA XML');
my $prefix = $translations{ $invoice->{language_id} } || $translations{default} || $::locale->text('Invoice');
$prefix .= ' ' unless $prefix =~ m/ $/;
$invoice->{reference_prefix} = $prefix;
+
+ # add c_vendor_id or v_vendor_id as a prefix if a entry exists
+ next unless $invoice->{vc_vc_id};
+
+ my $prefix_vc_number = $translations{ $invoice->{language_id} } || $translations{default} || $vc_no;
+ $prefix_vc_number .= ' ' unless $prefix_vc_number =~ m/ $/;
+ $invoice->{reference_prefix_vc} = ' ' . $prefix_vc_number unless $prefix_vc_number =~ m/^ /;
}
$form->header();
kleinere neue Features und Detailverbesserungen:
+ - SEPA Überweisungen zusätzlich Kunden- oder Lieferantennummer im Verwendungszweck vorbelegen
+
- Verfeinerung der Rechte für Finanzbuchhaltung: Es können nun für Dialogbuchungen,
Debitoren- und Kreditorenbuchungen extra Rechte vergeben werden
Gibt eine Statistik über Lagerbewegungen, pro Monat/Quartal/Jahr.
- Für UStVA Voranmeldung über Elster gibt es die Anbindung über Geierlein (Installation/Config siehe Commit)
-
+
- CSV-Import von Artikel hat nun für existierende Artikel folgende Optionen:
1. Eigenschaften von existierenden Einträgen aktualisieren
2. Eigenschaften von existierenden Artikeln aktualisieren / Nicht vorhandene überspringen
sowie Übersetzungen z.B. als 'description_EN' oder 'description_IT'.
Auch cvars können als 'cvars_<name>' importiert werden.
Ebenfalls sind zusätzliche Bemerkungen an den einzelnen Importzeilen eingebaut.
-
+
- In der Lager-Mandantenkonfig gibt es das Feature "Zum Fertigen Standardlager des Bestandteils verwenden".
Statt das Ziellager des Erzeugnisses zu Verwenden, wird nun zur Prüfung der Fertigung das
Standardlager der einzelnen Bestandteile verwendet.
'Add Client' => 'Neuer Mandant',
'Add Credit Note' => 'Gutschrift erfassen',
'Add Customer' => 'Kunde erfassen',
+ 'Add Customer/Vendor Number as a reference add-on for SEPA export.' => 'Kunden- Lieferantennummer im Verwendungszweck bei SEPA-Überweisungen anhängen',
'Add Delivery Note' => 'Lieferschein erfassen',
'Add Delivery Order' => 'Lieferschein erfassen',
'Add Dunning' => 'Mahnung erzeugen',
'CB Transaction' => 'SB-Buchung',
'CB Transactions' => 'SB-Buchungen',
'CB/OB Transactions' => 'SB/EB buchen',
+ 'CN' => 'Kd-Nr.',
'CR' => 'H',
'CSS style for pictures' => 'CSS Style für Bilder',
'CSV export -- options' => 'CSV-Export -- Optionen',
'Remaining' => 'Rest',
'Remaining Amount' => 'abzurechnender Betrag',
'Remaining Net Amount' => 'abzurechnender Nettobetrag',
+ 'Remittance information optional Vendor/Customer No postfix' => 'optionale Verwendungszweckvorbelegung Kd./Lief.-Nummer',
'Remittance information prefix' => 'Verwendungszweckvorbelegung (Präfix)',
'Remote Bank Code' => 'Fremde Bankleitzahl',
'Remote Name/Customer/Description' => 'Kunden/Lieferantenname und Beschreibung',
'SAVED' => 'Gespeichert',
'SAVED FOR DUNNING' => 'Gespeichert',
'SCREENED' => 'Angezeigt',
+ 'SEPA' => 'SEPA',
'SEPA XML download' => 'SEPA-XML-Download',
'SEPA creditor ID' => 'SEPA-Kreditoren-Identifikation',
'SEPA exports' => 'SEPA-Exporte',
'Users, Clients and User Groups' => 'Benutzer, Mandanten und Benutzergruppen',
'Usually the sales quotation is valid until the next working day. If a value is set here then the quotation will be valid for at least that many days. The resulting date will be adjusted to the next working day if it ends up on a weekend.' => 'Standardmäßig ist ein Verkaufsangebot bis zum nächsten Werktag gültig. Ist hier ein Wert angegeben, so ist ein Angebot mindestens so viele Tage gültig. Sollte das dabei herauskommende Datum auf ein Wochenende fallen, so wird statt dessen der nachfolgende Arbeitstag genommen.',
'VAT ID' => 'UStdID-Nr',
+ 'VN' => 'Kred.-Nr.',
'Valid' => 'Gültig',
'Valid from' => 'Gültig ab',
'Valid until' => 'gültig bis',
--- /dev/null
+-- @tag: sepa_reference_add_vc_vc_id
+-- @description: Einstellung, ob bei SEPA Überweisungen zusätzlich die Lieferanten-/Kundennummer im Verwendungszweck angezeigt wird
+-- @depends: release_3_4_1
+
+ALTER TABLE defaults ADD COLUMN sepa_reference_add_vc_vc_id boolean DEFAULT FALSE;
</div>
</td>
</tr>
-
+ <tr><td class="listheading" colspan="4">[% LxERP.t8("SEPA") %]</td></tr>
+ <tr>
+ <td align="right">[% LxERP.t8('Add Customer/Vendor Number as a reference add-on for SEPA export.') %]</td>
+ <td>[% L.yes_no_tag('defaults.sepa_reference_add_vc_vc_id', SELF.defaults.sepa_reference_add_vc_vc_id) %]</td>
+ </tr>
</table>
</div>
<td><input name="translation__[% language.id %]" size="40" value="[% HTML.escape(language.translation) %]"></td>
</tr>
[%- END %]
+ <tr>
+ <th class="listheading"> </th>
+ <th class="listheading">[% 'Remittance information optional Vendor/Customer No postfix' | $T8 %]</th>
+ </tr>
+
+ [%- FOREACH language = LANGUAGES %]
+ <tr>
+ <td>
+ [%- IF language.id == 'default' %]
+ [% 'Default (no language selected)' | $T8 %]
+ [%- ELSE %]
+ [%- HTML.escape(language.description) %]
+ [%- END %]
+ </td>
+ <td><input name="translation__[% language.id %]__vc" size="40" value="[% HTML.escape(language.translation_vc) %]"></td>
+ </tr>
+ [%- END %]
</table>
<td align="right">[% invoice.transdate %]</td>
<td align="right">[% invoice.duedate %]</td>
<td>
+ [% IF INSTANCE_CONF.get_sepa_reference_add_vc_vc_id %]
+ [%- SET reference = invoice.reference_prefix _ invoice.invnumber _ invoice.reference_prefix_vc _ invoice.vc_vc_id %]
+ [% ELSE %]
[%- SET reference = invoice.reference_prefix _ invoice.invnumber %]
- <input name="bank_transfers[].reference" value="[% HTML.escape(reference.substr(0, 140)) %]" maxlength="140" size="20">
+ [% END %]
+ <input name="bank_transfers[].reference" value="[% HTML.escape(reference.substr(0, 140)) %]" maxlength="140" size="30">
</td>
<td align="right">
<input id=[% loop.count %] name="bank_transfers[].amount" id="amount_[% loop.count %]" value="[% LxERP.format_amount(invoice.invoice_amount_suggestion, 2) %]" style="text-align: right" size="12">