diff --git a/README.md b/README.md index 42fef59..5040bb6 100644 --- a/README.md +++ b/README.md @@ -24,19 +24,19 @@ App to hold regional code for Germany, built on top of ERPNext. - Custom fields in **Employee** (tax information, etc.) - List of religios denominations ("Konfessionen") -- List of German health insurance providers - - Requires [HRMS](https://github.com/frappe/hrms) to be installed first. - +- List of German health insurance providers (depends on HRMS) - Create **Business Letters** from a template and print or email them to your customers or suppliers +- Record **Business Trips** and pay out allowances to your employees (dt. Reisekostenabrechnung) (depends on HRMS) ## Installation +> [!NOTE] +> Some features of this app depend on the [HRMS](https://github.com/frappe/hrms) app. If you want to use them, you need to install the HRMS app before installing this app. + ### On Frappe Cloud -1. Go to https://frappecloud.com/dashboard/#/sites and click the "New Site" button. -2. In Step 2 ("Select apps to install"), select "ERPNext" and "ERPNext Germany". -3. Complete the new site wizard. +You can find ERPNext Germany in the [Frappe Cloud Marketplace](https://frappecloud.com/marketplace/apps/erpnext_germany). +Please refer to the [Frappe Cloud documentation](https://frappecloud.com/docs/installing-an-app) on how to install an app. ### Local @@ -54,6 +54,16 @@ After that, you can install the app on required site (let's say demo.com ) by ru bench --site demo.com install-app erpnext_germany ``` +## Business Trip + +Before an employee can create a **Business Trip**, you should configure the available regions and their travel allowances in the **Business Trip Region** list. + +When a **Business Trip** is submitted, it creates a draft **Expense Claim** for the employee's travel allowances. The **Expense Claim** can be approved and submitted as usual. + +The receipts for transport and accommodation can be attached, but are not processed automatically. You can check them, create a **Purchase Invoice** and pay the respective amount to the employee. + +You can use our [Banking app](https://github.com/alyf-de/banking) to reconcile the **Expense Claims** and **Purchase Invoices** with the respective **Bank Transactions**. + ### License GNU GPL V3. See the `LICENSE` file for more information. diff --git a/erpnext_germany/custom_fields.py b/erpnext_germany/custom_fields.py index 58bc65b..059ac18 100644 --- a/erpnext_germany/custom_fields.py +++ b/erpnext_germany/custom_fields.py @@ -1,4 +1,5 @@ from .constants import REGISTER_COURTS +from frappe import get_installed_apps def _(message: str) -> str: @@ -174,4 +175,15 @@ def get_custom_fields(): ], } + if "hrms" in get_installed_apps(): + custom_fields["Expense Claim"] = [ + { + "fieldtype": "Link", + "fieldname": "business_trip", + "label": _("Business Trip"), + "options": "Business Trip", + "insert_after": "company", + }, + ] + return custom_fields diff --git a/erpnext_germany/erpnext_germany/doctype/business_trip/__init__.py b/erpnext_germany/erpnext_germany/doctype/business_trip/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/erpnext_germany/erpnext_germany/doctype/business_trip/business_trip.js b/erpnext_germany/erpnext_germany/doctype/business_trip/business_trip.js new file mode 100644 index 0000000..d0fce43 --- /dev/null +++ b/erpnext_germany/erpnext_germany/doctype/business_trip/business_trip.js @@ -0,0 +1,37 @@ +// Copyright (c) 2024, ALYF GmbH and contributors +// For license information, please see license.txt + +frappe.ui.form.on("Business Trip", { + setup(frm) { + frm.set_query("employee", erpnext.queries.employee); + }, + + from_date: function (frm) { + if (!frm.doc.to_date) { + frm.set_value("to_date", frm.doc.from_date); + } + + frm.fields_dict.to_date.datepicker.update({ + minDate: frm.doc.from_date ? new Date(frm.doc.from_date) : null, + }); + }, + + to_date: function (frm) { + frm.fields_dict.from_date.datepicker.update({ + maxDate: frm.doc.to_date ? new Date(frm.doc.to_date) : null, + }); + }, +}); + +frappe.ui.form.on("Business Trip Journey", { + journeys_add(frm, cdt, cdn) { + frappe.model.set_value(cdt, cdn, "date", frm.doc.from_date); + }, +}); + +frappe.ui.form.on("Business Trip Accommodation", { + accommodations_add(frm, cdt, cdn) { + frappe.model.set_value(cdt, cdn, "from_date", frm.doc.from_date); + frappe.model.set_value(cdt, cdn, "to_date", frm.doc.to_date); + }, +}); diff --git a/erpnext_germany/erpnext_germany/doctype/business_trip/business_trip.json b/erpnext_germany/erpnext_germany/doctype/business_trip/business_trip.json new file mode 100644 index 0000000..27efa29 --- /dev/null +++ b/erpnext_germany/erpnext_germany/doctype/business_trip/business_trip.json @@ -0,0 +1,250 @@ +{ + "actions": [], + "autoname": "BT-.####", + "creation": "2022-10-12 21:52:42.547420", + "doctype": "DocType", + "editable_grid": 1, + "engine": "InnoDB", + "field_order": [ + "employee", + "company", + "currency", + "title", + "column_break_2", + "employee_name", + "status", + "section_break_4", + "from_date", + "column_break_6", + "to_date", + "section_break_8", + "project", + "column_break_10", + "customer", + "section_break_12", + "journeys", + "section_break_14", + "accommodations", + "section_break_16", + "region", + "allowances", + "total_allowance", + "amended_from" + ], + "fields": [ + { + "fieldname": "employee", + "fieldtype": "Link", + "in_standard_filter": 1, + "label": "Employee", + "options": "Employee", + "reqd": 1 + }, + { + "fetch_from": "employee.company", + "fieldname": "company", + "fieldtype": "Link", + "label": "Company", + "options": "Company" + }, + { + "fetch_from": "company.default_currency", + "fieldname": "currency", + "fieldtype": "Link", + "label": "Currency", + "options": "Currency" + }, + { + "fieldname": "title", + "fieldtype": "Data", + "label": "Title", + "reqd": 1 + }, + { + "fieldname": "column_break_2", + "fieldtype": "Column Break" + }, + { + "fetch_from": "employee.employee_name", + "fieldname": "employee_name", + "fieldtype": "Data", + "in_list_view": 1, + "label": "Employee Name", + "read_only": 1 + }, + { + "allow_on_submit": 1, + "depends_on": "eval:!doc.__islocal", + "fieldname": "status", + "fieldtype": "Select", + "label": "Status", + "options": "\nSubmitted\nApproved\nRejected\nPaid\nBilled" + }, + { + "fieldname": "section_break_4", + "fieldtype": "Section Break" + }, + { + "fieldname": "from_date", + "fieldtype": "Date", + "in_list_view": 1, + "label": "From Date", + "reqd": 1 + }, + { + "fieldname": "column_break_6", + "fieldtype": "Column Break" + }, + { + "fieldname": "to_date", + "fieldtype": "Date", + "in_list_view": 1, + "label": "To Date", + "reqd": 1 + }, + { + "fieldname": "section_break_8", + "fieldtype": "Section Break" + }, + { + "fieldname": "project", + "fieldtype": "Link", + "in_standard_filter": 1, + "label": "Project", + "options": "Project" + }, + { + "fieldname": "column_break_10", + "fieldtype": "Column Break" + }, + { + "fetch_from": "project.customer", + "fieldname": "customer", + "fieldtype": "Link", + "label": "Customer", + "options": "Customer" + }, + { + "fieldname": "section_break_12", + "fieldtype": "Section Break" + }, + { + "fieldname": "journeys", + "fieldtype": "Table", + "label": "Journeys", + "options": "Business Trip Journey" + }, + { + "fieldname": "section_break_14", + "fieldtype": "Section Break" + }, + { + "fieldname": "accommodations", + "fieldtype": "Table", + "label": "Accommodations", + "options": "Business Trip Accommodation" + }, + { + "fieldname": "section_break_16", + "fieldtype": "Section Break" + }, + { + "fieldname": "region", + "fieldtype": "Link", + "label": "Region", + "options": "Business Trip Region" + }, + { + "fieldname": "allowances", + "fieldtype": "Table", + "label": "Allowances", + "options": "Business Trip Allowance" + }, + { + "fieldname": "total_allowance", + "fieldtype": "Currency", + "label": "Total Allowance", + "read_only": 1 + }, + { + "fieldname": "amended_from", + "fieldtype": "Link", + "label": "Amended From", + "no_copy": 1, + "options": "Business Trip", + "print_hide": 1, + "read_only": 1 + } + ], + "index_web_pages_for_search": 1, + "is_submittable": 1, + "links": [ + { + "link_doctype": "Expense Claim", + "link_fieldname": "business_trip" + } + ], + "modified": "2024-09-04 23:27:34.065131", + "modified_by": "Administrator", + "module": "ERPNext Germany", + "name": "Business Trip", + "naming_rule": "Expression (old style)", + "owner": "Administrator", + "permissions": [ + { + "amend": 1, + "cancel": 1, + "create": 1, + "delete": 1, + "email": 1, + "export": 1, + "print": 1, + "read": 1, + "report": 1, + "role": "System Manager", + "share": 1, + "submit": 1, + "write": 1 + }, + { + "amend": 1, + "cancel": 1, + "create": 1, + "delete": 1, + "email": 1, + "export": 1, + "print": 1, + "read": 1, + "report": 1, + "role": "Projects Manager", + "share": 1, + "submit": 1, + "write": 1 + }, + { + "create": 1, + "delete": 1, + "email": 1, + "export": 1, + "if_owner": 1, + "print": 1, + "read": 1, + "report": 1, + "role": "Employee", + "share": 1, + "write": 1 + }, + { + "email": 1, + "export": 1, + "print": 1, + "read": 1, + "report": 1, + "role": "Accounts User" + } + ], + "sort_field": "modified", + "sort_order": "DESC", + "states": [], + "title_field": "title" +} \ No newline at end of file diff --git a/erpnext_germany/erpnext_germany/doctype/business_trip/business_trip.py b/erpnext_germany/erpnext_germany/doctype/business_trip/business_trip.py new file mode 100644 index 0000000..5353ac3 --- /dev/null +++ b/erpnext_germany/erpnext_germany/doctype/business_trip/business_trip.py @@ -0,0 +1,93 @@ +# Copyright (c) 2024, ALYF GmbH and contributors +# For license information, please see license.txt + +import frappe +from frappe.model.document import Document +from frappe import get_installed_apps + + +class BusinessTrip(Document): + def before_save(self): + self.set_regional_amount() + self.calculate_total() + + def validate(self): + self.validate_from_to_dates("from_date", "to_date") + + def set_regional_amount(self): + if not self.region: + return + + region = frappe.get_doc("Business Trip Region", self.region) + whole_day = region.get("whole_day", 0.0) + arrival_or_departure = region.get("arrival_or_departure", 0.0) + accomodation = region.get("accomodation", 0.0) + + for allowance in self.allowances: + amount = whole_day if allowance.whole_day else arrival_or_departure + if allowance.breakfast_was_provided: + amount -= whole_day * 0.2 + + if allowance.lunch_was_provided: + amount -= whole_day * 0.4 + + if allowance.dinner_was_provided: + amount -= whole_day * 0.4 + + if not allowance.accommodation_was_provided: + amount += accomodation + + allowance.amount = max(amount, 0.0) + + def calculate_total(self): + self.total_allowance = sum(allowance.amount for allowance in self.allowances) + + def before_submit(self): + self.status = "Submitted" + + def on_submit(self): + if not self.allowances: + return + + if "hrms" not in get_installed_apps(): + return + + expense_claim = frappe.new_doc("Expense Claim") + expense_claim.update( + { + "employee": self.employee, + "company": self.company, + "posting_date": frappe.utils.today(), + "business_trip": self.name, + "project": self.project, + } + ) + + for allowance in self.allowances: + description = "Ganztägig" if allowance.whole_day else "An-/Abreise" + if not allowance.accommodation_was_provided and frappe.db.get_value( + "Business Trip Region", self.region, "accommodation" + ): + description += ", zzgl. Hotel" + + if allowance.breakfast_was_provided: + description += ", abzügl. Frühstück" + + if allowance.lunch_was_provided: + description += ", abzügl. Mittagessen" + + if allowance.dinner_was_provided: + description += ", abzügl. Abendessen" + + expense_claim.append( + "expenses", + { + "expense_date": allowance.date, + "expense_type": "Additional meal expenses", + "description": description, + "amount": allowance.amount, + "sanctioned_amount": allowance.amount, + }, + ) + + expense_claim.save() diff --git a/erpnext_germany/erpnext_germany/doctype/business_trip/business_trip_list.js b/erpnext_germany/erpnext_germany/doctype/business_trip/business_trip_list.js new file mode 100644 index 0000000..6d20e57 --- /dev/null +++ b/erpnext_germany/erpnext_germany/doctype/business_trip/business_trip_list.js @@ -0,0 +1,14 @@ +// Copyright (c) 2024, ALYF GmbH and contributors +// For license information, please see license.txt + +frappe.listview_settings["Business Trip"] = { + get_indicator: function (doc) { + const colors = { + Draft: "red", + Approved: "yellow", + Paid: "blue", + Billed: "green", + }; + return [__(doc.status), colors[doc.status], "status,=," + doc.status]; + }, +}; diff --git a/erpnext_germany/erpnext_germany/doctype/business_trip/test_business_trip.py b/erpnext_germany/erpnext_germany/doctype/business_trip/test_business_trip.py new file mode 100644 index 0000000..5d45544 --- /dev/null +++ b/erpnext_germany/erpnext_germany/doctype/business_trip/test_business_trip.py @@ -0,0 +1,9 @@ +# Copyright (c) 2024, ALYF GmbH and Contributors +# See license.txt + +# import frappe +from frappe.tests.utils import FrappeTestCase + + +class TestBusinessTrip(FrappeTestCase): + pass diff --git a/erpnext_germany/erpnext_germany/doctype/business_trip_accommodation/__init__.py b/erpnext_germany/erpnext_germany/doctype/business_trip_accommodation/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/erpnext_germany/erpnext_germany/doctype/business_trip_accommodation/business_trip_accommodation.json b/erpnext_germany/erpnext_germany/doctype/business_trip_accommodation/business_trip_accommodation.json new file mode 100644 index 0000000..75bc97e --- /dev/null +++ b/erpnext_germany/erpnext_germany/doctype/business_trip_accommodation/business_trip_accommodation.json @@ -0,0 +1,55 @@ +{ + "actions": [], + "allow_rename": 1, + "creation": "2022-10-12 22:02:25.775886", + "doctype": "DocType", + "editable_grid": 1, + "engine": "InnoDB", + "field_order": [ + "from_date", + "to_date", + "city", + "receipt" + ], + "fields": [ + { + "fieldname": "from_date", + "fieldtype": "Date", + "in_list_view": 1, + "label": "From Date", + "reqd": 1 + }, + { + "fieldname": "to_date", + "fieldtype": "Date", + "in_list_view": 1, + "label": "To Date", + "reqd": 1 + }, + { + "fieldname": "city", + "fieldtype": "Data", + "in_list_view": 1, + "label": "City", + "reqd": 1 + }, + { + "fieldname": "receipt", + "fieldtype": "Attach", + "in_list_view": 1, + "label": "Receipt" + } + ], + "index_web_pages_for_search": 1, + "istable": 1, + "links": [], + "modified": "2024-09-04 22:59:37.891096", + "modified_by": "Administrator", + "module": "ERPNext Germany", + "name": "Business Trip Accommodation", + "owner": "Administrator", + "permissions": [], + "sort_field": "modified", + "sort_order": "DESC", + "states": [] +} \ No newline at end of file diff --git a/erpnext_germany/erpnext_germany/doctype/business_trip_accommodation/business_trip_accommodation.py b/erpnext_germany/erpnext_germany/doctype/business_trip_accommodation/business_trip_accommodation.py new file mode 100644 index 0000000..e46841c --- /dev/null +++ b/erpnext_germany/erpnext_germany/doctype/business_trip_accommodation/business_trip_accommodation.py @@ -0,0 +1,9 @@ +# Copyright (c) 2024, ALYF GmbH and contributors +# For license information, please see license.txt + +# import frappe +from frappe.model.document import Document + + +class BusinessTripAccommodation(Document): + pass diff --git a/erpnext_germany/erpnext_germany/doctype/business_trip_allowance/__init__.py b/erpnext_germany/erpnext_germany/doctype/business_trip_allowance/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/erpnext_germany/erpnext_germany/doctype/business_trip_allowance/business_trip_allowance.json b/erpnext_germany/erpnext_germany/doctype/business_trip_allowance/business_trip_allowance.json new file mode 100644 index 0000000..d6ccee1 --- /dev/null +++ b/erpnext_germany/erpnext_germany/doctype/business_trip_allowance/business_trip_allowance.json @@ -0,0 +1,102 @@ +{ + "actions": [], + "allow_rename": 1, + "creation": "2022-11-01 20:32:56.339187", + "doctype": "DocType", + "editable_grid": 1, + "engine": "InnoDB", + "field_order": [ + "date", + "whole_day", + "from_time", + "to_time", + "breakfast_was_provided", + "lunch_was_provided", + "dinner_was_provided", + "accommodation_was_provided", + "amount" + ], + "fields": [ + { + "columns": 2, + "fieldname": "date", + "fieldtype": "Date", + "in_list_view": 1, + "label": "Date", + "reqd": 1 + }, + { + "columns": 1, + "default": "0", + "fieldname": "whole_day", + "fieldtype": "Check", + "in_list_view": 1, + "label": "Whole Day" + }, + { + "columns": 1, + "depends_on": "eval:!doc.whole_day", + "fieldname": "from_time", + "fieldtype": "Time", + "label": "From Time", + "mandatory_depends_on": "eval:!doc.whole_day" + }, + { + "depends_on": "eval:!doc.whole_day", + "fieldname": "to_time", + "fieldtype": "Time", + "label": "To Time", + "mandatory_depends_on": "eval:!doc.whole_day" + }, + { + "columns": 2, + "default": "1", + "fieldname": "breakfast_was_provided", + "fieldtype": "Check", + "in_list_view": 1, + "label": "Breakfast was Provided" + }, + { + "columns": 2, + "default": "0", + "fieldname": "lunch_was_provided", + "fieldtype": "Check", + "in_list_view": 1, + "label": "Lunch was Provided" + }, + { + "columns": 2, + "default": "0", + "fieldname": "dinner_was_provided", + "fieldtype": "Check", + "in_list_view": 1, + "label": "Dinner was Provided" + }, + { + "default": "1", + "fieldname": "accommodation_was_provided", + "fieldtype": "Check", + "label": "Accommodation was Provided" + }, + { + "columns": 1, + "fieldname": "amount", + "fieldtype": "Currency", + "in_list_view": 1, + "label": "Amount", + "read_only": 1 + } + ], + "index_web_pages_for_search": 1, + "istable": 1, + "links": [], + "modified": "2024-09-04 22:59:26.731082", + "modified_by": "Administrator", + "module": "ERPNext Germany", + "name": "Business Trip Allowance", + "owner": "Administrator", + "permissions": [], + "sort_field": "modified", + "sort_order": "DESC", + "states": [] +} \ No newline at end of file diff --git a/erpnext_germany/erpnext_germany/doctype/business_trip_allowance/business_trip_allowance.py b/erpnext_germany/erpnext_germany/doctype/business_trip_allowance/business_trip_allowance.py new file mode 100644 index 0000000..170d6d9 --- /dev/null +++ b/erpnext_germany/erpnext_germany/doctype/business_trip_allowance/business_trip_allowance.py @@ -0,0 +1,9 @@ +# Copyright (c) 2024, ALYF GmbH and contributors +# For license information, please see license.txt + +# import frappe +from frappe.model.document import Document + + +class BusinessTripAllowance(Document): + pass diff --git a/erpnext_germany/erpnext_germany/doctype/business_trip_journey/__init__.py b/erpnext_germany/erpnext_germany/doctype/business_trip_journey/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/erpnext_germany/erpnext_germany/doctype/business_trip_journey/business_trip_journey.json b/erpnext_germany/erpnext_germany/doctype/business_trip_journey/business_trip_journey.json new file mode 100644 index 0000000..18a6a47 --- /dev/null +++ b/erpnext_germany/erpnext_germany/doctype/business_trip_journey/business_trip_journey.json @@ -0,0 +1,63 @@ +{ + "actions": [], + "creation": "2022-10-12 21:57:22.305645", + "doctype": "DocType", + "editable_grid": 1, + "engine": "InnoDB", + "field_order": [ + "date", + "mode_of_transport", + "from", + "to", + "receipt" + ], + "fields": [ + { + "fieldname": "date", + "fieldtype": "Date", + "in_list_view": 1, + "label": "Date", + "reqd": 1 + }, + { + "fieldname": "mode_of_transport", + "fieldtype": "Select", + "in_list_view": 1, + "label": "Mode of Transport", + "options": "Car\nTaxi\nBus\nTrain\nAirplane\nPublic Transport", + "reqd": 1 + }, + { + "fieldname": "from", + "fieldtype": "Data", + "in_list_view": 1, + "label": "From", + "reqd": 1 + }, + { + "fieldname": "to", + "fieldtype": "Data", + "in_list_view": 1, + "label": "To", + "reqd": 1 + }, + { + "fieldname": "receipt", + "fieldtype": "Attach", + "in_list_view": 1, + "label": "Receipt" + } + ], + "index_web_pages_for_search": 1, + "istable": 1, + "links": [], + "modified": "2024-09-04 22:59:47.424300", + "modified_by": "Administrator", + "module": "ERPNext Germany", + "name": "Business Trip Journey", + "owner": "Administrator", + "permissions": [], + "sort_field": "modified", + "sort_order": "DESC", + "states": [] +} \ No newline at end of file diff --git a/erpnext_germany/erpnext_germany/doctype/business_trip_journey/business_trip_journey.py b/erpnext_germany/erpnext_germany/doctype/business_trip_journey/business_trip_journey.py new file mode 100644 index 0000000..20eab3d --- /dev/null +++ b/erpnext_germany/erpnext_germany/doctype/business_trip_journey/business_trip_journey.py @@ -0,0 +1,9 @@ +# Copyright (c) 2024, ALYF GmbH and contributors +# For license information, please see license.txt + +# import frappe +from frappe.model.document import Document + + +class BusinessTripJourney(Document): + pass diff --git a/erpnext_germany/erpnext_germany/doctype/business_trip_region/__init__.py b/erpnext_germany/erpnext_germany/doctype/business_trip_region/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/erpnext_germany/erpnext_germany/doctype/business_trip_region/business_trip_region.js b/erpnext_germany/erpnext_germany/doctype/business_trip_region/business_trip_region.js new file mode 100644 index 0000000..bd07d22 --- /dev/null +++ b/erpnext_germany/erpnext_germany/doctype/business_trip_region/business_trip_region.js @@ -0,0 +1,8 @@ +// Copyright (c) 2024, ALYF GmbH and contributors +// For license information, please see license.txt + +// frappe.ui.form.on("Business Trip Region", { +// refresh(frm) { + +// }, +// }); diff --git a/erpnext_germany/erpnext_germany/doctype/business_trip_region/business_trip_region.json b/erpnext_germany/erpnext_germany/doctype/business_trip_region/business_trip_region.json new file mode 100644 index 0000000..0781f7b --- /dev/null +++ b/erpnext_germany/erpnext_germany/doctype/business_trip_region/business_trip_region.json @@ -0,0 +1,71 @@ +{ + "actions": [], + "allow_rename": 1, + "autoname": "field:title", + "creation": "2022-11-01 20:24:28.877901", + "doctype": "DocType", + "editable_grid": 1, + "engine": "InnoDB", + "field_order": [ + "title", + "whole_day", + "arrival_or_departure", + "accommodation" + ], + "fields": [ + { + "fieldname": "title", + "fieldtype": "Data", + "label": "Title", + "unique": 1 + }, + { + "description": "For an absence of at least 24 hours per calendar day", + "fieldname": "whole_day", + "fieldtype": "Currency", + "label": "Whole Day" + }, + { + "description": "For the day of arrival and departure and for an absence of more than 8 hours per calendar day", + "fieldname": "arrival_or_departure", + "fieldtype": "Currency", + "label": "Arrival or Departure" + }, + { + "description": "Lump sum for accommodation expenses", + "fieldname": "accommodation", + "fieldtype": "Currency", + "label": "Accommodation" + } + ], + "index_web_pages_for_search": 1, + "links": [ + { + "link_doctype": "Business Trip", + "link_fieldname": "region" + } + ], + "modified": "2024-09-04 23:22:20.930187", + "modified_by": "Administrator", + "module": "ERPNext Germany", + "name": "Business Trip Region", + "owner": "Administrator", + "permissions": [ + { + "create": 1, + "delete": 1, + "email": 1, + "export": 1, + "print": 1, + "read": 1, + "report": 1, + "role": "System Manager", + "share": 1, + "write": 1 + } + ], + "sort_field": "modified", + "sort_order": "DESC", + "states": [], + "title_field": "title" +} \ No newline at end of file diff --git a/erpnext_germany/erpnext_germany/doctype/business_trip_region/business_trip_region.py b/erpnext_germany/erpnext_germany/doctype/business_trip_region/business_trip_region.py new file mode 100644 index 0000000..3b7c0ae --- /dev/null +++ b/erpnext_germany/erpnext_germany/doctype/business_trip_region/business_trip_region.py @@ -0,0 +1,9 @@ +# Copyright (c) 2024, ALYF GmbH and contributors +# For license information, please see license.txt + +# import frappe +from frappe.model.document import Document + + +class BusinessTripRegion(Document): + pass diff --git a/erpnext_germany/erpnext_germany/doctype/business_trip_region/test_business_trip_region.py b/erpnext_germany/erpnext_germany/doctype/business_trip_region/test_business_trip_region.py new file mode 100644 index 0000000..89cc75f --- /dev/null +++ b/erpnext_germany/erpnext_germany/doctype/business_trip_region/test_business_trip_region.py @@ -0,0 +1,9 @@ +# Copyright (c) 2024, ALYF GmbH and Contributors +# See license.txt + +# import frappe +from frappe.tests.utils import FrappeTestCase + + +class TestBusinessTripRegion(FrappeTestCase): + pass diff --git a/erpnext_germany/locale/de.po b/erpnext_germany/locale/de.po index b5ffa80..952bcb0 100644 --- a/erpnext_germany/locale/de.po +++ b/erpnext_germany/locale/de.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ERPNext Germany VERSION\n" "Report-Msgid-Bugs-To: hallo@alyf.de\n" -"POT-Creation-Date: 2024-09-28 15:29+0053\n" +"POT-Creation-Date: 2024-09-28 16:11+0053\n" "PO-Revision-Date: 2024-09-28 15:29+0053\n" "Last-Translator: hallo@alyf.de\n" "Language-Team: hallo@alyf.de\n" @@ -16,10 +16,30 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.13.1\n" +#. Label of a Currency field in DocType 'Business Trip Region' +#: erpnext_germany/erpnext_germany/doctype/business_trip_region/business_trip_region.json +msgid "Accommodation" +msgstr "Unterkunft" + +#. Label of a Check field in DocType 'Business Trip Allowance' +#: erpnext_germany/erpnext_germany/doctype/business_trip_allowance/business_trip_allowance.json +msgid "Accommodation was Provided" +msgstr "Unterkunft wurde gestellt" + +#. Label of a Table field in DocType 'Business Trip' +#: erpnext_germany/erpnext_germany/doctype/business_trip/business_trip.json +msgid "Accommodations" +msgstr "Unterkünfte" + #: erpnext_germany/erpnext_germany/report/summen__und_saldenliste/summen__und_saldenliste.py:30 msgid "Account" msgstr "Konto" +#. Name of a role +#: erpnext_germany/erpnext_germany/doctype/business_trip/business_trip.json +msgid "Accounts User" +msgstr "Buchhaltungsbenutzer" + #. Label of a Small Text field in DocType 'VAT ID Check' #: erpnext_germany/erpnext_germany/doctype/vat_id_check/vat_id_check.json msgid "Actual Trader Address" @@ -36,19 +56,63 @@ msgstr "Tatsächlicher Name des Händlers" msgid "Address" msgstr "Adresse" +#. Option for the 'Mode of Transport' (Select) field in DocType 'Business Trip +#. Journey' +#: erpnext_germany/erpnext_germany/doctype/business_trip_journey/business_trip_journey.json +msgid "Airplane" +msgstr "Flugzeug" + +#. Label of a Table field in DocType 'Business Trip' +#: erpnext_germany/erpnext_germany/doctype/business_trip/business_trip.json +msgid "Allowances" +msgstr "Verpflegungspauschalen" + #. Label of a Link field in DocType 'Business Letter' +#. Label of a Link field in DocType 'Business Trip' #: erpnext_germany/erpnext_germany/doctype/business_letter/business_letter.json +#: erpnext_germany/erpnext_germany/doctype/business_trip/business_trip.json msgid "Amended From" msgstr "Korrektur von" +#. Label of a Currency field in DocType 'Business Trip Allowance' +#: erpnext_germany/erpnext_germany/doctype/business_trip_allowance/business_trip_allowance.json +msgid "Amount" +msgstr "Betrag" + +#. Option for the 'Status' (Select) field in DocType 'Business Trip' +#: erpnext_germany/erpnext_germany/doctype/business_trip/business_trip.json +msgid "Approved" +msgstr "Genehmigt" + #: erpnext_germany/erpnext_germany/report/summen__und_saldenliste/summen__und_saldenliste.js:32 msgid "April" msgstr "April" +#. Label of a Currency field in DocType 'Business Trip Region' +#: erpnext_germany/erpnext_germany/doctype/business_trip_region/business_trip_region.json +msgid "Arrival or Departure" +msgstr "Ankunft oder Abreise" + #: erpnext_germany/erpnext_germany/report/summen__und_saldenliste/summen__und_saldenliste.js:36 msgid "August" msgstr "August" +#. Option for the 'Status' (Select) field in DocType 'Business Trip' +#: erpnext_germany/erpnext_germany/doctype/business_trip/business_trip.json +msgid "Billed" +msgstr "Abgerechnet" + +#. Label of a Check field in DocType 'Business Trip Allowance' +#: erpnext_germany/erpnext_germany/doctype/business_trip_allowance/business_trip_allowance.json +msgid "Breakfast was Provided" +msgstr "Frühstück wurde gestellt" + +#. Option for the 'Mode of Transport' (Select) field in DocType 'Business Trip +#. Journey' +#: erpnext_germany/erpnext_germany/doctype/business_trip_journey/business_trip_journey.json +msgid "Bus" +msgstr "Bus" + #. Name of a DocType #. Linked DocType in Business Letter Template's connections #: erpnext_germany/erpnext_germany/doctype/business_letter/business_letter.json @@ -61,17 +125,58 @@ msgstr "Geschäftsbrief" msgid "Business Letter Template" msgstr "Geschäftsbriefvorlage" +#. Name of a DocType +#. Linked DocType in Business Trip Region's connections +#: erpnext_germany/custom_fields.py:183 +#: erpnext_germany/erpnext_germany/doctype/business_trip/business_trip.json +#: erpnext_germany/erpnext_germany/doctype/business_trip_region/business_trip_region.json +msgid "Business Trip" +msgstr "Dienstreise" + +#. Name of a DocType +#: erpnext_germany/erpnext_germany/doctype/business_trip_accommodation/business_trip_accommodation.json +msgid "Business Trip Accommodation" +msgstr "Dienstreise-Unterkunft" + +#. Name of a DocType +#: erpnext_germany/erpnext_germany/doctype/business_trip_allowance/business_trip_allowance.json +msgid "Business Trip Allowance" +msgstr "Dienstreise-Verpflegungspauschale" + +#. Name of a DocType +#: erpnext_germany/erpnext_germany/doctype/business_trip_journey/business_trip_journey.json +msgid "Business Trip Journey" +msgstr "Dienstreise-Fahrt" + +#. Name of a DocType +#: erpnext_germany/erpnext_germany/doctype/business_trip_region/business_trip_region.json +msgid "Business Trip Region" +msgstr "Dienstreise-Region" + #: erpnext_germany/custom/sales.py:15 msgid "Cannot delete this transaction" msgstr "Diese Transaktion kann nicht gelöscht werden" -#: erpnext_germany/custom_fields.py:123 +#. Option for the 'Mode of Transport' (Select) field in DocType 'Business Trip +#. Journey' +#: erpnext_germany/erpnext_germany/doctype/business_trip_journey/business_trip_journey.json +msgid "Car" +msgstr "Auto" + +#: erpnext_germany/custom_fields.py:124 msgid "Children Eligible for Tax Credits" msgstr "Anzahl Kinderfreibeträge" +#. Label of a Data field in DocType 'Business Trip Accommodation' +#: erpnext_germany/erpnext_germany/doctype/business_trip_accommodation/business_trip_accommodation.json +msgid "City" +msgstr "Stadt" + #. Label of a Link field in DocType 'Business Letter' +#. Label of a Link field in DocType 'Business Trip' #. Label of a Link field in DocType 'VAT ID Check' #: erpnext_germany/erpnext_germany/doctype/business_letter/business_letter.json +#: erpnext_germany/erpnext_germany/doctype/business_trip/business_trip.json #: erpnext_germany/erpnext_germany/doctype/vat_id_check/vat_id_check.json #: erpnext_germany/erpnext_germany/report/summen__und_saldenliste/summen__und_saldenliste.js:9 msgid "Company" @@ -115,12 +220,23 @@ msgstr "Haben im {0}" msgid "Credit until {0}" msgstr "Haben bis {0}" +#. Label of a Link field in DocType 'Business Trip' +#: erpnext_germany/erpnext_germany/doctype/business_trip/business_trip.json #: erpnext_germany/erpnext_germany/report/summen__und_saldenliste/summen__und_saldenliste.py:37 msgid "Currency" msgstr "Währung" +#. Label of a Link field in DocType 'Business Trip' +#: erpnext_germany/erpnext_germany/doctype/business_trip/business_trip.json +msgid "Customer" +msgstr "Kunde" + #. Label of a Date field in DocType 'Business Letter' +#. Label of a Date field in DocType 'Business Trip Allowance' +#. Label of a Date field in DocType 'Business Trip Journey' #: erpnext_germany/erpnext_germany/doctype/business_letter/business_letter.json +#: erpnext_germany/erpnext_germany/doctype/business_trip_allowance/business_trip_allowance.json +#: erpnext_germany/erpnext_germany/doctype/business_trip_journey/business_trip_journey.json msgid "Date" msgstr "Datum" @@ -144,6 +260,11 @@ msgstr "Soll bis {0}" msgid "December" msgstr "Dezember" +#. Label of a Check field in DocType 'Business Trip Allowance' +#: erpnext_germany/erpnext_germany/doctype/business_trip_allowance/business_trip_allowance.json +msgid "Dinner was Provided" +msgstr "Abendessen wurde gestellt" + #: erpnext_germany/config/desktop.py:10 msgid "ERPNext Germany" msgstr "ERPNext-Deutschland" @@ -154,15 +275,27 @@ msgid "Email" msgstr "E-Mail" #. Name of a role +#. Label of a Link field in DocType 'Business Trip' #: erpnext_germany/erpnext_germany/doctype/business_letter/business_letter.json +#: erpnext_germany/erpnext_germany/doctype/business_trip/business_trip.json msgid "Employee" -msgstr "" +msgstr "Mitarbeiter" + +#. Label of a Data field in DocType 'Business Trip' +#: erpnext_germany/erpnext_germany/doctype/business_trip/business_trip.json +msgid "Employee Name" +msgstr "Name des Mitarbeiters" #. Option for the 'Status' (Select) field in DocType 'VAT ID Check' #: erpnext_germany/erpnext_germany/doctype/vat_id_check/vat_id_check.json msgid "Error" msgstr "Fehler" +#. Linked DocType in Business Trip's connections +#: erpnext_germany/erpnext_germany/doctype/business_trip/business_trip.json +msgid "Expense Claim" +msgstr "Spesenabrechnung" + #: erpnext_germany/erpnext_germany/report/summen__und_saldenliste/summen__und_saldenliste.js:30 msgid "February" msgstr "Februar" @@ -171,6 +304,35 @@ msgstr "Februar" msgid "Fiscal Year" msgstr "Geschäftsjahr" +#. Description of the 'Whole Day' (Currency) field in DocType 'Business Trip +#. Region' +#: erpnext_germany/erpnext_germany/doctype/business_trip_region/business_trip_region.json +msgid "For an absence of at least 24 hours per calendar day" +msgstr "Für eine Abwesenheit von mindestens 24 Stunden pro Kalendertag" + +#. Description of the 'Arrival or Departure' (Currency) field in DocType +#. 'Business Trip Region' +#: erpnext_germany/erpnext_germany/doctype/business_trip_region/business_trip_region.json +msgid "For the day of arrival and departure and for an absence of more than 8 hours per calendar day" +msgstr "Für den An- und Abreisetag und für eine Abwesenheit von mehr als 8 Stunden pro Kalendertag" + +#. Label of a Data field in DocType 'Business Trip Journey' +#: erpnext_germany/erpnext_germany/doctype/business_trip_journey/business_trip_journey.json +msgid "From" +msgstr "Ab" + +#. Label of a Date field in DocType 'Business Trip' +#. Label of a Date field in DocType 'Business Trip Accommodation' +#: erpnext_germany/erpnext_germany/doctype/business_trip/business_trip.json +#: erpnext_germany/erpnext_germany/doctype/business_trip_accommodation/business_trip_accommodation.json +msgid "From Date" +msgstr "Ab Datum" + +#. Label of a Time field in DocType 'Business Trip Allowance' +#: erpnext_germany/erpnext_germany/doctype/business_trip_allowance/business_trip_allowance.json +msgid "From Time" +msgstr "Ab Uhrzeit" + #. Name of a role #: erpnext_germany/erpnext_germany/doctype/religious_denomination/religious_denomination.json msgid "HR Manager" @@ -181,15 +343,15 @@ msgstr "Personalwesen-Manager" msgid "HR User" msgstr "Personalwesen-Benutzer" -#: erpnext_germany/custom_fields.py:137 +#: erpnext_germany/custom_fields.py:138 msgid "Has Children" msgstr "Hat Kinder" -#: erpnext_germany/custom_fields.py:143 +#: erpnext_germany/custom_fields.py:144 msgid "Has Other Employments" msgstr "Hat Nebenbeschäftigungen" -#: erpnext_germany/custom_fields.py:149 +#: erpnext_germany/custom_fields.py:150 msgid "Highest School Qualification" msgstr "Höchster Schulabschluss" @@ -202,7 +364,7 @@ msgstr "Ungültig" msgid "Invalid Input" msgstr "Ungültige Eingabe" -#: erpnext_germany/custom_fields.py:69 +#: erpnext_germany/custom_fields.py:70 msgid "Is Severely Disabled" msgstr "Ist Schwerbehindert" @@ -215,6 +377,11 @@ msgstr "Ist gültig" msgid "January" msgstr "Januar" +#. Label of a Table field in DocType 'Business Trip' +#: erpnext_germany/erpnext_germany/doctype/business_trip/business_trip.json +msgid "Journeys" +msgstr "Fahrten" + #: erpnext_germany/erpnext_germany/report/summen__und_saldenliste/summen__und_saldenliste.js:35 msgid "July" msgstr "Juli" @@ -243,6 +410,17 @@ msgstr "Titel des verknüpften Dokuments" msgid "Load From Template" msgstr "Aus Vorlage laden" +#. Description of the 'Accommodation' (Currency) field in DocType 'Business +#. Trip Region' +#: erpnext_germany/erpnext_germany/doctype/business_trip_region/business_trip_region.json +msgid "Lump sum for accommodation expenses" +msgstr "Pauschale für Unterkunftskosten" + +#. Label of a Check field in DocType 'Business Trip Allowance' +#: erpnext_germany/erpnext_germany/doctype/business_trip_allowance/business_trip_allowance.json +msgid "Lunch was Provided" +msgstr "Mittagessen wurde gestellt" + #: erpnext_germany/erpnext_germany/report/summen__und_saldenliste/summen__und_saldenliste.js:31 msgid "March" msgstr "März" @@ -251,11 +429,16 @@ msgstr "März" msgid "May" msgstr "Mai" +#. Label of a Select field in DocType 'Business Trip Journey' +#: erpnext_germany/erpnext_germany/doctype/business_trip_journey/business_trip_journey.json +msgid "Mode of Transport" +msgstr "Verkehrsmittel" + #: erpnext_germany/erpnext_germany/report/summen__und_saldenliste/summen__und_saldenliste.js:25 msgid "Month" msgstr "Monat" -#: erpnext_germany/custom_fields.py:62 +#: erpnext_germany/custom_fields.py:63 msgid "Nationality" msgstr "Nationalität" @@ -271,6 +454,11 @@ msgstr "Oktober" msgid "Only the most recent {0} can be deleted in order to avoid gaps in numbering." msgstr "Nur die neueste Transaktion vom Typ {0} kann gelöscht werden, um Lücken in der Nummerierung zu vermeiden." +#. Option for the 'Status' (Select) field in DocType 'Business Trip' +#: erpnext_germany/erpnext_germany/doctype/business_trip/business_trip.json +msgid "Paid" +msgstr "Bezahlt" + #. Label of a Dynamic Link field in DocType 'VAT ID Check' #: erpnext_germany/erpnext_germany/doctype/vat_id_check/vat_id_check.json msgid "Party" @@ -302,29 +490,62 @@ msgstr "Geplant" msgid "Preview" msgstr "Vorschau" +#. Label of a Link field in DocType 'Business Trip' +#: erpnext_germany/erpnext_germany/doctype/business_trip/business_trip.json +msgid "Project" +msgstr "Projekt" + +#. Name of a role +#: erpnext_germany/erpnext_germany/doctype/business_trip/business_trip.json +msgid "Projects Manager" +msgstr "Projektmanager" + +#. Option for the 'Mode of Transport' (Select) field in DocType 'Business Trip +#. Journey' +#: erpnext_germany/erpnext_germany/doctype/business_trip_journey/business_trip_journey.json +msgid "Public Transport" +msgstr "Öffentliche Verkehrsmittel" + +#. Label of a Attach field in DocType 'Business Trip Accommodation' +#. Label of a Attach field in DocType 'Business Trip Journey' +#: erpnext_germany/erpnext_germany/doctype/business_trip_accommodation/business_trip_accommodation.json +#: erpnext_germany/erpnext_germany/doctype/business_trip_journey/business_trip_journey.json +msgid "Receipt" +msgstr "Beleg" + #. Label of a Section Break field in DocType 'Business Letter' #: erpnext_germany/erpnext_germany/doctype/business_letter/business_letter.json msgid "Reference" msgstr "Referenz" -#: erpnext_germany/custom_fields.py:45 +#. Label of a Link field in DocType 'Business Trip' +#: erpnext_germany/erpnext_germany/doctype/business_trip/business_trip.json +msgid "Region" +msgstr "Region" + +#: erpnext_germany/custom_fields.py:46 msgid "Register Court" msgstr "Registergericht" -#: erpnext_germany/custom_fields.py:13 +#: erpnext_germany/custom_fields.py:14 msgid "Register Information" msgstr "Registerinformation" -#: erpnext_germany/custom_fields.py:33 +#: erpnext_germany/custom_fields.py:34 msgid "Register Number" msgstr "Registernummer" -#: erpnext_germany/custom_fields.py:20 +#: erpnext_germany/custom_fields.py:21 msgid "Register Type" msgstr "Registerart" +#. Option for the 'Status' (Select) field in DocType 'Business Trip' +#: erpnext_germany/erpnext_germany/doctype/business_trip/business_trip.json +msgid "Rejected" +msgstr "Abgelehnt" + #. Name of a DocType -#: erpnext_germany/custom_fields.py:129 +#: erpnext_germany/custom_fields.py:130 #: erpnext_germany/erpnext_germany/doctype/religious_denomination/religious_denomination.json msgid "Religious Denomination" msgstr "Konfession" @@ -379,7 +600,9 @@ msgstr "September" msgid "Service Unavailable" msgstr "Dienst nicht verfügbar" +#. Label of a Select field in DocType 'Business Trip' #. Label of a Select field in DocType 'VAT ID Check' +#: erpnext_germany/erpnext_germany/doctype/business_trip/business_trip.json #: erpnext_germany/erpnext_germany/doctype/vat_id_check/vat_id_check.json msgid "Status" msgstr "Status" @@ -396,6 +619,11 @@ msgstr "Betreff" msgid "Subject (Preview)" msgstr "Betreff (Vorschau)" +#. Option for the 'Status' (Select) field in DocType 'Business Trip' +#: erpnext_germany/erpnext_germany/doctype/business_trip/business_trip.json +msgid "Submitted" +msgstr "Gebucht" + #. Name of a report #: erpnext_germany/erpnext_germany/report/summen__und_saldenliste/summen__und_saldenliste.json msgid "Summen- und Saldenliste" @@ -404,40 +632,74 @@ msgstr "" #. Name of a role #: erpnext_germany/erpnext_germany/doctype/business_letter/business_letter.json #: erpnext_germany/erpnext_germany/doctype/business_letter_template/business_letter_template.json +#: erpnext_germany/erpnext_germany/doctype/business_trip/business_trip.json +#: erpnext_germany/erpnext_germany/doctype/business_trip_region/business_trip_region.json #: erpnext_germany/erpnext_germany/doctype/religious_denomination/religious_denomination.json #: erpnext_germany/erpnext_germany/doctype/vat_id_check/vat_id_check.json msgid "System Manager" msgstr "" -#: erpnext_germany/custom_fields.py:115 +#: erpnext_germany/custom_fields.py:116 msgid "Tax Bracket" msgstr "Steuerklasse" -#: erpnext_germany/custom_fields.py:157 erpnext_germany/custom_fields.py:168 +#: erpnext_germany/custom_fields.py:158 erpnext_germany/custom_fields.py:169 msgid "Tax Exemption Reason" msgstr "Steuerbefreiungsgrund" -#: erpnext_germany/custom_fields.py:89 +#: erpnext_germany/custom_fields.py:90 msgid "Tax ID" msgstr "Steuernummer" -#: erpnext_germany/custom_fields.py:96 +#: erpnext_germany/custom_fields.py:97 msgid "Tax Office" msgstr "Finanzamt" -#: erpnext_germany/custom_fields.py:103 +#: erpnext_germany/custom_fields.py:104 msgid "Tax Office Number" msgstr "Finanzamtnummer" -#: erpnext_germany/custom_fields.py:82 +#: erpnext_germany/custom_fields.py:83 msgid "Taxes" msgstr "Steuern" +#. Option for the 'Mode of Transport' (Select) field in DocType 'Business Trip +#. Journey' +#: erpnext_germany/erpnext_germany/doctype/business_trip_journey/business_trip_journey.json +msgid "Taxi" +msgstr "Taxi" + +#. Label of a Data field in DocType 'Business Trip' +#. Label of a Data field in DocType 'Business Trip Region' #. Label of a Data field in DocType 'Religious Denomination' +#: erpnext_germany/erpnext_germany/doctype/business_trip/business_trip.json +#: erpnext_germany/erpnext_germany/doctype/business_trip_region/business_trip_region.json #: erpnext_germany/erpnext_germany/doctype/religious_denomination/religious_denomination.json msgid "Title" msgstr "Titel" +#. Label of a Data field in DocType 'Business Trip Journey' +#: erpnext_germany/erpnext_germany/doctype/business_trip_journey/business_trip_journey.json +msgid "To" +msgstr "Bis" + +#. Label of a Date field in DocType 'Business Trip' +#. Label of a Date field in DocType 'Business Trip Accommodation' +#: erpnext_germany/erpnext_germany/doctype/business_trip/business_trip.json +#: erpnext_germany/erpnext_germany/doctype/business_trip_accommodation/business_trip_accommodation.json +msgid "To Date" +msgstr "Bis Datum" + +#. Label of a Time field in DocType 'Business Trip Allowance' +#: erpnext_germany/erpnext_germany/doctype/business_trip_allowance/business_trip_allowance.json +msgid "To Time" +msgstr "Bis Uhrzeit" + +#. Label of a Currency field in DocType 'Business Trip' +#: erpnext_germany/erpnext_germany/doctype/business_trip/business_trip.json +msgid "Total Allowance" +msgstr "Gesamte Verpflegungspauschale" + #. Label of a Data field in DocType 'VAT ID Check' #: erpnext_germany/erpnext_germany/doctype/vat_id_check/vat_id_check.json msgid "Trader City" @@ -478,6 +740,12 @@ msgstr "Straße des Händlers" msgid "Trader Street Match" msgstr "Straße des Händlers stimmt überein" +#. Option for the 'Mode of Transport' (Select) field in DocType 'Business Trip +#. Journey' +#: erpnext_germany/erpnext_germany/doctype/business_trip_journey/business_trip_journey.json +msgid "Train" +msgstr "Zug" + #: erpnext_germany/erpnext_germany/doctype/business_letter/business_letter.js:28 msgid "Unsaved changes. Save the document first to get a preview." msgstr "Ungespeicherte Änderungen. Speichern Sie das Dokument zuerst, um eine Vorschau zu erhalten." @@ -491,7 +759,14 @@ msgstr "USt-IdNr Prüfung" msgid "Valid" msgstr "Gültig" -#: erpnext_germany/custom_fields.py:75 +#. Label of a Check field in DocType 'Business Trip Allowance' +#. Label of a Currency field in DocType 'Business Trip Region' +#: erpnext_germany/erpnext_germany/doctype/business_trip_allowance/business_trip_allowance.json +#: erpnext_germany/erpnext_germany/doctype/business_trip_region/business_trip_region.json +msgid "Whole Day" +msgstr "Ganztägig" + +#: erpnext_germany/custom_fields.py:76 msgid "Working Hours Per Week" msgstr "Arbeitsstunden pro Woche" diff --git a/erpnext_germany/locale/main.pot b/erpnext_germany/locale/main.pot index 50cc39d..8a78467 100644 --- a/erpnext_germany/locale/main.pot +++ b/erpnext_germany/locale/main.pot @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ERPNext Germany VERSION\n" "Report-Msgid-Bugs-To: hallo@alyf.de\n" -"POT-Creation-Date: 2024-09-28 15:29+0053\n" -"PO-Revision-Date: 2024-09-28 15:29+0053\n" +"POT-Creation-Date: 2024-09-28 16:11+0053\n" +"PO-Revision-Date: 2024-09-28 16:11+0053\n" "Last-Translator: hallo@alyf.de\n" "Language-Team: hallo@alyf.de\n" "MIME-Version: 1.0\n" @@ -16,10 +16,30 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.13.1\n" +#. Label of a Currency field in DocType 'Business Trip Region' +#: erpnext_germany/erpnext_germany/doctype/business_trip_region/business_trip_region.json +msgid "Accommodation" +msgstr "" + +#. Label of a Check field in DocType 'Business Trip Allowance' +#: erpnext_germany/erpnext_germany/doctype/business_trip_allowance/business_trip_allowance.json +msgid "Accommodation was Provided" +msgstr "" + +#. Label of a Table field in DocType 'Business Trip' +#: erpnext_germany/erpnext_germany/doctype/business_trip/business_trip.json +msgid "Accommodations" +msgstr "" + #: erpnext_germany/erpnext_germany/report/summen__und_saldenliste/summen__und_saldenliste.py:30 msgid "Account" msgstr "" +#. Name of a role +#: erpnext_germany/erpnext_germany/doctype/business_trip/business_trip.json +msgid "Accounts User" +msgstr "" + #. Label of a Small Text field in DocType 'VAT ID Check' #: erpnext_germany/erpnext_germany/doctype/vat_id_check/vat_id_check.json msgid "Actual Trader Address" @@ -36,19 +56,63 @@ msgstr "" msgid "Address" msgstr "" +#. Option for the 'Mode of Transport' (Select) field in DocType 'Business Trip +#. Journey' +#: erpnext_germany/erpnext_germany/doctype/business_trip_journey/business_trip_journey.json +msgid "Airplane" +msgstr "" + +#. Label of a Table field in DocType 'Business Trip' +#: erpnext_germany/erpnext_germany/doctype/business_trip/business_trip.json +msgid "Allowances" +msgstr "" + #. Label of a Link field in DocType 'Business Letter' +#. Label of a Link field in DocType 'Business Trip' #: erpnext_germany/erpnext_germany/doctype/business_letter/business_letter.json +#: erpnext_germany/erpnext_germany/doctype/business_trip/business_trip.json msgid "Amended From" msgstr "" +#. Label of a Currency field in DocType 'Business Trip Allowance' +#: erpnext_germany/erpnext_germany/doctype/business_trip_allowance/business_trip_allowance.json +msgid "Amount" +msgstr "" + +#. Option for the 'Status' (Select) field in DocType 'Business Trip' +#: erpnext_germany/erpnext_germany/doctype/business_trip/business_trip.json +msgid "Approved" +msgstr "" + #: erpnext_germany/erpnext_germany/report/summen__und_saldenliste/summen__und_saldenliste.js:32 msgid "April" msgstr "" +#. Label of a Currency field in DocType 'Business Trip Region' +#: erpnext_germany/erpnext_germany/doctype/business_trip_region/business_trip_region.json +msgid "Arrival or Departure" +msgstr "" + #: erpnext_germany/erpnext_germany/report/summen__und_saldenliste/summen__und_saldenliste.js:36 msgid "August" msgstr "" +#. Option for the 'Status' (Select) field in DocType 'Business Trip' +#: erpnext_germany/erpnext_germany/doctype/business_trip/business_trip.json +msgid "Billed" +msgstr "" + +#. Label of a Check field in DocType 'Business Trip Allowance' +#: erpnext_germany/erpnext_germany/doctype/business_trip_allowance/business_trip_allowance.json +msgid "Breakfast was Provided" +msgstr "" + +#. Option for the 'Mode of Transport' (Select) field in DocType 'Business Trip +#. Journey' +#: erpnext_germany/erpnext_germany/doctype/business_trip_journey/business_trip_journey.json +msgid "Bus" +msgstr "" + #. Name of a DocType #. Linked DocType in Business Letter Template's connections #: erpnext_germany/erpnext_germany/doctype/business_letter/business_letter.json @@ -61,17 +125,58 @@ msgstr "" msgid "Business Letter Template" msgstr "" +#. Name of a DocType +#. Linked DocType in Business Trip Region's connections +#: erpnext_germany/custom_fields.py:183 +#: erpnext_germany/erpnext_germany/doctype/business_trip/business_trip.json +#: erpnext_germany/erpnext_germany/doctype/business_trip_region/business_trip_region.json +msgid "Business Trip" +msgstr "" + +#. Name of a DocType +#: erpnext_germany/erpnext_germany/doctype/business_trip_accommodation/business_trip_accommodation.json +msgid "Business Trip Accommodation" +msgstr "" + +#. Name of a DocType +#: erpnext_germany/erpnext_germany/doctype/business_trip_allowance/business_trip_allowance.json +msgid "Business Trip Allowance" +msgstr "" + +#. Name of a DocType +#: erpnext_germany/erpnext_germany/doctype/business_trip_journey/business_trip_journey.json +msgid "Business Trip Journey" +msgstr "" + +#. Name of a DocType +#: erpnext_germany/erpnext_germany/doctype/business_trip_region/business_trip_region.json +msgid "Business Trip Region" +msgstr "" + #: erpnext_germany/custom/sales.py:15 msgid "Cannot delete this transaction" msgstr "" -#: erpnext_germany/custom_fields.py:123 +#. Option for the 'Mode of Transport' (Select) field in DocType 'Business Trip +#. Journey' +#: erpnext_germany/erpnext_germany/doctype/business_trip_journey/business_trip_journey.json +msgid "Car" +msgstr "" + +#: erpnext_germany/custom_fields.py:124 msgid "Children Eligible for Tax Credits" msgstr "" +#. Label of a Data field in DocType 'Business Trip Accommodation' +#: erpnext_germany/erpnext_germany/doctype/business_trip_accommodation/business_trip_accommodation.json +msgid "City" +msgstr "" + #. Label of a Link field in DocType 'Business Letter' +#. Label of a Link field in DocType 'Business Trip' #. Label of a Link field in DocType 'VAT ID Check' #: erpnext_germany/erpnext_germany/doctype/business_letter/business_letter.json +#: erpnext_germany/erpnext_germany/doctype/business_trip/business_trip.json #: erpnext_germany/erpnext_germany/doctype/vat_id_check/vat_id_check.json #: erpnext_germany/erpnext_germany/report/summen__und_saldenliste/summen__und_saldenliste.js:9 msgid "Company" @@ -115,12 +220,23 @@ msgstr "" msgid "Credit until {0}" msgstr "" +#. Label of a Link field in DocType 'Business Trip' +#: erpnext_germany/erpnext_germany/doctype/business_trip/business_trip.json #: erpnext_germany/erpnext_germany/report/summen__und_saldenliste/summen__und_saldenliste.py:37 msgid "Currency" msgstr "" +#. Label of a Link field in DocType 'Business Trip' +#: erpnext_germany/erpnext_germany/doctype/business_trip/business_trip.json +msgid "Customer" +msgstr "" + #. Label of a Date field in DocType 'Business Letter' +#. Label of a Date field in DocType 'Business Trip Allowance' +#. Label of a Date field in DocType 'Business Trip Journey' #: erpnext_germany/erpnext_germany/doctype/business_letter/business_letter.json +#: erpnext_germany/erpnext_germany/doctype/business_trip_allowance/business_trip_allowance.json +#: erpnext_germany/erpnext_germany/doctype/business_trip_journey/business_trip_journey.json msgid "Date" msgstr "" @@ -144,6 +260,11 @@ msgstr "" msgid "December" msgstr "" +#. Label of a Check field in DocType 'Business Trip Allowance' +#: erpnext_germany/erpnext_germany/doctype/business_trip_allowance/business_trip_allowance.json +msgid "Dinner was Provided" +msgstr "" + #: erpnext_germany/config/desktop.py:10 msgid "ERPNext Germany" msgstr "" @@ -154,15 +275,27 @@ msgid "Email" msgstr "" #. Name of a role +#. Label of a Link field in DocType 'Business Trip' #: erpnext_germany/erpnext_germany/doctype/business_letter/business_letter.json +#: erpnext_germany/erpnext_germany/doctype/business_trip/business_trip.json msgid "Employee" msgstr "" +#. Label of a Data field in DocType 'Business Trip' +#: erpnext_germany/erpnext_germany/doctype/business_trip/business_trip.json +msgid "Employee Name" +msgstr "" + #. Option for the 'Status' (Select) field in DocType 'VAT ID Check' #: erpnext_germany/erpnext_germany/doctype/vat_id_check/vat_id_check.json msgid "Error" msgstr "" +#. Linked DocType in Business Trip's connections +#: erpnext_germany/erpnext_germany/doctype/business_trip/business_trip.json +msgid "Expense Claim" +msgstr "" + #: erpnext_germany/erpnext_germany/report/summen__und_saldenliste/summen__und_saldenliste.js:30 msgid "February" msgstr "" @@ -171,6 +304,35 @@ msgstr "" msgid "Fiscal Year" msgstr "" +#. Description of the 'Whole Day' (Currency) field in DocType 'Business Trip +#. Region' +#: erpnext_germany/erpnext_germany/doctype/business_trip_region/business_trip_region.json +msgid "For an absence of at least 24 hours per calendar day" +msgstr "" + +#. Description of the 'Arrival or Departure' (Currency) field in DocType +#. 'Business Trip Region' +#: erpnext_germany/erpnext_germany/doctype/business_trip_region/business_trip_region.json +msgid "For the day of arrival and departure and for an absence of more than 8 hours per calendar day" +msgstr "" + +#. Label of a Data field in DocType 'Business Trip Journey' +#: erpnext_germany/erpnext_germany/doctype/business_trip_journey/business_trip_journey.json +msgid "From" +msgstr "" + +#. Label of a Date field in DocType 'Business Trip' +#. Label of a Date field in DocType 'Business Trip Accommodation' +#: erpnext_germany/erpnext_germany/doctype/business_trip/business_trip.json +#: erpnext_germany/erpnext_germany/doctype/business_trip_accommodation/business_trip_accommodation.json +msgid "From Date" +msgstr "" + +#. Label of a Time field in DocType 'Business Trip Allowance' +#: erpnext_germany/erpnext_germany/doctype/business_trip_allowance/business_trip_allowance.json +msgid "From Time" +msgstr "" + #. Name of a role #: erpnext_germany/erpnext_germany/doctype/religious_denomination/religious_denomination.json msgid "HR Manager" @@ -181,15 +343,15 @@ msgstr "" msgid "HR User" msgstr "" -#: erpnext_germany/custom_fields.py:137 +#: erpnext_germany/custom_fields.py:138 msgid "Has Children" msgstr "" -#: erpnext_germany/custom_fields.py:143 +#: erpnext_germany/custom_fields.py:144 msgid "Has Other Employments" msgstr "" -#: erpnext_germany/custom_fields.py:149 +#: erpnext_germany/custom_fields.py:150 msgid "Highest School Qualification" msgstr "" @@ -202,7 +364,7 @@ msgstr "" msgid "Invalid Input" msgstr "" -#: erpnext_germany/custom_fields.py:69 +#: erpnext_germany/custom_fields.py:70 msgid "Is Severely Disabled" msgstr "" @@ -215,6 +377,11 @@ msgstr "" msgid "January" msgstr "" +#. Label of a Table field in DocType 'Business Trip' +#: erpnext_germany/erpnext_germany/doctype/business_trip/business_trip.json +msgid "Journeys" +msgstr "" + #: erpnext_germany/erpnext_germany/report/summen__und_saldenliste/summen__und_saldenliste.js:35 msgid "July" msgstr "" @@ -243,6 +410,17 @@ msgstr "" msgid "Load From Template" msgstr "" +#. Description of the 'Accommodation' (Currency) field in DocType 'Business +#. Trip Region' +#: erpnext_germany/erpnext_germany/doctype/business_trip_region/business_trip_region.json +msgid "Lump sum for accommodation expenses" +msgstr "" + +#. Label of a Check field in DocType 'Business Trip Allowance' +#: erpnext_germany/erpnext_germany/doctype/business_trip_allowance/business_trip_allowance.json +msgid "Lunch was Provided" +msgstr "" + #: erpnext_germany/erpnext_germany/report/summen__und_saldenliste/summen__und_saldenliste.js:31 msgid "March" msgstr "" @@ -251,11 +429,16 @@ msgstr "" msgid "May" msgstr "" +#. Label of a Select field in DocType 'Business Trip Journey' +#: erpnext_germany/erpnext_germany/doctype/business_trip_journey/business_trip_journey.json +msgid "Mode of Transport" +msgstr "" + #: erpnext_germany/erpnext_germany/report/summen__und_saldenliste/summen__und_saldenliste.js:25 msgid "Month" msgstr "" -#: erpnext_germany/custom_fields.py:62 +#: erpnext_germany/custom_fields.py:63 msgid "Nationality" msgstr "" @@ -271,6 +454,11 @@ msgstr "" msgid "Only the most recent {0} can be deleted in order to avoid gaps in numbering." msgstr "" +#. Option for the 'Status' (Select) field in DocType 'Business Trip' +#: erpnext_germany/erpnext_germany/doctype/business_trip/business_trip.json +msgid "Paid" +msgstr "" + #. Label of a Dynamic Link field in DocType 'VAT ID Check' #: erpnext_germany/erpnext_germany/doctype/vat_id_check/vat_id_check.json msgid "Party" @@ -302,29 +490,62 @@ msgstr "" msgid "Preview" msgstr "" +#. Label of a Link field in DocType 'Business Trip' +#: erpnext_germany/erpnext_germany/doctype/business_trip/business_trip.json +msgid "Project" +msgstr "" + +#. Name of a role +#: erpnext_germany/erpnext_germany/doctype/business_trip/business_trip.json +msgid "Projects Manager" +msgstr "" + +#. Option for the 'Mode of Transport' (Select) field in DocType 'Business Trip +#. Journey' +#: erpnext_germany/erpnext_germany/doctype/business_trip_journey/business_trip_journey.json +msgid "Public Transport" +msgstr "" + +#. Label of a Attach field in DocType 'Business Trip Accommodation' +#. Label of a Attach field in DocType 'Business Trip Journey' +#: erpnext_germany/erpnext_germany/doctype/business_trip_accommodation/business_trip_accommodation.json +#: erpnext_germany/erpnext_germany/doctype/business_trip_journey/business_trip_journey.json +msgid "Receipt" +msgstr "" + #. Label of a Section Break field in DocType 'Business Letter' #: erpnext_germany/erpnext_germany/doctype/business_letter/business_letter.json msgid "Reference" msgstr "" -#: erpnext_germany/custom_fields.py:45 +#. Label of a Link field in DocType 'Business Trip' +#: erpnext_germany/erpnext_germany/doctype/business_trip/business_trip.json +msgid "Region" +msgstr "" + +#: erpnext_germany/custom_fields.py:46 msgid "Register Court" msgstr "" -#: erpnext_germany/custom_fields.py:13 +#: erpnext_germany/custom_fields.py:14 msgid "Register Information" msgstr "" -#: erpnext_germany/custom_fields.py:33 +#: erpnext_germany/custom_fields.py:34 msgid "Register Number" msgstr "" -#: erpnext_germany/custom_fields.py:20 +#: erpnext_germany/custom_fields.py:21 msgid "Register Type" msgstr "" +#. Option for the 'Status' (Select) field in DocType 'Business Trip' +#: erpnext_germany/erpnext_germany/doctype/business_trip/business_trip.json +msgid "Rejected" +msgstr "" + #. Name of a DocType -#: erpnext_germany/custom_fields.py:129 +#: erpnext_germany/custom_fields.py:130 #: erpnext_germany/erpnext_germany/doctype/religious_denomination/religious_denomination.json msgid "Religious Denomination" msgstr "" @@ -379,7 +600,9 @@ msgstr "" msgid "Service Unavailable" msgstr "" +#. Label of a Select field in DocType 'Business Trip' #. Label of a Select field in DocType 'VAT ID Check' +#: erpnext_germany/erpnext_germany/doctype/business_trip/business_trip.json #: erpnext_germany/erpnext_germany/doctype/vat_id_check/vat_id_check.json msgid "Status" msgstr "" @@ -396,6 +619,11 @@ msgstr "" msgid "Subject (Preview)" msgstr "" +#. Option for the 'Status' (Select) field in DocType 'Business Trip' +#: erpnext_germany/erpnext_germany/doctype/business_trip/business_trip.json +msgid "Submitted" +msgstr "" + #. Name of a report #: erpnext_germany/erpnext_germany/report/summen__und_saldenliste/summen__und_saldenliste.json msgid "Summen- und Saldenliste" @@ -404,40 +632,74 @@ msgstr "" #. Name of a role #: erpnext_germany/erpnext_germany/doctype/business_letter/business_letter.json #: erpnext_germany/erpnext_germany/doctype/business_letter_template/business_letter_template.json +#: erpnext_germany/erpnext_germany/doctype/business_trip/business_trip.json +#: erpnext_germany/erpnext_germany/doctype/business_trip_region/business_trip_region.json #: erpnext_germany/erpnext_germany/doctype/religious_denomination/religious_denomination.json #: erpnext_germany/erpnext_germany/doctype/vat_id_check/vat_id_check.json msgid "System Manager" msgstr "" -#: erpnext_germany/custom_fields.py:115 +#: erpnext_germany/custom_fields.py:116 msgid "Tax Bracket" msgstr "" -#: erpnext_germany/custom_fields.py:157 erpnext_germany/custom_fields.py:168 +#: erpnext_germany/custom_fields.py:158 erpnext_germany/custom_fields.py:169 msgid "Tax Exemption Reason" msgstr "" -#: erpnext_germany/custom_fields.py:89 +#: erpnext_germany/custom_fields.py:90 msgid "Tax ID" msgstr "" -#: erpnext_germany/custom_fields.py:96 +#: erpnext_germany/custom_fields.py:97 msgid "Tax Office" msgstr "" -#: erpnext_germany/custom_fields.py:103 +#: erpnext_germany/custom_fields.py:104 msgid "Tax Office Number" msgstr "" -#: erpnext_germany/custom_fields.py:82 +#: erpnext_germany/custom_fields.py:83 msgid "Taxes" msgstr "" +#. Option for the 'Mode of Transport' (Select) field in DocType 'Business Trip +#. Journey' +#: erpnext_germany/erpnext_germany/doctype/business_trip_journey/business_trip_journey.json +msgid "Taxi" +msgstr "" + +#. Label of a Data field in DocType 'Business Trip' +#. Label of a Data field in DocType 'Business Trip Region' #. Label of a Data field in DocType 'Religious Denomination' +#: erpnext_germany/erpnext_germany/doctype/business_trip/business_trip.json +#: erpnext_germany/erpnext_germany/doctype/business_trip_region/business_trip_region.json #: erpnext_germany/erpnext_germany/doctype/religious_denomination/religious_denomination.json msgid "Title" msgstr "" +#. Label of a Data field in DocType 'Business Trip Journey' +#: erpnext_germany/erpnext_germany/doctype/business_trip_journey/business_trip_journey.json +msgid "To" +msgstr "" + +#. Label of a Date field in DocType 'Business Trip' +#. Label of a Date field in DocType 'Business Trip Accommodation' +#: erpnext_germany/erpnext_germany/doctype/business_trip/business_trip.json +#: erpnext_germany/erpnext_germany/doctype/business_trip_accommodation/business_trip_accommodation.json +msgid "To Date" +msgstr "" + +#. Label of a Time field in DocType 'Business Trip Allowance' +#: erpnext_germany/erpnext_germany/doctype/business_trip_allowance/business_trip_allowance.json +msgid "To Time" +msgstr "" + +#. Label of a Currency field in DocType 'Business Trip' +#: erpnext_germany/erpnext_germany/doctype/business_trip/business_trip.json +msgid "Total Allowance" +msgstr "" + #. Label of a Data field in DocType 'VAT ID Check' #: erpnext_germany/erpnext_germany/doctype/vat_id_check/vat_id_check.json msgid "Trader City" @@ -478,6 +740,12 @@ msgstr "" msgid "Trader Street Match" msgstr "" +#. Option for the 'Mode of Transport' (Select) field in DocType 'Business Trip +#. Journey' +#: erpnext_germany/erpnext_germany/doctype/business_trip_journey/business_trip_journey.json +msgid "Train" +msgstr "" + #: erpnext_germany/erpnext_germany/doctype/business_letter/business_letter.js:28 msgid "Unsaved changes. Save the document first to get a preview." msgstr "" @@ -491,7 +759,14 @@ msgstr "" msgid "Valid" msgstr "" -#: erpnext_germany/custom_fields.py:75 +#. Label of a Check field in DocType 'Business Trip Allowance' +#. Label of a Currency field in DocType 'Business Trip Region' +#: erpnext_germany/erpnext_germany/doctype/business_trip_allowance/business_trip_allowance.json +#: erpnext_germany/erpnext_germany/doctype/business_trip_region/business_trip_region.json +msgid "Whole Day" +msgstr "" + +#: erpnext_germany/custom_fields.py:76 msgid "Working Hours Per Week" msgstr ""