Einstellungen
- Druckkopf
- Übersetzungen (Translation)
- Nummernkreis (Naming Series)
- Kundennummern verwenden
- Druckformat (Printformat)
- Mitteilung (Notification)
- Benuzerdefinierte Tabellen im Druckformat
- E-Mail-Bericht (Email Digest)
Druckkopf
Einleitung
Der Druckkopf in ERPNext ist ein DocType welcher lediglich für eine Drucküberschrift verwendet werden kann. z.B. ist der Kundenauftrag auch gleichzeitig die Auftragsbestätigung.
Wir können also für den Kundenauftrag zwei Druckköpfe anlegen (Auftrag und Auftragsbestätigung) und diese dann entsprechend für die interne oder externe Kommunikation verwenden.
Druckkopf anlegen
Einstellungen -> Druck -> Druckkopf
Übersetzungen (Translation)
Das verwenden von mehreren Sprachen im System kann zu einem hohen Fehlerpotential führen!
Einleitung
frappe's ERPNext erlaubt es das System mehrsprachig zu verwenden. Für Übersetzungen gibt es in ERPNext mind. drei Herangehensweisen:
- Händisches erstellen einer Übersetzung im eigenen DocType
- Verwenden des Translation Tools
- Übersetzen einzelner Felder eines DocTypes
1. Der DocType Übersetzung, welcher über die Suche zu finden ist gibt uns die Möglichkeit Text des Systems zu übersetzen. Dazu gehören nicht nur einzelne Feldnamen sondern auch ganze Meldungen die z.B. in Pop-Ups oder
1. Händische Übersetzung
Im Doctype Übersetzung können einzelne Strings übersetzt werden.
DocType Übersetzung zum händischen übersetzen einzelner Worte oder Sätze im System.
Achtung, "Case Sensitive" Groß und Kleinschreibung wird hier berücksichtigt.
PDF Belege übersetzen
ERPNext ermöglicht die Abbildung von unterschiedlichen Sprachen in Belegen
Texte in Druckformaten übersetzen
Alle Druckformate werden in der Entwicklungsebene (custom HTML) auf englisch gehalten. Dort sind Texte welche abgedruckt werden immer in folgendem Schema angelegt
Print: {{ _('English Text') }}
Wollen wir, dass der Inhalt von Feld-Variablen übersetzt wird geht dies ebenfalls mit
{{ _(doc.feld_variable) }}
der Text der dort eingetragen ist kann dann selbstständig übersetzt werden. Hier für bietet das System pro Satz oder Wort, im folgenden String genannt. Eine einzelne Übersetzung eines Strings passiert im DocType Übersetzung.
Hier wählen wir dann die Sprache aus in welche übersetzt werden soll und die entsprechenden Strings.
"Übersetzbar" beim erstellen von DocTypes
Das übersetzen von Standardfeldern ist möglich!
Das Feld übersetzbar beim erstellen von custom fields bringt die Möglichkeit den Inhalt des Feldes von Nutzern übersetzen zu lassen.
Nummernkreis (Naming Series)
Seit Version 13 kann der Nummernkreis auf DocTypes fast beliebig angepasst werden.
Einleitung
In ERPNext können wir für eine Vielzahl von Dokumenten einen Nummernkreis einstellen. Für das ordentliche anlegen von Daten essentiell. Das Feld name in jeder Listenansicht wird immer der Nummernkreis sein sofern am DocType der Nummernkreis eingestellt ist.
Den Nummernkreis zeichnet aus, dass er zählt. Wählen wir als Namensgebung ein Feld wie Titel muss der Name genauso einmal sein wie es beim Nummernkreis gefordert wird. Dopplungen gibt es nur DocType übergreifend. So kann z.B. ein Kunde den gleichen Namen wie ein Lieferant tragen obwohl beide so eingstellt sind, dass der Klarname den "Name" ausmacht (Nummernkreis, Kundennummer etc. nicht eingestellt).
Vorkentnisse
Um diesen DocType besser zu verstehen sollten wir uns mit
- der Rolle Systemmanager auskennen und
- DocType erstellt bzw. bearbeitet
haben.
Nummernkreis einstellen
Mit den entsprechenden Rechten können wir fast jeden beliebigen DocType anpassen. Dort finden wir unter der "Felder-Tabelle" den Abschnitt Naming.
1.) Auto Name auf naming_series umstellen und speichern.
2.) Auf "Add Row" klicken um einen neue Zeile zu erstellen.
3.) Auf der neu erstellten Zeile als Name "Naming Series" eingeben, Type Data.
Speichern!
4.) Speichern "Update"
Jetzt kann in --https://exampleERP/app/naming-series/Naming%20Series-- die Namingseries angepasst werden.
Beispiele zur Funktion: (siehe ltz. Screenshot innerhalb Rotes Quadrat)
Wo Nummernkreise zwingend notwendig sind
Ausgangsrechnung
Für das Finanzamt ist eine Rechnungsnummer zwingend notwendig. Hier wird darauf geachtet, dass diese lückenlos geführt werden. Hier ist das einstellen eines Nummernkreises unumgänglich.
Wo Nummernkreise sinnvoll sind
Nummernkreise können überall dort besonders gut eingesetzt werden wo etwas automatisch hochgezählt werden soll.
Weiterführende Themen
Kundennummern verwenden
Einleitung
Wächst eine Firma ist es notwendig, dass Daten eindeutig zugewiesen werden können. Gleiches gilt für die Kommunikation nach Außen sowie die Zuordnung von Vorgängen innerhalb der Firma. Ein Hilfsmittel ist hierbei die Kundennummer. Diese gibt uns die Möglichkeit einen Kunden eindeutig zu identifizieren. Weiter kann diese auch vom Kunden genutzt werden um sich zügig zu identifizieren.
Grundeinstellung
Zunächst können wir in den Vertriebseinstellungen vorgeben ob wir Kunden nach Name oder eben nach Nummernkreis erstellen wollen:
Kundenname
Stellen wir ein, dass die Kunden nach dem Namen erstellt werden hilft dies oft bei der Leserlichkeit und bei der Navigation und Verständlichkeit des Systems. Wollen wir aber eine saubere Datenbasis empfiehlt sich ganz klar die Verwendung eines Nummernkreises.
Nummernkreis
Der Nummernkreis eignet sich vor allem dann, wenn wir eine große Anzahl an Kunden im System anlegen werden.
Nummerkreise in ERPNext nie ohne Präfix verwenden
Mehr zum Nummernkreis finden wir hier
Druckformat (Printformat)
Druckformate haben keine Änderungshistorie!
Einleitung
Alle DocTypes in ERPNext haben eine oder mehrere Druckansichten. Diese werden für den Versand als PDF, zum Ausdruck auf DIN-A4 Papier oder für den Druck von Labels oder auch Eintrittskarten verwendet. Für das Erstellen für rudimentären PDF Ansichten in welchen nicht auf spezielle Formatierung geachtet wird hat frappe einen Drag & Drop Editor im Programm eingebaut. Ist es notwendig z.B. Adresse für eine Brieffenster optimal einzustellen sind HTML/CSS Kenntnisse notwendig.
Neues Druckformat erstellen
Standard setzen
Wir können jedes Druckformat als Standard auf dem entsprechenden DocType einstellen
https://handbuch.tueit.de/books/erpnext-benutzerhandbuch/page/standarddruckformat
Mitteilung (Notification)
Einleitung
In diversen Szenarien wünschen wir uns Benachrichtigungen die automatisiert vom System versendet werden. Dies kann gewünscht sein, wenn wir auf Fälligkeiten hingewiesen werden möchten, eingereichte Dokumente verarbeitet wurden oder Projektvorgänge geschlossen wurden. ERPNext bietet uns hierzu diverse Möglichkeiten.
Benachrichtungen können per E-Mail, SMS oder... vom System ausgelöst werden.
Filter
Alarm senden bei
Eine Benachrichtigung erstellen
Im Modul Einstellungen auf der Karte E-Mail Benachrichtungen befindet sich der DocType Mitteilung.
E-Mailbenachrichtungen
Berechtigungen
Die E-Mailbenachtichtung wird auch ohne die Berechtigungn "Email" auf dem DocType ausgelöst. Sprich, die Mitteilung wird unabhängig der Anwenderberechtigung versendet.
Beispiele
Anfrage
Vorgang
Quellen & Verweise
https://frappe.io/kb/notifications/include-document-link-in-notification-email
https://docs.erpnext.com/docs/v13/user/manual/en/setting-up/workflow-actions
Benuzerdefinierte Tabellen im Druckformat
Einleitung
Verwenden wir im Druckformat benutzerdefinierte Tabellen...
<div>s verwenden
Ohne <div>
<!-- Table Heading -->
<table class="table table-bordered table-condensed">
<thead>
<tr>
<th>{{ _('Item Code') }}</th>
<th>{{ _('Description') }}</th>
<th>{{ _('Quantity') }}</th>
<th>{{ _('Price') }}</th>
<th>{{ _('Amount') }}</th>
</tr>
</thead>
<tbody>
<!-- Table Content -->
{% set currency = frappe.get_doc("Currency",doc.currency) %}
{%- for row in doc.items -%}
<tr>
<td>
{% set item = frappe.get_doc("Item", row.item_code) %}
{% if item.variant_of %}
{{ item.variant_of }}
{% else %}
{{ item.name }}
{% endif %}
</td>
<td>
{{ row.description }}<br><br>
<!-- Herkunftsland -->
{{ _('Country of Origin') }}:
{% if item.country_of_origin %}
{{ item.country_of_origin }}
{% else %}
{{ _('None') }}
{% endif %}<br>
<!-- Kundenreferenzen -->
{% for refs in item.customer_items %}
{% if refs.customer_name == doc.customer %}
{{ _('Your Itemcode')}}: {{ refs.ref_code }}<br>
{{ _('Your Itemname')}}: {{ refs.ref_name }}
{% else %}
{% endif %}
{% endfor %}<br>
<!-- Palette/Charge -->
{% if row.batch_no %}
{% set batch = frappe.get_doc("Batch", row.batch_no) %}
{{ _('Charge') }}: {{ row.batch_no }}<br>
{% if batch.print_supplier_batch == 1 %}
{{ _('Charge') }} {{ _('Producer') }}: {{ batch.supplier_batch_number }}<br>
{% endif %}
{{ _('Manufacturing Date') }}: {% if batch.manufacturing_date %} {{ frappe.utils.get_datetime(batch.manufacturing_date).strftime('%d.%m.%Y') }}{% endif %}<br>
{{ _('BBE') }}: {% if batch.expiry_date %}{{ frappe.utils.get_datetime(batch.expiry_date).strftime('%d.%m.%Y') }}{% endif %}<br>
<!-- Certificates -->
{% if batch.technical_data_sheet %}
{% set tds = frappe.get_doc("Technical Data Sheet", batch.technical_data_sheet) %}
{% if tds.certificates %}
{{ _('Certificates') }}:
{% endif %}
{% for certificate in tds.certificates %}
{% if certificate.certified == "Yes" %}
{{ certificate.type }}
{% if certificate.type == "Organic" %}
{% if batch.country_of_origin %}
{% set country = frappe.get_doc("Country", batch.country_of_origin) %}
{% if country.eu_landwirtschaft %}
<br><b>CH-Bio-006 "EU-Landwirtschaft"</b>
{% else %}
<br><b>CH-Bio-006 "Nicht-EU-Landwirtschaft"</b>
{% endif %}
{% endif %}
{% endif %}
{% endif %}
{% endfor %}<br>
{% else %}
-
{% endif %}
{% endif %}
<br>
<br>
<!-- Lieferdatum -->
{{ _('Delivery Date') }}: {{ frappe.utils.get_datetime ( row.delivery_date ).strftime('%d.%m.%Y') }}
</td>
<td>
{{ row.qty }} {{ row.uom }}
</td>
<td class="price-column">
{% if row.uom != row.stock_uom %}
{% set rate_in_stock_uom = row.rate * row.conversion_factor %}
{{'%0.2f'| format(rate_in_stock_uom|float) }} {{ currency.symbol }} / {{ row.stock_uom }}<br>
{{ row.conversion_factor }} {{ row.stock_uom }} ≘ 1 {{ row.uom}}
{% else %}
{{'%0.2f'| format(row.rate|float) }} {{ currency.symbol }} / {{ row.uom }}
{% endif %}
</td>
<td class="price-column">{{'%0.2f'| format(row.amount|float) }} {{ currency.symbol }}</td>
</tr>
{%- endfor -%}
</tbody>
</table>
Mit <div>
<!-- Table Heading -->
<table class="table table-bordered table-condensed">
<thead>
<tr>
<th>{{ _('Item Code') }}</th>
<th>{{ _('Description') }}</th>
<th>{{ _('Quantity') }}</th>
<th>{{ _('Price') }}</th>
<th>{{ _('Amount') }}</th>
</tr>
</thead>
<tbody>
<!-- Table Content -->
{% set currency = frappe.get_doc("Currency",doc.currency) %}
{%- for row in doc.items -%}
<tr>
<td>
{% set item = frappe.get_doc("Item", row.item_code) %}
{% if item.variant_of %}
{{ item.variant_of }}
{% else %}
{{ item.name }}
{% endif %}
</td>
<td><div>
{{ row.description }}<br><br>
<!-- Herkunftsland -->
{{ _('Country of Origin') }}:
{% if item.country_of_origin %}
{{ item.country_of_origin }}
{% else %}
{{ _('None') }}
{% endif %}<br>
<!-- Kundenreferenzen -->
{% for refs in item.customer_items %}
{% if refs.customer_name == doc.customer %}
{{ _('Your Itemcode')}}: {{ refs.ref_code }}<br>
{{ _('Your Itemname')}}: {{ refs.ref_name }}
{% else %}
{% endif %}
{% endfor %}<br>
<!-- Palette/Charge -->
{% if row.batch_no %}
{% set batch = frappe.get_doc("Batch", row.batch_no) %}
{{ _('Charge') }}: {{ row.batch_no }}<br>
{% if batch.print_supplier_batch == 1 %}
{{ _('Charge') }} {{ _('Producer') }}: {{ batch.supplier_batch_number }}<br>
{% endif %}
{{ _('Manufacturing Date') }}: {% if batch.manufacturing_date %} {{ frappe.utils.get_datetime(batch.manufacturing_date).strftime('%d.%m.%Y') }}{% endif %}<br>
{{ _('BBE') }}: {% if batch.expiry_date %}{{ frappe.utils.get_datetime(batch.expiry_date).strftime('%d.%m.%Y') }}{% endif %}<br>
<!-- Certificates -->
{% if batch.technical_data_sheet %}
{% set tds = frappe.get_doc("Technical Data Sheet", batch.technical_data_sheet) %}
{% if tds.certificates %}
{{ _('Certificates') }}:
{% endif %}
{% for certificate in tds.certificates %}
{% if certificate.certified == "Yes" %}
{{ certificate.type }}
{% if certificate.type == "Organic" %}
{% if batch.country_of_origin %}
{% set country = frappe.get_doc("Country", batch.country_of_origin) %}
{% if country.eu_landwirtschaft %}
<br><b>CH-Bio-006 "EU-Landwirtschaft"</b>
{% else %}
<br><b>CH-Bio-006 "Nicht-EU-Landwirtschaft"</b>
{% endif %}
{% endif %}
{% endif %}
{% endif %}
{% endfor %}<br>
{% else %}
-
{% endif %}
{% endif %}
<br>
<br>
<!-- Lieferdatum -->
{{ _('Delivery Date') }}: {{ frappe.utils.get_datetime ( row.delivery_date ).strftime('%d.%m.%Y') }}
</div>
</td>
<td>
{{ row.qty }} {{ row.uom }}
</td>
<td class="price-column">
{% if row.uom != row.stock_uom %}
{% set rate_in_stock_uom = row.rate * row.conversion_factor %}
{{'%0.2f'| format(rate_in_stock_uom|float) }} {{ currency.symbol }} / {{ row.stock_uom }}<br>
{{ row.conversion_factor }} {{ row.stock_uom }} ≘ 1 {{ row.uom}}
{% else %}
{{'%0.2f'| format(row.rate|float) }} {{ currency.symbol }} / {{ row.uom }}
{% endif %}
</td>
<td class="price-column">{{'%0.2f'| format(row.amount|float) }} {{ currency.symbol }}</td>
</tr>
{%- endfor -%}
</tbody>
</table>
E-Mail-Bericht (Email Digest)
https://docs.erpnext.com/docs/v13/user/manual/en/setting-up/email/email-digest
Einleitung
Dies ist eine im Standard aktivierte E-Mail-Mitteillung welche wir so konfigurieren können, damit wir modulbezogen eine Übersicht der Zahlen erhalten. Die Vorlage kann frei definiert werden. Im Standard ist eine leere Vorlage eingestellt. Diese wird täglich versendet.
Einstellungen zum täglichen E-Mail-Bericht
Aktiviert
Häkchen | Auswirkung |
Ja | Bericht wird an alle im Feld Empfänger genannten Adressen versendet. Die Häufigkeit wird über das Feld "Wie Häufig?" bestimmt. |
Nein | Der Bericht wird nicht versendet. |
Rechnungswesen
Arbeitsvorbereitung
Andere