diff --git a/erpnext/accounts/doctype/accounts_settings/accounts_settings.json b/erpnext/accounts/doctype/accounts_settings/accounts_settings.json index 3e0b82c5610..1e2e2acd79a 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 7e57c2fc471..ceba99a56a8 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 a436d1effb8..591d01949b8 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 78c35266542..80878ac5068 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 15c292211c0..56b857992c7 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 a5981fdebd1..a03157ebd4b 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 5c1cb0dcc68..1fa7e7f3fc7 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 dc2f9a9bc6e..18d2b5c9953 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 db3d5d44a0c..c6aa21cc862 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 f2809a99c55..98838907be1 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 e2a70c21bef..93496261aa0 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 d471783ab99..c645b04e129 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 31a4837d463..98c7dc9bd32 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 083cab78f76..019d45b5683 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 16365618ca9..7776ab8ec84 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 1849e8b3b55..b7a80c10192 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 48fe7cb083d..051460474ac 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 88d2f0687dc..965335b1a3f 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 433d974a443..737452021c0 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 b73dee26b9f..51bf327c813 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 27d7c4175e5..8c61d545b81 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 59ddf1f0c58..62715e65653 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 85f98430cd4..2624daa41e2 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 caff0a3e15c..0cc0f80cf1a 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 a6d034d8cb8..2bf14c24cf3 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 df5862fcac8..0688278e091 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 45ea26c3a8a..4eb6bf6ecfc 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 cb771e49941..782ce8110a8 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 63c2d97d574..8d72ef1f36f 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 41ffcbb1904..b69ad070e16 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 639809d7caa..166faf9c18d 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 00000000000..6e1e09ad146 --- /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 fa64b1625bb..08918f4d61a 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 e6ff39d8d4a..9ec32cbfc67 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 00000000000..e69de29bb2d diff --git a/erpnext/setup/doctype/incoterm/incoterm.js b/erpnext/setup/doctype/incoterm/incoterm.js new file mode 100644 index 00000000000..bc65123dc15 --- /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 00000000000..c547b7c4ffd --- /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 00000000000..7e2e622c24b --- /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 00000000000..af532cff160 --- /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 00000000000..06b8c3bda9d --- /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 2076dde5199..d3b47f985d5 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 98817253a4c..45e39c5bd0b 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 0ca3e69f76c..80e4bcb640f 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 3141212ee5d..ab91d7c8c94 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 d595a80b20a..8aec5328476 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 e0939338294..8a5309c3480 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 d6f9bae5da2..8e914e6b807 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 e0f24797100..f1667757a75 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 a33cbc288c5..53b549deec1 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 266ea5f674f..b9102445e01 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 d92d0f1686e..3a0b38a0fcd 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 7b984d38475..eaea301432e 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 cdf6e89fcbb..e7f55e9b35d 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 4070d40d47e..358c1c52e5f 100644 --- a/erpnext/templates/generators/item/item.html +++ b/erpnext/templates/generators/item/item.html @@ -32,7 +32,7 @@