diff --git a/erpnext/accounts/doctype/accounts_settings/accounts_settings.json b/erpnext/accounts/doctype/accounts_settings/accounts_settings.json index 3e0b82c561..1e2e2acd79 100644 --- a/erpnext/accounts/doctype/accounts_settings/accounts_settings.json +++ b/erpnext/accounts/doctype/accounts_settings/accounts_settings.json @@ -91,7 +91,7 @@ }, { "default": "0", - "description": "Enabling ensure each Sales Invoice has a unique value in Supplier Invoice No. field", + "description": "Enabling ensure each Purchase Invoice has a unique value in Supplier Invoice No. field", "fieldname": "check_supplier_invoice_uniqueness", "fieldtype": "Check", "label": "Check Supplier Invoice Number Uniqueness" @@ -354,7 +354,7 @@ "index_web_pages_for_search": 1, "issingle": 1, "links": [], - "modified": "2022-07-11 13:37:50.605141", + "modified": "2022-11-27 21:49:52.538655", "modified_by": "Administrator", "module": "Accounts", "name": "Accounts Settings", diff --git a/erpnext/accounts/doctype/bank_clearance/bank_clearance.js b/erpnext/accounts/doctype/bank_clearance/bank_clearance.js index 7e57c2fc47..ceba99a56a 100644 --- a/erpnext/accounts/doctype/bank_clearance/bank_clearance.js +++ b/erpnext/accounts/doctype/bank_clearance/bank_clearance.js @@ -37,6 +37,14 @@ frappe.ui.form.on("Bank Clearance", { refresh: function(frm) { frm.disable_save(); + + if (frm.doc.account && frm.doc.from_date && frm.doc.to_date) { + frm.add_custom_button(__('Get Payment Entries'), () => + frm.trigger("get_payment_entries") + ); + + frm.change_custom_button_type('Get Payment Entries', null, 'primary'); + } }, update_clearance_date: function(frm) { @@ -46,22 +54,30 @@ frappe.ui.form.on("Bank Clearance", { callback: function(r, rt) { frm.refresh_field("payment_entries"); frm.refresh_fields(); + + if (!frm.doc.payment_entries.length) { + frm.change_custom_button_type('Get Payment Entries', null, 'primary'); + frm.change_custom_button_type('Update Clearance Date', null, 'default'); + } } }); }, + get_payment_entries: function(frm) { return frappe.call({ method: "get_payment_entries", doc: frm.doc, callback: function(r, rt) { frm.refresh_field("payment_entries"); - frm.refresh_fields(); - $(frm.fields_dict.payment_entries.wrapper).find("[data-fieldname=amount]").each(function(i,v){ - if (i !=0){ - $(v).addClass("text-right") - } - }) + if (frm.doc.payment_entries.length) { + frm.add_custom_button(__('Update Clearance Date'), () => + frm.trigger("update_clearance_date") + ); + + frm.change_custom_button_type('Get Payment Entries', null, 'default'); + frm.change_custom_button_type('Update Clearance Date', null, 'primary'); + } } }); } diff --git a/erpnext/accounts/doctype/bank_clearance/bank_clearance.json b/erpnext/accounts/doctype/bank_clearance/bank_clearance.json index a436d1effb..591d01949b 100644 --- a/erpnext/accounts/doctype/bank_clearance/bank_clearance.json +++ b/erpnext/accounts/doctype/bank_clearance/bank_clearance.json @@ -1,4 +1,5 @@ { + "actions": [], "allow_copy": 1, "creation": "2013-01-10 16:34:05", "doctype": "DocType", @@ -13,11 +14,8 @@ "bank_account", "include_reconciled_entries", "include_pos_transactions", - "get_payment_entries", "section_break_10", - "payment_entries", - "update_clearance_date", - "total_amount" + "payment_entries" ], "fields": [ { @@ -76,11 +74,6 @@ "fieldtype": "Check", "label": "Include POS Transactions" }, - { - "fieldname": "get_payment_entries", - "fieldtype": "Button", - "label": "Get Payment Entries" - }, { "fieldname": "section_break_10", "fieldtype": "Section Break" @@ -91,25 +84,14 @@ "fieldtype": "Table", "label": "Payment Entries", "options": "Bank Clearance Detail" - }, - { - "fieldname": "update_clearance_date", - "fieldtype": "Button", - "label": "Update Clearance Date" - }, - { - "fieldname": "total_amount", - "fieldtype": "Currency", - "label": "Total Amount", - "options": "account_currency", - "read_only": 1 } ], "hide_toolbar": 1, "icon": "fa fa-check", "idx": 1, "issingle": 1, - "modified": "2020-04-06 16:12:06.628008", + "links": [], + "modified": "2022-11-28 17:24:13.008692", "modified_by": "Administrator", "module": "Accounts", "name": "Bank Clearance", @@ -126,5 +108,6 @@ "quick_entry": 1, "read_only": 1, "sort_field": "modified", - "sort_order": "ASC" + "sort_order": "ASC", + "states": [] } \ No newline at end of file diff --git a/erpnext/accounts/doctype/bank_clearance/bank_clearance.py b/erpnext/accounts/doctype/bank_clearance/bank_clearance.py index 78c3526654..80878ac506 100644 --- a/erpnext/accounts/doctype/bank_clearance/bank_clearance.py +++ b/erpnext/accounts/doctype/bank_clearance/bank_clearance.py @@ -179,7 +179,6 @@ class BankClearance(Document): ) self.set("payment_entries", []) - self.total_amount = 0.0 default_currency = erpnext.get_default_currency() for d in entries: @@ -198,7 +197,6 @@ class BankClearance(Document): d.pop("debit") d.pop("account_currency") row.update(d) - self.total_amount += flt(amount) @frappe.whitelist() def update_clearance_date(self): diff --git a/erpnext/accounts/doctype/pos_invoice/pos_invoice.js b/erpnext/accounts/doctype/pos_invoice/pos_invoice.js index 15c292211c..56b857992c 100644 --- a/erpnext/accounts/doctype/pos_invoice/pos_invoice.js +++ b/erpnext/accounts/doctype/pos_invoice/pos_invoice.js @@ -5,6 +5,8 @@ frappe.provide("erpnext.accounts"); erpnext.selling.POSInvoiceController = class POSInvoiceController extends erpnext.selling.SellingController { + settings = {}; + setup(doc) { this.setup_posting_date_time_check(); super.setup(doc); @@ -12,21 +14,37 @@ erpnext.selling.POSInvoiceController = class POSInvoiceController extends erpnex company() { erpnext.accounts.dimensions.update_dimension(this.frm, this.frm.doctype); + this.frm.set_value("set_warehouse", ""); + this.frm.set_value("taxes_and_charges", ""); } onload(doc) { super.onload(); this.frm.ignore_doctypes_on_cancel_all = ['POS Invoice Merge Log', 'POS Closing Entry']; + if(doc.__islocal && doc.is_pos && frappe.get_route_str() !== 'point-of-sale') { this.frm.script_manager.trigger("is_pos"); this.frm.refresh_fields(); } + this.frm.set_query("set_warehouse", function(doc) { + return { + filters: { + company: doc.company ? doc.company : '', + } + } + }); + erpnext.accounts.dimensions.setup_dimension_filters(this.frm, this.frm.doctype); } + onload_post_render(frm) { + this.pos_profile(frm); + } + refresh(doc) { super.refresh(); + if (doc.docstatus == 1 && !doc.is_return) { this.frm.add_custom_button(__('Return'), this.make_sales_return, __('Create')); this.frm.page.set_inner_btn_group_as_primary(__('Create')); @@ -36,6 +54,18 @@ erpnext.selling.POSInvoiceController = class POSInvoiceController extends erpnex this.frm.return_print_format = "Sales Invoice Return"; this.frm.set_value('consolidated_invoice', ''); } + + this.frm.set_query("customer", (function () { + const customer_groups = this.settings?.customer_groups; + + if (!customer_groups?.length) return {}; + + return { + filters: { + customer_group: ["in", customer_groups], + } + } + }).bind(this)); } is_pos() { @@ -88,6 +118,25 @@ erpnext.selling.POSInvoiceController = class POSInvoiceController extends erpnex }); } + pos_profile(frm) { + if (!frm.pos_profile || frm.pos_profile == '') { + this.update_customer_groups_settings([]); + return; + } + + frappe.call({ + method: "erpnext.selling.page.point_of_sale.point_of_sale.get_pos_profile_data", + args: { "pos_profile": frm.pos_profile }, + callback: ({ message: profile }) => { + this.update_customer_groups_settings(profile?.customer_groups); + }, + }); + } + + update_customer_groups_settings(customer_groups) { + this.settings.customer_groups = customer_groups?.map((group) => group.name) + } + amount(){ this.write_off_outstanding_amount_automatically() } diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json index a5981fdebd..a03157ebd4 100644 --- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json +++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json @@ -69,6 +69,7 @@ "tax_category", "column_break_49", "shipping_rule", + "incoterm", "section_break_51", "taxes", "totals", @@ -1534,13 +1535,19 @@ "oldfieldtype": "Section Break", "options": "fa fa-file-text", "print_hide": 1 + }, + { + "fieldname": "incoterm", + "fieldtype": "Link", + "label": "Incoterm", + "options": "Incoterm" } ], "icon": "fa fa-file-text", "idx": 204, "is_submittable": 1, "links": [], - "modified": "2022-11-22 12:44:29.935567", + "modified": "2022-11-25 12:44:29.935567", "modified_by": "Administrator", "module": "Accounts", "name": "Purchase Invoice", diff --git a/erpnext/accounts/doctype/purchase_invoice_item/purchase_invoice_item.json b/erpnext/accounts/doctype/purchase_invoice_item/purchase_invoice_item.json index 5c1cb0dcc6..1fa7e7f3fc 100644 --- a/erpnext/accounts/doctype/purchase_invoice_item/purchase_invoice_item.json +++ b/erpnext/accounts/doctype/purchase_invoice_item/purchase_invoice_item.json @@ -40,7 +40,6 @@ "discount_amount", "base_rate_with_margin", "sec_break2", - "apply_tds", "rate", "amount", "item_tax_template", @@ -50,6 +49,7 @@ "pricing_rules", "stock_uom_rate", "is_free_item", + "apply_tds", "section_break_22", "net_rate", "net_amount", @@ -871,16 +871,16 @@ "read_only": 1 }, { - "default": "1", - "fieldname": "apply_tds", - "fieldtype": "Check", - "label": "Apply TDS" + "default": "1", + "fieldname": "apply_tds", + "fieldtype": "Check", + "label": "Apply TDS" } ], "idx": 1, "istable": 1, "links": [], - "modified": "2022-10-26 16:05:37.304788", + "modified": "2022-11-29 13:01:20.438217", "modified_by": "Administrator", "module": "Accounts", "name": "Purchase Invoice Item", diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.json b/erpnext/accounts/doctype/sales_invoice/sales_invoice.json index dc2f9a9bc6..18d2b5c995 100644 --- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.json +++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.json @@ -64,6 +64,7 @@ "taxes_and_charges", "column_break_38", "shipping_rule", + "incoterm", "column_break_55", "tax_category", "section_break_40", @@ -2114,6 +2115,12 @@ "label": "Repost Required", "no_copy": 1, "read_only": 1 + }, + { + "fieldname": "incoterm", + "fieldtype": "Link", + "label": "Incoterm", + "options": "Incoterm" } ], "icon": "fa fa-file-text", @@ -2126,7 +2133,7 @@ "link_fieldname": "consolidated_invoice" } ], - "modified": "2022-11-15 09:33:47.870616", + "modified": "2022-11-17 17:17:10.883487", "modified_by": "Administrator", "module": "Accounts", "name": "Sales Invoice", diff --git a/erpnext/accounts/report/tds_computation_summary/tds_computation_summary.py b/erpnext/accounts/report/tds_computation_summary/tds_computation_summary.py index db3d5d44a0..c6aa21cc86 100644 --- a/erpnext/accounts/report/tds_computation_summary/tds_computation_summary.py +++ b/erpnext/accounts/report/tds_computation_summary/tds_computation_summary.py @@ -14,9 +14,17 @@ def execute(filters=None): filters.naming_series = frappe.db.get_single_value("Buying Settings", "supp_master_name") columns = get_columns(filters) - tds_docs, tds_accounts, tax_category_map, journal_entry_party_map = get_tds_docs(filters) + ( + tds_docs, + tds_accounts, + tax_category_map, + journal_entry_party_map, + invoice_total_map, + ) = get_tds_docs(filters) - res = get_result(filters, tds_docs, tds_accounts, tax_category_map, journal_entry_party_map) + res = get_result( + filters, tds_docs, tds_accounts, tax_category_map, journal_entry_party_map, invoice_total_map + ) final_result = group_by_supplier_and_category(res) return columns, final_result diff --git a/erpnext/accounts/report/tds_payable_monthly/tds_payable_monthly.py b/erpnext/accounts/report/tds_payable_monthly/tds_payable_monthly.py index f2809a99c5..98838907be 100644 --- a/erpnext/accounts/report/tds_payable_monthly/tds_payable_monthly.py +++ b/erpnext/accounts/report/tds_payable_monthly/tds_payable_monthly.py @@ -8,11 +8,19 @@ from frappe import _ def execute(filters=None): validate_filters(filters) - tds_docs, tds_accounts, tax_category_map, journal_entry_party_map = get_tds_docs(filters) + ( + tds_docs, + tds_accounts, + tax_category_map, + journal_entry_party_map, + invoice_net_total_map, + ) = get_tds_docs(filters) columns = get_columns(filters) - res = get_result(filters, tds_docs, tds_accounts, tax_category_map, journal_entry_party_map) + res = get_result( + filters, tds_docs, tds_accounts, tax_category_map, journal_entry_party_map, invoice_net_total_map + ) return columns, res @@ -22,7 +30,9 @@ def validate_filters(filters): frappe.throw(_("From Date must be before To Date")) -def get_result(filters, tds_docs, tds_accounts, tax_category_map, journal_entry_party_map): +def get_result( + filters, tds_docs, tds_accounts, tax_category_map, journal_entry_party_map, invoice_net_total_map +): supplier_map = get_supplier_pan_map() tax_rate_map = get_tax_rate_map(filters) gle_map = get_gle_map(tds_docs) @@ -50,7 +60,10 @@ def get_result(filters, tds_docs, tds_accounts, tax_category_map, journal_entry_ if entry.account in tds_accounts: tds_deducted += entry.credit - entry.debit - total_amount_credited += entry.credit + if invoice_net_total_map.get(name): + total_amount_credited = invoice_net_total_map.get(name) + else: + total_amount_credited += entry.credit if tds_deducted: row = { @@ -179,9 +192,10 @@ def get_tds_docs(filters): purchase_invoices = [] payment_entries = [] journal_entries = [] - tax_category_map = {} - or_filters = {} - journal_entry_party_map = {} + tax_category_map = frappe._dict() + invoice_net_total_map = frappe._dict() + or_filters = frappe._dict() + journal_entry_party_map = frappe._dict() bank_accounts = frappe.get_all("Account", {"is_group": 0, "account_type": "Bank"}, pluck="name") tds_accounts = frappe.get_all( @@ -218,16 +232,22 @@ def get_tds_docs(filters): tds_documents.append(d.voucher_no) if purchase_invoices: - get_tax_category_map(purchase_invoices, "Purchase Invoice", tax_category_map) + get_doc_info(purchase_invoices, "Purchase Invoice", tax_category_map, invoice_net_total_map) if payment_entries: - get_tax_category_map(payment_entries, "Payment Entry", tax_category_map) + get_doc_info(payment_entries, "Payment Entry", tax_category_map) if journal_entries: journal_entry_party_map = get_journal_entry_party_map(journal_entries) - get_tax_category_map(journal_entries, "Journal Entry", tax_category_map) + get_doc_info(journal_entries, "Journal Entry", tax_category_map) - return tds_documents, tds_accounts, tax_category_map, journal_entry_party_map + return ( + tds_documents, + tds_accounts, + tax_category_map, + journal_entry_party_map, + invoice_net_total_map, + ) def get_journal_entry_party_map(journal_entries): @@ -244,17 +264,18 @@ def get_journal_entry_party_map(journal_entries): return journal_entry_party_map -def get_tax_category_map(vouchers, doctype, tax_category_map): - tax_category_map.update( - frappe._dict( - frappe.get_all( - doctype, - filters={"name": ("in", vouchers)}, - fields=["name", "tax_withholding_category"], - as_list=1, - ) - ) - ) +def get_doc_info(vouchers, doctype, tax_category_map, invoice_net_total_map=None): + if doctype == "Purchase Invoice": + fields = ["name", "tax_withholding_category", "base_tax_withholding_net_total"] + else: + fields = ["name", "tax_withholding_category"] + + entries = frappe.get_all(doctype, filters={"name": ("in", vouchers)}, fields=fields) + + for entry in entries: + tax_category_map.update({entry.name: entry.tax_withholding_category}) + if doctype == "Purchase Invoice": + invoice_net_total_map.update({entry.name: entry.base_tax_withholding_net_total}) def get_tax_rate_map(filters): diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.json b/erpnext/buying/doctype/purchase_order/purchase_order.json index e2a70c21be..93496261aa 100644 --- a/erpnext/buying/doctype/purchase_order/purchase_order.json +++ b/erpnext/buying/doctype/purchase_order/purchase_order.json @@ -67,6 +67,7 @@ "tax_category", "column_break_50", "shipping_rule", + "incoterm", "section_break_52", "taxes", "totals", @@ -1249,13 +1250,19 @@ { "fieldname": "column_break_103", "fieldtype": "Column Break" + }, + { + "fieldname": "incoterm", + "fieldtype": "Link", + "label": "Incoterm", + "options": "Incoterm" } ], "icon": "fa fa-file-text", "idx": 105, "is_submittable": 1, "links": [], - "modified": "2022-11-17 12:34:36.033363", + "modified": "2022-11-17 17:28:07.729943", "modified_by": "Administrator", "module": "Buying", "name": "Purchase Order", diff --git a/erpnext/buying/doctype/purchase_order_item/purchase_order_item.json b/erpnext/buying/doctype/purchase_order_item/purchase_order_item.json index d471783ab9..c645b04e12 100644 --- a/erpnext/buying/doctype/purchase_order_item/purchase_order_item.json +++ b/erpnext/buying/doctype/purchase_order_item/purchase_order_item.json @@ -44,7 +44,6 @@ "discount_amount", "base_rate_with_margin", "sec_break2", - "apply_tds", "rate", "amount", "item_tax_template", @@ -54,6 +53,7 @@ "pricing_rules", "stock_uom_rate", "is_free_item", + "apply_tds", "section_break_29", "net_rate", "net_amount", @@ -902,7 +902,7 @@ "index_web_pages_for_search": 1, "istable": 1, "links": [], - "modified": "2022-10-26 16:47:41.364387", + "modified": "2022-11-29 16:47:41.364387", "modified_by": "Administrator", "module": "Buying", "name": "Purchase Order Item", diff --git a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js index 31a4837d46..98c7dc9bd3 100644 --- a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js +++ b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js @@ -22,6 +22,13 @@ frappe.ui.form.on("Request for Quotation",{ } }; } + + frm.set_query('warehouse', 'items', () => ({ + filters: { + company: frm.doc.company, + is_group: 0 + } + })); }, onload: function(frm) { diff --git a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.json b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.json index 083cab78f7..019d45b568 100644 --- a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.json +++ b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.json @@ -28,6 +28,7 @@ "sec_break_email_2", "message_for_supplier", "terms_section_break", + "incoterm", "tc_name", "terms", "printing_settings", @@ -271,13 +272,19 @@ "fieldname": "schedule_date", "fieldtype": "Date", "label": "Required Date" + }, + { + "fieldname": "incoterm", + "fieldtype": "Link", + "label": "Incoterm", + "options": "Incoterm" } ], "icon": "fa fa-shopping-cart", "index_web_pages_for_search": 1, "is_submittable": 1, "links": [], - "modified": "2022-04-06 17:47:49.909000", + "modified": "2022-11-17 17:26:33.770993", "modified_by": "Administrator", "module": "Buying", "name": "Request for Quotation", @@ -345,5 +352,6 @@ "search_fields": "status, transaction_date", "show_name_in_global_search": 1, "sort_field": "modified", - "sort_order": "DESC" -} + "sort_order": "DESC", + "states": [] +} \ No newline at end of file diff --git a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.json b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.json index 16365618ca..7776ab8ec8 100644 --- a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.json +++ b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.json @@ -45,6 +45,7 @@ "tax_category", "column_break_36", "shipping_rule", + "incoterm", "section_break_38", "taxes", "totals", @@ -823,6 +824,12 @@ { "fieldname": "column_break_85", "fieldtype": "Column Break" + }, + { + "fieldname": "incoterm", + "fieldtype": "Link", + "label": "Incoterm", + "options": "Incoterm" } ], "icon": "fa fa-shopping-cart", @@ -830,7 +837,7 @@ "index_web_pages_for_search": 1, "is_submittable": 1, "links": [], - "modified": "2022-09-27 18:20:09.462037", + "modified": "2022-11-17 17:27:32.179686", "modified_by": "Administrator", "module": "Buying", "name": "Supplier Quotation", diff --git a/erpnext/controllers/accounts_controller.py b/erpnext/controllers/accounts_controller.py index 1849e8b3b5..b7a80c1019 100644 --- a/erpnext/controllers/accounts_controller.py +++ b/erpnext/controllers/accounts_controller.py @@ -239,6 +239,14 @@ class AccountsController(TransactionBase): else: item.set(field_map.get(self.doctype), default_deferred_account) + def validate_auto_repeat_subscription_dates(self): + if ( + self.get("from_date") + and self.get("to_date") + and getdate(self.from_date) > getdate(self.to_date) + ): + frappe.throw(_("To Date cannot be before From Date"), title=_("Invalid Auto Repeat Date")) + def validate_deferred_start_and_end_date(self): for d in self.items: if d.get("enable_deferred_revenue") or d.get("enable_deferred_expense"): diff --git a/erpnext/controllers/buying_controller.py b/erpnext/controllers/buying_controller.py index 48fe7cb083..051460474a 100644 --- a/erpnext/controllers/buying_controller.py +++ b/erpnext/controllers/buying_controller.py @@ -41,6 +41,7 @@ class BuyingController(SubcontractingController): self.validate_from_warehouse() self.set_supplier_address() self.validate_asset_return() + self.validate_auto_repeat_subscription_dates() if self.doctype == "Purchase Invoice": self.validate_purchase_receipt_if_update_stock() diff --git a/erpnext/controllers/selling_controller.py b/erpnext/controllers/selling_controller.py index 88d2f0687d..965335b1a3 100644 --- a/erpnext/controllers/selling_controller.py +++ b/erpnext/controllers/selling_controller.py @@ -40,6 +40,7 @@ class SellingController(StockController): self.set_customer_address() self.validate_for_duplicate_items() self.validate_target_warehouse() + self.validate_auto_repeat_subscription_dates() def set_missing_values(self, for_validate=False): diff --git a/erpnext/crm/utils.py b/erpnext/crm/utils.py index 433d974a44..737452021c 100644 --- a/erpnext/crm/utils.py +++ b/erpnext/crm/utils.py @@ -120,7 +120,7 @@ def link_open_tasks(ref_doctype, ref_docname, doc): todo_doc = frappe.get_doc("ToDo", todo.name) todo_doc.reference_type = doc.doctype todo_doc.reference_name = doc.name - todo_doc.db_update() + todo_doc.save() def link_open_events(ref_doctype, ref_docname, doc): diff --git a/erpnext/loan_management/doctype/loan_disbursement/loan_disbursement.py b/erpnext/loan_management/doctype/loan_disbursement/loan_disbursement.py index b73dee26b9..51bf327c81 100644 --- a/erpnext/loan_management/doctype/loan_disbursement/loan_disbursement.py +++ b/erpnext/loan_management/doctype/loan_disbursement/loan_disbursement.py @@ -191,7 +191,9 @@ def get_total_pledged_security_value(loan): for security, qty in pledged_securities.items(): after_haircut_percentage = 100 - hair_cut_map.get(security) - security_value += (loan_security_price_map.get(security) * qty * after_haircut_percentage) / 100 + security_value += ( + loan_security_price_map.get(security, 0) * qty * after_haircut_percentage + ) / 100 return security_value diff --git a/erpnext/manufacturing/doctype/material_request_plan_item/material_request_plan_item.json b/erpnext/manufacturing/doctype/material_request_plan_item/material_request_plan_item.json index 27d7c4175e..8c61d545b8 100644 --- a/erpnext/manufacturing/doctype/material_request_plan_item/material_request_plan_item.json +++ b/erpnext/manufacturing/doctype/material_request_plan_item/material_request_plan_item.json @@ -47,7 +47,7 @@ "fieldtype": "Link", "in_list_view": 1, "in_standard_filter": 1, - "label": "Warehouse", + "label": "For Warehouse", "options": "Warehouse", "reqd": 1 }, @@ -173,7 +173,7 @@ ], "istable": 1, "links": [], - "modified": "2021-08-23 18:17:58.400462", + "modified": "2022-11-26 14:59:25.879631", "modified_by": "Administrator", "module": "Manufacturing", "name": "Material Request Plan Item", @@ -182,5 +182,6 @@ "quick_entry": 1, "sort_field": "modified", "sort_order": "DESC", + "states": [], "track_changes": 1 } \ No newline at end of file diff --git a/erpnext/manufacturing/doctype/production_plan/production_plan.js b/erpnext/manufacturing/doctype/production_plan/production_plan.js index 59ddf1f0c5..62715e6565 100644 --- a/erpnext/manufacturing/doctype/production_plan/production_plan.js +++ b/erpnext/manufacturing/doctype/production_plan/production_plan.js @@ -3,13 +3,13 @@ frappe.ui.form.on('Production Plan', { - before_save: function(frm) { + before_save(frm) { // preserve temporary names on production plan item to re-link sub-assembly items frm.doc.po_items.forEach(item => { item.temporary_name = item.name; }); }, - setup: function(frm) { + setup(frm) { frm.custom_make_buttons = { 'Work Order': 'Work Order / Subcontract PO', 'Material Request': 'Material Request', @@ -70,7 +70,7 @@ frappe.ui.form.on('Production Plan', { } }, - refresh: function(frm) { + refresh(frm) { if (frm.doc.docstatus === 1) { frm.trigger("show_progress"); @@ -158,7 +158,7 @@ frappe.ui.form.on('Production Plan', { set_field_options("projected_qty_formula", projected_qty_formula); }, - close_open_production_plan: (frm, close=false) => { + close_open_production_plan(frm, close=false) { frappe.call({ method: "set_status", freeze: true, @@ -170,7 +170,7 @@ frappe.ui.form.on('Production Plan', { }); }, - make_work_order: function(frm) { + make_work_order(frm) { frappe.call({ method: "make_work_order", freeze: true, @@ -181,7 +181,7 @@ frappe.ui.form.on('Production Plan', { }); }, - make_material_request: function(frm) { + make_material_request(frm) { frappe.confirm(__("Do you want to submit the material request"), function() { @@ -193,7 +193,7 @@ frappe.ui.form.on('Production Plan', { ); }, - create_material_request: function(frm, submit) { + create_material_request(frm, submit) { frm.doc.submit_material_request = submit; frappe.call({ @@ -206,7 +206,7 @@ frappe.ui.form.on('Production Plan', { }); }, - get_sales_orders: function(frm) { + get_sales_orders(frm) { frappe.call({ method: "get_open_sales_orders", doc: frm.doc, @@ -216,7 +216,7 @@ frappe.ui.form.on('Production Plan', { }); }, - get_material_request: function(frm) { + get_material_request(frm) { frappe.call({ method: "get_pending_material_requests", doc: frm.doc, @@ -226,7 +226,7 @@ frappe.ui.form.on('Production Plan', { }); }, - get_items: function (frm) { + get_items(frm) { frm.clear_table('prod_plan_references'); frappe.call({ @@ -238,7 +238,7 @@ frappe.ui.form.on('Production Plan', { } }); }, - combine_items: function (frm) { + combine_items(frm) { frm.clear_table("prod_plan_references"); frappe.call({ @@ -254,14 +254,14 @@ frappe.ui.form.on('Production Plan', { }); }, - combine_sub_items: (frm) => { + combine_sub_items(frm) { if (frm.doc.sub_assembly_items.length > 0) { frm.clear_table("sub_assembly_items"); frm.trigger("get_sub_assembly_items"); } }, - get_sub_assembly_items: function(frm) { + get_sub_assembly_items(frm) { frm.dirty(); frappe.call({ @@ -274,9 +274,25 @@ frappe.ui.form.on('Production Plan', { }); }, - get_items_for_mr: function(frm) { + toggle_for_warehouse(frm) { + frm.toggle_reqd("for_warehouse", true); + }, + + get_items_for_mr(frm) { if (!frm.doc.for_warehouse) { - frappe.throw(__("To make material requests, 'Make Material Request for Warehouse' field is mandatory")); + frm.trigger("toggle_for_warehouse"); + frappe.throw(__("Select the Warehouse")); + } + + frm.events.get_items_for_material_requests(frm, [{ + warehouse: frm.doc.for_warehouse + }]); + }, + + transfer_materials(frm) { + if (!frm.doc.for_warehouse) { + frm.trigger("toggle_for_warehouse"); + frappe.throw(__("Select the Warehouse")); } if (frm.doc.ignore_existing_ordered_qty) { @@ -287,18 +303,10 @@ frappe.ui.form.on('Production Plan', { title: title, fields: [ { - 'label': __('Target Warehouse'), - 'fieldtype': 'Link', - 'fieldname': 'target_warehouse', - 'read_only': true, - 'default': frm.doc.for_warehouse - }, - { - 'label': __('Source Warehouses (Optional)'), + 'label': __('Transfer From Warehouses'), 'fieldtype': 'Table MultiSelect', 'fieldname': 'warehouses', 'options': 'Production Plan Material Request Warehouse', - 'description': __('If source warehouse selected then system will create the material request with type Material Transfer from Source to Target warehouse. If not selected then will create the material request with type Purchase for the target warehouse.'), get_query: function () { return { filters: { @@ -307,6 +315,13 @@ frappe.ui.form.on('Production Plan', { }; }, }, + { + 'label': __('For Warehouse'), + 'fieldtype': 'Link', + 'fieldname': 'target_warehouse', + 'read_only': true, + 'default': frm.doc.for_warehouse + } ] }); @@ -320,8 +335,8 @@ frappe.ui.form.on('Production Plan', { } }, - get_items_for_material_requests: function(frm, warehouses) { - const set_fields = ['actual_qty', 'item_code','item_name', 'description', 'uom', 'from_warehouse', + get_items_for_material_requests(frm, warehouses) { + let set_fields = ['actual_qty', 'item_code','item_name', 'description', 'uom', 'from_warehouse', 'min_order_qty', 'required_bom_qty', 'quantity', 'sales_order', 'warehouse', 'projected_qty', 'ordered_qty', 'reserved_qty_for_production', 'material_request_type']; @@ -335,13 +350,13 @@ frappe.ui.form.on('Production Plan', { callback: function(r) { if(r.message) { frm.set_value('mr_items', []); - $.each(r.message, function(i, d) { - var item = frm.add_child('mr_items'); - for (let key in d) { - if (d[key] && in_list(set_fields, key)) { - item[key] = d[key]; + r.message.forEach(row => { + let d = frm.add_child('mr_items'); + set_fields.forEach(field => { + if (row[field]) { + d[field] = row[field]; } - } + }); }); } refresh_field('mr_items'); @@ -349,13 +364,7 @@ frappe.ui.form.on('Production Plan', { }); }, - for_warehouse: function(frm) { - if (frm.doc.mr_items && frm.doc.for_warehouse) { - frm.trigger("get_items_for_mr"); - } - }, - - download_materials_required: function(frm) { + download_materials_required(frm) { const fields = [{ fieldname: 'warehouses', fieldtype: 'Table MultiSelect', @@ -381,7 +390,7 @@ frappe.ui.form.on('Production Plan', { }, __('Select Warehouses to get Stock for Materials Planning'), __('Get Stock')); }, - show_progress: function(frm) { + show_progress(frm) { var bars = []; var message = ''; var title = ''; @@ -416,7 +425,7 @@ frappe.ui.form.on('Production Plan', { }); frappe.ui.form.on("Production Plan Item", { - item_code: function(frm, cdt, cdn) { + item_code(frm, cdt, cdn) { const row = locals[cdt][cdn]; if (row.item_code) { frappe.call({ @@ -435,7 +444,7 @@ frappe.ui.form.on("Production Plan Item", { }); frappe.ui.form.on("Material Request Plan Item", { - warehouse: function(frm, cdt, cdn) { + warehouse(frm, cdt, cdn) { const row = locals[cdt][cdn]; if (row.warehouse && row.item_code && frm.doc.company) { frappe.call({ diff --git a/erpnext/manufacturing/doctype/production_plan/production_plan.json b/erpnext/manufacturing/doctype/production_plan/production_plan.json index 85f98430cd..2624daa41e 100644 --- a/erpnext/manufacturing/doctype/production_plan/production_plan.json +++ b/erpnext/manufacturing/doctype/production_plan/production_plan.json @@ -38,6 +38,8 @@ "get_sub_assembly_items", "combine_sub_items", "sub_assembly_items", + "download_materials_request_plan_section_section", + "download_materials_required", "material_request_planning", "include_non_stock_items", "include_subcontracted_items", @@ -45,8 +47,8 @@ "ignore_existing_ordered_qty", "column_break_25", "for_warehouse", - "download_materials_required", "get_items_for_mr", + "transfer_materials", "section_break_27", "mr_items", "other_details", @@ -206,7 +208,7 @@ { "fieldname": "material_request_planning", "fieldtype": "Section Break", - "label": "Material Requirement Planning" + "label": "Material Request Planning" }, { "default": "1", @@ -235,12 +237,12 @@ "depends_on": "eval:!doc.__islocal", "fieldname": "download_materials_required", "fieldtype": "Button", - "label": "Download Required Materials" + "label": "Download Materials Request Plan" }, { "fieldname": "get_items_for_mr", "fieldtype": "Button", - "label": "Get Raw Materials For Production" + "label": "Get Raw Materials for Purchase" }, { "fieldname": "section_break_27", @@ -304,7 +306,7 @@ { "fieldname": "for_warehouse", "fieldtype": "Link", - "label": "Make Material Request for Warehouse", + "label": "Raw Materials Warehouse", "options": "Warehouse" }, { @@ -378,13 +380,24 @@ "fieldname": "combine_sub_items", "fieldtype": "Check", "label": "Consolidate Sub Assembly Items" + }, + { + "fieldname": "transfer_materials", + "fieldtype": "Button", + "label": "Get Raw Materials for Transfer" + }, + { + "collapsible": 1, + "fieldname": "download_materials_request_plan_section_section", + "fieldtype": "Section Break", + "label": "Download Materials Request Plan Section" } ], "icon": "fa fa-calendar", "index_web_pages_for_search": 1, "is_submittable": 1, "links": [], - "modified": "2022-03-25 09:15:25.017664", + "modified": "2022-11-26 14:51:08.774372", "modified_by": "Administrator", "module": "Manufacturing", "name": "Production Plan", diff --git a/erpnext/manufacturing/doctype/production_plan/production_plan.py b/erpnext/manufacturing/doctype/production_plan/production_plan.py index caff0a3e15..0cc0f80cf1 100644 --- a/erpnext/manufacturing/doctype/production_plan/production_plan.py +++ b/erpnext/manufacturing/doctype/production_plan/production_plan.py @@ -312,6 +312,9 @@ class ProductionPlan(Document): def add_items(self, items): refs = {} for data in items: + if not data.pending_qty: + continue + item_details = get_item_details(data.item_code) if self.combine_items: if item_details.bom_no in refs: @@ -518,6 +521,9 @@ class ProductionPlan(Document): subcontracted_po.setdefault(row.supplier, []).append(row) continue + if row.type_of_manufacturing == "Material Request": + continue + work_order_data = { "wip_warehouse": default_warehouses.get("wip_warehouse"), "fg_warehouse": default_warehouses.get("fg_warehouse"), @@ -1158,6 +1164,7 @@ def get_bin_details(row, company, for_warehouse=None, all_warehouse=False): subquery = frappe.qb.from_(wh).select(wh.name).where(wh.company == company) + warehouse = "" if not all_warehouse: warehouse = for_warehouse or row.get("source_warehouse") or row.get("default_warehouse") @@ -1223,6 +1230,21 @@ def get_items_for_material_requests(doc, warehouses=None, get_parent_warehouse_d doc["mr_items"] = [] po_items = doc.get("po_items") if doc.get("po_items") else doc.get("items") + + if doc.get("sub_assembly_items"): + for sa_row in doc.sub_assembly_items: + sa_row = frappe._dict(sa_row) + if sa_row.type_of_manufacturing == "Material Request": + po_items.append( + frappe._dict( + { + "item_code": sa_row.production_item, + "required_qty": sa_row.qty, + "include_exploded_items": 0, + } + ) + ) + # Check for empty table or empty rows if not po_items or not [row.get("item_code") for row in po_items if row.get("item_code")]: frappe.throw( diff --git a/erpnext/manufacturing/doctype/production_plan/test_production_plan.py b/erpnext/manufacturing/doctype/production_plan/test_production_plan.py index a6d034d8cb..2bf14c24cf 100644 --- a/erpnext/manufacturing/doctype/production_plan/test_production_plan.py +++ b/erpnext/manufacturing/doctype/production_plan/test_production_plan.py @@ -840,6 +840,34 @@ class TestProductionPlan(FrappeTestCase): self.assertEqual(row.uom, "Nos") self.assertEqual(row.qty, 1) + def test_material_request_for_sub_assembly_items(self): + from erpnext.manufacturing.doctype.bom.test_bom import create_nested_bom + + bom_tree = { + "Fininshed Goods1 For MR": { + "SubAssembly1 For MR": {"SubAssembly1-1 For MR": {"ChildPart1 For MR": {}}} + } + } + + parent_bom = create_nested_bom(bom_tree, prefix="") + plan = create_production_plan( + item_code=parent_bom.item, planned_qty=10, ignore_existing_ordered_qty=1, do_not_submit=1 + ) + + plan.get_sub_assembly_items() + + mr_items = [] + for row in plan.sub_assembly_items: + mr_items.append(row.production_item) + row.type_of_manufacturing = "Material Request" + + plan.save() + items = get_items_for_material_requests(plan.as_dict()) + + validate_mr_items = [d.get("item_code") for d in items] + for item_code in mr_items: + self.assertTrue(item_code in validate_mr_items) + def create_production_plan(**args): """ diff --git a/erpnext/manufacturing/doctype/production_plan_item/production_plan_item.json b/erpnext/manufacturing/doctype/production_plan_item/production_plan_item.json index df5862fcac..0688278e09 100644 --- a/erpnext/manufacturing/doctype/production_plan_item/production_plan_item.json +++ b/erpnext/manufacturing/doctype/production_plan_item/production_plan_item.json @@ -83,7 +83,7 @@ "fieldname": "warehouse", "fieldtype": "Link", "in_list_view": 1, - "label": "For Warehouse", + "label": "FG Warehouse", "options": "Warehouse" }, { @@ -216,7 +216,7 @@ "idx": 1, "istable": 1, "links": [], - "modified": "2022-03-24 04:54:09.940224", + "modified": "2022-11-25 14:15:40.061514", "modified_by": "Administrator", "module": "Manufacturing", "name": "Production Plan Item", diff --git a/erpnext/manufacturing/doctype/production_plan_sub_assembly_item/production_plan_sub_assembly_item.json b/erpnext/manufacturing/doctype/production_plan_sub_assembly_item/production_plan_sub_assembly_item.json index 45ea26c3a8..4eb6bf6ecf 100644 --- a/erpnext/manufacturing/doctype/production_plan_sub_assembly_item/production_plan_sub_assembly_item.json +++ b/erpnext/manufacturing/doctype/production_plan_sub_assembly_item/production_plan_sub_assembly_item.json @@ -169,7 +169,7 @@ "fieldtype": "Select", "in_list_view": 1, "label": "Manufacturing Type", - "options": "In House\nSubcontract" + "options": "In House\nSubcontract\nMaterial Request" }, { "fieldname": "supplier", @@ -188,7 +188,7 @@ "index_web_pages_for_search": 1, "istable": 1, "links": [], - "modified": "2022-01-30 21:31:10.527559", + "modified": "2022-11-28 13:50:15.116082", "modified_by": "Administrator", "module": "Manufacturing", "name": "Production Plan Sub Assembly Item", diff --git a/erpnext/manufacturing/report/job_card_summary/job_card_summary.js b/erpnext/manufacturing/report/job_card_summary/job_card_summary.js index cb771e4994..782ce8110a 100644 --- a/erpnext/manufacturing/report/job_card_summary/job_card_summary.js +++ b/erpnext/manufacturing/report/job_card_summary/job_card_summary.js @@ -54,11 +54,11 @@ frappe.query_reports["Job Card Summary"] = { options: ["", "Open", "Work In Progress", "Completed", "On Hold"] }, { - label: __("Sales Orders"), - fieldname: "sales_order", + label: __("Work Orders"), + fieldname: "work_order", fieldtype: "MultiSelectList", get_data: function(txt) { - return frappe.db.get_link_options('Sales Order', txt); + return frappe.db.get_link_options('Work Order', txt); } }, { diff --git a/erpnext/manufacturing/report/job_card_summary/job_card_summary.py b/erpnext/manufacturing/report/job_card_summary/job_card_summary.py index 63c2d97d57..8d72ef1f36 100644 --- a/erpnext/manufacturing/report/job_card_summary/job_card_summary.py +++ b/erpnext/manufacturing/report/job_card_summary/job_card_summary.py @@ -36,10 +36,14 @@ def get_data(filters): "total_time_in_mins", ] - for field in ["work_order", "workstation", "operation", "status", "company"]: + for field in ["work_order", "production_item"]: if filters.get(field): query_filters[field] = ("in", filters.get(field)) + for field in ["workstation", "operation", "status", "company"]: + if filters.get(field): + query_filters[field] = filters.get(field) + data = frappe.get_all("Job Card", fields=fields, filters=query_filters) if not data: diff --git a/erpnext/manufacturing/report/work_order_summary/work_order_summary.py b/erpnext/manufacturing/report/work_order_summary/work_order_summary.py index 41ffcbb190..b69ad070e1 100644 --- a/erpnext/manufacturing/report/work_order_summary/work_order_summary.py +++ b/erpnext/manufacturing/report/work_order_summary/work_order_summary.py @@ -39,10 +39,14 @@ def get_data(filters): "lead_time", ] - for field in ["sales_order", "production_item", "status", "company"]: + for field in ["sales_order", "production_item"]: if filters.get(field): query_filters[field] = ("in", filters.get(field)) + for field in ["status", "company"]: + if filters.get(field): + query_filters[field] = filters.get(field) + query_filters["planned_start_date"] = (">=", filters.get("from_date")) query_filters["planned_end_date"] = ("<=", filters.get("to_date")) diff --git a/erpnext/patches.txt b/erpnext/patches.txt index 639809d7ca..166faf9c18 100644 --- a/erpnext/patches.txt +++ b/erpnext/patches.txt @@ -317,3 +317,4 @@ erpnext.patches.v14_0.migrate_remarks_from_gl_to_payment_ledger erpnext.patches.v13_0.update_schedule_type_in_loans erpnext.patches.v14_0.create_accounting_dimensions_for_asset_capitalization erpnext.patches.v14_0.update_partial_tds_fields +erpnext.patches.v14_0.create_incoterms_and_migrate_shipment diff --git a/erpnext/patches/v14_0/create_incoterms_and_migrate_shipment.py b/erpnext/patches/v14_0/create_incoterms_and_migrate_shipment.py new file mode 100644 index 0000000000..6e1e09ad14 --- /dev/null +++ b/erpnext/patches/v14_0/create_incoterms_and_migrate_shipment.py @@ -0,0 +1,31 @@ +import frappe + +from erpnext.setup.doctype.incoterm.incoterm import create_incoterms + + +def execute(): + create_incoterms() + migrate_shipments() + + +def migrate_shipments(): + if not frappe.db.count("Shipment"): + return + + OLD_VALUES = [ + "EXW (Ex Works)", + "FCA (Free Carrier)", + "FOB (Free On Board)", + "FAS (Free Alongside Ship)", + "CPT (Carriage Paid To)", + "CIP (Carriage and Insurance Paid to)", + "CFR (Cost and Freight)", + "DPU (Delivered At Place Unloaded)", + "DAP (Delivered At Place)", + "DDP (Delivered Duty Paid)", + ] + shipment = frappe.qb.DocType("Shipment") + for old_value in OLD_VALUES: + frappe.qb.update(shipment).set(shipment.incoterm, old_value[:3]).where( + shipment.incoterm == old_value + ).run() diff --git a/erpnext/selling/doctype/quotation/quotation.json b/erpnext/selling/doctype/quotation/quotation.json index fa64b1625b..08918f4d61 100644 --- a/erpnext/selling/doctype/quotation/quotation.json +++ b/erpnext/selling/doctype/quotation/quotation.json @@ -48,6 +48,7 @@ "tax_category", "column_break_34", "shipping_rule", + "incoterm", "section_break_36", "taxes", "section_break_39", @@ -1052,13 +1053,19 @@ { "fieldname": "column_break_108", "fieldtype": "Column Break" + }, + { + "fieldname": "incoterm", + "fieldtype": "Link", + "label": "Incoterm", + "options": "Incoterm" } ], "icon": "fa fa-shopping-cart", "idx": 82, "is_submittable": 1, "links": [], - "modified": "2022-10-11 13:06:33.479650", + "modified": "2022-11-17 17:20:54.984348", "modified_by": "Administrator", "module": "Selling", "name": "Quotation", diff --git a/erpnext/selling/doctype/sales_order/sales_order.json b/erpnext/selling/doctype/sales_order/sales_order.json index e6ff39d8d4..9ec32cbfc6 100644 --- a/erpnext/selling/doctype/sales_order/sales_order.json +++ b/erpnext/selling/doctype/sales_order/sales_order.json @@ -63,6 +63,7 @@ "tax_category", "column_break_49", "shipping_rule", + "incoterm", "section_break_40", "taxes", "section_break_43", @@ -1623,13 +1624,19 @@ { "fieldname": "column_break_152", "fieldtype": "Column Break" + }, + { + "fieldname": "incoterm", + "fieldtype": "Link", + "label": "Incoterm", + "options": "Incoterm" } ], "icon": "fa fa-file-text", "idx": 105, "is_submittable": 1, "links": [], - "modified": "2022-10-11 13:06:10.469796", + "modified": "2022-11-17 17:22:00.413878", "modified_by": "Administrator", "module": "Selling", "name": "Sales Order", diff --git a/erpnext/setup/doctype/incoterm/__init__.py b/erpnext/setup/doctype/incoterm/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/erpnext/setup/doctype/incoterm/incoterm.js b/erpnext/setup/doctype/incoterm/incoterm.js new file mode 100644 index 0000000000..bc65123dc1 --- /dev/null +++ b/erpnext/setup/doctype/incoterm/incoterm.js @@ -0,0 +1,8 @@ +// Copyright (c) 2022, Frappe Technologies Pvt. Ltd. and contributors +// For license information, please see license.txt + +// frappe.ui.form.on("Incoterm", { +// refresh(frm) { + +// }, +// }); diff --git a/erpnext/setup/doctype/incoterm/incoterm.json b/erpnext/setup/doctype/incoterm/incoterm.json new file mode 100644 index 0000000000..c547b7c4ff --- /dev/null +++ b/erpnext/setup/doctype/incoterm/incoterm.json @@ -0,0 +1,168 @@ +{ + "actions": [], + "allow_rename": 1, + "autoname": "field:code", + "creation": "2022-11-17 15:17:34.717467", + "default_view": "List", + "doctype": "DocType", + "editable_grid": 1, + "engine": "InnoDB", + "field_order": [ + "code", + "title", + "description" + ], + "fields": [ + { + "fieldname": "code", + "fieldtype": "Data", + "in_list_view": 1, + "label": "Code", + "length": 3, + "reqd": 1, + "unique": 1 + }, + { + "fieldname": "title", + "fieldtype": "Data", + "in_list_view": 1, + "label": "Title", + "reqd": 1 + }, + { + "fieldname": "description", + "fieldtype": "Long Text", + "label": "Description" + } + ], + "links": [ + { + "group": "Selling", + "link_doctype": "Quotation", + "link_fieldname": "incoterm" + }, + { + "group": "Selling", + "link_doctype": "Sales Order", + "link_fieldname": "incoterm" + }, + { + "group": "Buying", + "link_doctype": "Request for Quotation", + "link_fieldname": "incoterm" + }, + { + "group": "Buying", + "link_doctype": "Supplier Quotation", + "link_fieldname": "incoterm" + }, + { + "group": "Buying", + "link_doctype": "Purchase Order", + "link_fieldname": "incoterm" + }, + { + "group": "Stock", + "link_doctype": "Delivery Note", + "link_fieldname": "incoterm" + }, + { + "group": "Stock", + "link_doctype": "Purchase Receipt", + "link_fieldname": "incoterm" + }, + { + "group": "Stock", + "link_doctype": "Shipment", + "link_fieldname": "incoterm" + }, + { + "group": "Accounts", + "link_doctype": "Sales Invoice", + "link_fieldname": "incoterm" + }, + { + "group": "Accounts", + "link_doctype": "Purchase Invoice", + "link_fieldname": "incoterm" + } + ], + "modified": "2022-11-17 22:35:52.084553", + "modified_by": "Administrator", + "module": "Setup", + "name": "Incoterm", + "naming_rule": "By fieldname", + "owner": "Administrator", + "permissions": [ + { + "create": 1, + "delete": 1, + "email": 1, + "export": 1, + "print": 1, + "read": 1, + "report": 1, + "role": "Accounts Manager", + "share": 1, + "write": 1 + }, + { + "create": 1, + "delete": 1, + "email": 1, + "export": 1, + "print": 1, + "read": 1, + "report": 1, + "role": "Sales Manager", + "share": 1, + "write": 1 + }, + { + "create": 1, + "delete": 1, + "email": 1, + "export": 1, + "print": 1, + "read": 1, + "report": 1, + "role": "Purchase Manager", + "share": 1, + "write": 1 + }, + { + "create": 1, + "delete": 1, + "email": 1, + "export": 1, + "print": 1, + "read": 1, + "report": 1, + "role": "Stock Manager", + "share": 1, + "write": 1 + }, + { + "read": 1, + "role": "Purchase User" + }, + { + "read": 1, + "role": "Sales User" + }, + { + "read": 1, + "role": "Accounts User" + }, + { + "read": 1, + "role": "Stock User" + } + ], + "show_title_field_in_link": 1, + "sort_field": "name", + "sort_order": "ASC", + "states": [], + "title_field": "title", + "translated_doctype": 1 +} \ No newline at end of file diff --git a/erpnext/setup/doctype/incoterm/incoterm.py b/erpnext/setup/doctype/incoterm/incoterm.py new file mode 100644 index 0000000000..7e2e622c24 --- /dev/null +++ b/erpnext/setup/doctype/incoterm/incoterm.py @@ -0,0 +1,24 @@ +# Copyright (c) 2022, Frappe Technologies Pvt. Ltd. and contributors +# For license information, please see license.txt + +import frappe +from frappe.model.document import Document + + +class Incoterm(Document): + pass + + +def create_incoterms(): + """Create Incoterm records from incoterms.csv.""" + import os + from csv import DictReader + + with open(os.path.join(os.path.dirname(__file__), "incoterms.csv"), "r") as f: + for incoterm in DictReader(f): + if frappe.db.exists("Incoterm", incoterm["code"]): + continue + + doc = frappe.new_doc("Incoterm") + doc.update(incoterm) + doc.save() diff --git a/erpnext/setup/doctype/incoterm/incoterms.csv b/erpnext/setup/doctype/incoterm/incoterms.csv new file mode 100644 index 0000000000..af532cff16 --- /dev/null +++ b/erpnext/setup/doctype/incoterm/incoterms.csv @@ -0,0 +1,12 @@ +code,title +EXW,Ex Works +FCA,Free Carrier +FAS,Free Alongside Ship +FOB,Free On Board +CPT,Carriage Paid To +CIP,Carriage and Insurance Paid to +CFR,Cost and Freight +CIF,"Cost, Insurance and Freight" +DAP,Delivered At Place +DPU,Delivered At Place Unloaded +DDP,Delivered Duty Paid diff --git a/erpnext/setup/doctype/incoterm/test_incoterm.py b/erpnext/setup/doctype/incoterm/test_incoterm.py new file mode 100644 index 0000000000..06b8c3bda9 --- /dev/null +++ b/erpnext/setup/doctype/incoterm/test_incoterm.py @@ -0,0 +1,9 @@ +# Copyright (c) 2022, Frappe Technologies Pvt. Ltd. and Contributors +# See license.txt + +# import frappe +from frappe.tests.utils import FrappeTestCase + + +class TestIncoterm(FrappeTestCase): + pass diff --git a/erpnext/setup/install.py b/erpnext/setup/install.py index 2076dde519..d3b47f985d 100644 --- a/erpnext/setup/install.py +++ b/erpnext/setup/install.py @@ -10,6 +10,7 @@ from frappe.utils import cint from erpnext.accounts.doctype.cash_flow_mapper.default_cash_flow_mapper import DEFAULT_MAPPERS from erpnext.setup.default_energy_point_rules import get_default_energy_point_rules +from erpnext.setup.doctype.incoterm.incoterm import create_incoterms from .default_success_action import get_default_success_action @@ -25,6 +26,7 @@ def after_install(): create_default_cash_flow_mapper_templates() create_default_success_action() create_default_energy_point_rules() + create_incoterms() add_company_to_session_defaults() add_standard_navbar_items() add_app_name() diff --git a/erpnext/setup/setup_wizard/data/country_wise_tax.json b/erpnext/setup/setup_wizard/data/country_wise_tax.json index 98817253a4..45e39c5bd0 100644 --- a/erpnext/setup/setup_wizard/data/country_wise_tax.json +++ b/erpnext/setup/setup_wizard/data/country_wise_tax.json @@ -481,136 +481,461 @@ }, "Germany": { - "tax_categories": [ - "Umsatzsteuer", - "Vorsteuer" - ], + "tax_categories": [], "chart_of_accounts": { "SKR04 mit Kontonummern": { "sales_tax_templates": [ { - "title": "Umsatzsteuer", - "tax_category": "Umsatzsteuer", + "title": "Lieferung oder sonstige Leistung im Inland", "is_default": 1, "taxes": [ { "account_head": { - "account_name": "Umsatzsteuer 19%", + "account_name": "Umsatzsteuer 19 %", "account_number": "3806", "tax_rate": 19.00 }, + "description": "Umsatzsteuer 19 %", "rate": 0.00 }, { "account_head": { - "account_name": "Umsatzsteuer 7%", + "account_name": "Umsatzsteuer 7 %", "account_number": "3801", "tax_rate": 7.00 }, - "rate": 0.00 - } - ] - } - ], - "purchase_tax_templates": [ - { - "title": "Vorsteuer", - "tax_category": "Vorsteuer", - "is_default": 1, - "taxes": [ - { - "account_head": { - "account_name": "Abziehbare Vorsteuer 19%", - "account_number": "1406", - "root_type": "Asset", - "tax_rate": 19.00 - }, - "rate": 0.00 - }, - { - "account_head": { - "account_name": "Abziehbare Vorsteuer 7%", - "account_number": "1401", - "root_type": "Asset", - "tax_rate": 7.00 - }, + "description": "Umsatzsteuer 7 %", "rate": 0.00 } ] }, { - "title": "Innergemeinschaftlicher Erwerb 19% Umsatzsteuer und 19% Vorsteuer", + "title": "Lieferung an Unternehmen in der EU", + "is_default": 0, + "taxes": [] + }, + { + "title": "Sonstige Leistung an Unternehmen in der EU", + "is_default": 0, + "taxes": [] + }, + { + "title": "Lieferung oder sonstige Leistung an nicht-Unternehmen in der EU", + "is_default": 0, "taxes": [ { "account_head": { - "account_name": "Abziehbare Vorsteuer nach § 13b UStG 19%", - "account_number": "1407", - "root_type": "Asset", + "account_name": "Umsatzsteuer 19 %", + "account_number": "3806", "tax_rate": 19.00 }, - "add_deduct_tax": "Add" + "description": "Umsatzsteuer 19 %", + "rate": 0.00 }, { "account_head": { - "account_name": "Umsatzsteuer nach § 13b UStG 19%", + "account_name": "Umsatzsteuer 7 %", + "account_number": "3801", + "tax_rate": 7.00 + }, + "description": "Umsatzsteuer 7 %", + "rate": 0.00 + } + ] + }, + { + "title": "Lieferung in Drittland", + "is_default": 0, + "taxes": [] + }, + { + "title": "Sonstige Leistung an Unternehmen in Drittland", + "is_default": 0, + "taxes": [] + }, + { + "title": "Sonstige Leistung an nicht-Unternehmen in Drittland", + "is_default": 0, + "taxes": [ + { + "account_head": { + "account_name": "Umsatzsteuer 19 %", + "account_number": "3806", + "tax_rate": 19.00 + }, + "description": "Umsatzsteuer 19 %", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Umsatzsteuer 7 %", + "account_number": "3801", + "tax_rate": 7.00 + }, + "description": "Umsatzsteuer 7 %", + "rate": 0.00 + } + ] + }, + { + "title": "Bauleistungen nach § 13b UStG", + "is_default": 0, + "taxes": [] + } + ], + "purchase_tax_templates": [ + { + "title": "Lieferung aus dem Inland", + "is_default": 1, + "taxes": [ + { + "account_head": { + "account_name": "Abziehbare Vorsteuer 19 %", + "account_number": "1406", + "root_type": "Asset", + "tax_rate": 19.00 + }, + "description": "Abziehbare Vorsteuer 19 %", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Abziehbare Vorsteuer 7 %", + "account_number": "1401", + "root_type": "Asset", + "tax_rate": 7.00 + }, + "description": "Abziehbare Vorsteuer 7 %", + "rate": 0.00 + } + ] + }, + { + "title": "Sonstige Leistung aus dem Inland", + "is_default": 0, + "taxes": [ + { + "account_head": { + "account_name": "Abziehbare Vorsteuer 19 %", + "account_number": "1406", + "root_type": "Asset", + "tax_rate": 19.00 + }, + "description": "Abziehbare Vorsteuer 19 %", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Abziehbare Vorsteuer 7 %", + "account_number": "1401", + "root_type": "Asset", + "tax_rate": 7.00 + }, + "description": "Abziehbare Vorsteuer 7 %", + "rate": 0.00 + } + ] + }, + { + "title": "Lieferung aus der EU", + "is_default": 0, + "taxes": [ + { + "account_head": { + "account_name": "Abziehbare Vorsteuer aus innergemeinschaftlichem Erwerb 19 %", + "account_number": "1404", + "root_type": "Asset", + "tax_rate": 19.00 + }, + "description": "Abziehbare Vorsteuer aus innergemeinschaftlichem Erwerb 19 %", + "add_deduct_tax": "Add", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Abziehbare Vorsteuer aus innergemeinschaftlichem Erwerb", + "account_number": "1402", + "root_type": "Asset", + "tax_rate": 7.00 + }, + "description": "Abziehbare Vorsteuer aus innergemeinschaftlichem Erwerb", + "add_deduct_tax": "Add", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Umsatzsteuer aus innergemeinschaftlichem Erwerb 19 %", + "account_number": "3804", + "root_type": "Liability", + "tax_rate": 19.00 + }, + "description": "Umsatzsteuer aus innergemeinschaftlichem Erwerb 19 %", + "add_deduct_tax": "Deduct", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Umsatzsteuer aus innergemeinschaftlichem Erwerb", + "account_number": "3802", + "root_type": "Liability", + "tax_rate": 7.00 + }, + "description": "Umsatzsteuer aus innergemeinschaftlichem Erwerb", + "add_deduct_tax": "Deduct", + "rate": 0.00 + } + ] + }, + { + "title": "Sonstige Leistung aus der EU", + "is_default": 0, + "taxes": [ + { + "account_head": { + "account_name": "Abziehbare Vorsteuer nach § 13b UStG 19 %", + "account_number": "1540", + "root_type": "Asset", + "tax_rate": 19.00 + }, + "description": "Abziehbare Vorsteuer nach § 13b UStG 19 %", + "add_deduct_tax": "Add", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Abziehbare Vorsteuer nach § 13b UStG", + "account_number": "1541", + "root_type": "Asset", + "tax_rate": 7.00 + }, + "description": "Abziehbare Vorsteuer nach § 13b UStG", + "add_deduct_tax": "Add", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Umsatzsteuer nach § 13b UStG 19 %", "account_number": "3837", "root_type": "Liability", "tax_rate": 19.00 }, - "add_deduct_tax": "Deduct" + "description": "Umsatzsteuer nach § 13b UStG 19 %", + "add_deduct_tax": "Deduct", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Umsatzsteuer nach § 13b UStG", + "account_number": "3835", + "root_type": "Liability", + "tax_rate": 7.00 + }, + "description": "Umsatzsteuer nach § 13b UStG", + "add_deduct_tax": "Deduct", + "rate": 0.00 + } + ] + }, + { + "title": "Sonstige Leistung aus Drittland", + "is_default": 0, + "taxes": [ + { + "account_head": { + "account_name": "Abziehbare Vorsteuer nach § 13b UStG 19 %", + "account_number": "1540", + "root_type": "Asset", + "tax_rate": 19.00 + }, + "description": "Abziehbare Vorsteuer nach § 13b UStG 19 %", + "add_deduct_tax": "Add", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Abziehbare Vorsteuer nach § 13b UStG", + "account_number": "1541", + "root_type": "Asset", + "tax_rate": 7.00 + }, + "description": "Abziehbare Vorsteuer nach § 13b UStG", + "add_deduct_tax": "Add", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Umsatzsteuer nach § 13b UStG 19 %", + "account_number": "3837", + "root_type": "Liability", + "tax_rate": 19.00 + }, + "description": "Umsatzsteuer nach § 13b UStG 19 %", + "add_deduct_tax": "Deduct", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Umsatzsteuer nach § 13b UStG", + "account_number": "3835", + "root_type": "Liability", + "tax_rate": 7.00 + }, + "description": "Umsatzsteuer nach § 13b UStG", + "add_deduct_tax": "Deduct", + "rate": 0.00 + } + ] + }, + { + "title": "Lieferung aus Drittland", + "is_default": 0, + "taxes": [ + { + "account_head": { + "account_name": "Abziehbare Vorsteuer 19 %", + "account_number": "1406", + "root_type": "Asset", + "tax_rate": 19.00 + }, + "description": "Abziehbare Vorsteuer 19 %", + "add_deduct_tax": "Add", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Abziehbare Vorsteuer 7 %", + "account_number": "1401", + "root_type": "Asset", + "tax_rate": 7.00 + }, + "description": "Abziehbare Vorsteuer 7 %", + "add_deduct_tax": "Add", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Entstandene Einfuhrumsatzsteuer", + "account_number": "1433", + "root_type": "Asset" + }, + "description": "Entstandene Einfuhrumsatzsteuer", + "add_deduct_tax": "Deduct", + "rate": 0.00 + } + ] + }, + { + "title": "Bauleistungen nach § 13b UStG", + "is_default": 0, + "taxes": [ + { + "account_head": { + "account_name": "Abziehbare Vorsteuer nach § 13b UStG 19 %", + "account_number": "1540", + "root_type": "Asset", + "tax_rate": 19.00 + }, + "description": "Abziehbare Vorsteuer nach § 13b UStG 19 %", + "add_deduct_tax": "Add", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Abziehbare Vorsteuer nach § 13b UStG", + "account_number": "1541", + "root_type": "Asset", + "tax_rate": 7.00 + }, + "description": "Abziehbare Vorsteuer nach § 13b UStG", + "add_deduct_tax": "Add", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Umsatzsteuer nach § 13b UStG 19 %", + "account_number": "3837", + "root_type": "Liability", + "tax_rate": 19.00 + }, + "description": "Umsatzsteuer nach § 13b UStG 19 %", + "add_deduct_tax": "Deduct", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Umsatzsteuer nach § 13b UStG", + "account_number": "3835", + "root_type": "Liability", + "tax_rate": 7.00 + }, + "description": "Umsatzsteuer nach § 13b UStG", + "add_deduct_tax": "Deduct", + "rate": 0.00 } ] } ], "item_tax_templates": [ { - "title": "Umsatzsteuer 19%", + "title": "19 %", "taxes": [ { "tax_type": { - "account_name": "Umsatzsteuer 19%", + "account_name": "Umsatzsteuer 19 %", "account_number": "3806", + "root_type": "Liability", "tax_rate": 19.00 }, "tax_rate": 19.00 }, { "tax_type": { - "account_name": "Umsatzsteuer 7%", + "account_name": "Umsatzsteuer 7 %", "account_number": "3801", + "root_type": "Liability", "tax_rate": 7.00 }, "tax_rate": 0.00 - } - ] - }, - { - "title": "Umsatzsteuer 7%", - "taxes": [ - { - "tax_type": { - "account_name": "Umsatzsteuer 19%", - "account_number": "3806", - "tax_rate": 19.00 - }, - "tax_rate": 0.00 }, { "tax_type": { - "account_name": "Umsatzsteuer 7%", - "account_number": "3801", - "tax_rate": 7.00 + "account_name": "Umsatzsteuer aus innergemeinschaftlichem Erwerb 19 %", + "account_number": "3804", + "root_type": "Liability", + "tax_rate": 19.00 }, - "tax_rate": 7.00 - } - ] - }, - { - "title": "Vorsteuer 19%", - "taxes": [ + "tax_rate": 19.00 + }, { "tax_type": { - "account_name": "Abziehbare Vorsteuer 19%", + "account_name": "Umsatzsteuer aus innergemeinschaftlichem Erwerb", + "account_number": "3802", + "root_type": "Liability", + "tax_rate": 7.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Umsatzsteuer nach § 13b UStG 19 %", + "account_number": "3837", + "root_type": "Liability", + "tax_rate": 19.00 + }, + "tax_rate": 19.00 + }, + { + "tax_type": { + "account_name": "Umsatzsteuer nach § 13b UStG", + "account_number": "3835", + "root_type": "Liability", + "tax_rate": 7.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Abziehbare Vorsteuer 19 %", "account_number": "1406", "root_type": "Asset", "tax_rate": 19.00 @@ -619,21 +944,119 @@ }, { "tax_type": { - "account_name": "Abziehbare Vorsteuer 7%", + "account_name": "Abziehbare Vorsteuer 7 %", "account_number": "1401", "root_type": "Asset", "tax_rate": 7.00 }, "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Abziehbare Vorsteuer aus innergemeinschaftlichem Erwerb 19 %", + "account_number": "1404", + "root_type": "Asset", + "tax_rate": 19.00 + }, + "tax_rate": 19.00 + }, + { + "tax_type": { + "account_name": "Abziehbare Vorsteuer aus innergemeinschaftlichem Erwerb", + "account_number": "1402", + "root_type": "Asset", + "tax_rate": 7.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Abziehbare Vorsteuer nach § 13b UStG 19 %", + "account_number": "1540", + "root_type": "Asset", + "tax_rate": 19.00 + }, + "tax_rate": 19.00 + }, + { + "tax_type": { + "account_name": "Abziehbare Vorsteuer nach § 13b UStG", + "account_number": "1541", + "root_type": "Asset", + "tax_rate": 7.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Entstandene Einfuhrumsatzsteuer", + "account_number": "1433", + "root_type": "Asset" + }, + "tax_rate": 19.00 } ] }, { - "title": "Vorsteuer 7%", + "title": "7 %", "taxes": [ { "tax_type": { - "account_name": "Abziehbare Vorsteuer 19%", + "account_name": "Umsatzsteuer 19 %", + "account_number": "3806", + "root_type": "Liability", + "tax_rate": 19.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Umsatzsteuer 7 %", + "account_number": "3801", + "root_type": "Liability", + "tax_rate": 7.00 + }, + "tax_rate": 7.00 + }, + { + "tax_type": { + "account_name": "Umsatzsteuer aus innergemeinschaftlichem Erwerb 19 %", + "account_number": "3804", + "root_type": "Liability", + "tax_rate": 19.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Umsatzsteuer aus innergemeinschaftlichem Erwerb", + "account_number": "3802", + "root_type": "Liability", + "tax_rate": 7.00 + }, + "tax_rate": 7.00 + }, + { + "tax_type": { + "account_name": "Umsatzsteuer nach § 13b UStG 19 %", + "account_number": "3837", + "root_type": "Liability", + "tax_rate": 19.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Umsatzsteuer nach § 13b UStG", + "account_number": "3835", + "root_type": "Liability", + "tax_rate": 7.00 + }, + "tax_rate": 7.00 + }, + { + "tax_type": { + "account_name": "Abziehbare Vorsteuer 19 %", "account_number": "1406", "root_type": "Asset", "tax_rate": 19.00 @@ -642,12 +1065,177 @@ }, { "tax_type": { - "account_name": "Abziehbare Vorsteuer 7%", + "account_name": "Abziehbare Vorsteuer 7 %", "account_number": "1401", "root_type": "Asset", "tax_rate": 7.00 }, "tax_rate": 7.00 + }, + { + "tax_type": { + "account_name": "Abziehbare Vorsteuer aus innergemeinschaftlichem Erwerb 19 %", + "account_number": "1404", + "root_type": "Asset", + "tax_rate": 19.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Abziehbare Vorsteuer aus innergemeinschaftlichem Erwerb", + "account_number": "1402", + "root_type": "Asset", + "tax_rate": 7.00 + }, + "tax_rate": 7.00 + }, + { + "tax_type": { + "account_name": "Abziehbare Vorsteuer nach § 13b UStG 19 %", + "account_number": "1540", + "root_type": "Asset", + "tax_rate": 19.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Abziehbare Vorsteuer nach § 13b UStG", + "account_number": "1541", + "root_type": "Asset", + "tax_rate": 7.00 + }, + "tax_rate": 7.00 + }, + { + "tax_type": { + "account_name": "Entstandene Einfuhrumsatzsteuer", + "account_number": "1433", + "root_type": "Asset" + }, + "tax_rate": 7.00 + } + ] + }, + { + "title": "0 %", + "taxes": [ + { + "tax_type": { + "account_name": "Umsatzsteuer 19 %", + "account_number": "3806", + "root_type": "Liability", + "tax_rate": 19.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Umsatzsteuer 7 %", + "account_number": "3801", + "root_type": "Liability", + "tax_rate": 7.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Umsatzsteuer aus innergemeinschaftlichem Erwerb 19 %", + "account_number": "3804", + "root_type": "Liability", + "tax_rate": 19.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Umsatzsteuer aus innergemeinschaftlichem Erwerb", + "account_number": "3802", + "root_type": "Liability", + "tax_rate": 7.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Umsatzsteuer nach § 13b UStG 19 %", + "account_number": "3837", + "root_type": "Liability", + "tax_rate": 19.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Umsatzsteuer nach § 13b UStG", + "account_number": "3835", + "root_type": "Liability", + "tax_rate": 7.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Abziehbare Vorsteuer 19 %", + "account_number": "1406", + "root_type": "Asset", + "tax_rate": 19.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Abziehbare Vorsteuer 7 %", + "account_number": "1401", + "root_type": "Asset", + "tax_rate": 7.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Abziehbare Vorsteuer aus innergemeinschaftlichem Erwerb 19 %", + "account_number": "1404", + "root_type": "Asset", + "tax_rate": 19.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Abziehbare Vorsteuer aus innergemeinschaftlichem Erwerb", + "account_number": "1402", + "root_type": "Asset", + "tax_rate": 7.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Abziehbare Vorsteuer nach § 13b UStG 19 %", + "account_number": "1540", + "root_type": "Asset", + "tax_rate": 19.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Abziehbare Vorsteuer nach § 13b UStG", + "account_number": "1541", + "root_type": "Asset", + "tax_rate": 7.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Entstandene Einfuhrumsatzsteuer", + "account_number": "1433", + "root_type": "Asset" + }, + "tax_rate": 0.00 } ] } @@ -656,51 +1244,390 @@ "SKR03 mit Kontonummern": { "sales_tax_templates": [ { - "title": "Umsatzsteuer", - "tax_category": "Umsatzsteuer", + "title": "Lieferung oder sonstige Leistung im Inland", "is_default": 1, "taxes": [ { "account_head": { - "account_name": "Umsatzsteuer 19%", + "account_name": "Umsatzsteuer 19 %", "account_number": "1776", "tax_rate": 19.00 }, + "description": "Umsatzsteuer 19 %", "rate": 0.00 }, { "account_head": { - "account_name": "Umsatzsteuer 7%", + "account_name": "Umsatzsteuer 7 %", "account_number": "1771", "tax_rate": 7.00 }, + "description": "Umsatzsteuer 7 %", "rate": 0.00 } ] + }, + { + "title": "Lieferung an Unternehmen in der EU", + "is_default": 0, + "taxes": [] + }, + { + "title": "Sonstige Leistung an Unternehmen in der EU", + "is_default": 0, + "taxes": [] + }, + { + "title": "Lieferung oder sonstige Leistung an nicht-Unternehmen in der EU", + "is_default": 0, + "taxes": [ + { + "account_head": { + "account_name": "Umsatzsteuer 19 %", + "account_number": "1776", + "tax_rate": 19.00 + }, + "description": "Umsatzsteuer 19 %", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Umsatzsteuer 7 %", + "account_number": "1771", + "tax_rate": 7.00 + }, + "description": "Umsatzsteuer 7 %", + "rate": 0.00 + } + ] + }, + { + "title": "Lieferung in Drittland", + "is_default": 0, + "taxes": [] + }, + { + "title": "Sonstige Leistung an Unternehmen in Drittland", + "is_default": 0, + "taxes": [] + }, + { + "title": "Sonstige Leistung an nicht-Unternehmen in Drittland", + "is_default": 0, + "taxes": [ + { + "account_head": { + "account_name": "Umsatzsteuer 19 %", + "account_number": "1776", + "tax_rate": 19.00 + }, + "description": "Umsatzsteuer 19 %", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Umsatzsteuer 7 %", + "account_number": "1771", + "tax_rate": 7.00 + }, + "description": "Umsatzsteuer 7 %", + "rate": 0.00 + } + ] + }, + { + "title": "Bauleistungen nach § 13b UStG", + "is_default": 0, + "taxes": [] } ], "purchase_tax_templates": [ { - "title": "Vorsteuer", - "tax_category": "Vorsteuer", + "title": "Lieferung aus dem Inland", "is_default": 1, "taxes": [ { "account_head": { - "account_name": "Abziehbare Vorsteuer 19%", + "account_name": "Abziehbare Vorsteuer 19 %", "account_number": "1576", "root_type": "Asset", "tax_rate": 19.00 }, + "description": "Abziehbare Vorsteuer 19 %", "rate": 0.00 }, { "account_head": { - "account_name": "Abziehbare Vorsteuer 7%", + "account_name": "Abziehbare Vorsteuer 7 %", "account_number": "1571", "root_type": "Asset", "tax_rate": 7.00 }, + "description": "Abziehbare Vorsteuer 7 %", + "rate": 0.00 + } + ] + }, + { + "title": "Sonstige Leistung aus dem Inland", + "is_default": 0, + "taxes": [ + { + "account_head": { + "account_name": "Abziehbare Vorsteuer 19 %", + "account_number": "1576", + "root_type": "Asset", + "tax_rate": 19.00 + }, + "description": "Abziehbare Vorsteuer 19 %", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Abziehbare Vorsteuer 7 %", + "account_number": "1571", + "root_type": "Asset", + "tax_rate": 7.00 + }, + "description": "Abziehbare Vorsteuer 7 %", + "rate": 0.00 + } + ] + }, + { + "title": "Lieferung aus der EU", + "is_default": 0, + "taxes": [ + { + "account_head": { + "account_name": "Abziehbare Vorsteuer aus innergemeinschaftlichem Erwerb 19 %", + "account_number": "1574", + "root_type": "Asset", + "tax_rate": 19.00 + }, + "description": "Abziehbare Vorsteuer aus innergemeinschaftlichem Erwerb 19 %", + "add_deduct_tax": "Add", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Abziehbare Vorsteuer aus innergemeinschaftlichem Erwerb", + "account_number": "1572", + "root_type": "Asset", + "tax_rate": 7.00 + }, + "description": "Abziehbare Vorsteuer aus innergemeinschaftlichem Erwerb", + "add_deduct_tax": "Add", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Umsatzsteuer aus innergemeinschaftlichem Erwerb 19 %", + "account_number": "1774", + "root_type": "Liability", + "tax_rate": 19.00 + }, + "description": "Umsatzsteuer aus innergemeinschaftlichem Erwerb 19 %", + "add_deduct_tax": "Deduct", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Umsatzsteuer aus innergemeinschaftlichem Erwerb", + "account_number": "1772", + "root_type": "Liability", + "tax_rate": 7.00 + }, + "description": "Umsatzsteuer aus innergemeinschaftlichem Erwerb", + "add_deduct_tax": "Deduct", + "rate": 0.00 + } + ] + }, + { + "title": "Sonstige Leistung aus der EU", + "is_default": 0, + "taxes": [ + { + "account_head": { + "account_name": "Abziehbare Vorsteuer nach § 13b UStG 19 %", + "account_number": "1540", + "root_type": "Asset", + "tax_rate": 19.00 + }, + "description": "Abziehbare Vorsteuer nach § 13b UStG 19 %", + "add_deduct_tax": "Add", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Abziehbare Vorsteuer nach § 13b UStG", + "account_number": "1541", + "root_type": "Asset", + "tax_rate": 7.00 + }, + "description": "Abziehbare Vorsteuer nach § 13b UStG", + "add_deduct_tax": "Add", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Umsatzsteuer nach § 13b UStG 19 %", + "account_number": "1787", + "root_type": "Liability", + "tax_rate": 19.00 + }, + "description": "Umsatzsteuer nach § 13b UStG 19 %", + "add_deduct_tax": "Deduct", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Umsatzsteuer nach § 13b UStG", + "account_number": "1785", + "root_type": "Liability", + "tax_rate": 7.00 + }, + "description": "Umsatzsteuer nach § 13b UStG", + "add_deduct_tax": "Deduct", + "rate": 0.00 + } + ] + }, + { + "title": "Sonstige Leistung aus Drittland", + "is_default": 0, + "taxes": [ + { + "account_head": { + "account_name": "Abziehbare Vorsteuer nach § 13b UStG 19 %", + "account_number": "1540", + "root_type": "Asset", + "tax_rate": 19.00 + }, + "description": "Abziehbare Vorsteuer nach § 13b UStG 19 %", + "add_deduct_tax": "Add", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Abziehbare Vorsteuer nach § 13b UStG", + "account_number": "1541", + "root_type": "Asset", + "tax_rate": 7.00 + }, + "description": "Abziehbare Vorsteuer nach § 13b UStG", + "add_deduct_tax": "Add", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Umsatzsteuer nach § 13b UStG 19 %", + "account_number": "1787", + "root_type": "Liability", + "tax_rate": 19.00 + }, + "description": "Umsatzsteuer nach § 13b UStG 19 %", + "add_deduct_tax": "Deduct", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Umsatzsteuer nach § 13b UStG", + "account_number": "1785", + "root_type": "Liability", + "tax_rate": 7.00 + }, + "description": "Umsatzsteuer nach § 13b UStG", + "add_deduct_tax": "Deduct", + "rate": 0.00 + } + ] + }, + { + "title": "Lieferung aus Drittland", + "is_default": 0, + "taxes": [ + { + "account_head": { + "account_name": "Abziehbare Vorsteuer 19 %", + "account_number": "1576", + "root_type": "Asset", + "tax_rate": 19.00 + }, + "description": "Abziehbare Vorsteuer 19 %", + "add_deduct_tax": "Add", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Abziehbare Vorsteuer 7 %", + "account_number": "1571", + "root_type": "Asset", + "tax_rate": 7.00 + }, + "description": "Abziehbare Vorsteuer 7 %", + "add_deduct_tax": "Add", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Entstandene Einfuhrumsatzsteuer", + "account_number": "1588", + "root_type": "Asset" + }, + "description": "Entstandene Einfuhrumsatzsteuer", + "add_deduct_tax": "Deduct", + "rate": 0.00 + } + ] + }, + { + "title": "Bauleistungen nach § 13b UStG", + "is_default": 0, + "taxes": [ + { + "account_head": { + "account_name": "Abziehbare Vorsteuer nach § 13b UStG 19 %", + "account_number": "1540", + "root_type": "Asset", + "tax_rate": 19.00 + }, + "description": "Abziehbare Vorsteuer nach § 13b UStG 19 %", + "add_deduct_tax": "Add", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Abziehbare Vorsteuer nach § 13b UStG", + "account_number": "1541", + "root_type": "Asset", + "tax_rate": 7.00 + }, + "description": "Abziehbare Vorsteuer nach § 13b UStG", + "add_deduct_tax": "Add", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Umsatzsteuer nach § 13b UStG 19 %", + "account_number": "1787", + "root_type": "Liability", + "tax_rate": 19.00 + }, + "description": "Umsatzsteuer nach § 13b UStG 19 %", + "add_deduct_tax": "Deduct", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Umsatzsteuer nach § 13b UStG", + "account_number": "1785", + "root_type": "Liability", + "tax_rate": 7.00 + }, + "description": "Umsatzsteuer nach § 13b UStG", + "add_deduct_tax": "Deduct", "rate": 0.00 } ] @@ -708,53 +1635,65 @@ ], "item_tax_templates": [ { - "title": "Umsatzsteuer 19%", + "title": "19 %", "taxes": [ { "tax_type": { - "account_name": "Umsatzsteuer 19%", + "account_name": "Umsatzsteuer 19 %", "account_number": "1776", + "root_type": "Liability", "tax_rate": 19.00 }, "tax_rate": 19.00 }, { "tax_type": { - "account_name": "Umsatzsteuer 7%", + "account_name": "Umsatzsteuer 7 %", "account_number": "1771", + "root_type": "Liability", "tax_rate": 7.00 }, "tax_rate": 0.00 - } - ] - }, - { - "title": "Umsatzsteuer 7%", - "taxes": [ - { - "tax_type": { - "account_name": "Umsatzsteuer 19%", - "account_number": "1776", - "tax_rate": 19.00 - }, - "tax_rate": 0.00 }, { "tax_type": { - "account_name": "Umsatzsteuer 7%", - "account_number": "1771", - "tax_rate": 7.00 + "account_name": "Umsatzsteuer aus innergemeinschaftlichem Erwerb 19 %", + "account_number": "1774", + "root_type": "Liability", + "tax_rate": 19.00 }, - "tax_rate": 7.00 - } - ] - }, - { - "title": "Vorsteuer 19%", - "taxes": [ + "tax_rate": 19.00 + }, { "tax_type": { - "account_name": "Abziehbare Vorsteuer 19%", + "account_name": "Umsatzsteuer aus innergemeinschaftlichem Erwerb", + "account_number": "1772", + "root_type": "Liability", + "tax_rate": 7.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Umsatzsteuer nach § 13b UStG 19 %", + "account_number": "1787", + "root_type": "Liability", + "tax_rate": 19.00 + }, + "tax_rate": 19.00 + }, + { + "tax_type": { + "account_name": "Umsatzsteuer nach § 13b UStG", + "account_number": "1785", + "root_type": "Liability", + "tax_rate": 7.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Abziehbare Vorsteuer 19 %", "account_number": "1576", "root_type": "Asset", "tax_rate": 19.00 @@ -763,21 +1702,119 @@ }, { "tax_type": { - "account_name": "Abziehbare Vorsteuer 7%", + "account_name": "Abziehbare Vorsteuer 7 %", "account_number": "1571", "root_type": "Asset", "tax_rate": 7.00 }, "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Abziehbare Vorsteuer aus innergemeinschaftlichem Erwerb 19 %", + "account_number": "1574", + "root_type": "Asset", + "tax_rate": 19.00 + }, + "tax_rate": 19.00 + }, + { + "tax_type": { + "account_name": "Abziehbare Vorsteuer aus innergemeinschaftlichem Erwerb", + "account_number": "1572", + "root_type": "Asset", + "tax_rate": 7.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Abziehbare Vorsteuer nach § 13b UStG 19 %", + "account_number": "1540", + "root_type": "Asset", + "tax_rate": 19.00 + }, + "tax_rate": 19.00 + }, + { + "tax_type": { + "account_name": "Abziehbare Vorsteuer nach § 13b UStG", + "account_number": "1541", + "root_type": "Asset", + "tax_rate": 7.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Entstandene Einfuhrumsatzsteuer", + "account_number": "1588", + "root_type": "Asset" + }, + "tax_rate": 19.00 } ] }, { - "title": "Vorsteuer 7%", + "title": "7 %", "taxes": [ { "tax_type": { - "account_name": "Abziehbare Vorsteuer 19%", + "account_name": "Umsatzsteuer 19 %", + "account_number": "1776", + "root_type": "Liability", + "tax_rate": 19.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Umsatzsteuer 7 %", + "account_number": "1771", + "root_type": "Liability", + "tax_rate": 7.00 + }, + "tax_rate": 7.00 + }, + { + "tax_type": { + "account_name": "Umsatzsteuer aus innergemeinschaftlichem Erwerb 19 %", + "account_number": "1774", + "root_type": "Liability", + "tax_rate": 19.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Umsatzsteuer aus innergemeinschaftlichem Erwerb", + "account_number": "1772", + "root_type": "Liability", + "tax_rate": 7.00 + }, + "tax_rate": 7.00 + }, + { + "tax_type": { + "account_name": "Umsatzsteuer nach § 13b UStG 19 %", + "account_number": "1787", + "root_type": "Liability", + "tax_rate": 19.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Umsatzsteuer nach § 13b UStG", + "account_number": "1785", + "root_type": "Liability", + "tax_rate": 7.00 + }, + "tax_rate": 7.00 + }, + { + "tax_type": { + "account_name": "Abziehbare Vorsteuer 19 %", "account_number": "1576", "root_type": "Asset", "tax_rate": 19.00 @@ -786,12 +1823,177 @@ }, { "tax_type": { - "account_name": "Abziehbare Vorsteuer 7%", + "account_name": "Abziehbare Vorsteuer 7 %", "account_number": "1571", "root_type": "Asset", "tax_rate": 7.00 }, "tax_rate": 7.00 + }, + { + "tax_type": { + "account_name": "Abziehbare Vorsteuer aus innergemeinschaftlichem Erwerb 19 %", + "account_number": "1574", + "root_type": "Asset", + "tax_rate": 19.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Abziehbare Vorsteuer aus innergemeinschaftlichem Erwerb", + "account_number": "1572", + "root_type": "Asset", + "tax_rate": 7.00 + }, + "tax_rate": 7.00 + }, + { + "tax_type": { + "account_name": "Abziehbare Vorsteuer nach § 13b UStG 19 %", + "account_number": "1540", + "root_type": "Asset", + "tax_rate": 19.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Abziehbare Vorsteuer nach § 13b UStG", + "account_number": "1541", + "root_type": "Asset", + "tax_rate": 7.00 + }, + "tax_rate": 7.00 + }, + { + "tax_type": { + "account_name": "Entstandene Einfuhrumsatzsteuer", + "account_number": "1588", + "root_type": "Asset" + }, + "tax_rate": 7.00 + } + ] + }, + { + "title": "0 %", + "taxes": [ + { + "tax_type": { + "account_name": "Umsatzsteuer 19 %", + "account_number": "1776", + "root_type": "Liability", + "tax_rate": 19.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Umsatzsteuer 7 %", + "account_number": "1771", + "root_type": "Liability", + "tax_rate": 7.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Umsatzsteuer aus innergemeinschaftlichem Erwerb 19 %", + "account_number": "1774", + "root_type": "Liability", + "tax_rate": 19.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Umsatzsteuer aus innergemeinschaftlichem Erwerb", + "account_number": "1772", + "root_type": "Liability", + "tax_rate": 7.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Umsatzsteuer nach § 13b UStG 19 %", + "account_number": "1787", + "root_type": "Liability", + "tax_rate": 19.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Umsatzsteuer nach § 13b UStG", + "account_number": "1785", + "root_type": "Liability", + "tax_rate": 7.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Abziehbare Vorsteuer 19 %", + "account_number": "1576", + "root_type": "Asset", + "tax_rate": 19.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Abziehbare Vorsteuer 7 %", + "account_number": "1571", + "root_type": "Asset", + "tax_rate": 7.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Abziehbare Vorsteuer aus innergemeinschaftlichem Erwerb 19 %", + "account_number": "1574", + "root_type": "Asset", + "tax_rate": 19.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Abziehbare Vorsteuer aus innergemeinschaftlichem Erwerb", + "account_number": "1572", + "root_type": "Asset", + "tax_rate": 7.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Abziehbare Vorsteuer nach § 13b UStG 19 %", + "account_number": "1540", + "root_type": "Asset", + "tax_rate": 19.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Abziehbare Vorsteuer nach § 13b UStG", + "account_number": "1541", + "root_type": "Asset", + "tax_rate": 7.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Entstandene Einfuhrumsatzsteuer", + "account_number": "1588", + "root_type": "Asset" + }, + "tax_rate": 0.00 } ] } @@ -800,51 +2002,390 @@ "Standard with Numbers": { "sales_tax_templates": [ { - "title": "Umsatzsteuer", - "tax_category": "Umsatzsteuer", + "title": "Lieferung oder sonstige Leistung im Inland", "is_default": 1, "taxes": [ { "account_head": { - "account_name": "Umsatzsteuer 19%", - "account_number": "2301", + "account_name": "Umsatzsteuer 19 %", + "account_number": "2320", "tax_rate": 19.00 }, + "description": "Umsatzsteuer 19 %", "rate": 0.00 }, { "account_head": { - "account_name": "Umsatzsteuer 7%", - "account_number": "2302", + "account_name": "Umsatzsteuer 7 %", + "account_number": "2321", "tax_rate": 7.00 }, + "description": "Umsatzsteuer 7 %", "rate": 0.00 } ] + }, + { + "title": "Lieferung an Unternehmen in der EU", + "is_default": 0, + "taxes": [] + }, + { + "title": "Sonstige Leistung an Unternehmen in der EU", + "is_default": 0, + "taxes": [] + }, + { + "title": "Lieferung oder sonstige Leistung an nicht-Unternehmen in der EU", + "is_default": 0, + "taxes": [ + { + "account_head": { + "account_name": "Umsatzsteuer 19 %", + "account_number": "2320", + "tax_rate": 19.00 + }, + "description": "Umsatzsteuer 19 %", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Umsatzsteuer 7 %", + "account_number": "2321", + "tax_rate": 7.00 + }, + "description": "Umsatzsteuer 7 %", + "rate": 0.00 + } + ] + }, + { + "title": "Lieferung in Drittland", + "is_default": 0, + "taxes": [] + }, + { + "title": "Sonstige Leistung an Unternehmen in Drittland", + "is_default": 0, + "taxes": [] + }, + { + "title": "Sonstige Leistung an nicht-Unternehmen in Drittland", + "is_default": 0, + "taxes": [ + { + "account_head": { + "account_name": "Umsatzsteuer 19 %", + "account_number": "2320", + "tax_rate": 19.00 + }, + "description": "Umsatzsteuer 19 %", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Umsatzsteuer 7 %", + "account_number": "2321", + "tax_rate": 7.00 + }, + "description": "Umsatzsteuer 7 %", + "rate": 0.00 + } + ] + }, + { + "title": "Bauleistungen nach § 13b UStG", + "is_default": 0, + "taxes": [] } ], "purchase_tax_templates": [ { - "title": "Vorsteuer", - "tax_category": "Vorsteuer", + "title": "Lieferung aus dem Inland", "is_default": 1, "taxes": [ { "account_head": { - "account_name": "Abziehbare Vorsteuer 19%", - "account_number": "1501", + "account_name": "Abziehbare Vorsteuer 19 %", + "account_number": "1520", "root_type": "Asset", "tax_rate": 19.00 }, + "description": "Abziehbare Vorsteuer 19 %", "rate": 0.00 }, { "account_head": { - "account_name": "Abziehbare Vorsteuer 7%", - "account_number": "1502", + "account_name": "Abziehbare Vorsteuer 7 %", + "account_number": "1521", "root_type": "Asset", "tax_rate": 7.00 }, + "description": "Abziehbare Vorsteuer 7 %", + "rate": 0.00 + } + ] + }, + { + "title": "Sonstige Leistung aus dem Inland", + "is_default": 0, + "taxes": [ + { + "account_head": { + "account_name": "Abziehbare Vorsteuer 19 %", + "account_number": "1520", + "root_type": "Asset", + "tax_rate": 19.00 + }, + "description": "Abziehbare Vorsteuer 19 %", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Abziehbare Vorsteuer 7 %", + "account_number": "1521", + "root_type": "Asset", + "tax_rate": 7.00 + }, + "description": "Abziehbare Vorsteuer 7 %", + "rate": 0.00 + } + ] + }, + { + "title": "Lieferung aus der EU", + "is_default": 0, + "taxes": [ + { + "account_head": { + "account_name": "Abziehbare Vorsteuer aus innergemeinschaftlichen Erwerb 19 %", + "account_number": "1530", + "root_type": "Asset", + "tax_rate": 19.00 + }, + "description": "Abziehbare Vorsteuer aus innergemeinschaftlichen Erwerb 19 %", + "add_deduct_tax": "Add", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Abziehbare Vorsteuer aus innergemeinschaftlichen Erwerb 7 %", + "account_number": "1531", + "root_type": "Asset", + "tax_rate": 7.00 + }, + "description": "Abziehbare Vorsteuer aus innergemeinschaftlichen Erwerb 7 %", + "add_deduct_tax": "Add", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Umsatzsteuer aus innergemeinschaftlichen Erwerb 19 %", + "account_number": "2330", + "root_type": "Liability", + "tax_rate": 19.00 + }, + "description": "Umsatzsteuer aus innergemeinschaftlichen Erwerb 19 %", + "add_deduct_tax": "Deduct", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Umsatzsteuer aus innergemeinschaftlichen Erwerb 7 %", + "account_number": "2331", + "root_type": "Liability", + "tax_rate": 7.00 + }, + "description": "Umsatzsteuer aus innergemeinschaftlichen Erwerb 7 %", + "add_deduct_tax": "Deduct", + "rate": 0.00 + } + ] + }, + { + "title": "Sonstige Leistung aus der EU", + "is_default": 0, + "taxes": [ + { + "account_head": { + "account_name": "Abziehbare Vorsteuer nach § 13b UStG 19%", + "account_number": "1540", + "root_type": "Asset", + "tax_rate": 19.00 + }, + "description": "Abziehbare Vorsteuer nach § 13b UStG 19%", + "add_deduct_tax": "Add", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Abziehbare Vorsteuer nach § 13b UStG 7%", + "account_number": "1541", + "root_type": "Asset", + "tax_rate": 7.00 + }, + "description": "Abziehbare Vorsteuer nach § 13b UStG 7%", + "add_deduct_tax": "Add", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Umsatzsteuer nach § 13b UStG 19%", + "account_number": "2340", + "root_type": "Liability", + "tax_rate": 19.00 + }, + "description": "Umsatzsteuer nach § 13b UStG 19%", + "add_deduct_tax": "Deduct", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Umsatzsteuer nach § 13b UStG 7%", + "account_number": "2341", + "root_type": "Liability", + "tax_rate": 7.00 + }, + "description": "Umsatzsteuer nach § 13b UStG 7%", + "add_deduct_tax": "Deduct", + "rate": 0.00 + } + ] + }, + { + "title": "Sonstige Leistung aus Drittland", + "is_default": 0, + "taxes": [ + { + "account_head": { + "account_name": "Abziehbare Vorsteuer nach § 13b UStG 19%", + "account_number": "1540", + "root_type": "Asset", + "tax_rate": 19.00 + }, + "description": "Abziehbare Vorsteuer nach § 13b UStG 19%", + "add_deduct_tax": "Add", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Abziehbare Vorsteuer nach § 13b UStG 7%", + "account_number": "1541", + "root_type": "Asset", + "tax_rate": 7.00 + }, + "description": "Abziehbare Vorsteuer nach § 13b UStG 7%", + "add_deduct_tax": "Add", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Umsatzsteuer nach § 13b UStG 19%", + "account_number": "2340", + "root_type": "Liability", + "tax_rate": 19.00 + }, + "description": "Umsatzsteuer nach § 13b UStG 19%", + "add_deduct_tax": "Deduct", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Umsatzsteuer nach § 13b UStG 7%", + "account_number": "2341", + "root_type": "Liability", + "tax_rate": 7.00 + }, + "description": "Umsatzsteuer nach § 13b UStG 7%", + "add_deduct_tax": "Deduct", + "rate": 0.00 + } + ] + }, + { + "title": "Lieferung aus Drittland", + "is_default": 0, + "taxes": [ + { + "account_head": { + "account_name": "Abziehbare Vorsteuer 19 %", + "account_number": "1520", + "root_type": "Asset", + "tax_rate": 19.00 + }, + "description": "Abziehbare Vorsteuer 19 %", + "add_deduct_tax": "Add", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Abziehbare Vorsteuer 7 %", + "account_number": "1521", + "root_type": "Asset", + "tax_rate": 7.00 + }, + "description": "Abziehbare Vorsteuer 7 %", + "add_deduct_tax": "Add", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Entstandene Einfuhrumsatzsteuer", + "account_number": "1550", + "root_type": "Asset" + }, + "description": "Entstandene Einfuhrumsatzsteuer", + "add_deduct_tax": "Deduct", + "rate": 0.00 + } + ] + }, + { + "title": "Bauleistungen nach § 13b UStG", + "is_default": 0, + "taxes": [ + { + "account_head": { + "account_name": "Abziehbare Vorsteuer nach § 13b UStG 19%", + "account_number": "1540", + "root_type": "Asset", + "tax_rate": 19.00 + }, + "description": "Abziehbare Vorsteuer nach § 13b UStG 19%", + "add_deduct_tax": "Add", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Abziehbare Vorsteuer nach § 13b UStG 7%", + "account_number": "1541", + "root_type": "Asset", + "tax_rate": 7.00 + }, + "description": "Abziehbare Vorsteuer nach § 13b UStG 7%", + "add_deduct_tax": "Add", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Umsatzsteuer nach § 13b UStG 19%", + "account_number": "2340", + "root_type": "Liability", + "tax_rate": 19.00 + }, + "description": "Umsatzsteuer nach § 13b UStG 19%", + "add_deduct_tax": "Deduct", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Umsatzsteuer nach § 13b UStG 7%", + "account_number": "2341", + "root_type": "Liability", + "tax_rate": 7.00 + }, + "description": "Umsatzsteuer nach § 13b UStG 7%", + "add_deduct_tax": "Deduct", "rate": 0.00 } ] @@ -852,54 +2393,66 @@ ], "item_tax_templates": [ { - "title": "Umsatzsteuer 19%", + "title": "19%", "taxes": [ { "tax_type": { - "account_name": "Umsatzsteuer 19%", - "account_number": "2301", + "account_name": "Umsatzsteuer 19 %", + "account_number": "2320", + "root_type": "Liability", "tax_rate": 19.00 }, "tax_rate": 19.00 }, { "tax_type": { - "account_name": "Umsatzsteuer 7%", - "account_number": "2302", + "account_name": "Umsatzsteuer 7 %", + "account_number": "2321", + "root_type": "Liability", "tax_rate": 7.00 }, "tax_rate": 0.00 - } - ] - }, - { - "title": "Umsatzsteuer 7%", - "taxes": [ - { - "tax_type": { - "account_name": "Umsatzsteuer 19%", - "account_number": "2301", - "tax_rate": 19.00 - }, - "tax_rate": 0.00 }, { "tax_type": { - "account_name": "Umsatzsteuer 7%", - "account_number": "2302", - "tax_rate": 7.00 + "account_name": "Umsatzsteuer aus innergemeinschaftlichen Erwerb 19 %", + "account_number": "2330", + "root_type": "Liability", + "tax_rate": 19.00 }, - "tax_rate": 7.00 - } - ] - }, - { - "title": "Vorsteuer 19%", - "taxes": [ + "tax_rate": 19.00 + }, { "tax_type": { - "account_name": "Abziehbare Vorsteuer 19%", - "account_number": "1501", + "account_name": "Umsatzsteuer aus innergemeinschaftlichen Erwerb 7 %", + "account_number": "2331", + "root_type": "Liability", + "tax_rate": 7.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Umsatzsteuer nach § 13b UStG 19%", + "account_number": "2340", + "root_type": "Liability", + "tax_rate": 19.00 + }, + "tax_rate": 19.00 + }, + { + "tax_type": { + "account_name": "Umsatzsteuer nach § 13b UStG 7%", + "account_number": "2341", + "root_type": "Liability", + "tax_rate": 7.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Abziehbare Vorsteuer 19 %", + "account_number": "1520", "root_type": "Asset", "tax_rate": 19.00 }, @@ -907,22 +2460,120 @@ }, { "tax_type": { - "account_name": "Abziehbare Vorsteuer 7%", - "account_number": "1502", + "account_name": "Abziehbare Vorsteuer 7 %", + "account_number": "1521", "root_type": "Asset", "tax_rate": 7.00 }, "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Abziehbare Vorsteuer aus innergemeinschaftlichen Erwerb 19 %", + "account_number": "1530", + "root_type": "Asset", + "tax_rate": 19.00 + }, + "tax_rate": 19.00 + }, + { + "tax_type": { + "account_name": "Abziehbare Vorsteuer aus innergemeinschaftlichen Erwerb 7 %", + "account_number": "1531", + "root_type": "Asset", + "tax_rate": 7.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Abziehbare Vorsteuer nach § 13b UStG 19%", + "account_number": "1540", + "root_type": "Asset", + "tax_rate": 19.00 + }, + "tax_rate": 19.00 + }, + { + "tax_type": { + "account_name": "Abziehbare Vorsteuer nach § 13b UStG 7%", + "account_number": "1541", + "root_type": "Asset", + "tax_rate": 7.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Entstandene Einfuhrumsatzsteuer", + "account_number": "1550", + "root_type": "Asset" + }, + "tax_rate": 19.00 } ] }, { - "title": "Vorsteuer 7%", + "title": "7%", "taxes": [ { "tax_type": { - "account_name": "Abziehbare Vorsteuer 19%", - "account_number": "1501", + "account_name": "Umsatzsteuer 19 %", + "account_number": "2320", + "root_type": "Liability", + "tax_rate": 19.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Umsatzsteuer 7 %", + "account_number": "2321", + "root_type": "Liability", + "tax_rate": 7.00 + }, + "tax_rate": 7.00 + }, + { + "tax_type": { + "account_name": "Umsatzsteuer aus innergemeinschaftlichen Erwerb 19 %", + "account_number": "2330", + "root_type": "Liability", + "tax_rate": 19.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Umsatzsteuer aus innergemeinschaftlichen Erwerb 7 %", + "account_number": "2331", + "root_type": "Liability", + "tax_rate": 7.00 + }, + "tax_rate": 7.00 + }, + { + "tax_type": { + "account_name": "Umsatzsteuer nach § 13b UStG 19%", + "account_number": "2340", + "root_type": "Liability", + "tax_rate": 19.00 + }, + "tax_rate": 19.00 + }, + { + "tax_type": { + "account_name": "Umsatzsteuer nach § 13b UStG 7%", + "account_number": "2341", + "root_type": "Liability", + "tax_rate": 7.00 + }, + "tax_rate": 7.00 + }, + { + "tax_type": { + "account_name": "Abziehbare Vorsteuer 19 %", + "account_number": "1520", "root_type": "Asset", "tax_rate": 19.00 }, @@ -930,12 +2581,177 @@ }, { "tax_type": { - "account_name": "Abziehbare Vorsteuer 7%", - "account_number": "1502", + "account_name": "Abziehbare Vorsteuer 7 %", + "account_number": "1521", "root_type": "Asset", "tax_rate": 7.00 }, "tax_rate": 7.00 + }, + { + "tax_type": { + "account_name": "Abziehbare Vorsteuer aus innergemeinschaftlichen Erwerb 19 %", + "account_number": "1530", + "root_type": "Asset", + "tax_rate": 19.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Abziehbare Vorsteuer aus innergemeinschaftlichen Erwerb 7 %", + "account_number": "1531", + "root_type": "Asset", + "tax_rate": 7.00 + }, + "tax_rate": 7.00 + }, + { + "tax_type": { + "account_name": "Abziehbare Vorsteuer nach § 13b UStG 19%", + "account_number": "1540", + "root_type": "Asset", + "tax_rate": 19.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Abziehbare Vorsteuer nach § 13b UStG 7%", + "account_number": "1541", + "root_type": "Asset", + "tax_rate": 7.00 + }, + "tax_rate": 7.00 + }, + { + "tax_type": { + "account_name": "Entstandene Einfuhrumsatzsteuer", + "account_number": "1550", + "root_type": "Asset" + }, + "tax_rate": 7.00 + } + ] + }, + { + "title": "0 %", + "taxes": [ + { + "tax_type": { + "account_name": "Umsatzsteuer 19 %", + "account_number": "2320", + "root_type": "Liability", + "tax_rate": 19.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Umsatzsteuer 7 %", + "account_number": "2321", + "root_type": "Liability", + "tax_rate": 7.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Umsatzsteuer aus innergemeinschaftlichen Erwerb 19 %", + "account_number": "2330", + "root_type": "Liability", + "tax_rate": 19.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Umsatzsteuer aus innergemeinschaftlichen Erwerb 7 %", + "account_number": "2331", + "root_type": "Liability", + "tax_rate": 7.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Umsatzsteuer nach § 13b UStG 19%", + "account_number": "2340", + "root_type": "Liability", + "tax_rate": 19.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Umsatzsteuer nach § 13b UStG 7%", + "account_number": "2341", + "root_type": "Liability", + "tax_rate": 7.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Abziehbare Vorsteuer 19 %", + "account_number": "1520", + "root_type": "Asset", + "tax_rate": 19.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Abziehbare Vorsteuer 7 %", + "account_number": "1521", + "root_type": "Asset", + "tax_rate": 7.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Abziehbare Vorsteuer aus innergemeinschaftlichen Erwerb 19 %", + "account_number": "1530", + "root_type": "Asset", + "tax_rate": 19.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Abziehbare Vorsteuer aus innergemeinschaftlichen Erwerb 7 %", + "account_number": "1531", + "root_type": "Asset", + "tax_rate": 7.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Abziehbare Vorsteuer nach § 13b UStG 19%", + "account_number": "1540", + "root_type": "Asset", + "tax_rate": 19.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Abziehbare Vorsteuer nach § 13b UStG 7%", + "account_number": "1541", + "root_type": "Asset", + "tax_rate": 7.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Entstandene Einfuhrumsatzsteuer", + "account_number": "1550", + "root_type": "Asset" + }, + "tax_rate": 0.00 } ] } @@ -944,47 +2760,361 @@ "*": { "sales_tax_templates": [ { - "title": "Umsatzsteuer", - "tax_category": "Umsatzsteuer", + "title": "Lieferung oder sonstige Leistung im Inland", "is_default": 1, "taxes": [ { "account_head": { - "account_name": "Umsatzsteuer 19%", + "account_name": "Umsatzsteuer 19 %", "tax_rate": 19.00 }, + "description": "Umsatzsteuer 19 %", "rate": 0.00 }, { "account_head": { - "account_name": "Umsatzsteuer 7%", + "account_name": "Umsatzsteuer 7 %", "tax_rate": 7.00 }, + "description": "Umsatzsteuer 7 %", "rate": 0.00 } ] + }, + { + "title": "Lieferung an Unternehmen in der EU", + "is_default": 0, + "taxes": [] + }, + { + "title": "Sonstige Leistung an Unternehmen in der EU", + "is_default": 0, + "taxes": [] + }, + { + "title": "Lieferung oder sonstige Leistung an nicht-Unternehmen in der EU", + "is_default": 0, + "taxes": [ + { + "account_head": { + "account_name": "Umsatzsteuer 19 %", + "tax_rate": 19.00 + }, + "description": "Umsatzsteuer 19 %", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Umsatzsteuer 7 %", + "tax_rate": 7.00 + }, + "description": "Umsatzsteuer 7 %", + "rate": 0.00 + } + ] + }, + { + "title": "Lieferung in Drittland", + "is_default": 0, + "taxes": [] + }, + { + "title": "Sonstige Leistung an Unternehmen in Drittland", + "is_default": 0, + "taxes": [] + }, + { + "title": "Sonstige Leistung an nicht-Unternehmen in Drittland", + "is_default": 0, + "taxes": [ + { + "account_head": { + "account_name": "Umsatzsteuer 19 %", + "tax_rate": 19.00 + }, + "description": "Umsatzsteuer 19 %", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Umsatzsteuer 7 %", + "tax_rate": 7.00 + }, + "description": "Umsatzsteuer 7 %", + "rate": 0.00 + } + ] + }, + { + "title": "Bauleistungen nach § 13b UStG", + "is_default": 0, + "taxes": [] } ], "purchase_tax_templates": [ { - "title": "Vorsteuer 19%", - "tax_category": "Vorsteuer", + "title": "Lieferung aus dem Inland", "is_default": 1, "taxes": [ { "account_head": { - "account_name": "Abziehbare Vorsteuer 19%", - "tax_rate": 19.00, - "root_type": "Asset" + "account_name": "Abziehbare Vorsteuer 19 %", + "root_type": "Asset", + "tax_rate": 19.00 }, + "description": "Abziehbare Vorsteuer 19 %", "rate": 0.00 }, { "account_head": { - "account_name": "Abziehbare Vorsteuer 7%", + "account_name": "Abziehbare Vorsteuer 7 %", "root_type": "Asset", "tax_rate": 7.00 }, + "description": "Abziehbare Vorsteuer 7 %", + "rate": 0.00 + } + ] + }, + { + "title": "Sonstige Leistung aus dem Inland", + "is_default": 0, + "taxes": [ + { + "account_head": { + "account_name": "Abziehbare Vorsteuer 19 %", + "root_type": "Asset", + "tax_rate": 19.00 + }, + "description": "Abziehbare Vorsteuer 19 %", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Abziehbare Vorsteuer 7 %", + "root_type": "Asset", + "tax_rate": 7.00 + }, + "description": "Abziehbare Vorsteuer 7 %", + "rate": 0.00 + } + ] + }, + { + "title": "Lieferung aus der EU", + "is_default": 0, + "taxes": [ + { + "account_head": { + "account_name": "Abziehbare Vorsteuer aus innergemeinschaftlichem Erwerb 19 %", + "root_type": "Asset", + "tax_rate": 19.00 + }, + "description": "Abziehbare Vorsteuer aus innergemeinschaftlichem Erwerb 19 %", + "add_deduct_tax": "Add", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Abziehbare Vorsteuer aus innergemeinschaftlichem Erwerb", + "root_type": "Asset", + "tax_rate": 7.00 + }, + "description": "Abziehbare Vorsteuer aus innergemeinschaftlichem Erwerb", + "add_deduct_tax": "Add", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Umsatzsteuer aus innergemeinschaftlichem Erwerb 19 %", + "root_type": "Liability", + "tax_rate": 19.00 + }, + "description": "Umsatzsteuer aus innergemeinschaftlichem Erwerb 19 %", + "add_deduct_tax": "Deduct", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Umsatzsteuer aus innergemeinschaftlichem Erwerb", + "root_type": "Liability", + "tax_rate": 7.00 + }, + "description": "Umsatzsteuer aus innergemeinschaftlichem Erwerb", + "add_deduct_tax": "Deduct", + "rate": 0.00 + } + ] + }, + { + "title": "Sonstige Leistung aus der EU", + "is_default": 0, + "taxes": [ + { + "account_head": { + "account_name": "Abziehbare Vorsteuer nach § 13b UStG 19 %", + "root_type": "Asset", + "tax_rate": 19.00 + }, + "description": "Abziehbare Vorsteuer nach § 13b UStG 19 %", + "add_deduct_tax": "Add", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Abziehbare Vorsteuer nach § 13b UStG", + "root_type": "Asset", + "tax_rate": 7.00 + }, + "description": "Abziehbare Vorsteuer nach § 13b UStG", + "add_deduct_tax": "Add", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Umsatzsteuer nach § 13b UStG 19 %", + "root_type": "Liability", + "tax_rate": 19.00 + }, + "description": "Umsatzsteuer nach § 13b UStG 19 %", + "add_deduct_tax": "Deduct", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Umsatzsteuer nach § 13b UStG", + "root_type": "Liability", + "tax_rate": 7.00 + }, + "description": "Umsatzsteuer nach § 13b UStG", + "add_deduct_tax": "Deduct", + "rate": 0.00 + } + ] + }, + { + "title": "Sonstige Leistung aus Drittland", + "is_default": 0, + "taxes": [ + { + "account_head": { + "account_name": "Abziehbare Vorsteuer nach § 13b UStG 19 %", + "root_type": "Asset", + "tax_rate": 19.00 + }, + "description": "Abziehbare Vorsteuer nach § 13b UStG 19 %", + "add_deduct_tax": "Add", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Abziehbare Vorsteuer nach § 13b UStG", + "root_type": "Asset", + "tax_rate": 7.00 + }, + "description": "Abziehbare Vorsteuer nach § 13b UStG", + "add_deduct_tax": "Add", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Umsatzsteuer nach § 13b UStG 19 %", + "root_type": "Liability", + "tax_rate": 19.00 + }, + "description": "Umsatzsteuer nach § 13b UStG 19 %", + "add_deduct_tax": "Deduct", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Umsatzsteuer nach § 13b UStG", + "root_type": "Liability", + "tax_rate": 7.00 + }, + "description": "Umsatzsteuer nach § 13b UStG", + "add_deduct_tax": "Deduct", + "rate": 0.00 + } + ] + }, + { + "title": "Lieferung aus Drittland", + "is_default": 0, + "taxes": [ + { + "account_head": { + "account_name": "Abziehbare Vorsteuer 19 %", + "root_type": "Asset", + "tax_rate": 19.00 + }, + "description": "Abziehbare Vorsteuer 19 %", + "add_deduct_tax": "Add", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Abziehbare Vorsteuer 7 %", + "root_type": "Asset", + "tax_rate": 7.00 + }, + "description": "Abziehbare Vorsteuer 7 %", + "add_deduct_tax": "Add", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Entstandene Einfuhrumsatzsteuer", + "root_type": "Asset" + }, + "description": "Entstandene Einfuhrumsatzsteuer", + "add_deduct_tax": "Deduct", + "rate": 0.00 + } + ] + }, + { + "title": "Bauleistungen nach § 13b UStG", + "is_default": 0, + "taxes": [ + { + "account_head": { + "account_name": "Abziehbare Vorsteuer nach § 13b UStG 19 %", + "root_type": "Asset", + "tax_rate": 19.00 + }, + "description": "Abziehbare Vorsteuer nach § 13b UStG 19 %", + "add_deduct_tax": "Add", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Abziehbare Vorsteuer nach § 13b UStG", + "root_type": "Asset", + "tax_rate": 7.00 + }, + "description": "Abziehbare Vorsteuer nach § 13b UStG", + "add_deduct_tax": "Add", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Umsatzsteuer nach § 13b UStG 19 %", + "root_type": "Liability", + "tax_rate": 19.00 + }, + "description": "Umsatzsteuer nach § 13b UStG 19 %", + "add_deduct_tax": "Deduct", + "rate": 0.00 + }, + { + "account_head": { + "account_name": "Umsatzsteuer nach § 13b UStG", + "root_type": "Liability", + "tax_rate": 7.00 + }, + "description": "Umsatzsteuer nach § 13b UStG", + "add_deduct_tax": "Deduct", "rate": 0.00 } ] @@ -992,49 +3122,59 @@ ], "item_tax_templates": [ { - "title": "Umsatzsteuer 19%", + "title": "19 %", "taxes": [ { "tax_type": { - "account_name": "Umsatzsteuer 19%", + "account_name": "Umsatzsteuer 19 %", + "root_type": "Liability", "tax_rate": 19.00 }, "tax_rate": 19.00 }, { "tax_type": { - "account_name": "Umsatzsteuer 7%", + "account_name": "Umsatzsteuer 7 %", + "root_type": "Liability", "tax_rate": 7.00 }, "tax_rate": 0.00 - } - ] - }, - { - "title": "Umsatzsteuer 7%", - "taxes": [ - { - "tax_type": { - "account_name": "Umsatzsteuer 19%", - "tax_rate": 19.00 - }, - "tax_rate": 0.00 }, { "tax_type": { - "account_name": "Umsatzsteuer 7%", - "tax_rate": 7.00 + "account_name": "Umsatzsteuer aus innergemeinschaftlichem Erwerb 19 %", + "root_type": "Liability", + "tax_rate": 19.00 }, - "tax_rate": 7.00 - } - ] - }, - { - "title": "Vorsteuer 19%", - "taxes": [ + "tax_rate": 19.00 + }, { "tax_type": { - "account_name": "Abziehbare Vorsteuer 19%", + "account_name": "Umsatzsteuer aus innergemeinschaftlichem Erwerb", + "root_type": "Liability", + "tax_rate": 7.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Umsatzsteuer nach § 13b UStG 19 %", + "root_type": "Liability", + "tax_rate": 19.00 + }, + "tax_rate": 19.00 + }, + { + "tax_type": { + "account_name": "Umsatzsteuer nach § 13b UStG", + "root_type": "Liability", + "tax_rate": 7.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Abziehbare Vorsteuer 19 %", "root_type": "Asset", "tax_rate": 19.00 }, @@ -1042,20 +3182,107 @@ }, { "tax_type": { - "account_name": "Abziehbare Vorsteuer 7%", + "account_name": "Abziehbare Vorsteuer 7 %", "root_type": "Asset", "tax_rate": 7.00 }, "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Abziehbare Vorsteuer aus innergemeinschaftlichem Erwerb 19 %", + "root_type": "Asset", + "tax_rate": 19.00 + }, + "tax_rate": 19.00 + }, + { + "tax_type": { + "account_name": "Abziehbare Vorsteuer aus innergemeinschaftlichem Erwerb", + "root_type": "Asset", + "tax_rate": 7.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Abziehbare Vorsteuer nach § 13b UStG 19 %", + "root_type": "Asset", + "tax_rate": 19.00 + }, + "tax_rate": 19.00 + }, + { + "tax_type": { + "account_name": "Abziehbare Vorsteuer nach § 13b UStG", + "root_type": "Asset", + "tax_rate": 7.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Entstandene Einfuhrumsatzsteuer", + "root_type": "Asset" + }, + "tax_rate": 19.00 } ] }, { - "title": "Vorsteuer 7%", + "title": "7 %", "taxes": [ { "tax_type": { - "account_name": "Abziehbare Vorsteuer 19%", + "account_name": "Umsatzsteuer 19 %", + "root_type": "Liability", + "tax_rate": 19.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Umsatzsteuer 7 %", + "root_type": "Liability", + "tax_rate": 7.00 + }, + "tax_rate": 7.00 + }, + { + "tax_type": { + "account_name": "Umsatzsteuer aus innergemeinschaftlichem Erwerb 19 %", + "root_type": "Liability", + "tax_rate": 19.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Umsatzsteuer aus innergemeinschaftlichem Erwerb", + "root_type": "Liability", + "tax_rate": 7.00 + }, + "tax_rate": 7.00 + }, + { + "tax_type": { + "account_name": "Umsatzsteuer nach § 13b UStG 19 %", + "root_type": "Liability", + "tax_rate": 19.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Umsatzsteuer nach § 13b UStG", + "root_type": "Liability", + "tax_rate": 7.00 + }, + "tax_rate": 7.00 + }, + { + "tax_type": { + "account_name": "Abziehbare Vorsteuer 19 %", "root_type": "Asset", "tax_rate": 19.00 }, @@ -1063,11 +3290,158 @@ }, { "tax_type": { - "account_name": "Abziehbare Vorsteuer 7%", + "account_name": "Abziehbare Vorsteuer 7 %", "root_type": "Asset", "tax_rate": 7.00 }, "tax_rate": 7.00 + }, + { + "tax_type": { + "account_name": "Abziehbare Vorsteuer aus innergemeinschaftlichem Erwerb 19 %", + "root_type": "Asset", + "tax_rate": 19.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Abziehbare Vorsteuer aus innergemeinschaftlichem Erwerb", + "root_type": "Asset", + "tax_rate": 7.00 + }, + "tax_rate": 7.00 + }, + { + "tax_type": { + "account_name": "Abziehbare Vorsteuer nach § 13b UStG 19 %", + "root_type": "Asset", + "tax_rate": 19.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Abziehbare Vorsteuer nach § 13b UStG", + "root_type": "Asset", + "tax_rate": 7.00 + }, + "tax_rate": 7.00 + }, + { + "tax_type": { + "account_name": "Entstandene Einfuhrumsatzsteuer", + "root_type": "Asset" + }, + "tax_rate": 7.00 + } + ] + }, + { + "title": "0%", + "taxes": [ + { + "tax_type": { + "account_name": "Umsatzsteuer 19 %", + "root_type": "Liability", + "tax_rate": 19.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Umsatzsteuer 7 %", + "root_type": "Liability", + "tax_rate": 7.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Umsatzsteuer aus innergemeinschaftlichem Erwerb 19 %", + "root_type": "Liability", + "tax_rate": 19.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Umsatzsteuer aus innergemeinschaftlichem Erwerb", + "root_type": "Liability", + "tax_rate": 7.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Umsatzsteuer nach § 13b UStG 19 %", + "root_type": "Liability", + "tax_rate": 19.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Umsatzsteuer nach § 13b UStG", + "root_type": "Liability", + "tax_rate": 7.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Abziehbare Vorsteuer 19 %", + "root_type": "Asset", + "tax_rate": 19.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Abziehbare Vorsteuer 7 %", + "root_type": "Asset", + "tax_rate": 7.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Abziehbare Vorsteuer aus innergemeinschaftlichem Erwerb 19 %", + "root_type": "Asset", + "tax_rate": 19.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Abziehbare Vorsteuer aus innergemeinschaftlichem Erwerb", + "root_type": "Asset", + "tax_rate": 7.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Abziehbare Vorsteuer nach § 13b UStG 19 %", + "root_type": "Asset", + "tax_rate": 19.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Abziehbare Vorsteuer nach § 13b UStG", + "root_type": "Asset", + "tax_rate": 7.00 + }, + "tax_rate": 0.00 + }, + { + "tax_type": { + "account_name": "Entstandene Einfuhrumsatzsteuer", + "root_type": "Asset" + }, + "tax_rate": 0.00 } ] } diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.json b/erpnext/stock/doctype/delivery_note/delivery_note.json index 0ca3e69f76..80e4bcb640 100644 --- a/erpnext/stock/doctype/delivery_note/delivery_note.json +++ b/erpnext/stock/doctype/delivery_note/delivery_note.json @@ -62,6 +62,7 @@ "tax_category", "column_break_39", "shipping_rule", + "incoterm", "section_break_41", "taxes", "section_break_44", @@ -1381,13 +1382,19 @@ { "fieldname": "column_break_18", "fieldtype": "Column Break" + }, + { + "fieldname": "incoterm", + "fieldtype": "Link", + "label": "Incoterm", + "options": "Incoterm" } ], "icon": "fa fa-truck", "idx": 146, "is_submittable": 1, "links": [], - "modified": "2022-10-11 13:06:58.655635", + "modified": "2022-11-17 17:22:42.860790", "modified_by": "Administrator", "module": "Stock", "name": "Delivery Note", diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.json b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.json index 3141212ee5..ab91d7c8c9 100755 --- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.json +++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.json @@ -63,6 +63,7 @@ "tax_category", "column_break_53", "shipping_rule", + "incoterm", "taxes_section", "taxes", "totals", @@ -1218,13 +1219,19 @@ { "fieldname": "column_break_104", "fieldtype": "Column Break" + }, + { + "fieldname": "incoterm", + "fieldtype": "Link", + "label": "Incoterm", + "options": "Incoterm" } ], "icon": "fa fa-truck", "idx": 261, "is_submittable": 1, "links": [], - "modified": "2022-10-11 13:02:31.776256", + "modified": "2022-11-17 17:29:30.067536", "modified_by": "Administrator", "module": "Stock", "name": "Purchase Receipt", diff --git a/erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.js b/erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.js index d595a80b20..8aec532847 100644 --- a/erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.js +++ b/erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.js @@ -34,6 +34,22 @@ frappe.ui.form.on('Repost Item Valuation', { frm.trigger('setup_realtime_progress'); }, + based_on: function(frm) { + var fields_to_reset = []; + + if (frm.doc.based_on == 'Transaction') { + fields_to_reset = ['item_code', 'warehouse']; + } else if (frm.doc.based_on == 'Item and Warehouse') { + fields_to_reset = ['voucher_type', 'voucher_no']; + } + + if (fields_to_reset) { + fields_to_reset.forEach(field => { + frm.set_value(field, undefined); + }); + } + }, + setup_realtime_progress: function(frm) { frappe.realtime.on('item_reposting_progress', data => { if (frm.doc.name !== data.name) { diff --git a/erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.json b/erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.json index e093933829..8a5309c348 100644 --- a/erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.json +++ b/erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.json @@ -50,13 +50,15 @@ "fieldname": "posting_date", "fieldtype": "Date", "label": "Posting Date", + "read_only_depends_on": "eval: doc.based_on == \"Transaction\"", "reqd": 1 }, { "fetch_from": "voucher_no.posting_time", "fieldname": "posting_time", "fieldtype": "Time", - "label": "Posting Time" + "label": "Posting Time", + "read_only_depends_on": "eval: doc.based_on == \"Transaction\"" }, { "default": "Queued", @@ -195,7 +197,7 @@ "index_web_pages_for_search": 1, "is_submittable": 1, "links": [], - "modified": "2022-06-13 12:20:22.182322", + "modified": "2022-11-28 16:00:05.637440", "modified_by": "Administrator", "module": "Stock", "name": "Repost Item Valuation", diff --git a/erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.py b/erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.py index d6f9bae5da..8e914e6b80 100644 --- a/erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.py +++ b/erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.py @@ -5,7 +5,7 @@ import frappe from frappe import _ from frappe.exceptions import QueryDeadlockError, QueryTimeoutError from frappe.model.document import Document -from frappe.utils import cint, get_link_to_form, get_weekday, now, nowtime +from frappe.utils import cint, get_link_to_form, get_weekday, getdate, now, nowtime from frappe.utils.user import get_users_with_role from rq.timeouts import JobTimeoutException @@ -25,6 +25,27 @@ class RepostItemValuation(Document): self.set_status(write=False) self.reset_field_values() self.set_company() + self.validate_accounts_freeze() + + def validate_accounts_freeze(self): + acc_settings = frappe.db.get_value( + "Accounts Settings", + "Accounts Settings", + ["acc_frozen_upto", "frozen_accounts_modifier"], + as_dict=1, + ) + if not acc_settings.acc_frozen_upto: + return + if getdate(self.posting_date) <= getdate(acc_settings.acc_frozen_upto): + if ( + acc_settings.frozen_accounts_modifier + and frappe.session.user in get_users_with_role(acc_settings.frozen_accounts_modifier) + ): + frappe.msgprint(_("Caution: This might alter frozen accounts.")) + return + frappe.throw( + _("You cannot repost item valuation before {}").format(acc_settings.acc_frozen_upto) + ) def reset_field_values(self): if self.based_on == "Transaction": @@ -240,7 +261,7 @@ def _get_directly_dependent_vouchers(doc): def notify_error_to_stock_managers(doc, traceback): recipients = get_users_with_role("Stock Manager") if not recipients: - get_users_with_role("System Manager") + recipients = get_users_with_role("System Manager") subject = _("Error while reposting item valuation") message = ( diff --git a/erpnext/stock/doctype/repost_item_valuation/test_repost_item_valuation.py b/erpnext/stock/doctype/repost_item_valuation/test_repost_item_valuation.py index e0f2479710..f1667757a7 100644 --- a/erpnext/stock/doctype/repost_item_valuation/test_repost_item_valuation.py +++ b/erpnext/stock/doctype/repost_item_valuation/test_repost_item_valuation.py @@ -327,3 +327,26 @@ class TestRepostItemValuation(FrappeTestCase, StockTestMixin): # outstanding should not be affected sinv.reload() self.assertEqual(sinv.outstanding_amount, 100) + + def test_account_freeze_validation(self): + today = nowdate() + + riv = frappe.get_doc( + doctype="Repost Item Valuation", + item_code="_Test Item", + warehouse="_Test Warehouse - _TC", + based_on="Item and Warehouse", + posting_date=today, + posting_time="00:01:00", + ) + riv.flags.dont_run_in_test = True # keep it queued + + accounts_settings = frappe.get_doc("Accounts Settings") + accounts_settings.acc_frozen_upto = today + accounts_settings.frozen_accounts_modifier = "" + accounts_settings.save() + + self.assertRaises(frappe.ValidationError, riv.save) + + accounts_settings.acc_frozen_upto = "" + accounts_settings.save() diff --git a/erpnext/stock/doctype/shipment/shipment.json b/erpnext/stock/doctype/shipment/shipment.json index a33cbc288c..53b549deec 100644 --- a/erpnext/stock/doctype/shipment/shipment.json +++ b/erpnext/stock/doctype/shipment/shipment.json @@ -412,9 +412,9 @@ }, { "fieldname": "incoterm", - "fieldtype": "Select", + "fieldtype": "Link", "label": "Incoterm", - "options": "EXW (Ex Works)\nFCA (Free Carrier)\nCPT (Carriage Paid To)\nCIP (Carriage and Insurance Paid to)\nDPU (Delivered At Place Unloaded)\nDAP (Delivered At Place)\nDDP (Delivered Duty Paid)" + "options": "Incoterm" }, { "fieldname": "shipment_delivery_note", @@ -433,10 +433,11 @@ ], "is_submittable": 1, "links": [], - "modified": "2021-04-13 17:14:18.181818", + "modified": "2022-11-17 17:23:27.025802", "modified_by": "Administrator", "module": "Stock", "name": "Shipment", + "naming_rule": "Expression (old style)", "owner": "Administrator", "permissions": [ { @@ -470,5 +471,6 @@ ], "sort_field": "modified", "sort_order": "DESC", + "states": [], "track_changes": 1 -} +} \ No newline at end of file diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.js b/erpnext/stock/doctype/stock_entry/stock_entry.js index 266ea5f674..b9102445e0 100644 --- a/erpnext/stock/doctype/stock_entry/stock_entry.js +++ b/erpnext/stock/doctype/stock_entry/stock_entry.js @@ -1079,7 +1079,8 @@ erpnext.stock.select_batch_and_serial_no = (frm, item) => { if (frm.doc.purpose === 'Material Receipt') return; frappe.require("assets/erpnext/js/utils/serial_no_batch_selector.js", function() { - new erpnext.SerialNoBatchSelector({ + if (frm.batch_selector?.dialog?.display) return; + frm.batch_selector = new erpnext.SerialNoBatchSelector({ frm: frm, item: item, warehouse_details: get_warehouse_type_and_name(item), diff --git a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py index d92d0f1686..3a0b38a0fc 100644 --- a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py +++ b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py @@ -230,7 +230,7 @@ class StockReconciliation(StockController): if item.has_serial_no or item.has_batch_no: has_serial_no = True - self.get_sle_for_serialized_items(row, sl_entries) + self.get_sle_for_serialized_items(row, sl_entries, item) else: if row.serial_no or row.batch_no: frappe.throw( @@ -282,7 +282,7 @@ class StockReconciliation(StockController): if has_serial_no and sl_entries: self.update_valuation_rate_for_serial_no() - def get_sle_for_serialized_items(self, row, sl_entries): + def get_sle_for_serialized_items(self, row, sl_entries, item): from erpnext.stock.stock_ledger import get_previous_sle serial_nos = get_serial_nos(row.serial_no) @@ -348,6 +348,9 @@ class StockReconciliation(StockController): if row.qty: args = self.get_sle_for_items(row) + if item.has_serial_no and item.has_batch_no: + args["qty_after_transaction"] = row.qty + args.update( { "actual_qty": row.qty, diff --git a/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py b/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py index 7b984d3847..eaea301432 100644 --- a/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py +++ b/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py @@ -644,6 +644,38 @@ class TestStockReconciliation(FrappeTestCase, StockTestMixin): ) self.assertEqual(len(active_sr_no), 0) + def test_serial_no_batch_no_item(self): + item = self.make_item( + "Test Serial No Batch No Item", + { + "is_stock_item": 1, + "has_serial_no": 1, + "has_batch_no": 1, + "serial_no_series": "SRS9.####", + "batch_number_series": "BNS9.####", + "create_new_batch": 1, + }, + ) + + warehouse = "_Test Warehouse - _TC" + + sr = create_stock_reconciliation( + item_code=item.name, + warehouse=warehouse, + qty=1, + rate=100, + ) + + sl_entry = frappe.db.get_value( + "Stock Ledger Entry", + {"voucher_type": "Stock Reconciliation", "voucher_no": sr.name}, + ["actual_qty", "qty_after_transaction"], + as_dict=1, + ) + + self.assertEqual(flt(sl_entry.actual_qty), 1.0) + self.assertEqual(flt(sl_entry.qty_after_transaction), 1.0) + def create_batch_item_with_batch(item_name, batch_id): batch_item_doc = create_item(item_name, is_stock_item=1) diff --git a/erpnext/stock/stock_ledger.py b/erpnext/stock/stock_ledger.py index cdf6e89fcb..e7f55e9b35 100644 --- a/erpnext/stock/stock_ledger.py +++ b/erpnext/stock/stock_ledger.py @@ -263,8 +263,8 @@ def repost_future_sle( def validate_item_warehouse(args): for field in ["item_code", "warehouse", "posting_date", "posting_time"]: - if not args.get(field): - validation_msg = f"The field {frappe.unscrub(args.get(field))} is required for the reposting" + if args.get(field) in [None, ""]: + validation_msg = f"The field {frappe.unscrub(field)} is required for the reposting" frappe.throw(_(validation_msg)) diff --git a/erpnext/templates/generators/item/item.html b/erpnext/templates/generators/item/item.html index 4070d40d47..358c1c52e5 100644 --- a/erpnext/templates/generators/item/item.html +++ b/erpnext/templates/generators/item/item.html @@ -32,7 +32,7 @@
-
+
{% if show_tabs and tabs %}
diff --git a/erpnext/translations/de.csv b/erpnext/translations/de.csv index 0caea25edd..0fdd3c94a1 100644 --- a/erpnext/translations/de.csv +++ b/erpnext/translations/de.csv @@ -9903,3 +9903,14 @@ Total Asset,Aktiva, Total Liability,Verbindlichkeiten, Total Equity,Eigenkapital, Warehouse wise Stock Value,Warenwert nach Lager, +Ex Works,Ab Werk, +Free Carrier,Frei Frachtführer, +Free Alongside Ship,Frei Längsseite Schiff, +Free on Board,Frei an Bord, +Carriage Paid To,Frachtfrei, +Carriage and Insurance Paid to,Frachtfrei versichert, +Cost and Freight,Kosten und Fracht, +"Cost, Insurance and Freight","Kosten, Versicherung und Fracht", +Delivered at Place,Geliefert benannter Ort, +Delivered at Place Unloaded,Geliefert benannter Ort entladen, +Delivered Duty Paid,Geliefert verzollt,